什麼是Impacket
Impacket是用於處理網絡協議的Python類的集合。Impacket專一於提供對數據包的簡單編程訪問,以及協議實現自己的某些協議(例如SMB1-3和MSRPC)。數據包能夠從頭開始構建,也能夠從原始數據中解析,而面向對象的API使處理協議的深層次結構變得簡單。該庫提供了一組工具,做爲在此庫找到能夠執行的操做的示例。html
有關某些工具的說明,請訪問:https://www.secureauth.com/labs/open-source-tools/impacketpython
Impacket中包含如下協議
- 以太網,Linux「Cooked」數據包捕獲
- IP,TCP,UDP,ICMP,IGMP,ARP
- 支持IPv4和IPv6
- NMB和SMB1,SMB2和SMB3(高級實現)
- MSRPC版本5,經過不一樣的傳輸協議:TCP,SMB / TCP,SMB/NetBIOS和HTTP
- 使用密碼/哈希/票據/密鑰進行簡單的NTLM和Kerberos身份驗證
- 部分或徹底實現如下MSRPC接口:EPM,DTYPES,LSAD,LSAT,NRPC,RRP,SAMR,SRVS,WKST,SCMR,BKRP,DHCPM,EVEN6,MGMT,SASEC,TSCH,DCOM,WMI
- 部分TDS(MSSQL)和LDAP協議實現。
得到Impacket
程序安裝
快速開始
獲取最新的穩定版本,將其解壓縮並執行命令pip install . 而後在它的目錄中運行。git
安裝要求
- Python解釋器,已知Python 2.6/2.7和Python 3.6能夠運行
- 若是您想運行這些示例,而且您的python<2.7,那麼須要安裝argparse包,以便它們正常執行。
- 對於Kerberos支持,您將須要安裝pyasn1包
- 對於加密操做,您將須要安裝pycryptodomex包
- 對於某些示例,您將須要安裝pyOpenSSL(rdp_check.py)和ldap3(ntlmrelayx.py)
- 對於ntlmrelayx.py你還須要安裝ldapdomaindump,flask並ldap3
- 若是你在Windows下,你將須要安裝 pyReadline
- 最近發佈的Impacket
安裝
爲了安裝源,請從解壓縮Impacket包的目錄中執行如下命令:pip install . 這將把類安裝到默認的Python模塊路徑中; 請注意,您可能須要特殊的權限才能在那裏進行寫入。有關setup.py中可用的命令和選項的詳細信息,請運行python setup.py --help-commandsgithub
測試
若是您想要運行庫測試用例,您須要主要作三件事:web
- 安裝和配置Windows 2012 R2域控制器。
- 確保遠程註冊表(RemoteRegistry)服務已啓用並正在運行。
- 使用必要的信息配置dcetest.cfg文件
- 安裝tox(pip install tox)
完成後,您能夠運行tox並等待結果。若是一切順利,全部測試用例都應該經過。您還能夠在impacket/tests/htlmcov/index.html上找到一個被覆蓋的HTML報告sql
IMPACKET中包含如下工具
遠程執行
- GetTGT.py:指定密碼,哈希或aesKey,此腳本將請求TGT並將其保存爲ccache
- GetST.py:指定ccache中的密碼,哈希,aesKey或TGT,此腳本將請求服務票證並將其保存爲ccache。若是該賬戶具備約束委派(具備協議轉換)權限,您將可以使用-impersonate參數表明另外一個用戶請求該票證。
- GetPac.py:此腳本將得到指定目標用戶的PAC(權限屬性證書)結構,該結構僅具備正常的通過身份驗證的用戶憑據。它經過混合使用[MS-SFU]的S4USelf +用戶到用戶Kerberos身份驗證組合來實現的。
- GetUserSPNs.py:此示例將嘗試查找和獲取與普通用戶賬戶關聯的服務主體名稱。
- GetNPUsers.py:此示例將嘗試爲那些設置了屬性「不須要Kerberos預身份驗證」的用戶獲取TGT(UF_DONT_REQUIRE_PREAUTH).輸出與JTR兼容
- ticketer.py:此腳本將從頭開始或基於模板(根據KDC的合法請求)建立金/銀票據,容許您在PAC_LOGON_INFO結構中自定義設置的一些參數,特別是組、外接程序、持續時間等。
- raiseChild.py:此腳本經過(ab)使用Golden Tickets和ExtraSids的基礎來實現子域到林權限的升級。
Windows Secrets
- secretsdump.py:
- 執行各類技術從遠程機器轉儲Secrets,而不在那裏執行任何代理。對於SAM和LSA Secrets(包括緩存的憑據),而後將hives保存在目標系統(%SYSTEMROOT%\ Temp目錄)中,並從中讀取其他數據。對於DIT文件,咱們使用dl_drsgetncchanges()方法轉儲NTLM哈希值、純文本憑據(若是可用)和Kerberos密鑰。它還能夠經過使用smbexec/wmiexec方法執行的vssadmin來轉儲NTDS.dit.若是腳本不可用,腳本將啓動其運行所需的服務(例如,遠程註冊表,即便它已被禁用)。運行完成後,將恢復到原始狀態。
- ntlmrelayx.py:此腳本執行NTLM中繼攻擊,設置SMB和HTTP服務器並將憑據中繼到許多不一樣的協議(SMB,HTTP,MSSQL,LDAP,IMAP,POP3等)。該腳本能夠與預約義的攻擊一塊兒使用,這些攻擊能夠在中繼鏈接時觸發(例如,經過LDAP建立用戶),也能夠在SOCKS模式下執行。在此模式下,對於每一箇中繼的鏈接,稍後能夠經過SOCKS代理屢次使用它
- karmaSMB.py:不管指定的SMB共享和路徑名如何,都會響應特定文件內容的SMB服務器
- smbserver.py:SMB服務器的Python實現,容許快速設置共享和用戶賬戶。
WMI
已知的漏洞
SMB / MSRPC
MSSQL / TDS
其餘
- GetADUsers.py:此腳本將收集有關域用戶及其相應電子郵件地址的數據。它還將包括有關上次登陸和上次密碼設置屬性的一些額外信息。
- mqtt_check.py:簡單的MQTT示例,旨在使用不一樣的登陸選項。能夠很容易地轉換成賬戶/密碼暴力工具。
- rdp_check.py:[MS-RDPBCGR ]和[MS-CREDSSP]部分實現只是爲了達到CredSSP身份驗證。此示例測試賬戶在目標主機上是否有效。
- sniff.py:簡單的數據包嗅探器,使用pcapy庫來監聽在指定接口上傳輸的包。
- sniffer.py:簡單的數據包嗅探器,它使用原始套接字來偵聽與指定協議相對應的傳輸中的數據包。
- ping.py:簡單的ICMP ping,它使用ICMP echo和echo-reply數據包來檢查主機的狀態。若是遠程主機已啓動,則應使用echo-reply數據包響應echo探針。
- ping6.py:簡單的IPv6 ICMP ping,它使用ICMP echo和echo-reply數據包來檢查主機的狀態。
源碼
文檔
咱們但願有更多可用的文檔,所以大多數文檔都做爲Python的文檔註釋包含在源代碼中。您還能夠經過其測試用例和示例瞭解不少關於庫功能的信息.shell