Impacket網絡協議工具包介紹。Impacket是一個Python類庫,用于對SMB1-3或IPv4 / IPv6 上的TCP、UDP、ICMP、IGMP,ARP,IPv4,IPv6,SMB,MSRPC,NTLM,Kerberos,WMI,LDAP等協議進行低級編程訪問。
在本文的實驗場景中,我們需要準備以下兩個系統:
1.配置域控的Windows服務器;
2. Kali Linux
系統相關設置如下:
Windows Server
域: SERVER
用戶: Administrator
密碼: T00r
IP地址: 192.168.1.140
Kali Linux: 192.168.1.135
在正式開始使用Impacket工具之前,讓我們先對目標Windows服務器執行Nmap版本掃描,以獲取當前Windows Server上運行的有關服務信息。
nmap -sV 192.168.1.140
正如你在上面的截圖中看到的,目標系統當前運行的服務有域服務,Kerberos服務,Netbios服務,LDAP服務和Windows RPC服務。
現在讓我們從GitHub安裝Impacket工具。你可以在這里獲取到。
首先,我們通過git clone命令克隆存儲庫,然后按以下截圖所示安裝Impacket。
git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python setup.py install
這將在你的Kali Linux上安裝Impacket。安裝完成后,我們來查看下Impacket中都有哪些工具。
cd impacket/examples
可以看到其中包含了許多的python腳本工具,讓我們來嘗試使用其中的一些工具:
Ping.py
一個簡單的ICMP ping腳本,使用ICMP echo和echo-reply數據包檢查主機狀態。
./ping.py
語法: ./ping.py [Source IP] [Destination IP]
./ping.py 192.168.1.135 192.168.1.140
以下是我從192.168.1.140(Windows Server)獲得的ICMP響應
Lookupsid.py
通過[MS-LSAT] MSRPC接口的Windows SID bruteforcer示例,旨在查找遠程用戶/組。
./lookupsid.py
語法: ./lookupsid.py [[domain/] username [: password] @] [Target IP Address]
./lookupsid.py SERVER/Administrator: T00r@192.168.1.140
如下所示,lookupsid.py已成功為我提取到了目標服務器的用戶和組信息
Psexec.py
Psexec.py允許你在遠程Windows系統上執行進程,復制文件,并返回處理輸出結果。此外,它還允許你直接使用完整的交互式控制臺執行遠程shell命令(不需要安裝任何客戶端軟件)。
./psexec.py
語法: ./psexec.py [[domain/] username [: password] @] [Target IP Address]
./psexec.py SERVER/Administrator: T00r@192.168.1.140
如下所示,我獲取到了目標服務器的遠程shell
Rpcdump.py
該腳本將轉儲在目標上注冊的RPC端點和字符串bindings列表。它也會嘗試將它們與一些知名的端點進行匹配。
./rpcdump.py
語法: ./rpcdump.py [[domain/] username [: password] @] [Target IP Address]
./rpcdump.py SERVER/Administrator: T00r@192.168.1.140
如下所示,我成功獲取到了目標RPC列表
Samrdump.py
與MSRPC套件中的安全帳戶管理器遠程接口通信的應用程序。它將為我們列出目標系統上的用戶帳戶,可用資源共享以及通過此服務導出的其他敏感信息
./samrdump.py
語法: ./samrdump.py [[domain/] username [: password] @] [Target IP Address]
./samrdump.py SERVER/Administrator: T00r@192.168.1.140
如下所示,我從目標服務器提取了SAM信息
Sniff.py
一個簡單的數據包嗅探腳本。使用pcapy庫來偵聽通過指定接口傳輸的數據包
. /sniff.py
選擇正確的網卡,并開始嗅探
Sniffer.py
一個簡單的數據包嗅探腳本,使用原始套接字來偵聽與指定協議相對應的傳輸數據包。
. /sniffer.py
sniffer開始監聽icmp, tcp和udp數據包
Wmiexec.py
它會生成一個使用Windows Management Instrumentation的半交互式shell,并以管理員身份運行。你不需要在目標服務器上安裝任何的服務/代理,因此它非常的隱蔽。
./wmiexec.py
語法: ./wmiexec.py [[domain/] username [: password] @] [Target IP Address]
./wmiexec.py SERVER/Administrator: T00r@192.168.1.140
如下所示,我獲取到了目標服務器的shell
Wmiquery.py
它允許發出WQL查詢并獲取目標系統WMI對象的描述信息。
./wmiquery.py
語法: ./wmiquery.py [[domain/] username [: password] @] [Target IP Address]
./wmiquery.py SERVER/Administrator: T00r@192.168.1.140
這將打開一個shell,你可以在其中執行WQL查詢
SELECT * FROM Win32_LogicalDisk WHERE FreeSpace 209152
Atexec.py
通過Task Scheduler服務在目標系統上執行命令,并返回輸出結果。
./atexec.py
語法: /atexec.py [[domain/] username [: password] @] [Target IP Address] [Command]
./atexec.py SERVER/Administrator: T00r@192.168.1.140 systeminfo
如下所示,我與目標服務器建立了遠程連接,并執行了systeminfo命令,輸出結果顯示在了我的Kali終端上。
getArch.py
該腳本將連接目標(或目標列表上的)計算機,并使用已記錄的MSRPC特征收集由(ab)安裝的操作系統架構類型。
./getArch.py
語法: ./getArch.py -target [IP Address]
命令: ./getArch.py -target 192.168.1.140
所下所示,目標系統架構為64-bit
Ifmap
該腳本將綁定到目標的MGMT接口,以獲取接口ID列表。它將在另一個接口UUID列表的頂部使用該列表,并報告該接口是否被列出和/或處于偵聽狀態。
語法: ./ifmap.py [Host IP Address] [Port]
./ifmap.py 192.168.1.140 135
./ifmap.py 192.168.1.140 49154