Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
sopa — Golang में ADWS के लिए एक व्यावहारिक क्लाइंट। | Kitploit
उपकरण/GitHubGitHub/macmod/sopa
टोहीजानकारी एकत्र करनापेनिट्रेशन टेस्टिंगउपयोगिताएँ और फ्रेमवर्कप्रमाणीकरणरेड टीमिंग
GitHubmacmod/sopa

sopa

Golang में ADWS के लिए एक व्यावहारिक क्लाइंट।

रिपॉजिटरी देखें
55215 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

sopa

Golang में ADWS के लिए एक व्यावहारिक क्लाइंट।

GitHub Release Go Version Code Size License Build Status Go Report Card GitHub Downloads Twitter Follow

Sopa, ADWS प्रोटोकॉल स्टैक (MS-NNS + MC-NMF + SOAP) को लागू करता है, जो निम्नलिखित कमांड-लाइन सुविधाएँ प्रदान करता है:

  • ऑब्जेक्ट खोज और पुनर्प्राप्ति
    • query: WS-Enumeration Enumerate + Pull लूप के माध्यम से LDAP-फ़िल्टर खोज चलाता है जिसमें एट्रीब्यूट प्रोजेक्शन, स्कोप नियंत्रण (Base/OneLevel/Subtree), और पेजिनेशन होता है
    • get: WS-Transfer Get के माध्यम से DN द्वारा एक एकल ऑब्जेक्ट प्राप्त करता है
  • ऑब्जेक्ट जीवनचक्र
    • create: WS-Transfer ResourceFactory के माध्यम से ऑब्जेक्ट बनाता है (अंतर्निहित प्रकार: user, computer, group, OU, container; या IMDA AddRequest के माध्यम से YAML टेम्पलेट से कस्टम ऑब्जेक्ट)
    • delete: WS-Transfer Delete के माध्यम से DN द्वारा किसी ऑब्जेक्ट को हटाता है
  • एट्रीब्यूट संपादन
    • attr: WS-Transfer Put के माध्यम से किसी मौजूदा ऑब्जेक्ट पर व्यक्तिगत एट्रीब्यूट मान जोड़ता है, बदलता है, या हटाता है

इंस्टॉलेशन

root@kitploit:~
$ go install github.com/Macmod/sopa/cmd/sopa@latest

उपयोग

root@kitploit:~
# Auth flags (-u, -p, -d, -k, -H, -c, ...) are omitted for brevity - see Authentication section.

# Search objects by LDAP filter
$ sopa [auth_flags] query --dc <DC> --filter '(objectClass=*)'

# Fetch a single object by DN
$ sopa [auth_flags] get --dc <DC> --dn '<DN>'

# Delete an object by DN
$ sopa [auth_flags] delete --dc <DC> --dn '<DN>'

# Edit attribute values
$ sopa [auth_flags] attr add     --dc <DC> --dn '<DN>' --attr <ATTR> --value <VALUE>
$ sopa [auth_flags] attr replace --dc <DC> --dn '<DN>' --attr <ATTR> --value <VALUE>
$ sopa [auth_flags] attr delete  --dc <DC> --dn '<DN>' --attr <ATTR>

# Create objects
$ sopa [auth_flags] create user      --dc <DC> --name <CN> --pass <INITIAL_PASS>
$ sopa [auth_flags] create computer  --dc <DC> --name <CN>
$ sopa [auth_flags] create group     --dc <DC> --name <CN> --type GlobalSecurity
$ sopa [auth_flags] create ou        --dc <DC> --name <CN>
$ sopa [auth_flags] create container --dc <DC> --name <CN>
$ sopa [auth_flags] create custom    --dc <DC> --template <TEMPLATE.yaml>

# Set / change account passwords (MS-ADCAP)
$ sopa [auth_flags] set-password    --dc <DC> --dn '<DN>' --new <NEW_PASS>
$ sopa [auth_flags] change-password --dc <DC> --dn '<DN>' --old <OLD_PASS> --new <NEW_PASS>

# Translate DN <-> canonical name (MS-ADCAP)
# (this call is mostly useless but kept for completeness 😄)
$ sopa [auth_flags] translate-name --dc <DC> --offered DistinguishedName --desired CanonicalName '<DN>'

# Principal group memberships (MS-ADCAP)
$ sopa [auth_flags] groups --dc <DC> --dn '<DN>' --membership --authz

# Group members (MS-ADCAP)
$ sopa [auth_flags] members --dc <DC> --dn '<GROUP_DN>' --recursive

# Toggle optional AD feature, e.g. Recycle Bin (MS-ADCAP)
$ sopa [auth_flags] optfeature --dc <DC> --feature-id <FEATURE_GUID> --enable

# Topology info (MS-ADCAP)
$ sopa [auth_flags] info version --dc <DC>
$ sopa [auth_flags] info domain  --dc <DC>
$ sopa [auth_flags] info forest  --dc <DC>
$ sopa [auth_flags] info dcs     --dc <DC>

# ADWS service endpoint metadata (unauthenticated - auth flags not needed)
$ sopa mex --dc <DC>

इंटरैक्टिव शेल

बिना किसी उप-कमांड के sopa चलाने पर एक इंटरैक्टिव शेल खुलता है। यह सभी कमांड के लिए एक ही कनेक्शन का पुन: उपयोग करता है और टैब-पूर्णता प्रदान करता है।

root@kitploit:~
$ sopa --dc <DC> -u <USER> -p <PASS> -d <DOMAIN>

sopa v1.1.0
Connected  dc.corp.local  domain=corp.local  user=Administrator
Type 'help' for commands or 'exit' to quit.

[corp.local]> query --filter '(objectClass=user)' --attrs sAMAccountName
[corp.local]> get --dn 'CN=Administrator,CN=Users,DC=corp,DC=local'
[corp.local]> exit

शेल से बाहर निकलने के लिए exit, quit, या Ctrl-D का उपयोग करें।

कस्टम ऑब्जेक्ट निर्माण

उदाहरण टेम्पलेट: examples/custom-create.example.yaml

टेम्पलेट स्कीमा (YAML):

  • parentDN (स्ट्रिंग, आवश्यक): कंटेनर DN
  • rdn (स्ट्रिंग, आवश्यक): नए ऑब्जेक्ट के लिए सापेक्ष DN (जैसे CN=Foo)
  • attributes (सूची, आवश्यक): प्रत्येक आइटम में होता है:
    • name (स्ट्रिंग, आवश्यक): एट्रीब्यूट नाम (cn या addata:cn)
    • type (स्ट्रिंग, वैकल्पिक): string|int|bool|base64|hex (या स्पष्ट xsd:*), डिफ़ॉल्ट string
    • या तो value (स्ट्रिंग) या values (स्ट्रिंग्स की सूची)

नोट:

  • टेम्पलेट में ad:relativeDistinguishedName या ad:container-hierarchy-parent शामिल न करें (वे स्वचालित रूप से इंजेक्ट होते हैं)।
  • hex मान xsd:base64Binary में परिवर्तित होते हैं।
  • एक खाली स्ट्रिंग स्पष्ट रूप से सेट करने के लिए, value: "" का उपयोग करें।

DC डिस्कवरी और DNS

--dc एक FQDN, एक IP पता स्वीकार करता है, या छोड़ा जा सकता है. चूंकि DC का होस्टनाम कभी-कभी नेटवर्क के डिफ़ॉल्ट DNS से उपलब्ध नहीं होता, इसलिए हमेशा --dns <DC-IP> पास करने की दृढ़ता से अनुशंसा की जाती है ताकि sopa सभी लुकअप के लिए DC के अपने DNS सर्वर का उपयोग करे:

root@kitploit:~
# Option 1: let sopa resolve everything through the DC's DNS
$ sopa query --dns 192.168.1.10 -d corp.local -u user -p pass --filter '(objectClass=user)'

जब --dc छोड़ दिया जाता है और --domain प्रदान किया जाता है, sopa SRV रिकॉर्ड क्वेरी करके स्वचालित रूप से एक DC खोजता है:

root@kitploit:~
_ldap._tcp.<domain>        (पहले प्रयास किया गया)
_kerberos._tcp.<domain>    (फ़ॉलबैक)

उच्चतम-प्राथमिकता वाले रिकॉर्ड का लक्ष्य उपयोग किया जाता है। इसके लिए आवश्यक है कि --dns द्वारा इंगित DNS सर्वर उन SRV प्रश्नों का उत्तर दे सके - DC का अपना एकीकृत DNS सर्वर (जब मौजूद हो) ऐसा करने में सक्षम होना चाहिए।

root@kitploit:~
# Option 2: provide DC explicitly without Kerberos
$ sopa info version --dc 192.168.1.10 --domain corp.local -u user -p pass

जब --dc के लिए एक IP प्रदान किया जाता है, तो IP हमेशा एक रिवर्स PTR लुकअप के माध्यम से FQDN में हल किया जाता है - ADWS एंडपॉइंट के WCF पता फ़िल्टर को प्रमाणीकरण विधि की परवाह किए बिना wsa:To हेडर में FQDN की आवश्यकता होती है। यह PTR लुकअप भी --dns के माध्यम से जाता है, इसलिए DC पर एक सही ढंग से कॉन्फ़िगर किया गया रिवर्स ज़ोन आवश्यक है:

root@kitploit:~
# Option 3: IP input - PTR lookup resolves 192.168.1.10 -> dc.corp.local
$ sopa info version --dc 192.168.1.10 --dns 192.168.1.10 --domain corp.local -u user -p pass

स्टैक में सभी DNS संचालन - DC डिस्कवरी, PTR रिज़ॉल्यूशन, ADWS TCP डायल, और Kerberos KDC कनेक्शन - --dns / --dns-tcp से निर्मित एक ही रिज़ॉल्वर का उपयोग करते हैं।

प्रमाणीकरण

sopa निम्नलिखित क्रेडेंशियल मोड का समर्थन करता है:

root@kitploit:~
# Password
$ sopa --dc <DC> -d <DOMAIN> -u <USER> -p <PASS> <subcommand> [...]

# NT hash
$ sopa --dc <DC> -d <DOMAIN> -u <USER> -H <NT_HASH> <subcommand> [...]

# AES session key (Kerberos is implied)
# 32 hex chars = AES-128, 64 hex chars = AES-256
$ sopa --dc <DC> -d <DOMAIN> -u <USER> --aes-key <HEX_KEY> <subcommand> [...]

# Kerberos ccache (Kerberos is implied)
$ sopa --dc <DC> -d <DOMAIN> -u <USER> -c <CCACHE_PATH> <subcommand> [...]

# PFX certificate (Kerberos is implied / via PKINIT)
$ sopa --dc <DC> -d <DOMAIN> -u <USER> --pfx <CERT.pfx> --pfx-password <PFX_PASS> <subcommand> [...]

# PEM certificate (Kerberos is implied / via PKINIT)
$ sopa --dc <DC> -d <DOMAIN> -u <USER> --cert <CERT.pem> --key <KEY.pem> <subcommand> [...]

SOCKS5

सभी TCP कनेक्शन (ADWS, Kerberos, DNS) को -x / --socks5 के माध्यम से SOCKS5 प्रॉक्सी के माध्यम से टनल किया जा सकता है:

root@kitploit:~
# Route everything through a SOCKS5 proxy
$ sopa -x 127.0.0.1:1080 --dc dc.corp.local -d corp.local -u user -p pass query --filter '(objectClass=user)'

# Use the DC's own DNS through the proxy, then connect via proxy
$ sopa -x 127.0.0.1:1080 --dns 192.168.1.10 --dc 192.168.1.10 -d corp.local -u user -p pass query --filter '(objectClass=user)'

# Keep DNS local (e.g. DNS already reachable without proxy), only proxy TCP connections
$ sopa -x 127.0.0.1:1080 --no-proxy-dns --dc dc.corp.local -d corp.local -u user -p pass query --filter '(objectClass=user)'

योगदान

एक समस्या खोलकर या पुल रिक्वेस्ट सबमिट करके योगदान का स्वागत है।

अन्य ADWS उपकरण

इस उपकरण को लिखने का विचार मुख्य रूप से चोरी-छिपे के उद्देश्यों के लिए ADWS-केंद्रित उपकरणों की एक लहर से आया। सिद्धांत रूप में, इनसे जो कुछ भी किया जा सकता है, वह sopa से भी किया जा सकता है, लेकिन यदि आप अधिक जटिल/विशिष्ट क्रियाएँ करना चाहते हैं, तो उन्हें भी देखें:

  • wh0amitz/SharpADWS
  • logangoins/SOAPy
  • FalconForceTeam/SOAPHound
  • mverschu/adwsdomaindump

आभार

  • oiweiwei को go-msrpc के लिए बहुत बड़ा धन्यवाद, क्योंकि उनके ssp पैकेज ने GSSAPI के साथ प्रमाणीकरण प्रवाह को सहजता से लागू किया।

संदर्भ

  • MS-NNS: .NET NegotiateStream प्रोटोकॉल
  • MS-NMF: .NET मैसेज फ़्रेमिंग प्रोटोकॉल
  • MS-ADDM: सक्रिय निर्देशिका वेब सेवाएँ: डेटा मॉडल और सामान्य तत्व
  • MS-WSDS: WS-Enumeration: निर्देशिका सेवाएँ प्रोटोकॉल एक्सटेंशन
  • MS-WSTIM: WS-Transfer: निर्देशिका पहुँच एक्सटेंशन के लिए पहचान प्रबंधन संचालन
  • MS-ADCAP: सक्रिय निर्देशिका वेब सेवाएँ कस्टम क्रिया प्रोटोकॉल
  • MS-ADTS: सक्रिय निर्देशिका तकनीकी विनिर्देश

लाइसेंस

MIT लाइसेंस (MIT)

कॉपीराइट (c) 2023 Artur Henrique Marzano Gonzaga

इसके द्वारा, इस सॉफ़्टवेयर और संबंधित दस्तावेज़ फ़ाइलों (सॉफ़्टवेयर) की एक प्रति प्राप्त करने वाले किसी भी व्यक्ति को बिना किसी प्रतिबंध के, बिना किसी सीमा के सॉफ़्टवेयर में उपयोग, प्रतिलिपि, संशोधन, विलय, प्रकाशन, वितरण, उप-लाइसेंस और/या सॉफ़्टवेयर की प्रतियाँ बेचने के अधिकार सहित, निम्नलिखित शर्तों के अधीन, सॉफ़्टवेयर से निपटने की अनुमति निःशुल्क दी जाती है:

उपरोक्त कॉपीराइट सूचना और यह अनुमति सूचना सॉफ़्टवेयर की सभी प्रतियों या महत्वपूर्ण भागों में शामिल की जाएगी।

सॉफ़्टवेयर "जैसा है" प्रदान किया जाता है, बिना किसी प्रकार की वारंटी के, स्पष्ट या निहित, जिसमें व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और उल्लंघन की वारंटी शामिल है, लेकिन इन्हीं तक सीमित नहीं है। किसी भी स्थिति में लेखक या कॉपीराइट धारक किसी भी दावे, क्षति या अन्य दायित्व के लिए उत्तरदायी नहीं होंगे, चाहे वह अनुबंध, टोर्ट या किसी अन्य कार्यवाही में हो, जो सॉफ़्टवेयर से या सॉफ़्टवेयर के उपयोग या अन्य लेन-देन से उत्पन्न होता है।

टूल डाउनलोड करें
  • खाता प्रबंधन
    • set-password: MS-ADCAP SetPassword के माध्यम से खाता पासवर्ड सेट करता है
    • change-password: MS-ADCAP ChangePassword के माध्यम से खाता पासवर्ड बदलता है (पुराने पासवर्ड की आवश्यकता है)
  • ADCAP कस्टम क्रियाएँ
    • translate-name: TranslateName के माध्यम से DN और कैनोनिकल नाम प्रारूपों के बीच रूपांतरण करता है
    • groups: GetADPrincipalGroupMembership / GetADPrincipalAuthorizationGroup के माध्यम से किसी प्रिंसिपल की समूह सदस्यता या प्राधिकरण समूहों को सूचीबद्ध करता है
    • members: GetADGroupMember के माध्यम से समूह सदस्यों को (वैकल्पिक रूप से पुनरावर्ती) गणना करता है
    • optfeature: ChangeOptionalFeature के माध्यम से वैकल्पिक AD सुविधाओं (जैसे Recycle Bin) को टॉगल करता है
    • info: GetVersion, GetADDomain, GetADForest, GetADDomainControllers के माध्यम से टोपोलॉजी मेटाडेटा (संस्करण, डोमेन, फ़ॉरेस्ट, DC सूची) प्राप्त करता है
  • सेवा मेटाडेटा
    • mex: एक अप्रमाणित WS-MetadataExchange अनुरोध के माध्यम से ADWS सेवा एंडपॉइंट मेटाडेटा प्राप्त करता है
  • Flagविवरण
    --dns <host[:port]>सभी लुकअप (SRV, PTR, फ़ॉरवर्ड) के लिए कस्टम DNS सर्वर। डिफ़ॉल्ट पोर्ट 53 है।
    --dns-tcpDNS प्रश्नों को UDP के बजाय TCP पर भेजने के लिए बाध्य करें। तब उपयोगी जब UDP अवरुद्ध हो या SRV प्रतिक्रियाएँ बड़ी हों।
    -x / --socks5 <host:port>सभी TCP कनेक्शनों को SOCKS5 प्रॉक्सी के माध्यम से रूट करें। जब तक --no-proxy-dns सेट न हो, DNS प्रश्न भी प्रॉक्सी के माध्यम से टनल किए जाते हैं।
    --no-proxy-dnsजब --socks5 सक्रिय हो, तो DNS को प्रॉक्सी के बजाय स्थानीय सिस्टम रिज़ॉल्वर के माध्यम से हल करें।
    --dns-timeout <duration>DNS संचालनों के लिए टाइमआउट (डिफ़ॉल्ट 10s)।
    --tcp-timeout <duration>TCP डायल और ADWS प्रोटोकॉल संचालनों के लिए टाइमआउट (डिफ़ॉल्ट 30s)।