コンテンツにスキップ

パケット / レジストリ / ESE / NTFS

技術目次へ戻る

Windows セッション系とは別に、Impacket は汎用パケット codec と オフラインストレージパーサを持ちます。

実装: ImpactPacket.py、 ImpactDecoder.py。

Structure とは別系統です。各層が親子リンクを持つオブジェクトで、 get_packet() が wire byte を返します。

層モジュール / クラス
Ethernet / Linux SLLImpactPacket.Ethernet など
IPv4 / TCP / UDP / ICMP / IGMP / ARPImpactPacket
IPv6IP6.py、IP6_Address.py、IP6_Extension_Headers.py
ICMPv6 / NDPICMP6.py、NDP.py
802.11 / WEP / WPAdot11.py、Dot11Crypto.py
DHCP / DNS / EAP / WPS / HTTP各モジュール
pcappcapfile.py、pcap_linktypes.py

ImpactDecoder は link type に応じて Ethernet または Linux cooked (SLL) から積み上げます。sniff が pcapy 経由でこれを使います。sniffer は raw socket から IP を直接 decode します。

ping / ping6 は OS の ping を呼ばず、header を自前で組み立てて IP_HDRINCL raw socket に渡します。checksum は Impacket 側で計算します。 応答が無いことは host down の証明ではありません。

split は pcap を IPv4 TCP の 4-tuple ごとに分けます。pcapy は setup.py に宣言されていません。

802.11 は管理フレーム、データフレーム、RadioTap、WEP/WPA の テストが tests/dot11/ にあります。CLI 例はほとんど無く、ライブラリ 単体の利用が中心です。

winregistry.py は REGF を read/write します。get_registry_parser(file, isRemote) が入口です。

操作用途
findKey / enumKey / enumValues探索
getValue / setValue値
getClassキークラス名。boot key 計算に必須
close一時ファイル後始末

registry-read がローカル read-only CLI、reg は rrp RPC の遠隔操作、samedit は SAM hive を inplace で書き換えます。

hive はセル (nk/vk/sk/lf) のヒープです。短い read と壊れた cell を 「値が空」と扱わないでください。.reg エクスポートは metadata が足りず、 boot key や SAM 鍵導出には使えません。

ese.py は Extensible Storage Engine です。 NTDS (ntds.dit)、一部の Windows 内部 DB がこの形式です。

esentutl は catalog、raw page、 table row を読みます。NTDSHashes のオフライン経路も同じパーサです。 ページチェックサム、long value、インデックスは完全実装ではありません。 未知ページ種別を通常行として decode しないでください。

ntfs-read は raw volume / image を read-only で開き、ディレクトリ、named stream、hex dump、抽出をします。 MFT を辿る実装で、書き込みやジャーナル再生はありません。 スパース、圧縮、暗号化 ($EFS) は限定的です。取得データを通常ファイルと 同じ権限で扱わないでください。

モジュール内容
uuid.pyRPC UUID の bin ↔ string。endian に注意
nt_errors.py / hresult_errors.py / system_errors.pyステータス文字列化
helper.py小さな変換
version.pyCLI バナー
crypto.pyAES-CMAC、SP 800-108 KDF、SAM/LSA 秘密の加復号
http.py最小 HTTP。relay などが利用
dhcp.py / dns.pyパケット構造
  • ImpactPacket の親子リンクと checksum offload を壊さない
  • IPv6 拡張ヘッダの順序は IP6_Extension_Headers のテストを見る
  • hive / ESE / NTFS は read-only 経路と in-place write 経路を混ぜない
  • 関連テスト: tests/ImpactPacket/、tests/dot11/、tests/misc/