{"id":8703,"date":"2021-07-15T19:15:37","date_gmt":"2021-07-15T17:15:37","guid":{"rendered":"https:\/\/tajdini.net\/blog\/?p=8703"},"modified":"2021-07-15T19:15:39","modified_gmt":"2021-07-15T17:15:39","slug":"sddl-security-descriptors","status":"publish","type":"post","link":"https:\/\/tajdini.net\/blog\/cisco-and-networking\/sddl-security-descriptors\/","title":{"rendered":"SDDL Security Descriptors"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Some notes to myself to use as a reference guide and to gain a better understanding of the privileges and rights assigned to Windows services in the form of SDDL security descriptor strings finally today became useful to solve a problem of a Good friend and college of mine (Dear Vanik). maybe in other post going to explain and write-up the solution for that specific case, but anyway the solution need to have good understanding of SDDL, stay with me till end of this post, you will find it very useful later \ud83d\ude09 .<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sddl\">SDDL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Windows Security Descriptor Definition Language defines the string format used to describe a security descriptor as a text string, commonly used to define an ACL (list of ACEs) for a Windows service.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Take the following <code>userlogger<\/code> service from an old Hack The Box machine:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C:\\util&gt; sc qc userlogger\nsc qc userlogger\n&#91;SC] QueryServiceConfig SUCCESS\n\nSERVICE_NAME: userlogger\n        TYPE               : 10  WIN32_OWN_PROCESS \n        START_TYPE         : 3   DEMAND_START\n        ERROR_CONTROL      : 1   NORMAL\n        BINARY_PATH_NAME   : c:\\windows\\system32\\UserLogger.exe\n        LOAD_ORDER_GROUP   : \n        TAG                : 0\n        DISPLAY_NAME       : User Logger\n        DEPENDENCIES       : \n        SERVICE_START_NAME : LocalSystem\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>SERVICE_START_NAME<\/code> defines the privileges with which the service runs, in this instance it\u2019s <code>LocalSystem<\/code>, or in other words <code>NT AUTHORITY\\SYSTEM<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We can request the SDDL string applied to the <code>userlogger<\/code> service using the following command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C:\\util&gt; sc sdshow userlogger\nD:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCLCSWRPWPDTLORC;;;S-1-5-21-2115913093-551423064-1540603852-1003)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLORC;;;BU)(A;;CCLCSWRPWPLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU) \n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ace-structure\">ACE Structure<\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">The ACEs in a SDDL string are enclosed in parentheses, the <code>userlogger<\/code> service therefore contains six ACEs. One of them is shown below:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(A;;CCLCSWRPWPDTLOCRRC;;;SY)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Each ACE contains five semi-colon terminated strings, followed by the SID for whom the ACE applies. The structure is as follows with each section labelled:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(ace_type; ace_flags; rights; object_guid; inherit_object_guid; account_sid)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For this individual ACE only the <code>ace_type<\/code> and <code>rights<\/code> are set and are applied to <code>SY<\/code> which represents <code>LocalSystem<\/code>, meaning this ACE is assigned to <code>NT AUTHORITY\\SYSTEM<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>account_sid<\/code> has a set of predefined values. You have the option of supplying a specific SID into the <code>account_sid<\/code> field when configuring an ACE:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(A;;CCLCSWRPWPDTLORC;;;S-1-5-21-2115913093-551423064-1540603852-1003)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>account_sid<\/code> identifies the trustee of the ACE. The SID in this ACE applies to the <code>hacker<\/code> user from the box.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"decoding\">Decoding<\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>userlogger<\/code> service security descriptor:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCLCSWRPWPDTLORC;;;S-1-5-21-2115913093-551423064-1540603852-1003)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLORC;;;BU)(A;;CCLCSWRPWPLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU) \n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The service\u2019s SDDL only contains a DACL, defined by the <code>D:<\/code> at the start of the string. The string can be prefixed with any of the following symbols:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Symbol<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>O:<\/td><td>Owner<\/td><\/tr><tr><td>G:<\/td><td>Primary Group<\/td><\/tr><tr><td>D:<\/td><td>Discretionary Access Control List (DACL)<\/td><\/tr><tr><td>S:<\/td><td>System Access Control List (SACL)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The first value of the user\u2019s ACE &#8211; <code>A<\/code> &#8211; in <code>(A;;CCLCSWRPWPDTLORC;;;S-1-5-21-2115913093-551423064-1540603852-1003)<\/code> is defined as the <code>ace_type<\/code>, a table containing different <code>ace_type<\/code> values is shown below:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>ACE Type<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>A<\/td><td>Access Allowed<\/td><\/tr><tr><td>D<\/td><td>Access Denied<\/td><\/tr><tr><td>OA<\/td><td>Object Access Allowed<\/td><\/tr><tr><td>OD<\/td><td>Object Access Denied<\/td><\/tr><tr><td>AU<\/td><td>System Audit<\/td><\/tr><tr><td>AL<\/td><td>System Alarm<\/td><\/tr><tr><td>OU<\/td><td>System Object Audit<\/td><\/tr><tr><td>OL<\/td><td>System Object Alarm<\/td><\/tr><tr><td>ML<\/td><td>System Mandatory Label<\/td><\/tr><tr><td>SP<\/td><td>Central Policy ID<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After the <code>A;;<\/code> (the double semi-colon implies there are no <code>ace_flags<\/code> assigned) comes the following string &#8211; <code>CCLCSWRPWPDTLORC;;;S-1-5-21-2115913093-551423064-1540603852-1003<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ignoring the user\u2019s SID (we know that the <code>object_guid<\/code> and <code>inherit_object_guid<\/code> values are empty and the trustee is <code>hacker<\/code>) for now we\u2019re left with <code>CCLCSWRPWPDTLORC<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The letters are in pairs and each pair represents a certain right, the following rights are represented in the <code>rights<\/code> section of the <code>hacker<\/code> user ACE for the <code>userlogger<\/code> service:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Symbol<\/th><th>Right<\/th><\/tr><\/thead><tbody><tr><td>CC<\/td><td>SERVICE_QUERY_CONFIG<\/td><\/tr><tr><td>LC<\/td><td>SERVICE_QUERY_STATUS<\/td><\/tr><tr><td>SW<\/td><td>SERVICE_ENUMERATE_DEPENDENTS<\/td><\/tr><tr><td>RP<\/td><td>SERVICE_START<\/td><\/tr><tr><td>WP<\/td><td>SERVICE_STOP<\/td><\/tr><tr><td>DT<\/td><td>SERVICE_PAUSE_CONTINUE<\/td><\/tr><tr><td>LO<\/td><td>SERVICE_INTERROGATE<\/td><\/tr><tr><td>RC<\/td><td>READ_CONTROL<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A table containing all of the different service DACL rights can be found <a href=\"https:\/\/mlcsec.com\/posts\/windows-sddl\/#tables\">here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"convertfrom-sddlstring\">ConvertFrom-SDDLString<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An easy way to read the security descriptor is by using the <code>ConvertFrom-SDDLString<\/code> PowerShell cmdlet. The docs for the command can be found <a href=\"https:\/\/docs.microsoft.com\/en-us\/powershell\/module\/microsoft.powershell.utility\/convertfrom-sddlstring?view=powershell-7\">here<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The syntax is straightforward, you just parse the SDDL to the <code>-Sddl<\/code> parameter:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PS C:\\Users\\New&gt; ConvertFrom-SddlString -Sddl \"D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCLCSWRPWPDTLORC;;;S-1-5-21-2115913093-551423064-1540603852-1003)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLORC;;;BU)(A;;CCLCSWRPWPLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)\" \n\n\nOwner            :\nGroup            :\nDiscretionaryAcl : {NT AUTHORITY\\INTERACTIVE: AccessAllowed (CreateDirectories, ExecuteKey, GenericExecute, GenericRead, GenericWrite, ListDirectory, Read,\n                   ReadAndExecute, ReadAttributes, ReadExtendedAttributes, ReadPermissions, Traverse, WriteAttributes, WriteExtendedAttributes), NT\n                   AUTHORITY\\SERVICE: AccessAllowed (CreateDirectories, GenericExecute, ListDirectory, Read, ReadAttributes, ReadExtendedAttributes,\n                   ReadPermissions, WriteAttributes), NT AUTHORITY\\SYSTEM: AccessAllowed (CreateDirectories, DeleteSubdirectoriesAndFiles, ExecuteKey,\n                   GenericExecute, GenericRead, GenericWrite, ListDirectory, Read, ReadAndExecute, ReadAttributes, ReadExtendedAttributes, ReadPermissions,\n                   Traverse, WriteAttributes, WriteExtendedAttributes), BUILTIN\\Administrators: AccessAllowed (ChangePermissions, CreateDirectories, Delete,\n                   DeleteSubdirectoriesAndFiles, ExecuteKey, FullControl, GenericAll, GenericExecute, GenericRead, GenericWrite, ListDirectory, Modify, Read,\n                   ReadAndExecute, ReadAttributes, ReadExtendedAttributes, ReadPermissions, TakeOwnership, Traverse, Write, WriteAttributes, WriteData,\n                   WriteExtendedAttributes, WriteKey)...}\nSystemAcl        : {}\nRawDescriptor    : System.Security.AccessControl.CommonSecurityDescriptor\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>ConvertFrom-SDDLString<\/code> cmdlet will not decode the ACE rights in the same manner as manually doing so with the table in the previous section. The following section explains why in more detail.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"types\">Types<\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/docs.microsoft.com\/en-us\/powershell\/module\/microsoft.powershell.utility\/convertfrom-sddlstring?view=powershell-7\">ConvertFrom-SDDLString<\/a> docs show that the <code>-Type<\/code> flag only has the following values:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>FileSystemRights<\/li><li>RegistryRights<\/li><li>ActiveDirectoryRights<\/li><li>MutexRights<\/li><li>SemaphoreRights<\/li><li>CryptoKeyRights<\/li><li>EventWaitHandleRights<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s no <code>-Type<\/code> value that allows you to decode the service DACL rights assigned to a Windows service. If there was a value for service DACLs, when you run the following command you\u2019d get different output for the value of <code>RP<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PS C:\\Users\\New&gt; ConvertFrom-SddlString -Sddl \"D:(A;;RP;;;AU)\"\n\nOwner            :\nGroup            :\nDiscretionaryAcl : {NT AUTHORITY\\Authenticated Users: AccessAllowed (WriteExtendedAttributes)}\nSystemAcl        : {}\nRawDescriptor    : System.Security.AccessControl.CommonSecurityDescriptor\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">It would say <code>SERVICE_START<\/code> instead of <code>WriteExtendedAtrributes<\/code>. As you can see below the value of <code>RP<\/code> changes when you specify a different value to the <code>-Type<\/code> flag:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PS C:\\Users\\New&gt; ConvertFrom-SddlString -Sddl \"D:(A;;RP;;;AU)\" -Type ActiveDirectoryRights\n\nOwner            :\nGroup            :\nDiscretionaryAcl : {NT AUTHORITY\\Authenticated Users: AccessAllowed (ReadProperty)}\nSystemAcl        : {}\nRawDescriptor    : System.Security.AccessControl.CommonSecurityDescriptor\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Not sure why there isn\u2019t a service DACL option type for <code>ConvertFrom-SddlString<\/code>, hopefully Microsoft implements it at some point.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tables\">Tables<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"service-dacl-rights\">Service DACL Rights<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Symbol<\/th><th>Right<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>CC<\/td><td>SERVICE_QUERY_CONFIG<\/td><td>read the configuration of the service<\/td><\/tr><tr><td>LC<\/td><td>SERVICE_QUERY_STATUS<\/td><td>read the status of the service from Service Control Manager<\/td><\/tr><tr><td>SW<\/td><td>SERVICE_ENUMERATE_DEPENDENTS<\/td><td>list dependencies<\/td><\/tr><tr><td>LO<\/td><td>SERVICE_INTERROGATE<\/td><td>ask the service its current status<\/td><\/tr><tr><td>CR<\/td><td>SERVICE_USER_DEFINED_CONTROL<\/td><td>send a service control command<\/td><\/tr><tr><td>RC<\/td><td>READ_CONTROL<\/td><td>read the security permissions<\/td><\/tr><tr><td>RP<\/td><td>SERVICE_START<\/td><td>start the service<\/td><\/tr><tr><td>WP<\/td><td>SERVICE_STOP<\/td><td>stop the service<\/td><\/tr><tr><td>DT<\/td><td>SERVICE_PAUSE_CONTINUE<\/td><td>pause\/continue the service<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"predefined-account-sids\">Predefined Account SIDs<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>SDDL Alias<\/th><th>SID name<\/th><\/tr><\/thead><tbody><tr><td>AA<\/td><td>ACCESS_CONTROL_ASSISTANCE_OPS<\/td><\/tr><tr><td>AC<\/td><td>ALL_APP_PACKAGES<\/td><\/tr><tr><td>AN<\/td><td>ANONYMOUS<\/td><\/tr><tr><td>AO<\/td><td>ACCOUNT_OPERATORS<\/td><\/tr><tr><td>AU<\/td><td>AUTHENTICATED_USERS<\/td><\/tr><tr><td>BA<\/td><td>BUILTIN_ADMINISTRATORS<\/td><\/tr><tr><td>BG<\/td><td>BUILTIN_GUESTS<\/td><\/tr><tr><td>BO<\/td><td>BACKUP_OPERATORS<\/td><\/tr><tr><td>BU<\/td><td>BUILTIN_USERS<\/td><\/tr><tr><td>CA<\/td><td>CERT_PUBLISHERS<\/td><\/tr><tr><td>CD<\/td><td>CERTSVC_DCOM_ACCESS<\/td><\/tr><tr><td>CG<\/td><td>CREATOR_GROUP<\/td><\/tr><tr><td>CN<\/td><td>CLONEABLE_CONTROLLERS<\/td><\/tr><tr><td>CO<\/td><td>CREATOR_OWNER<\/td><\/tr><tr><td>CY<\/td><td>CRYPTO_OPERATORS<\/td><\/tr><tr><td>DA<\/td><td>DOMAIN_ADMINS<\/td><\/tr><tr><td>DC<\/td><td>DOMAIN_COMPUTERS<\/td><\/tr><tr><td>DD<\/td><td>DOMAIN_DOMAIN_CONTROLLERS<\/td><\/tr><tr><td>DG<\/td><td>DOMAIN_GUESTS<\/td><\/tr><tr><td>DU<\/td><td>DOMAIN_USERS<\/td><\/tr><tr><td>EA<\/td><td>ENTERPRISE_ADMINS<\/td><\/tr><tr><td>ED<\/td><td>ENTERPRISE_DOMAIN_CONTROLLERS<\/td><\/tr><tr><td>ER<\/td><td>EVENT_LOG_READERS<\/td><\/tr><tr><td>ES<\/td><td>RDS_ENDPOINT_SERVERS<\/td><\/tr><tr><td>HA<\/td><td>HYPER_V_ADMINS<\/td><\/tr><tr><td>HI<\/td><td>ML_HIGH<\/td><\/tr><tr><td>IS<\/td><td>IIS_USERS<\/td><\/tr><tr><td>IU<\/td><td>INTERACTIVE<\/td><\/tr><tr><td>LA<\/td><td>ADMINISTRATOR&lt;80&gt;<\/td><\/tr><tr><td>LG<\/td><td>GUEST<\/td><\/tr><tr><td>LS<\/td><td>LOCAL_SERVICE<\/td><\/tr><tr><td>LU<\/td><td>PERFLOG_USERS<\/td><\/tr><tr><td>LW<\/td><td>ML_LOW<\/td><\/tr><tr><td>ME<\/td><td>ML_MEDIUM<\/td><\/tr><tr><td>MP<\/td><td>ML MEDIUM PLUS<\/td><\/tr><tr><td>MS<\/td><td>RDS_MANAGEMENT_SERVERS<\/td><\/tr><tr><td>MU<\/td><td>PERFMON_USERS<\/td><\/tr><tr><td>NO<\/td><td>NETWORK_CONFIGURATION_OPS<\/td><\/tr><tr><td>NS<\/td><td>NETWORK_SERVICE<\/td><\/tr><tr><td>NU<\/td><td>NETWORK<\/td><\/tr><tr><td>OW<\/td><td>OWNER_RIGHTS<\/td><\/tr><tr><td>PA<\/td><td>GROUP_POLICY_CREATOR_OWNER<\/td><\/tr><tr><td>PO<\/td><td>PRINTER_OPERATORS<\/td><\/tr><tr><td>PS<\/td><td>PRINCIPAL_SELF<\/td><\/tr><tr><td>PU<\/td><td>POWER_USERS<\/td><\/tr><tr><td>RA<\/td><td>RDS_REMOTE_ACCESS_SERVERS<\/td><\/tr><tr><td>RC<\/td><td>RESTRICTED_CODE<\/td><\/tr><tr><td>RD<\/td><td>REMOTE_DESKTOP<\/td><\/tr><tr><td>RE<\/td><td>REPLICATOR<\/td><\/tr><tr><td>RM<\/td><td>REMOTE_MANAGEMENT_USERS<\/td><\/tr><tr><td>RO<\/td><td>ENTERPRISE_RO_DCS<\/td><\/tr><tr><td>RS<\/td><td>RAS_SERVERS<\/td><\/tr><tr><td>RU<\/td><td>ALIAS_PREW2KCOMPACC<\/td><\/tr><tr><td>SA<\/td><td>SCHEMA_ADMINISTRATORS<\/td><\/tr><tr><td>SI<\/td><td>ML_SYSTEM<\/td><\/tr><tr><td>SO<\/td><td>SERVER_OPERATORS<\/td><\/tr><tr><td>SU<\/td><td>SERVICE<\/td><\/tr><tr><td>SY<\/td><td>LOCAL_SYSTEM<\/td><\/tr><tr><td>UD<\/td><td>USER_MODE_DRIVERS<\/td><\/tr><tr><td>WD<\/td><td>EVERYONE<\/td><\/tr><tr><td>WR<\/td><td>WRITE_RESTRICTED_CODE<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"glossary\">Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Access Conrol Entry<\/strong> &#8211; (ACE) is an entry in an Access Control List (ACL). An ACE contains a set of access rights and a Security Identifier (SID) that identifies a trustee for whom the rights are allowed, denied, or audited.<\/li><li><strong>Access Control List<\/strong> &#8211; (ACL) is a list of security protections that applies to an object. (An object can be a file, process, event, or anything else having a security descriptor.) An entry in an access control list (ACL) is an access control entry (ACE). There are two types of access control list, discretionary and system.<\/li><li><strong>Discretionary Access Control List<\/strong> &#8211; (DACL) is an access control list that is controlled by the owner of an object and that specifies the access particular users or groups can have to the object.<\/li><li><strong>System Access Control List<\/strong> &#8211; (SACL) is an ACL that controls the generation of audit messages for attempts to access a securable object. The ability to get or set an object\u2019s SACL is controlled by a privilege typically held only by system administrators.<\/li><li><strong>Security Descriptor<\/strong> &#8211; A structure and associated data that contains the security information for a securable object. A security descriptor identifies the object\u2019s owner and primary group. It can also contain a DACL that controls access to the object, and a SACL that controls the logging of attempts to access the object.<\/li><li><strong>trustee<\/strong> &#8211; The user account, group account, or logon session to which an access control entry (ACE) applies. Each ACE in an access control list (ACL) applies to one trustee.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Some notes to myself to use as a reference guide and to gain a better understanding of the privileges and rights assigned to Windows services in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":8704,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[221],"tags":[90],"class_list":["post-8703","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cisco-and-networking","tag-cisco"],"_links":{"self":[{"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/posts\/8703","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=8703"}],"version-history":[{"count":1,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/posts\/8703\/revisions"}],"predecessor-version":[{"id":8705,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/posts\/8703\/revisions\/8705"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/media\/8704"}],"wp:attachment":[{"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/media?parent=8703"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/categories?post=8703"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tajdini.net\/blog\/wp-json\/wp\/v2\/tags?post=8703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}