<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>CyberSecrets</title><subtitle>Блог о наступательной безопасности.
Вся информация представлена в обучающих целях.</subtitle><author><name>CyberSecrets</name></author><id>https://teletype.in/atom/cyb3r53cr3t5</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/cyb3r53cr3t5?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/cyb3r53cr3t5?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-08-17T05:18:19.933Z</updated><entry><id>cyb3r53cr3t5:ace_createchild_abuse</id><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5/ace_createchild_abuse?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><title>Права на добавление дочерних объектов в OU</title><published>2026-08-14T07:15:00.009Z</published><updated>2026-08-14T07:15:00.009Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/1e/c6/1ec684d1-7727-4be1-9887-7e4867f03ef8.png"></media:thumbnail><category term="active-directory" label="Active Directory"></category><tt:hashtag>внутрянка</tt:hashtag><tt:hashtag>activedirectory</tt:hashtag><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/2d/9c/2d9c4d8b-e147-46c3-a08a-cdf046636657.png&quot;&gt;Права CreateChild на OU позволяют создавать объекты в этой OU и в зависимости от настроек наследования в других дочерних OU. С правами CreateChild была связана уязвимость BadSuccessor (CVE-2025-53779), в которой эти права использовались для создания объекта dMSA. Но на своей практике я не встречал контроллеры домена на Windows Server 2025, да и сама уязвимость уже имеет патч.</summary><content type="html">
  &lt;figure id=&quot;JQGO&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2d/9c/2d9c4d8b-e147-46c3-a08a-cdf046636657.png&quot; width=&quot;953&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;zPeS&quot;&gt;Права &lt;code&gt;CreateChild&lt;/code&gt; на OU позволяют создавать объекты в этой OU и в зависимости от настроек наследования в других дочерних OU. С правами &lt;code&gt;CreateChild&lt;/code&gt; была связана уязвимость BadSuccessor (CVE-2025-53779), в которой эти права использовались для создания объекта dMSA. Но на своей практике я не встречал контроллеры домена на Windows Server 2025, да и сама уязвимость уже имеет патч.&lt;/p&gt;
  &lt;p id=&quot;4poo&quot;&gt;BloodHound не показывает таких связей, но можно воспользоваться &lt;a href=&quot;https://github.com/canix1/ADACLScanner&quot; target=&quot;_blank&quot;&gt;ADACLScanner&lt;/a&gt; и посмотреть какие группы и пользователи имеют права &lt;code&gt;CreateChild&lt;/code&gt; на OU.&lt;/p&gt;
  &lt;p id=&quot;cC0k&quot;&gt;Я пошел другим путем и написал скрипт &lt;a href=&quot;https://github.com/cyb3r53cr3t5/UsefulPowershellScripts/blob/main/Find-CreateChildACE.ps1&quot; target=&quot;_blank&quot;&gt;Find-CreateChildACE.ps1&lt;/a&gt;, который находит все OU в домене и извлекает права &lt;code&gt;CreateChild&lt;/code&gt; для типов объектов компьютер, пользователь или любой. И в результате составляет Cypher запросы для добавления новой связи &lt;code&gt;CanCreateChild&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;hmvk&quot;&gt;После использовании скрипта и добавления информации в BloodHound можно выполнять Cypher запросы:&lt;/p&gt;
  &lt;pre id=&quot;HInw&quot;&gt;MATCH p=(m:User)-[r:CanCreateChild]-&amp;gt;(n) RETURN p&lt;/pre&gt;
  &lt;p id=&quot;7qoY&quot;&gt;Связь &lt;code&gt;CanCreateChild&lt;/code&gt; будет непроходимой, так как фактически после создания объекта, он будет использоваться в других техниках, но никак не в рамках продолжения цепочки.&lt;/p&gt;
  &lt;p id=&quot;OqmU&quot;&gt;Сценариев использования прав  &lt;code&gt;CreateChild &lt;/code&gt;не так много, например, вы обнаружили, что группе доменных компьютеров разрешен доступ на сервер с правами локального администратора, а &lt;code&gt;MachineAccountQuota&lt;/code&gt; равен 0, но у вас есть учетная запись с правами &lt;code&gt;CreateChild&lt;/code&gt; на OU. Вы можете создать объект компьютер в этой OU и использовать ее для получения доступа.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;05s6&quot;&gt;Прежде чем создавать объекты нужно посмотреть &lt;code&gt;ObjectType&lt;/code&gt;. Если любой объект, тогда можно создавать или пользователя или компьютер в зависимости от ситуации. После импорта данных тип объекта можно посмотреть через браузер Neo4j.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;xpWT&quot;&gt;Создаем объект компьютер в OU с помощью ADSI:&lt;/p&gt;
  &lt;pre id=&quot;2qRA&quot;&gt;$ou = [ADSI]&amp;quot;LDAP://OU=Resources,OU=Company,DC=domain,DC=local&amp;quot;
$newComp = $ou.Create(&amp;quot;computer&amp;quot;, &amp;quot;CN=comp&amp;quot;)
$newComp.Put(&amp;quot;sAMAccountName&amp;quot;, &amp;quot;comp$&amp;quot;)
$newComp.Put(&amp;quot;userAccountControl&amp;quot;, 4096)
$newComp.SetInfo()&lt;/pre&gt;
  &lt;p id=&quot;lI9V&quot;&gt;Этими командами мы создаем объект компьютер, но мы не знаем от него пароля. Если попытаться добавить команду на установку пароля сразу при создании появится ошибка, что такого объекта не существует. Так что установим пароль следующими командами:&lt;/p&gt;
  &lt;pre id=&quot;0Bil&quot;&gt;$newComp.SetPassword(&amp;quot;NewSecurePassword123!&amp;quot;)
$newComp.SetInfo()&lt;/pre&gt;
  &lt;p id=&quot;bS37&quot;&gt;С помощью Rubeus можно проверить, что машина создалась, она активна и пароль установлен верный.&lt;/p&gt;
  &lt;figure id=&quot;sZr0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/78/04/7804ded0-47b7-422e-94f1-a6cb4cf19848.png&quot; width=&quot;1090&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7xNm&quot;&gt;При установке пароля или изменении атрибутов может возникнуть ошибка об отсутствии прав на объект. Так как мы являемся владельцем объекта у нас есть права на изменение прав доступа. Так же воспользуемся ADSI:&lt;/p&gt;
  &lt;pre id=&quot;eTip&quot;&gt;$comp = [ADSI]&amp;quot;LDAP://CN=comp,OU=Resources,OU=Company,DC=domain,DC=local&amp;quot;
$comp.psbase.Options.SecurityMasks = [System.DirectoryServices.SecurityMasks]::Dacl
$secDescriptor = $comp.psbase.ObjectSecurity
$IdentityReference = (New-Object System.Security.Principal.NTAccount(&amp;quot;svc_backup&amp;quot;)).Translate([System.Security.Principal.SecurityIdentifier])
$ACE = New-Object System.DirectoryServices.ActiveDirectoryAccessRule($IdentityReference,&amp;quot;GenericAll&amp;quot;,&amp;quot;Allow&amp;quot;)
$secDescriptor.AddAccessRule($ace)
$comp.psbase.CommitChanges()&lt;/pre&gt;
  &lt;p id=&quot;FzMt&quot;&gt;После чего можно повторить попытку установить пароль и использовать машину.&lt;/p&gt;
  &lt;tt-tags id=&quot;NLXG&quot;&gt;
    &lt;tt-tag name=&quot;внутрянка&quot;&gt;#внутрянка&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;activedirectory&quot;&gt;#activedirectory&lt;/tt-tag&gt;
  &lt;/tt-tags&gt;

</content></entry><entry><id>cyb3r53cr3t5:Edge_Property_is_killchain</id><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5/Edge_Property_is_killchain?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><title>Маркировка путей компрометации в BloodHound</title><published>2026-07-23T07:04:45.107Z</published><updated>2026-07-23T07:04:45.107Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/15/ef/15efb35b-71b9-430b-9833-96885ddd3a08.png"></media:thumbnail><category term="blood-hound" label="BloodHound"></category><tt:hashtag>bloodhound</tt:hashtag><tt:hashtag>внутрянка</tt:hashtag><tt:hashtag>cypher</tt:hashtag><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/74/9e/749e4d1e-8a54-4e57-a537-e153c12e5bde.png&quot;&gt;При проведении пентеста Active Directory мы часто сталкиваемся с задачей наглядно показать заказчику, какие именно цепочки атаки использовались от исходной точки до администратора домена. BloodHound отлично визуализирует граф атак, но по умолчанию не даёт возможности «запомнить» конкретные ребра, которые мы использовали в своей атаке. А ведь именно эти ребра — ключевые шаги, которые мы хотим продемонстрировать в отчете: чтобы заказчик видел не просто абстрактные пути, а реальную цепочку действий, которую мы воспроизвели.</summary><content type="html">
  &lt;figure id=&quot;e8OZ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/74/9e/749e4d1e-8a54-4e57-a537-e153c12e5bde.png&quot; width=&quot;931&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ogMN&quot;&gt;При проведении пентеста Active Directory мы часто сталкиваемся с задачей наглядно показать заказчику, какие именно цепочки атаки использовались от исходной точки до администратора домена. BloodHound отлично визуализирует граф атак, но по умолчанию не даёт возможности «запомнить» конкретные ребра, которые мы использовали в своей атаке. А ведь именно эти ребра — ключевые шаги, которые мы хотим продемонстрировать в отчете: чтобы заказчик видел не просто абстрактные пути, а реальную цепочку действий, которую мы воспроизвели.&lt;/p&gt;
  &lt;p id=&quot;jE64&quot;&gt;Для этого мы вводим собственное свойство &lt;code&gt;is_killchain&lt;/code&gt; для ребер графа. Пометив им все связи в выявленном пути, мы сможем легко отфильтровать их, визуально выделить на графе и перенести в отчетную документацию. Такой подход делает отчет понятным и убедительным, а также позволяет повторно использовать размеченные пути для последующего анализа.&lt;/p&gt;
  &lt;p id=&quot;6m0D&quot;&gt;Самый простой способ — выполнить Cypher запрос. Найти нужный путь можно с помощью стандартного механизма кратчайшего пути или вручную указав цепочку узлов. Затем мы извлекаем все ребра этого пути и для каждого из них устанавливаем свойство &lt;code&gt;is_killchain&lt;/code&gt; со значением &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
  &lt;pre id=&quot;pq4O&quot;&gt;MATCH p=AllShortestPaths((m:Group {name:&amp;quot;AUTHENTICATED USERS@DOMAIN.LOCAL&amp;quot;})-[*]-&amp;gt;(n:Domain {name:&amp;quot;DOMAIN.LOCAL&amp;quot;}))
WHERE ALL(x IN relationships(p) WHERE x.is_traversable = TRUE)
WITH p, relationships(p) AS rels
UNWIND rels AS rel
SET rel.is_killchain = TRUE&lt;/pre&gt;
  &lt;p id=&quot;EbCc&quot;&gt;В этом запросе используется &lt;code&gt;&lt;a href=&quot;https://teletype.in/@cyb3r53cr3t5/traversable_relationships&quot; target=&quot;_blank&quot;&gt;is_traversable = TRUE&lt;/a&gt;&lt;/code&gt;, чтобы не перечислять все проходимые ребра. Затем используем функцию &lt;code&gt;UNWIND&lt;/code&gt;, чтобы получить из пути все связи и с помощью &lt;code&gt;SET&lt;/code&gt; устанавливаем значения для нового свойства.&lt;/p&gt;
  &lt;p id=&quot;jDPv&quot;&gt;После того как мы пометили ребра пути, в BloodHound появляется возможность создавать собственные запросы, которые показывают только эти ребра.&lt;/p&gt;
  &lt;pre id=&quot;A9Dt&quot;&gt;MATCH p=(n)-[r]-&amp;gt;(m) WHERE r.is_killchain = TRUE RETURN p&lt;/pre&gt;
  &lt;p id=&quot;VONF&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;R0jd&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6d/ca/6dca0c29-0899-4e42-86a9-f0f607655ccb.png&quot; width=&quot;1090&quot; /&gt;
    &lt;figcaption&gt;Результат запроса&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7rQY&quot;&gt;Мы можем экспортировать полученный граф в виде изображения для вставки в отчет. Вместе с описанием каждого шага (например, «пользователь A входит в группу B», «группа B имеет право на компьютер C» и т.д.) получается наглядная иллюстрация всей цепочки атаки. Это значительно упрощает общение с заказчиком: он видит не просто список уязвимостей, а конкретный сценарий, который мы воспроизвели, и понимает, какие меры нужно принять для закрытия каждого шага.&lt;/p&gt;
  &lt;p id=&quot;tez9&quot;&gt;При желании мы можем расширить набор свойств — добавить, например, &lt;code&gt;killchain_order&lt;/code&gt; для нумерации шагов или &lt;code&gt;killchain_description&lt;/code&gt; с кратким пояснением, что делает каждый шаг. Это делает отчет еще более информативным и профессиональным.&lt;/p&gt;
  &lt;p id=&quot;ps6h&quot;&gt;Таким образом, простое пользовательское свойство превращает BloodHound из инструмента разведки в полноценное средство документирования и демонстрации путей атак, что особенно ценно при подготовке отчетов для клиентов.&lt;/p&gt;
  &lt;tt-tags id=&quot;4VvX&quot;&gt;
    &lt;tt-tag name=&quot;bloodhound&quot;&gt;#bloodhound&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;внутрянка&quot;&gt;#внутрянка&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;cypher&quot;&gt;#cypher&lt;/tt-tag&gt;
  &lt;/tt-tags&gt;

</content></entry><entry><id>cyb3r53cr3t5:solve_task_7</id><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5/solve_task_7?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><title>Решение задачки #7</title><published>2026-07-09T08:32:30.360Z</published><updated>2026-07-09T08:32:30.360Z</updated><category term="zadachi" label="Задачи"></category><tt:hashtag>внутрянка</tt:hashtag><tt:hashtag>задачи</tt:hashtag><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/d6/9d/d69d277b-2e53-442d-8a71-51bea071b53f.jpeg&quot;&gt;Если в GPO на добавление членов в локальные группы через Group Policy Preferences не указан SID, то это позволяет выполнить технику GPP Hijacking и получить привилегии той локальной группы, которая указана в GPO. Подробнее можно почитать в статье.</summary><content type="html">
  &lt;figure id=&quot;IM93&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d6/9d/d69d277b-2e53-442d-8a71-51bea071b53f.jpeg&quot; width=&quot;447&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;4gGC&quot;&gt;Если в GPO на добавление членов в локальные группы через &lt;code&gt;Group Policy Preferences&lt;/code&gt; не указан SID, то это позволяет выполнить технику &lt;code&gt;GPP Hijacking&lt;/code&gt; и получить привилегии той локальной группы, которая указана в GPO. Подробнее можно почитать в &lt;a href=&quot;https://www.cogiceo.com/en/whitepaper_gpphijacking/&quot; target=&quot;_blank&quot;&gt;статье&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;Qi8e&quot;&gt;Для реализации этой техники нам требуется возможность изменять атрибут &lt;code&gt;samaccountname&lt;/code&gt; у пользователя или группы, компьютеры не подходят так как уже реализована защита от noPac. По условию задачи у нас есть такая учетная запись &lt;code&gt;USER-456&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;wCSL&quot;&gt;Однако, прежде чем менять атрибут нам необходимо заполучить саму учетную запись &lt;code&gt;USER-456&lt;/code&gt;. В условии задачи ничего не сказано про ADCS и отключении PKINIT, предполагаем, что ADCS есть и выполняем технику &lt;code&gt;ShadowCredentials&lt;/code&gt;. В отдельном окне запрашиваем TGT билет Kerberos для учетной записи &lt;code&gt;USER-456&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;c6cB&quot;&gt;Если PKINIT нет, тогда можно выполнить технику таргетированного Kerberoasting или ASReproasting.&lt;br /&gt; В случае успешного получения любых учетных данных для пользователя &lt;code&gt;USER-456&lt;/code&gt;, мы меняем &lt;code&gt;samaccountname&lt;/code&gt; на &lt;code&gt;ws_admin_ws-567&lt;/code&gt;. Параметр &lt;code&gt;%ComputerName%&lt;/code&gt; принимает название машины и если в домене нет такого &lt;code&gt;samaccountname&lt;/code&gt; для пользователя или группы, то мы получим права локального администратора на этом хосте после обновления групповых политик.&lt;/p&gt;
  &lt;p id=&quot;GBxv&quot;&gt;Получаем доступ на хост &lt;code&gt;WS-567&lt;/code&gt; с правами локального администратора. Делаем дамп TGT билета Kerberos для учетной записи &lt;code&gt;ADM_PETROV&lt;/code&gt;, выполняем технику Pass-the-Ticket и получаем привилегии &lt;code&gt;SERVER ADMINS&lt;/code&gt;. Задача решена.&lt;/p&gt;
  &lt;p id=&quot;HYmm&quot;&gt;Для поиска GPO, которые потенциально подвержены технике &lt;code&gt;GPP Hijacking&lt;/code&gt; я написал простой &lt;a href=&quot;https://github.com/cyb3r53cr3t5/UsefulPowershellScripts/blob/main/Find-GPPHijackingGPO.ps1&quot; target=&quot;_blank&quot;&gt;скрипт&lt;/a&gt;.&lt;/p&gt;
  &lt;figure id=&quot;3RL1&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bb/b2/bbb288a6-1b76-4a27-b1b1-324485f58d34.png&quot; width=&quot;1090&quot; /&gt;
    &lt;figcaption&gt;Результат поиска GPPHijacking в GPO&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;tt-tags id=&quot;9l6v&quot;&gt;
    &lt;tt-tag name=&quot;внутрянка&quot;&gt;#внутрянка&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;задачи&quot;&gt;#задачи&lt;/tt-tag&gt;
  &lt;/tt-tags&gt;

</content></entry><entry><id>cyb3r53cr3t5:pentest_task_7</id><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5/pentest_task_7?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><title>Задача для собеседования #7</title><published>2026-07-02T07:49:48.911Z</published><updated>2026-07-02T07:49:48.911Z</updated><category term="zadachi" label="Задачи"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/88/05/88054658-315e-4338-a627-0f391204d5a8.png&quot;&gt;Задача с несколькими входящими данными, на мой взгляд достаточно интересная.</summary><content type="html">
  &lt;figure id=&quot;3opM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/88/05/88054658-315e-4338-a627-0f391204d5a8.png&quot; width=&quot;573&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;i1vc&quot;&gt;Задача с несколькими входящими данными, на мой взгляд достаточно интересная.&lt;/p&gt;
  &lt;h2 id=&quot;TNbL&quot;&gt;Сценарий&lt;/h2&gt;
  &lt;p id=&quot;sz60&quot;&gt;После сбора информации обнаружилось, что группа &lt;code&gt;AUTHENTICATED USERS&lt;/code&gt; имеет права &lt;code&gt;GenericWrite&lt;/code&gt; на пользователя &lt;code&gt;USER-456&lt;/code&gt;. Сам пользователь не обладает никакими значимыми правами и доступами.&lt;/p&gt;
  &lt;p id=&quot;gGPT&quot;&gt;Изучение групповых политик показало, что существует групповая политика &lt;code&gt;WS LOCAL ADMIN&lt;/code&gt; с интересной записью.&lt;/p&gt;
  &lt;figure id=&quot;d8FJ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d5/97/d5975fb5-e8cc-43ee-b833-5b0d360f587e.png&quot; width=&quot;1061&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;V7BO&quot;&gt;Сама политика применяется &lt;code&gt;WS LOCAL ADMIN&lt;/code&gt; к OU &lt;code&gt;WORKSTATION&lt;/code&gt;, в которую входит рабочая станция &lt;code&gt;WS-567&lt;/code&gt;. На этой рабочей станции есть сессия пользователя &lt;code&gt;ADM_PETROV&lt;/code&gt;, входящего в группу &lt;code&gt;SERVER ADMINS&lt;/code&gt;.&lt;/p&gt;
  &lt;figure id=&quot;qB29&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/ce/2b/ce2b87a4-96af-47c5-bdf0-366fb412d0cc.png&quot; width=&quot;949&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;W7hU&quot;&gt;Дополнительные условия&lt;/h3&gt;
  &lt;ul id=&quot;dfw9&quot;&gt;
    &lt;li id=&quot;n05b&quot;&gt;Есть доменная учетная запись PENTESTER.&lt;/li&gt;
    &lt;li id=&quot;SnHY&quot;&gt;На всех хостах в сети установлены последние обновления.&lt;/li&gt;
    &lt;li id=&quot;ulje&quot;&gt;Настройки по умолчанию.&lt;/li&gt;
    &lt;li id=&quot;lKRr&quot;&gt;Уровень домена – 2016.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h2 id=&quot;rIHB&quot;&gt;Цель&lt;/h2&gt;
  &lt;ul id=&quot;8bi8&quot;&gt;
    &lt;li id=&quot;Ctp8&quot;&gt;Получить привилегии группы &lt;code&gt;SERVER ADMINS&lt;/code&gt;.&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>cyb3r53cr3t5:Tag_Tier_Zero</id><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5/Tag_Tier_Zero?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><title>Tag_Tier_Zero и не только</title><published>2026-06-25T07:49:14.230Z</published><updated>2026-06-25T07:49:14.230Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/15/ef/15efb35b-71b9-430b-9833-96885ddd3a08.png"></media:thumbnail><category term="blood-hound" label="BloodHound"></category><tt:hashtag>bloodhound</tt:hashtag><tt:hashtag>внутрянка</tt:hashtag><tt:hashtag>cypher</tt:hashtag><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/74/9e/749e4d1e-8a54-4e57-a537-e153c12e5bde.png&quot;&gt;Добавление меток (label) или определенных свойств узлам позволяют группировать узлы по общему признаку и использовать их в запросах Cypher вместо общего перечисления. Так, например, для всех рабочих станций можно добавить метку &quot;Workstation&quot;, а для всех серверов &quot;Server&quot; и в зависимости от потребностей использовать эти метки в запросах.</summary><content type="html">
  &lt;figure id=&quot;Ec5y&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/74/9e/749e4d1e-8a54-4e57-a537-e153c12e5bde.png&quot; width=&quot;931&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;eUOu&quot;&gt;Добавление меток (label) или определенных свойств узлам позволяют группировать узлы по общему признаку и использовать их в запросах Cypher вместо общего перечисления. Так, например, для всех рабочих станций можно добавить метку &amp;quot;&lt;em&gt;Workstation&lt;/em&gt;&amp;quot;, а для всех серверов &amp;quot;&lt;em&gt;Server&lt;/em&gt;&amp;quot; и в зависимости от потребностей использовать эти метки в запросах.&lt;/p&gt;
  &lt;p id=&quot;010p&quot;&gt;Эволюция таких меток в BloodHound была следующей: в BloodHound Legacy использовались свойства &amp;quot;&lt;em&gt;n.highvalue&lt;/em&gt;&amp;quot; для определения узлов с высокими привилегиями &amp;quot;&lt;em&gt;n.owned&lt;/em&gt;&amp;quot; – скомпрометированный узел, в BloodHound CE начали использовать свойство &amp;quot;&lt;em&gt;n.system_tag&lt;/em&gt;&amp;quot;, в которой прописывались метки &amp;quot;&lt;em&gt;admin_tier_0&lt;/em&gt;&amp;quot; для привилегированных групп и &amp;quot;&lt;em&gt;owned&lt;/em&gt;&amp;quot; для скомпрометированных. С конца июля 2026 года будет использоваться только метки &amp;quot;&lt;em&gt;Tag_Tier_Zero&lt;/em&gt;&amp;quot; и &amp;quot;&lt;em&gt;Tag_Owned&lt;/em&gt;&amp;quot;. Это связанно с тем, что индексированные метки работают быстрее.&lt;/p&gt;
  &lt;p id=&quot;tPn2&quot;&gt;Если вы следите за обновлениями BloodHound CE учитывайте это в своих собственных Cypher запросах. Можно использовать универсальный подход в запросах:&lt;/p&gt;
  &lt;pre id=&quot;ghdo&quot;&gt;((n:Tag_Tier_Zero) OR COALESCE(n.system_tags, &amp;#x27;&amp;#x27;) CONTAINS &amp;#x27;admin_tier_0&amp;#x27; OR n.highvalue = TRUE)&lt;/pre&gt;
  &lt;p id=&quot;hUVe&quot;&gt;В этом случае будут проверяться все три варианта. Но для написания быстрых запросов нужно учитывать версию BloodHound.&lt;/p&gt;
  &lt;p id=&quot;Nm8U&quot;&gt;Но зачем останавливаться только на &amp;quot;&lt;em&gt;Tag_Tier_Zero&lt;/em&gt;&amp;quot;? В тировой модели три уровня: на нулевом находятся администраторы домена и им можно ходить только на контроллеры домена, на первом – администраторы серверов, приложений, баз данных и так далее, и они занимаются только серверной инфраструктурой, а на втором уровне это администраторы рабочих станций и всего, что связанно с пользовательским сегментом.&lt;/p&gt;
  &lt;p id=&quot;A8as&quot;&gt;Добавим новые метки &amp;quot;&lt;em&gt;Tag_Tier_One&lt;/em&gt;&amp;quot; и &amp;quot;&lt;em&gt;Tag_Tier_Two&amp;quot;&lt;/em&gt;, но для начала добавим новые индексы:&lt;/p&gt;
  &lt;pre id=&quot;PKU3&quot;&gt;CREATE INDEX IF NOT EXISTS FOR (n:Tag_Tier_One) ON (n.objectid);
CREATE INDEX IF NOT EXISTS FOR (n:Tag_Tier_One) ON (n.name);
CREATE INDEX IF NOT EXISTS FOR (n:Tag_Tier_Two) ON (n.objectid);
CREATE INDEX IF NOT EXISTS FOR (n:Tag_Tier_Two) ON (n.name);&lt;/pre&gt;
  &lt;p id=&quot;sLaT&quot;&gt;Итак, метки определены теперь нужно найти объекты, на которые можно эти метки установить. Делаем запрос на поиск всех групп, у которых в имени есть &lt;strong&gt;ADMIN&lt;/strong&gt;, но исключаем &amp;quot;Tag_Tier_Zero&amp;quot; и выводим имя и описание:&lt;/p&gt;
  &lt;pre id=&quot;lEYO&quot;&gt;MATCH (g:Group) WHERE g.name CONTAINS &amp;#x27;ADMIN&amp;#x27;
AND NOT ((g:Tag_Tier_Zero) OR COALESCE(g.system_tags, &amp;#x27;&amp;#x27;) CONTAINS &amp;#x27;admin_tier_0&amp;#x27; OR g.highvalue = TRUE)
RETURN g.name, g.description&lt;/pre&gt;
  &lt;p id=&quot;RMjT&quot;&gt;Поле description может нам помочь определить к какому уровню относится та или иная группа. А так по имени определяем уровень и устанавливаем новую метку, например мы нашли две группы &lt;strong&gt;SERVER_ADMINS&lt;/strong&gt; и &lt;strong&gt;WORKSTATION_ADMINS&lt;/strong&gt;.&lt;/p&gt;
  &lt;pre id=&quot;qIn1&quot;&gt;MATCH (g1:Group) WHERE g1.name STARTS WITH &amp;#x27;SERVER_ADMINS&amp;#x27; SET g:Tag_Tier_One
MATCH (g2:Group) WHERE g2.name STARTS WITH &amp;#x27;WORKSTATION_ADMINS&amp;#x27; SET g:Tag_Tier_Two&lt;/pre&gt;
  &lt;p id=&quot;loMS&quot;&gt;Добавим членам группы &lt;strong&gt;SERVER_ADMINS&lt;/strong&gt; ту же метку.&lt;/p&gt;
  &lt;pre id=&quot;ubvj&quot;&gt;MATCH (u:Base)-[r:MemberOf*1..]-&amp;gt;(g:Tag_Tier_One) SET u: Tag_Tier_One&lt;/pre&gt;
  &lt;p id=&quot;h9Pp&quot;&gt;Теперь можно использовать эти метки при построении путей, включать или исключать. Например, мы хотим посмотреть есть ли у нас короткие пути от группы доменных пользователей до группы доменных администраторов минуя все &amp;quot;&lt;em&gt;Tag_Tier_One&lt;/em&gt;&amp;quot; узлы:&lt;/p&gt;
  &lt;pre id=&quot;VO17&quot;&gt;MATCH p=AllShortestPaths((m:Group {name:&amp;quot;DOMAIN USERS@DOMAIN.LOCAL&amp;quot;})-[*]-&amp;gt;(n:Group {name:&amp;quot;DOMAIN ADMINS@DOMAIN.LOCAL&amp;quot;}))
WHERE ALL(x IN relationships(p) WHERE x.is_traversable = TRUE)
AND NONE(x in nodes(p) WHERE x:Tag_Tier_One)
RETURN p&lt;/pre&gt;
  &lt;p id=&quot;T5XU&quot;&gt;В этом запросе используется &lt;strong&gt;&lt;em&gt;is_traversable = TRUE&lt;/em&gt;&lt;/strong&gt;, чтобы не перечислять все проходимые ребра.&lt;/p&gt;
  &lt;p id=&quot;KzmN&quot;&gt;Стоит отметить, что в больших сетях могут использоваться сотни различных групп администраторов, но зачастую они разделены по регионам или городам, а функционал будет одинаковым, и поэтому будут иметь общий шаблон наименования. Если определить такой шаблон, то по факту групп администраторов останется в разы меньше.&lt;/p&gt;
  &lt;tt-tags id=&quot;sobN&quot;&gt;
    &lt;tt-tag name=&quot;bloodhound&quot;&gt;#bloodhound&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;внутрянка&quot;&gt;#внутрянка&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;cypher&quot;&gt;#cypher&lt;/tt-tag&gt;
  &lt;/tt-tags&gt;

</content></entry><entry><id>cyb3r53cr3t5:filtering_local_group</id><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5/filtering_local_group?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><title>Фильтрация локальных групп в BloodHound</title><published>2026-06-11T07:07:33.087Z</published><updated>2026-06-11T07:07:33.087Z</updated><category term="blood-hound" label="BloodHound"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/72/23/7223fcdd-e9c1-4bd9-8ddf-15ff7c5d30bb.png&quot;&gt;В статье мы определили, что есть проходимые и непроходимые связи. Ребра локальных групп LocalToComputer и MemberOfLocalGroup являются непроходимыми. Исключая их мы можем потерять интересные маршруты. Исправим эту ситуацию.</summary><content type="html">
  &lt;figure id=&quot;OLsH&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/72/23/7223fcdd-e9c1-4bd9-8ddf-15ff7c5d30bb.png&quot; width=&quot;698&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;jWLv&quot;&gt;В &lt;a href=&quot;https://teletype.in/@cyb3r53cr3t5/traversable_relationships&quot; target=&quot;_blank&quot;&gt;статье&lt;/a&gt; мы определили, что есть проходимые и непроходимые связи. Ребра локальных групп &lt;strong&gt;&lt;em&gt;LocalToComputer&lt;/em&gt;&lt;/strong&gt; и &lt;strong&gt;&lt;em&gt;MemberOfLocalGroup&lt;/em&gt;&lt;/strong&gt; являются непроходимыми. Исключая их мы можем потерять интересные маршруты. Исправим эту ситуацию.&lt;/p&gt;
  &lt;p id=&quot;zRWi&quot;&gt;Добавим к нашему запросу, состоящему из проходимых ребер, эти два ребра:&lt;/p&gt;
  &lt;pre id=&quot;1lmr&quot;&gt;MATCH p=AllShortestPaths((m:Group {name:&amp;quot;DOMAIN USERS@DOMAIN.LOCAL&amp;quot;})-[r: AddMember|AddSelf|AdminTo|…|WriteSPN|LocalToComputer|MemberOfLocalGroup*1..]-&amp;gt;(n:Group {name:&amp;quot;DOMAIN ADMINS@DOMAIN.LOCAL&amp;quot;}))
RETURN p&lt;/pre&gt;
  &lt;p id=&quot;IsVb&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;QM9D&quot;&gt;Результат будет таким, как показано на рисунке в заголовке. Чаще всего будет встречаться локальная группа &lt;strong&gt;&lt;em&gt;USERS&lt;/em&gt;&lt;/strong&gt; на разных компьютерах. Эта группа позволяет локально подключаться к компьютеру, удаленное подключение невозможно, поэтому нужно исключить ее из нашего запроса.&lt;/p&gt;
  &lt;pre id=&quot;xETS&quot;&gt;MATCH (c)-[r:MemberOfLocalGroup]-&amp;gt;(b) WHERE b.objectid =~ &amp;#x27;(?i).*(-568|-545)&amp;#x27; WITH collect (b) AS excludeGroup
MATCH p=AllShortestPaths((m:Group {name:&amp;quot;DOMAIN USERS@DOMAIN.LOCAL&amp;quot;})-[r: AddMember|AddSelf|AdminTo|…|WriteSPN|LocalToComputer|MemberOfLocalGroup*1..]-&amp;gt;(n:Group {name:&amp;quot;DOMAIN ADMINS@DOMAIN.LOCAL&amp;quot;}))
WHERE NONE(x in nodes(p) WHERE x IN excludeGroup)
RETURN p&lt;/pre&gt;
  &lt;p id=&quot;Trkq&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;SgnB&quot;&gt;Первым запросом мы выбирает все локальные группы из базы, которые соответствуют нашему критерию (&lt;strong&gt;&lt;em&gt;users&lt;/em&gt;&lt;/strong&gt;, &lt;em&gt;iis_iusrs&lt;/em&gt;) и собираем их в коллекцию &lt;strong&gt;&lt;em&gt;excludeGroup&lt;/em&gt;&lt;/strong&gt;. В самом поиске всех коротких путей мы добавляем условие, что в графе не должно встречаться ни одного узла из коллекции &lt;strong&gt;&lt;em&gt;excludeGroup&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;9jHx&quot;&gt;В результате мы получим более эксплуатируемых граф.&lt;/p&gt;
  &lt;figure id=&quot;uVWV&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/62/38/62382b14-f9ce-4055-8f30-7bf6306b07d4.png&quot; width=&quot;1090&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Opo2&quot;&gt;Дополнительно мы исключили из запроса группу &lt;strong&gt;&lt;em&gt;IIS_IUSRS&lt;/em&gt;&lt;/strong&gt;, этот список можно расширять, добавляя RID в запрос.&lt;/p&gt;
  &lt;p id=&quot;dkKu&quot;&gt;Если вы используете свойство &lt;strong&gt;&lt;em&gt;is_traversable&lt;/em&gt;&lt;/strong&gt;, то нам нужно добавить условие, что в запросе могут быть ребра &lt;strong&gt;&lt;em&gt;LocalToComputer&lt;/em&gt;&lt;/strong&gt; и &lt;strong&gt;&lt;em&gt;MemberOfLocalGroup&lt;/em&gt;&lt;/strong&gt;. И мы все также исключаем узлы с локальными группами из запроса.&lt;/p&gt;
  &lt;pre id=&quot;xGDn&quot;&gt;MATCH (c)-[r:MemberOfLocalGroup]-&amp;gt;(b) WHERE b.objectid =~ &amp;#x27;(?i).*(-568|-545)&amp;#x27; WITH collect (b) AS excludeGroup
MATCH p=AllShortestPaths((m:Group {name:&amp;quot;DOMAIN USERS@DOMAIN.LOCAL&amp;quot;})-[*]-&amp;gt;(n:Group {name:&amp;quot;DOMAIN ADMINS@DOMAIN.LOCAL&amp;quot;})) 
WHERE ANY(x IN relationships(p) WHERE x.is_traversable = TRUE OR type(x) = &amp;quot;LocalToComputer&amp;quot; OR type(x) = &amp;quot;MemberOfLocalGroup&amp;quot;) 
AND NONE(x in nodes(p) WHERE x IN excludeGroup)
RETURN p&lt;/pre&gt;
  &lt;p id=&quot;l5oV&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;rrBF&quot;&gt;Таким образом добавление непроходимых ребер для локальных групп и фильтрация по этим группам могут предоставить интересные маршруты для проведения работ.&lt;/p&gt;

</content></entry><entry><id>cyb3r53cr3t5:create_local_boxes_vagrant_for_goad</id><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5/create_local_boxes_vagrant_for_goad?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><title>Создаем локальные боксы Vagrant для GOAD</title><published>2026-06-04T08:02:38.308Z</published><updated>2026-06-04T08:02:38.308Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/6c/e1/6ce18bd4-925a-432c-9717-4726a1a01c35.png"></media:thumbnail><category term="laboratoriya" label="Лаборатория"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/39/ce/39ce5343-ff15-43d4-bf82-b2cbad8afe8b.png&quot;&gt;Я много слышал про GOAD, но никогда не разворачивал. И вот я решил посмотреть, что это такое в живую. Однако существует проблема Hashicorp запрещает доступ к образам с российских IP адресов. У меня нет возможности выкачивать несколько гигабайт через VPN, однако есть возможность скачать приложения vagrant и packer. Сегодня я расскажу, как с помощью них можно создать локальные боксы Vagrant для GOAD.</summary><content type="html">
  &lt;figure id=&quot;3Rhx&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/39/ce/39ce5343-ff15-43d4-bf82-b2cbad8afe8b.png&quot; width=&quot;639&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pJDw&quot;&gt;Я много слышал про GOAD, но никогда не разворачивал. И вот решил посмотреть, что это такое в живую. Однако существует проблема Hashicorp запрещает доступ к образам с российских IP адресов. У меня нет возможности выкачивать несколько гигабайт через VPN, однако есть возможность скачать приложения vagrant и packer. Сегодня я расскажу, как с помощью них можно создать локальные боксы Vagrant для GOAD.&lt;/p&gt;
  &lt;p id=&quot;n1m7&quot;&gt;У меня локальная лаборатория на Windows с использованием VirtualBox в качестве гипервизора. Но техника будет работать и для VMWare со своими особенностями. Для самого GOAD я использовал WSL, но сейчас он нам не нужен. Скачиваем и устанавливаем приложение Vagrant с официального сайта. Клонируем GOAD из репозитория. Скачиваем Packer с официального сайте Hashicorp и распаковываем исполняемый файл в «&lt;em&gt;\GOAD\packer\vagrant\&lt;/em&gt;».&lt;/p&gt;
  &lt;p id=&quot;3CZM&quot;&gt;Для взаимодействия Packer с приложениями Vagrant и VirtualBox необходимо установить плагины:&lt;/p&gt;
  &lt;p id=&quot;oIQ9&quot;&gt;&lt;code&gt;.\packer.exe plugins install github.com/hashicorp/virtualbox&lt;br /&gt;.\packer plugins install github.com/hashicorp/vagrant&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;KSFj&quot;&gt;Для Vagrant тоже нужно установить несколько плагинов, возможно, не все они требуются для Packer, но для GOAD точно нужны:&lt;/p&gt;
  &lt;ul id=&quot;geHL&quot;&gt;
    &lt;li id=&quot;IZ7d&quot;&gt;vagrant-reload&lt;/li&gt;
    &lt;li id=&quot;K5bi&quot;&gt;micromachine&lt;/li&gt;
    &lt;li id=&quot;tu9O&quot;&gt;vagrant-vbguest&lt;/li&gt;
    &lt;li id=&quot;NZAb&quot;&gt;nori&lt;/li&gt;
    &lt;li id=&quot;MJNu&quot;&gt;winrm&lt;/li&gt;
    &lt;li id=&quot;YdXE&quot;&gt;winrm-fs&lt;/li&gt;
    &lt;li id=&quot;nFcR&quot;&gt;winrm-elevated&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;iZBe&quot;&gt;Чтобы не обращаться к сайту Hahicorp для установки плагинов пойдем на сайт &lt;a href=&quot;https://rubygems.org&quot; target=&quot;_blank&quot;&gt;https://rubygems.org&lt;/a&gt; и скачаем локально все необходимые плагины. Теперь чтобы установить плагины нужно выполнить команду для каждого файла:&lt;/p&gt;
  &lt;p id=&quot;cAhM&quot;&gt;&lt;code&gt;vagrant.exe plugin install --plugin-clean-sources &amp;lt;plugin_name&amp;gt;.gem&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;dPOJ&quot;&gt;Проверить что все плагины установлены можно командой:&lt;/p&gt;
  &lt;p id=&quot;OLx8&quot;&gt;&lt;code&gt;vagrant.exe plugin list&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;UeSK&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b5/c7/b5c7892a-746a-4bc4-8f03-605bc7c871b2.png&quot; width=&quot;759&quot; /&gt;
    &lt;figcaption&gt;Список установленных плагинов Vagrant&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;fIOk&quot;&gt;Мы готовы к созданию боксов.&lt;/p&gt;
  &lt;p id=&quot;LQaM&quot;&gt;Авторы GOAD предоставили все необходимые конфигурационные файлы в «&lt;em&gt;\GOAD\packer\vagrant\&lt;/em&gt;» осталось только запастись терпением. В GOAD в основном используется Windows Server 2019 поэтому начну с него. Необходимо выполнить команду:&lt;/p&gt;
  &lt;p id=&quot;Ogf3&quot;&gt;&lt;code&gt;.\packer.exe build --only=virtualbox-iso windows_2019.json&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;RSqh&quot;&gt;Packer самостоятельно скачает образ Windows Server 2019 и запустит автоматическую настройку. Если во время загрузки происходит обрыв связи, то можно открыть файл «&lt;em&gt;windows_2019.json&lt;/em&gt;» внизу файла будет ссылка на загрузку и можно скачать образ обычным способом и тогда запуск команды немного измениться. Я специально переименовал ISO файл чтобы он был короче.&lt;/p&gt;
  &lt;p id=&quot;hziG&quot;&gt;&lt;code&gt;.\packer.exe build --only=virtualbox-iso --var iso_url=Windows_Server_2019.iso windows_2019.json&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;hsRN&quot;&gt;Если вы хотите использовать собственные ISO файлы нужно прописать ключи в «&lt;em&gt;Autounattend.xml&lt;/em&gt;» в директории «&lt;em&gt;answer_files&lt;/em&gt;», там есть целый блок, описывающий как это сделать. Но ознакомительной версии Windows достаточно для лаборатории.&lt;/p&gt;
  &lt;p id=&quot;5OyU&quot;&gt;Дожидаемся, когда завершится процесс сборки бокса, у меня со всеми обновлениями заняло около двух часов. Теперь необходимо добавить бокс в локальное хранилище Vagrant. Чтобы не менять конфигурационный файлы для лабораторий имя бокса взято из файла «G&lt;em&gt;OAD\ad\&amp;lt;lab&amp;gt;\providers\virtualbox&lt;/em&gt;». Хотя для некоторых лабораторий придется менять Vagrantfile чтобы установить версию &amp;quot;0&amp;quot; иначе будут попытки скачать бокс из Интернета.&lt;/p&gt;
  &lt;p id=&quot;oyiv&quot;&gt;&lt;code&gt;vagrant.exe box add /path/to/file.box --name &amp;quot;StefanScherer/windows_2019&amp;quot;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;O3Bq&quot;&gt;Чтобы проверить, что наш бокс попал в локальное выполним команду:&lt;/p&gt;
  &lt;p id=&quot;xMDA&quot;&gt;&lt;code&gt;vagrant.exe box list&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;Tc7p&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/df/52/df5284c9-d846-48f5-bb3c-45bf129cf57d.png&quot; width=&quot;742&quot; /&gt;
    &lt;figcaption&gt;Локальное хранилище боксов Vagrant&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;QNQ6&quot;&gt;Локальное хранилище находиться в профиле пользователя в директории «&lt;em&gt;vagrant.d&lt;/em&gt;»&lt;/p&gt;
  &lt;p id=&quot;mMrO&quot;&gt;Выполнив шаги по созданию боксов для других версий Windows, можно приступать к созданию лаборатории.&lt;/p&gt;
  &lt;p id=&quot;x8TY&quot;&gt;Еще раз повторюсь для VMWare будет таже самая история, но нужен другой плагин Packer для взаимодействия c VMWare и в команде &lt;em&gt;build&lt;/em&gt; измениться название гипервизора.&lt;/p&gt;

</content></entry><entry><id>cyb3r53cr3t5:solve_task_6</id><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5/solve_task_6?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><title>Решение задачки #6</title><published>2026-05-28T07:35:05.235Z</published><updated>2026-05-28T07:35:05.235Z</updated><category term="zadachi" label="Задачи"></category><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/d6/9d/d69d277b-2e53-442d-8a71-51bea071b53f.jpeg&quot;&gt;Итак, у нас есть доменная учетная запись PENTESTER, с помощью которой мы можем обращаться к контроллеру домена. Есть сервисная учетная запись учетная запись SVC_SQL с SPN, и мы можем выполнить технику &quot;Kerberoasting&quot;. Однако по условиям задачи на эту учетную запись установлен сложный пароль и перебор пароля если и возможен, то займет много времени.</summary><content type="html">
  &lt;figure id=&quot;ZtW0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d6/9d/d69d277b-2e53-442d-8a71-51bea071b53f.jpeg&quot; width=&quot;447&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;mS5B&quot;&gt;Итак, у нас есть доменная учетная запись &lt;strong&gt;&lt;em&gt;PENTESTER&lt;/em&gt;&lt;/strong&gt;, с помощью которой мы можем обращаться к контроллеру домена. Есть сервисная учетная запись учетная запись &lt;em&gt;&lt;strong&gt;SVC_SQL&lt;/strong&gt;&lt;/em&gt; с SPN, и мы можем выполнить технику &amp;quot;&lt;em&gt;Kerberoasting&lt;/em&gt;&amp;quot;. Однако по условиям задачи на эту учетную запись установлен сложный пароль и перебор пароля если и возможен, то займет много времени.&lt;/p&gt;
  &lt;p id=&quot;EDvC&quot;&gt;Так же мы видим, что группа доменных компьютеров владеет сервером &lt;strong&gt;&lt;em&gt;SRV-SQL-01&lt;/em&gt;&lt;/strong&gt;. Это означает, что владелец объекта может назначать любые права для объекта &lt;em&gt;&lt;strong&gt;SRV-SQL-01&lt;/strong&gt;&lt;/em&gt;. Но для этого требуется учетная запись компьютера.&lt;/p&gt;
  &lt;p id=&quot;kH16&quot;&gt;По условию задачи все настройки установлены по умолчанию. А значит создаем объект компьютер и с помощью него назначаем себе любые привилегии на &lt;strong&gt;SRV-SQL-01&lt;/strong&gt;. Для удобства &amp;quot;&lt;em&gt;GenericAll&amp;quot;.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;TlNE&quot;&gt;Назначив права, нам необходимо получить доступ на хост. Выбираем технику между &amp;quot;&lt;em&gt;Shadow Credentials&amp;quot;&lt;/em&gt; и &amp;quot;&lt;em&gt;RBCD&lt;/em&gt;&amp;quot;. Пароль сбросить мы не можем так, как в этом случае машина «выпадет» из домена.&lt;/p&gt;
  &lt;p id=&quot;s6Th&quot;&gt;После получения доступа на хост с правами локального администратора, делаем дамп LSA и извлекаем из него секреты. В результате мы получим пароль от сервисной учетной записи &lt;strong&gt;&lt;em&gt;SVC_SQL&lt;/em&gt;&lt;/strong&gt; в открытом виде. И таким образом у нас есть права доменного администратора.&lt;/p&gt;

</content></entry><entry><id>cyb3r53cr3t5:pentest_task_6</id><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5/pentest_task_6?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><title>Задача для собеседования #6</title><published>2026-05-21T09:49:22.256Z</published><updated>2026-05-21T09:49:22.256Z</updated><category term="zadachi" label="Задачи"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/49/72/4972b3a5-8c12-4c38-89b2-365ce3f57f2d.png&quot;&gt;Простой сценарий на понимание как работают службы в Windows.</summary><content type="html">
  &lt;figure id=&quot;6sVk&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/49/72/4972b3a5-8c12-4c38-89b2-365ce3f57f2d.png&quot; width=&quot;831&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qftp&quot;&gt;Простой сценарий на понимание как работают службы в Windows.&lt;/p&gt;
  &lt;h2 id=&quot;TwNC&quot;&gt;Сценарий&lt;/h2&gt;
  &lt;p id=&quot;4sDI&quot;&gt;В ходе сбора информации мы обнаружили, что есть сервисная учетная запись &lt;strong&gt;&lt;em&gt;SVC_SQL&lt;/em&gt;&lt;/strong&gt; от имени, которой запускается служба MsSQL на сервере &lt;strong&gt;&lt;em&gt;SRV-SQL-01&lt;/em&gt;&lt;/strong&gt;. Сама учетная запись &lt;em&gt;&lt;strong&gt;SVC_SQL&lt;/strong&gt;&lt;/em&gt; является членом группы &lt;strong&gt;DOMAIN ADMINS &lt;/strong&gt;и у нее есть SPN. Так же было обнаружено, что доменная группа &lt;strong&gt;DOMAIN COMPUTERS&lt;/strong&gt; является владельцем сервера &lt;strong&gt;&lt;em&gt;SRV-SQL-01&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;dKjC&quot;&gt;Дополнительные условия&lt;/h3&gt;
  &lt;ul id=&quot;IhjO&quot;&gt;
    &lt;li id=&quot;xYSh&quot;&gt;Есть доменная учетная запись &lt;strong&gt;&lt;em&gt;PENTESTER&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;W6oU&quot;&gt;Сложный пароль для сервисной учетной записи &lt;em&gt;&lt;strong&gt;SVC_SQL&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;
    &lt;li id=&quot;4G7H&quot;&gt;На всех хостах в сети установлены последние обновления.&lt;/li&gt;
    &lt;li id=&quot;SIWF&quot;&gt;Настройки по умолчанию.&lt;/li&gt;
    &lt;li id=&quot;24a1&quot;&gt;Уровень домена – 2016.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h2 id=&quot;VVLM&quot;&gt;Цель&lt;/h2&gt;
  &lt;ul id=&quot;g1Nq&quot;&gt;
    &lt;li id=&quot;VoWq&quot;&gt;Получить привилегии  доменного администратора.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;4BFT&quot;&gt;Решение будет через пару дней.&lt;/p&gt;

</content></entry><entry><id>cyb3r53cr3t5:traversable_relationships</id><link rel="alternate" type="text/html" href="https://teletype.in/@cyb3r53cr3t5/traversable_relationships?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=cyb3r53cr3t5"></link><title>Проходимые и непроходимые связи в BloodHound</title><published>2026-05-12T07:48:53.168Z</published><updated>2026-05-12T07:48:53.168Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/95/0f/950f6b4a-e8cc-46c3-8a08-40bd9f8c9968.png"></media:thumbnail><category term="blood-hound" label="BloodHound"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/7f/59/7f593cfd-34ee-4761-ab4a-99a28fb96096.png&quot;&gt;Специалисты, которые самостоятельно пишут Cypher запросы для коротких путей, знают, что в некоторых случаях neo4j выдает не те графы, которые хочется увидеть. Особенно, когда строятся короткие пути от общих групп до группы доменных администраторов. Часто рисуются графы, связанные с шаблонами сертификатов и членством в локальных группах и не только в привилегированных. Эти графы практически невозможно преобразовать в цепочку атаки.</summary><content type="html">
  &lt;figure id=&quot;sfOA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7f/59/7f593cfd-34ee-4761-ab4a-99a28fb96096.png&quot; width=&quot;1090&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;FvJT&quot;&gt;Специалисты, которые самостоятельно пишут Cypher запросы для коротких путей, знают, что в некоторых случаях neo4j выдает не те графы, которые хочется увидеть. Особенно, когда строятся короткие пути от общих групп до группы доменных администраторов. Часто рисуются графы, связанные с шаблонами сертификатов и членством в локальных группах и не только в привилегированных. Эти графы практически невозможно преобразовать в цепочку атаки.&lt;/p&gt;
  &lt;p id=&quot;TDwx&quot;&gt;В этом случае надо фильтровать связи в самом Cypher запросе при построении коротких путей. Рассмотрим два варианта Cypher запросов. В перовом варианте указываем все интересующие связи в квадратных скобках и в конце добавляем бесконечное число прыжков:&lt;/p&gt;
  &lt;p id=&quot;3Vnr&quot;&gt;&lt;code&gt;MATCH p=AllshortestPaths((c:Group {name:&amp;quot;DOMAIN USERS@DOMAIN.LOCAL&amp;quot;})-[r:GenericAll|GenericWrite|DCSync|...*1..]-&amp;gt;(v:Group {name:&amp;quot;DOMAIN ADMINS@DOMAIN.LOCAL&amp;quot;})) RETURN p&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;T40m&quot;&gt;В другом варианте будем использовать оператор &lt;em&gt;&lt;strong&gt;IN&lt;/strong&gt;&lt;/em&gt; и исключать неинтересные нам связи:&lt;/p&gt;
  &lt;p id=&quot;k1Vp&quot;&gt;&lt;code&gt;MATCH p=AllshortestPaths((c:Group {name:&amp;quot;DOMAIN USERS@DOMAIN.LOCAL&amp;quot;})-[*]-&amp;gt;(v:Group {name:&amp;quot;DOMAIN ADMINS@DOMAIN.LOCAL&amp;quot;})) WHERE NONE(x IN relationships(p) WHERE type(x)=&amp;#x27;CrossForestTrust&amp;#x27; OR type(x)=&amp;#x27;DelegatedEnrollmentAgent&amp;#x27; OR ...) RETURN p&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;IzA6&quot;&gt;Писать такие запросы очень неудобно и можно создать шаблоны и использовать их. Но пойдем другим путем.&lt;/p&gt;
  &lt;p id=&quot;MA0m&quot;&gt;Разработчики BloodHound &lt;a href=&quot;https://bloodhound.specterops.io/resources/edges/traversable-edges&quot; target=&quot;_blank&quot;&gt;разделяют&lt;/a&gt; ребра (связи) графа на два типа: проходимые (traversable) и непроходимые (non-traversable). Первый тип позволяет захватывать конечный узел в графе, второй тип – это связи, которые могут не предоставлять захват конечного узла в графе.&lt;/p&gt;
  &lt;p id=&quot;Cg8V&quot;&gt;Зная какие связи являются проходимыми к ним можно добавить свойство  &lt;strong&gt;&lt;em&gt;is_traversable&lt;/em&gt;&lt;/strong&gt; и установить значение &lt;strong&gt;&lt;em&gt;TRUE&lt;/em&gt;&lt;/strong&gt;. Чтобы не писать вручную каждый Cypher запрос напишем простой ps-скрипт, который сгенерирует нам Cypher запросы на добавление свойства для каждой связи:&lt;/p&gt;
  &lt;p id=&quot;Kcti&quot;&gt;&lt;code&gt;$relationships = @(&amp;quot;AbuseTGTDelegation&amp;quot;,&amp;quot;ADCSESC1&amp;quot;,&amp;quot;ADCSESC10a&amp;quot;,&amp;quot;ADCSESC10b&amp;quot;,&amp;quot;ADCSESC13&amp;quot;,&amp;quot;ADCSESC3&amp;quot;,&amp;quot;ADCSESC4&amp;quot;,&amp;quot;ADCSESC6a&amp;quot;,&amp;quot;ADCSESC6b&amp;quot;,&amp;quot;ADCSESC9a&amp;quot;,&amp;quot;ADCSESC9b&amp;quot;,&amp;quot;AddAllowedToAct&amp;quot;,&amp;quot;AddKeyCredentialLink&amp;quot;,&amp;quot;AddMember&amp;quot;,&amp;quot;AddSelf&amp;quot;,&amp;quot;AdminTo&amp;quot;,&amp;quot;AllExtendedRights&amp;quot;,&amp;quot;AllowedToAct&amp;quot;,&amp;quot;AllowedToDelegate&amp;quot;,&amp;quot;CanPSRemote&amp;quot;,&amp;quot;CanRDP&amp;quot;,&amp;quot;ClaimSpecialIdentity&amp;quot;,&amp;quot;CoerceAndRelayNTLMToADCS&amp;quot;,&amp;quot;CoerceAndRelayNTLMToLDAP&amp;quot;,&amp;quot;CoerceAndRelayNTLMToLDAPS&amp;quot;,&amp;quot;CoerceAndRelayNTLMToSMB&amp;quot;,&amp;quot;CoerceToTGT&amp;quot;,&amp;quot;Contains&amp;quot;,&amp;quot;CrossForestTrust&amp;quot;,&amp;quot;DCFor&amp;quot;,&amp;quot;DCSync&amp;quot;,&amp;quot;DumpSMSAPassword&amp;quot;,&amp;quot;ExecuteDCOM&amp;quot;,&amp;quot;ForceChangePassword&amp;quot;,&amp;quot;GenericAll&amp;quot;,&amp;quot;GenericWrite&amp;quot;,&amp;quot;GoldenCert&amp;quot;,&amp;quot;GPLink&amp;quot;,&amp;quot;HasSIDHistory&amp;quot;,&amp;quot;HasSession&amp;quot;,&amp;quot;HasTrustKeys&amp;quot;,&amp;quot;ManageCA&amp;quot;,&amp;quot;ManageCertificates&amp;quot;,&amp;quot;MemberOf&amp;quot;,&amp;quot;Owns&amp;quot;,&amp;quot;OwnsLimitedRights&amp;quot;,&amp;quot;ReadGMSAPassword&amp;quot;,&amp;quot;ReadLAPSPassword&amp;quot;,&amp;quot;SameForestTrust&amp;quot;,&amp;quot;SpoofSIDHistory&amp;quot;,&amp;quot;SQLAdmin&amp;quot;,&amp;quot;SyncedToADUser&amp;quot;,&amp;quot;SyncedToEntraUser&amp;quot;,&amp;quot;SyncLAPSPassword&amp;quot;,&amp;quot;WriteAccountRestrictions&amp;quot;,&amp;quot;WriteDacl&amp;quot;,&amp;quot;WriteGPLink&amp;quot;,&amp;quot;WriteOwner&amp;quot;,&amp;quot;WriteOwnerLimitedRights&amp;quot;,&amp;quot;WriteSPN&amp;quot;)&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;7Jnq&quot;&gt;&lt;code&gt;foreach($relationship in $relationships){&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;BNuW&quot;&gt;&lt;code&gt;Write-Host &amp;quot;MATCH(m)-[r:$relationship]-&amp;gt;(n) SET r.is_traversable = TRUE;&amp;quot;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;Gwpa&quot;&gt;&lt;code&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;l8vr&quot;&gt;После выполнения вставим все эти запросы в базу neo4j через browser neo4j.&lt;/p&gt;
  &lt;blockquote id=&quot;7LgN&quot;&gt;Название свойства &lt;strong&gt;&lt;em&gt;is_traversable &lt;/em&gt;&lt;/strong&gt;взято из документации по OpenGraph, но в самом BloodHound CE данное свойство не используется, и запросы строятся перечислением всех проходимых связей.  &lt;/blockquote&gt;
  &lt;p id=&quot;36mw&quot;&gt;Теперь чтобы воспользоваться новым свойством связи изменим наш поиск коротких путей на:&lt;/p&gt;
  &lt;p id=&quot;eeni&quot;&gt;&lt;code&gt;MATCH p=AllshortestPaths((c:Group {name:&amp;quot;DOMAIN USERS@DOMAIN.LOCAL&amp;quot;})-[*]-&amp;gt;(v:Group {name:&amp;quot;DOMAIN ADMINS@DOMAIN.LOCAL&amp;quot;})) WHERE ALL(x IN relationships(p) WHERE x.is_traversable = TRUE) RETURN p&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;xRH7&quot;&gt;В этом запросе мы просто говорим neo4j, что у всех связей в пути должно быть свойство &lt;em&gt;&lt;strong&gt;is_traversable&lt;/strong&gt;&lt;/em&gt; в значении &lt;strong&gt;&lt;em&gt;TRUE&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
  &lt;figure id=&quot;Lsgq&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/53/e1/53e16fc2-cf46-46db-962c-ccc315b190d0.png&quot; width=&quot;698&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;98ZZ&quot;&gt;На двух изображениях одна и таже инфраструктура и узлы начала и конца, но во втором варианте мы используем только проходимые ребра, в результате картина более ясная.&lt;/p&gt;
  &lt;p id=&quot;LyTz&quot;&gt;Аналогично можно сделать с непроходимыми связями просто изменив набор на непроходимые связи и поставить значение свойства &lt;strong&gt;is_traversable&lt;/strong&gt; в &lt;strong&gt;&lt;em&gt;FALSE&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;lbgI&quot;&gt;При построении графов нужно использовать различные варианты фильтрации запросов и тогда результат будет полным.&lt;/p&gt;

</content></entry></feed>