Root > Documents > Web Güvenlik Açıkları > Sub Passwd Crack
Cyber-Warrior.Org \ Doküman \ Web Güvenlik Açıkları > Sub Passwd Crack
Madde
  Yazar : f!c
  Date : 23.11.2004 16:16:30
 
# Sub Passwd Crack
 

Sub7 su siralar oldukça popüler bir trojan.Bo ve Netbusin artik herkes tarafindan biliniyor olmasi ve yenilenmemesi yüzünden heryerde bu trojan yayilmaya basladi.Aslinda çok islevsel gibi gözüksede çok iyi bir trojan degil.Delphi ile yazildigindan boyutu 0.9 mb gibi.Tabi ki bunu UPX ile sikistirmislar ve exenin boyutu 300 K gibi birsey olmus fakat bu yine de büyük bir rakam.Trojan kendisini degisik sekillerde windows-ta sakliyor.Herkesin bildigi Registry-deki Run, Runservice ... gibi keylere atiyor, win.ini ye yaziyor...Fakat yeni yöntemlerde kesfetmisler.Bu biraz degisik bir yöntem.

Eger trojani makineden silerseniz makinenizin göçmesi muhtemel.Adamlar küçük bir dosya yapmis bu dosya söyle birsey.ilk basta exploreri çalistiriyor sonrada trojanin exe-sini.Registry deki ayarlarda exe dosyalarini kendi yaptiklari exe ile aç diye ayarliyorlar.Böylelikle siz her exe dosyasini çalistirdiginizda trojan da çalisiyor.Registryde birsey bulamiyorsunuz win.ini de bir sey yok.
Neyse bütün lamerlarin bekledigi kisima geliyoruz.Sub7 da master password (hemde iki tane ) var!.Bu password sayesinde bütün password-lu sub7 serverlarina girebilirsiniz.Bir nevi maymuncuk gibi birsey.Bu yazidan sonra eminim büyük bir kaos olucak ama olsun.Sub7 daki bu güvenlik açiklari öteden beri var.Eski versiyonlarinda password-lari kirmak için bir sürü olay kesfedilmisti.Ben bunlarin bug oldugunu düsünmüyorum, bilerek yapilan birsey.Asagida yazacagim yazi subseven v2.1 gold üzerinde denenmistir.


ilk basta SoftICEi download edin, http://mrstop.da.ru adresindeki bilgilere göre konfigüre edin.Bu konfigüre isini sallamayin.Yoksa hata verir SoftICE.SoftICEin klasöründeki symbol loaderi açin.

Load exports ile wsock32.dll yi yükleyin.wsock32.dll windows-un soket islemelerini yaparken kullandigi bir dll biz o dllnin kullandigi fonksiyonlarla ilgilendigimizden onu exporta yükledik.Sub7 serverini bir kere çalistirin.Kendinize baglanin ve password koyun.Ben lamer diye bir password koydum.Sonra disconnect olun.simdi yeniden baglanin.Password ekrani geldiginde misterstop yazip Ctrl+D tuslarina basin.su an SoftICEa geçmis olmaniz lazim.Evet simdi düsünelim.Biz subsevenin bizim passwordumuzla ne yaptigini ögrenmek istiyoruz.Internet uygulamalari soketlerden bilgileri winsockun recv fonksiyonu ile alirlar.Winapi help dosyasina bakarsak bu fonksiyonun parametreleri söyledir.

int recv (

SOCKET s, ;soket tanimlamasi
char FAR* buf, ;gelen bilgi için buffer
int len, ;bufferin uzunlugu
int flags ;çagrinin nasil yapildigi.
);
Burada bizi ilgilendiren buffer.Gelen bilgi buraya gönderiliyor.SoftICEda iken bpx recv do "esp->8" yazin entere basin.(Buradaki do esp-> in amaci sadece bufferi göstermesini saglamak.Eger esp->4 yazsaydim ne gösterirdi ? Deneyin).Eger hata verirse demekki siz SoftICEi iyi configure edememissiniz veya symbol loader ile wsock32.dll yi exporta yüklememissiniz.simdi x yazip entere basiyoruz.Birden yine SoftICEa döneceksiniz.Bir kere F11 tusuna basarak winsock dllsinin içinden çikiyoruz.Karsimiza söyle bir sey gelecek.

EAX=0000000D EBX=00000000 ECX=00E80EF4 EDX=7B41408E ESI=00008D00
EDI=0073FC90 EBP=0073F9C0 ESP=0073F970 EIP=004AAD93 o d I s Z a P c
CS=0167 DS=016F SS=016F ES=016F FS=27C7 GS=301F SS:0073F9B0=00000000
--------------------------------------------------byte--------------PROT---(0)--
016F:0129D124 50 57 44 6D 69 73 74 65-72 73 74 6F 70 00 00 00 PWDmisterstop...^
016F:0129D134 42 00 00 00 60 56 28 01-03 00 00 00 34 0B 00 00 B...`V(.....4...^
016F:0129D144 59 EC 00 00 00 00 00 00-F3 FF FF FF 00 01 01 0F Y...............
-------------------------------------------------------------------------PROT32-
0167:004AAD8E E8116FFAFF CALL WSOCK32!recv
0167:004AAD93 8945F0 MOV [EBP-10],EAX
0167:004AAD96 837DF0FF CMP DWORD PTR [EBP-10],-01
0167:004AAD9A 0F858C000000 JNZ 004AAE2C
0167:004AADA0 E8576FFAFF CALL WSOCK32!WSAGetLastError
0167:004AADA5 8945EC MOV [EBP-14],EAX
------------------------------------MSREXE!UPX1+0D8E----------------------------
Break due to BPX WSOCK32!recv DO "d esp->8" (ET=81.68 milliseconds)
Break due to G (ET=131.70 microseconds)
Msrexe


simdi gördügümüz gibi bizim yazdigimiz "sahte" password 129D124 adresine kopyalaniyor.Dikkat!! Bu adres her makinede ve her denediginizde farkli olacaktir!!.simdi biz uzun uzun kodu takip etmektense SoftICE ile o hafiza bölgesine breakpoint koyacagiz.Böylelikle program ne zaman o bölgeye ulasirsa SoftICe duracak.SoftICE da iken bd 0 ile ilk breakpointi kapatiyoruz çünkü ona arti ihitiyacimiz yok.Sonra sunu yaziyorsunuz bpr 129D124 129D134 RW ve enter-e basiyorsunuz.Dikkat bu rakamlar sadece benim bilgisayarimdaki rakamlardir.Siz kendi bilgisayarinizda gördügünüz rakamlari yazin!.Böylelikle ben Sicea o hafiza bölgesine ulasildiginda durmasini söyledim.Bir daha x yazip entere basin sunu göreceksiniz.

EAX=00000003 EBX=0073FBD0 ECX=00000003 EDX=0129EBC4 ESI=0129D126
EDI=0129EBC6 EBP=0073FBDC ESP=0073F9B0 EIP=004029D2 o D I s z a P c
CS=0167 DS=016F SS=016F ES=016F FS=27C7 GS=301F
--------------------------------------------------byte--------------PROT---(0)--
016F:0129D124 50 57 44 6D 69 73 74 65-72 73 74 6F 70 00 00 00 PWDmisterstop...^
016F:0129D134 42 00 00 00 60 56 28 01-03 00 00 00 34 0B 00 00 B...`V(.....4...^
016F:0129D144 59 EC 00 00 00 00 00 00-F3 FF FF FF 00 01 01 0F Y...............
-------------------------------------------------------------------------PROT32-
0167:004029CF 83C703 ADD EDI,03
0167:004029D2 F3A4 REPZ MOVSB
0167:004029D4 FC CLD
0167:004029D5 5F POP EDI
0167:004029D6 5E POP ESI
0167:004029D7 C3 RET
------------------------------------MSREXE!UPX0+19CF----------------------------
:x
Break due to BPR #016F:0129D124 #016F:0129D134 RW
Msrexe


Program yukaridaki satirlarla PWDmisterstop stringinden PWD kismini çikararak kopyaliyor.Dikkat ederseniz cx 3 tür.Bu kisim yine bizim pek isimize yaramiyor.Birkaç defa daha x e basiyoruz.Yeniden SoftICEa döneceksiniz.

EAX=0000000A EBX=0073FBC8 ECX=00000000 EDX=0129E6E4 ESI=0129D127
EDI=0129E6E4 EBP=0073FBDC ESP=0073F9B8 EIP=004029D7 o d I s z a p c
CS=0167 DS=016F SS=016F ES=016F FS=27C7 GS=301F
--------------------------------------------------byte--------------PROT---(0)--
016F:0129E6E4 6D 69 73 74 65 72 73 74-6F 70 00 6D 00 00 61 73 misterstop.m..as^
016F:0129E6F4 20 00 00 00 1A 00 00 00-01 00 00 00 0B 00 00 00 ...............^
016F:0129E704 53 75 62 73 65 76 65 6E-5F 5F 5F 00 2A 00 00 00 Subseven___.*...
-------------------------------------------------------------------------PROT32-
0167:004029C4 FD STD
0167:004029C5 F3A5 REPZ MOVSD
0167:004029C7 89C1 MOV ECX,EAX
0167:004029C9 83E103 AND ECX,03
0167:004029CC 83C603 ADD ESI,03
0167:004029CF 83C703 ADD EDI,03
0167:004029D2 F3A4 REPZ MOVSB
0167:004029D4 FC CLD
0167:004029D5 5F POP EDI
0167:004029D6 5E POP ESI
0167:004029D7 C3 RET
------------------------------------MSREXE!UPX0+19C4----------------------------
:d esi
Break due to BPR #016F:0129D124 #016F:0129D134 RW
Break due to BPR #016F:0129D124 #016F:0129D134 RW

Msrexe


Evet program burada bizim passwordu esiden alip ediye kopyaliyor.O yüzden biz bd 1 ile eski breakpointi kapatiyoruz ve bpr 129E6E4 1296F4 RW ile yeni bir breakpoint koyuyoruz.Son olarak bir daha x e basiyoruz.

EAX=FFFFFFF6 EBX=01281740 ECX=00000001 EDX=00000002 ESI=0129E6E4
EDI=0129FFE0 EBP=0073FBDC ESP=0073F9C4 EIP=004040D5 o d I s z a p C
CS=0167 DS=016F SS=016F ES=016F FS=27C7 GS=301F DS:0129E6E4=7473696D
--------------------------------------------------byte--------------PROT---(0)--
016F:0129D127 6D 69 73 74 65 72 73 74-6F 70 00 00 00 42 00 00 misterstop...B..^
016F:0129D137 00 60 56 28 01 03 00 00-00 34 0B 00 00 59 EC 00 .`V(.....4...Y..^
016F:0129D147 00 00 00 00 00 F3 FF FF-FF 00 01 01 0F 54 69 6D .............Tim
-------------------------------------------------------------------------PROT32-
0167:004040D3 7426 JZ 004040FB
0167:004040D5 8B0E MOV ECX,[ESI]
0167:004040D7 8B1F MOV EBX,[EDI]
0167:004040D9 39D9 CMP ECX,EBX
0167:004040DB 7558 JNZ 00404135
0167:004040DD 4A DEC EDX
0167:004040DE 7415 JZ 004040F5
0167:004040E0 8B4E04 MOV ECX,[ESI+04]
0167:004040E3 8B5F04 MOV EBX,[EDI+04]
0167:004040E6 39D9 CMP ECX,EBX
------------------------------------MSREXE!UPX0+30D3----------------------------
:d esi
:BPR 0129d127 0129d137 RW
:x
Break due to BPR #016F:0129E6E4 #016F:0129E6F4 RW
Msrexe


Evet su an karsinizda böyle birsey görüyorsaniz sizde is var demektir.Bu kisma gelinceye kadar deneyin.simdi kodu daha yakindan inceliyelim.

0167:004040D5 8B0E MOV ECX,[ESI] ;bizim yazdigimiz password
0167:004040D7 8B1F MOV EBX,[EDI] ;gerçek serial
0167:004040D9 39D9 CMP ECX,EBX ;karsilastir
0167:004040DB 7558 JNZ 00404135
0167:004040DD 4A DEC EDX
0167:004040DE 7415 JZ 004040F5
0167:004040E0 8B4E04 MOV ECX,[ESI+04]
0167:004040E3 8B5F04 MOV EBX,[EDI+04]



Ben d edi yazdigimda gerçek seriali bulmayi umut ediyordum.d edi yazdigimda karsima söyle birsey geldi.

016F:0129FFE0 31 34 34 33 38 31 33 36-37 38 32 37 31 35 31 30 1443813678271510
016F:0129FFF0 31 39 38 30 00 00 00 00-68 E7 29 01 7C E8 29 01 1980....h.).|.).

Bu da ne? deniyelim bakalim.Password olarak yaziyoruz.Olamaz baglandik!.(simdi bana binlerce mail gelecek diye bastan söyliyim password sadece rakamlar.14....80 e kadar).Sub7 yazarlari herhalde kendileri için koymuslar bu passwordu.Birinci passwordu bulduk sira ikinci passwordda.Bunu da yine SoftICE ile gezerek daha iyi anlarsiniz ama ben yoruldum onu da veriyorum.Password ekrani geldiginde sadece entere basin yine içerdesiniz.Bu herhalde bir bug.Çünkü sifreleri karsilastirirken Setbz bl ve Setbz al ile zero flag kullaniliyor.O yüzden siz birsey yazmadiginizda bu flagi otomatik olarak etkin hale getiriyorsunuz.Bundan emin degilim tam olarak incelemedim.Bu enter olayini bu yaziyi yazarken sansa kesfettim.sifreyi yazmadan entere basdigimda içerdeydim.

alintidir...

   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©