コンテンツにスキップ

プロトコルとライブラリモジュール

コマンド全体目次へ戻る

ここでは、コマンドをまたいで使われる技術を、基礎となる通信・データ形式から Impacket の実装まで順に追います。たとえば Kerberos のページでは、チケット 交換を押さえたうえで impacket/krb5/ の関数と鍵の扱いを説明します。 コマンドページでは各 CLI の動作と分岐を、 Active Directory の解説では Windows 側の認証や運用を扱います。

コードの現在の実装を正とします。Microsoft の公開仕様 ([MS-SMB2]、[MS-NLMP]、[MS-KILE]、[MS-RPCE]、[MS-PAC] など) は背景知識として 参照しますが、Impacket が実装していない機能や、意図的に簡略化している点は この文書側に明記します。

  1. Structure とバイナリ DSL — ほぼすべての PDU の土台
  2. 対象プロトコルのページ
  3. そのプロトコルを使う コマンドページ
ページ対象モジュール主なコマンドカテゴリ
Structurestructure.py全般
SMB / NetBIOSnmb, smb, smb3, smb3structs, smbconnection, smbserverSMB-RPC、RemoteExecution
NTLM / SPNEGO / NEGOEXntlm, spnego, negoexSMB-RPC
Kerberoskrb5.*Kerberos
DCE/RPC と NDRdcerpc.v5.*SMB-RPC、RemoteExecution、ActiveDirectory
LDAP と AD セキュリティ記述子ldap.*, ldaptypes, msada_guidsActiveDirectory
DPAPI / SAM / LSA / NTDSdpapi, dpapi_ng, winregistry, ese, examples.secretsdumpSecrets-Storage
TDS / MQTT / Exchangetds, mqtt, dcerpc.v5.nspiDatabase-Messaging
パケット / レジストリ / ESE / NTFSImpactPacket, ImpactDecoder, IP6*, ese, winregistryNetwork-Packets、Secrets-Storage

Impacket は「仕様の完全実装」ではなく、研究・検証に必要な範囲の実装です。 特に次の点は、仕様書だけを読んでコードを直すと壊れます。

  • SMB2 と SMB3 のクライアント実装はどちらも smb3.py にあります。
  • NTLMv2 はネゴシエーション bit ではなく、ローカルの USE_NTLMv2 で決まります。
  • S4U2self / S4U2proxy / U2U は krb5.kerberosv5 ではなく、主に examples/getST.py 側です。
  • impacket.acl は SMB/NTFS のファイル ACL であり、AD の nTSecurityDescriptor ではありません。
  • SimpleSMBServer は SMB 2.0.2、2.1、3.1.1 を受け付けます。SMB 3.0 / 3.0.2 は提示しません。