{"id":8666,"date":"2021-06-04T01:13:03","date_gmt":"2021-06-03T23:13:03","guid":{"rendered":"https:\/\/tajdini.net\/blog\/?p=8666"},"modified":"2021-06-04T01:18:12","modified_gmt":"2021-06-03T23:18:12","slug":"dumping-rdp-credentials","status":"publish","type":"post","link":"https:\/\/tajdini.net\/blog\/governance-risk-and-compliance\/dumping-rdp-credentials\/","title":{"rendered":"Dumping RDP Credentials"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Administrators typically use Remote Desktop Protocol (RDP) in order to manage Windows environments remotely. It is also typical RDP to be enabled in systems that act as a jumpstation to enable users to reach other networks. However even though this protocol is widely used most of the times it is not hardened or monitor properly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From red teaming perspective dumping credentials from the lsass process can lead either to lateral movement across the network or directly to full domain compromise if credentials for the domain admin account have been stored. Processes which are associated with the RDP protocol can also be in the scope of red teams to harvest credentials. These processes are:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>svchost.exe<\/li><li>mstsc.exe<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The above processes can be targeted as an alternative method to retrieve credentials without touching lsass which is a heavily monitored process typically by endpoint detection and response (EDR) products.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">svchost<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The service host (svchost.exe) is a system process which can host multiple services to prevent consumption of resources. When a user authenticates via an RDP connection the terminal service is hosted by the svchost process. Based on how the Windows authentication mechanism works the credentials are stored in memory of the svchost process in plain-text according to the discovery of <a rel=\"noreferrer noopener\" href=\"https:\/\/twitter.com\/jonasLyk\" target=\"_blank\">Jonas Lyk<\/a>. However, looking at the process list, there are multiple svchost processes so identification of which process, hosts the terminal service connection can be achieved by executing one of the following commands.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Querying the terminal service:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sc queryex termservice<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"818\" height=\"395\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-service-query.png\" alt=\"\" class=\"wp-image-8667\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-service-query.png 818w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-service-query-300x145.png 300w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-service-query-768x371.png 768w\" sizes=\"auto, (max-width: 818px) 100vw, 818px\" \/><figcaption>svchost Identification \u2013 Service Query<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Querying which task has loaded the rdpcorets.dll:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tasklist \/M:rdpcorets.dll<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"890\" height=\"392\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-command-prompt-1.png\" alt=\"\" class=\"wp-image-8669\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-command-prompt-1.png 890w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-command-prompt-1-300x132.png 300w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-command-prompt-1-768x338.png 768w\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" \/><figcaption>svchost Identification \u2013 RDP Core DLL<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Running netstat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>netstat -nob | Select-String TermService -Context 1<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"379\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-powershell.png\" alt=\"\" class=\"wp-image-8670\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-powershell.png 768w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-process-identification-powershell-300x148.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>svchost Identification \u2013 netstat<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Looking at the memory strings of the process the password is displayed below the username.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"485\" height=\"516\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-memory-strings.png\" alt=\"\" class=\"wp-image-8671\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-memory-strings.png 485w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-memory-strings-282x300.png 282w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><figcaption>Memory Strings<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Process dump from Sysinternals can be used also to dump the memory by specifying the PID and the directory which the .dmp file will be written.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>procdump64.exe -ma 988 -accepteula C:\\Users\\mahyarLab<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"400\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dumping-memory-process-dump.png\" alt=\"\" class=\"wp-image-8672\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dumping-memory-process-dump.png 768w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dumping-memory-process-dump-300x156.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>Memory Dumping \u2013 Process Dump<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The .dmp file can be transferred to another host for offline analysis. Performing a simple grep will identify the password stored in the memory file below the username.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>strings -el svchost* | grep Password123 -C3<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"417\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-memory-dump-grep.png\" alt=\"\" class=\"wp-image-8673\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-memory-dump-grep.png 768w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-memory-dump-grep-300x163.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>Discovery of Password in Memory Dump<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The above method doesn\u2019t consider fully reliable and it is still unknown in which conditions the credentials are maintained in the svchost process. However, Mimikatz support the retrieval of credentials from existing RDP connections by executing the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>privilege::debug\nts::logonpasswords<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"838\" height=\"438\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-mimikatz.png\" alt=\"\" class=\"wp-image-8674\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-mimikatz.png 838w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-mimikatz-300x157.png 300w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-mimikatz-768x401.png 768w\" sizes=\"auto, (max-width: 838px) 100vw, 838px\" \/><figcaption>Mimikatz \u2013 RDP Credentials<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">mstsc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The mstsc.exe process is created when a user opens the remote desktop connection application in order to connect to other systems via the RDP protocol. API hooking could be used to intercept the credentials provided by the user and use them for lateral movement. <a rel=\"noreferrer noopener\" href=\"https:\/\/twitter.com\/0x09al\" target=\"_blank\">Rio Sherri<\/a> has developed a proof of concept tool called <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/0x09AL\/RdpThief\" target=\"_blank\">RdpThief<\/a> which attempts to hook the functions used by mstsc process (CredIsMarshaledCredentialW &amp; CryptProtectMemory) in order to retrieve the credentials and write them into a file on the disk. Details of the tool can be found in an <a rel=\"noreferrer noopener\" href=\"https:\/\/www.mdsec.co.uk\/2019\/11\/rdpthief-extracting-clear-text-credentials-from-remote-desktop-clients\/\" target=\"_blank\">article<\/a> in the MDSec website.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From a system that has been compromised and the mstsc.exe is running the DLL needs to be injected into the process.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SimpleInjector.exe mstsc.exe RdpThief.dll<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"314\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-injection.png\" alt=\"\" class=\"wp-image-8675\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-injection.png 708w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-injection-300x133.png 300w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><figcaption>RdpThief.dll \u2013 DLL Injection<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once the user enter the credentials for authentication to the destination host these will be captured and written into a file on the C:\\temp folder.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"446\" height=\"359\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-credprompt.png\" alt=\"\" class=\"wp-image-8676\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-credprompt.png 446w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-credprompt-300x241.png 300w\" sizes=\"auto, (max-width: 446px) 100vw, 446px\" \/><figcaption>CredPrompt<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The file creds.txt will include also the IP address. This information could be utilized to move laterally across the network or even to escalate privileges if an elevated account is used.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"326\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-file.png\" alt=\"\" class=\"wp-image-8677\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-file.png 768w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-file-300x127.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The tool has been rewritten in C# by <a rel=\"noreferrer noopener\" href=\"https:\/\/twitter.com\/passthehashbrwn\" target=\"_blank\">Josh Magri<\/a>. However comparing to RdpThief, <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/passthehashbrowns\/SharpRDPThief\" target=\"_blank\">SharpRDPThief<\/a> uses an IPC server in order to receive the credentials from the mstsc.exe process. In the event that the mstsc.exe is terminated the server will continue to run and when the process is initiated again will attempt to perform the hooking. This removes the limitation that RdpThief had that the process should already exist.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"884\" height=\"498\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-sharprdpthief.png\" alt=\"\" class=\"wp-image-8678\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-sharprdpthief.png 884w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-sharprdpthief-300x169.png 300w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-sharprdpthief-768x433.png 768w\" sizes=\"auto, (max-width: 884px) 100vw, 884px\" \/><figcaption>SharpRDPThief<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">RDP Files<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Users that tend to authenticate multiple times to a particular host via an RDP connection they might save the connections details for quick authentication. These credentials are stored in an encrypted form in the Credential Manager of Windows by using the Data Protection API.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"377\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-credential-manager.png\" alt=\"\" class=\"wp-image-8679\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-credential-manager.png 768w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-credential-manager-300x147.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>Credential Manager<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The location of the Windows Credentials on the disk is the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C:\\Users\\username\\AppData\\Local\\Microsoft\\Credentials<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"314\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-injection-1.png\" alt=\"\" class=\"wp-image-8680\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-injection-1.png 708w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-rdp-thief-injection-1-300x133.png 300w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><figcaption>Windows Credentials Location<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The file can be viewed through the Mimikatz binary:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dpapi::cred \/in:C:\\Users\\mahyarLab\\AppData\\Local\\Microsoft\\Credentials\\ACC240EEE479C1B634EC496F9838074B<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"962\" height=\"460\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-windows-credentials-mimikatz.png\" alt=\"\" class=\"wp-image-8681\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-windows-credentials-mimikatz.png 962w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-windows-credentials-mimikatz-300x143.png 300w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-windows-credentials-mimikatz-768x367.png 768w\" sizes=\"auto, (max-width: 962px) 100vw, 962px\" \/><figcaption>DPAPI Credentials \u2013 Mimikatz<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The \u201c<em>pbData<\/em>\u201d field contains the information in an encrypted form. However the master key for decryption is stored in the lsass and can be retrieved by executing the following Mimikatz module. The \u201c<em>guidMasterKey<\/em>\u201d is also important as multiple entries might exist when the lsass is queried and it is needed to match the GUID with the Master Key.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sekurlsa::dpapi<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"331\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-mimikatz-master-key.png\" alt=\"\" class=\"wp-image-8682\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-mimikatz-master-key.png 768w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-mimikatz-master-key-300x129.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>Mimikatz \u2013 DPAPI Master Key<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Executing again the dpapi::cred module with the master key switch will have as a result the decryption of the contents and the RDP credentials to be disclosed in plain-text.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dpapi::cred \/in:C:\\Users\\mahyarLab\\AppData\\Local\\Microsoft\\Credentials\\ACC240EEE479C1B634EC496F9838074B\n\/masterkey:05d8e693421698148d8a4692f27263201f1c65e0b3ac08e3be91ea75f43e71e9b398e2418ba0f0c62ea70a317bdba88f11da3adebd07d65d2b349f933eab85e1<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"961\" height=\"404\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-decrypting-credentials-mimikatz.png\" alt=\"\" class=\"wp-image-8683\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-decrypting-credentials-mimikatz.png 961w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-decrypting-credentials-mimikatz-300x126.png 300w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-decrypting-credentials-mimikatz-768x323.png 768w\" sizes=\"auto, (max-width: 961px) 100vw, 961px\" \/><figcaption>DPAPI \u2013 Decrypting Credentials<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Executing the following command will provide the details in which server these credentials belong.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vault::list<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"314\" src=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-mimikatz-vault-list.png\" alt=\"\" class=\"wp-image-8684\" srcset=\"https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-mimikatz-vault-list.png 768w, https:\/\/tajdini.net\/blog\/wp-content\/uploads\/2021\/06\/rdp-password-dumping-dpapi-mimikatz-vault-list-300x123.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>Mimikatz \u2013 Vault List<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Administrators typically use Remote Desktop Protocol (RDP) in order to manage Windows environments remotely. It is also typical RDP to be enabled in systems that act [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":8687,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[225,229,235],"tags":[250,259,204,180,275,176],"class_list":["post-8666","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-governance-risk-and-compliance","category-network-and-protocol-security","category-windows-and-server","tag-grc","tag-network-security","tag-nist","tag-rdp","tag-threat-detection","tag-windows"],"_links":{"self":[{"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/posts\/8666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/comments?post=8666"}],"version-history":[{"count":2,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/posts\/8666\/revisions"}],"predecessor-version":[{"id":8689,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/posts\/8666\/revisions\/8689"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/media\/8687"}],"wp:attachment":[{"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/media?parent=8666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/categories?post=8666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/tags?post=8666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}