
vladiii
Active Members-
Posts
552 -
Joined
-
Last visited
Everything posted by vladiii
-
Initial postat pe vladii.wordpress.com Ok, un nou micut “tutorial” (daca il pot denumi asa ) ). De curand, m-am confruntat cu o problema, cand incercam sa scriu un cod in ASM. Vroiam sa setez ceasul la ora 00:00:00 din Windows, folosind BIOSul. Nicio problema, aveam interruptul necesar, dar programul, cand il rulam, imi dadea eroare grava (sau eroare fata). Avand proasta inspiratie sa nu-l intreb pe Shocker, am cautat pe Google, dar nu am gasit rezolvarea la problema mea. De unde am plecat, pana unde am ajuns este cale lunga Shocker mi-a explicat ca eu nu pot accesa direct din windows BIOSul prin intermediul interrupturilor, deoarece eu rulez in UserMode (adica ? Cand misc mouseul pe desktop, accesez un fisier si altele, folosesc modul Userului). In UserMode nu avem acces direct la memoria kernelului, la resursele fizice ale calculatorului. Sa va arat o imagine (preluata de pe wikipedia.org) care sper sa fie edificatoare: Clar, noi, cand rulam in User Mode suntem mai putini privilegiati, dar asta ne face si ceva mai secure. De ce ? In UserMode (Ring 3), o eroare se manifesta printr-o eroare predefinita a windowsului, pe cand in KernelMode (cel mai privilegiat, Ring 0), erorile se manifesta prin Blue Screenuri si Restarturi (ceea ce este cam neplacut ) Sa revenim. Deci ? Am precizat ca interrupturile nu pot fi rulate “simplu si direct” din UserMode (deoarece nu avem acces la resursele fizice ale computerului), atunci unele programe cum fac asta ? Ma refer, spre exemplu, la imaginea de pe desktop (care apare, in special, datorita placii video => direct din windows se poate avea acces la resursele fizice ale calculatorului). Cum, cum, cum, aceasta e intrebarea ? ) Aceste aplicatii comunica cu resursele fizice ale calculatorului prin intermediul unui Driver. Deci, practic, ce este un driver ? Este o aplicatie, care ruleaza in Kernel Mode [ring 0 - modul cel mai privilegiat]. Ca o mica schema, “comunicarea” dintre acestea se realizeaza astfel: aplicatia [ruleaza in usermode ring 3 - windows] -> driver [ruleaza in kernelmode ring 0] -> resursele fizice ale computerului. Cum comunica ? Aplicatia care ruleaza in usermode apeleaza anumite rutine(sau subrutine -> http://en.wikipedia.org/wiki/Subroutine) in driver, iar driverul comunica mai departe cu componenta hardware prin computer bus (http://en.wikipedia.org/wiki/Computer_bus) ! Acum poate va intrebati, ok, dar eu am imagine pe desktop chiar daca nu am instalat driverul (software) de la placa video. Pai aveti, dar nu se foloseste placa video la capacitatile ei maxime, pentru ca si Windowsul are anumite drivere (pentru placa video, placa de sunet, etc.) incorporate, insa nu poate folosi toate modelele la capacitatile maxime, de aceea este nevoie de softwareul special realizat de firmwareul placii dumneavoastra !! Cam atat am avut de spus ! Astept critici de la voi, deoarece nici eu nu sunt prea sigur de ceea ce am scris si vreau sa imi fixez cat mai bine aceste lucruri in minte, mai ales ca in viitor (cateva luni de invatat) vreau sa ma apuc de programare de drivere. Bibliografie: http://en.wikipedia.org/wiki/Ring_(computer_security) [url]http://en.wikipedia.org/wiki/Device_driver[/url] [url]http://en.wikipedia.org/wiki/Subroutine[/url] [url]http://en.wikipedia.org/wiki/Computer_bus[/url] Al vostru, vladii !!!
-
Salut ! Acesta este noul meu blog Voi incerca sa-l updatez in fiecare zi cu informatii/tutoriale noi ! Asa ca tineti aproape ! [url]http://vladii.wordpress.com/[/url] P.S. Se poate sa fiu pus si eu pe pagina principala la Colaboratori ? Bafta ! :roll:
-
Mi se pare ca este ceva si mai interesant, un buffer overflow in ywcvwr.dll care permite si executia de cod remote. Si BOFul asta provine tot de la webcam ! :roll:
-
O alta smecherie pentru a face voturi. Puneti la avatar, la link catre imagine de pe web: [url]http://s1.bitefight.ro/c.php?uid=56317%00a.gif[/url] Astea pe toate versiunile de phpBB, pe SMF pui direct: [url]http://s1.bitefight.ro/c.php?uid=56317[/url] Bafta!
-
Ok amprenta, sa o luam pas cu pas, sunt sigur ca nimeni de pe forum nu se va mai chinuit sa realizeze keygenul. Eu unul m-am chinui o gramada sa descopar algoritmul !!! Este clar ca serialul este de forma: XX XX-XX XX-XX XX !!! Am lasat pauze intre grupele de cate doi X pentru a se intelege mai bine exemplul. E clar ca a, b, c, A, B, C sunt inlocuite cu H9, I9, etc.. Problema vine de la literele d, D, e, E, f, F, etc. unde se strica toata conformatia serialului. Imi poti spune care este algoritmul sau macar sa imi dai un PM ? Thnx !
-
Indeed @Nemessis: La koschel@gameforge.de
-
Tocmai am anuntat adminul de la BiteFight de o noua vulnerabilitate: Buna ziua ! Tocmai am gasit o vulnerabilitate de tip XSS in serverul dumneavoastra. Ar fi cat mai bine sa-l reparati destul de repede, pana cand cineva rau intentionat o sa provoace daune, folosindu-l ! Mentionez ca eu nu il folosesc pentru nimic, de aceea va si anunt de existenta lui, in speranta ca veti putea sa-l reparati. Sa trecem la subiect. Daca suntem logati pe cont si intram pe urmatorul link: [url]http://s1.bitefight.ro/bite/suche.php[/url] Si in casuta aceea unde trebuie introdus textul, introducem: "><script>alert('eu')</script> Apoi dam Cautare, o sa ne apara Alert Boxul cu mesajul: eu. Va rog sa-l reparati cat mai repede ! Astept un e-mail de confirmare din partea dumneavoastra !!! /Be safe ! Bafta !! :roll: Vezi ca la prima ta semnatura scrie: Romainan...
-
Cine vrea sa se inscrie intr-un mic grup in care vom studia, colabora, cerceta, invata despre Overflowuri in general, sa posteze aici si sa imi dea un PM cu idul sau de messenger. Niste cerinte: - Cunostintele de baza despre ASM; - Putin C/C++ - ShellCoding Si cam atat ! P.S. In grupul asta, pe langa mine, mai sunt deja 2 persoane importante de pe acest forum. Asa ca grabiti-va !!! :wink:
-
Si eu care vroiam sa ma apuc sa scriu o carte Gonzalez: tu esti prost sau te prefaci? Ai copiat acest tutorial neacordand credite, fara sa te gandesti ca esti doar un plagiator imputit ? Mi-ar fi rusine in locul tau si nu as mai raspunde in acest topic. Fuck off!
-
Cu ce este packat ca Peidul meu nu il poate dezpacheta ?
-
E foarte bun, bravo ! Si asta este bun :roll: Si ca tot suntem la capitolul ShellCode si MessageBox, zi de ce nu merge asta: segment .code USE32 ..start: xor eax, eax xor ebx, ebx xor ecx, ecx xor edx, edx jmp short functie functie2: pop eax mov byte [eax+10], dl mov ebx, 0x77e7d961 push eax call ebx mov ecx, eax jmp short functie3 functie4: pop eax mov byte [eax+11], dl mov ebx, 0x77e7b332 push eax push ecx call ebx xor ebx, ebx mov ebx, eax jmp short titlu restul: pop esi mov byte [esi+5], dl jmp short message final: pop eax mov byte [eax+7], dl push 0 push esi push eax push 0 call ebx xor ebx, ebx mov ebx, 0x77e798fd ;ExitProcess push byte 1 call ebx functie: call functie2 db 'user32.dllN' functie3: call functie4 db 'MessageBoxAN' titlu: call restul db 'titluN' message: call final db 'messageN' Stii care este problema la el, fa-l sa mearga Please 8) Inca o data, felicitari !
-
Se poate face o subsectiune la Competitii sau la Programare, numita Concursuri Programare, unde se vor tine astfel de concursuri?
-
Scriptul este deja facut sau trebuie facut ? :oops:
-
NU! Cand m-am inscris pe RST, acum 1 an de zile, doream sa invat si sa fiu invatat cat mai multe de userii de aici. Acum, eu incerc, cat pot, sa ajut userii, si asta imi face placere. Dar, candva, doresc ca munca mea sa fie rasplatita. Atat am vrut sa iti/va zic. btw: Thanks !
-
Neeah, nu fac asta desi poate este adevarat :roll: In fine, astept un raspuns la intrebarea mea ! 8)
-
Hmm... MariusY ? Pe ce alte forumuri multe ai postat si cu ce username? Enjoy your stay !
-
Cu placere, kw3rln. Posibil sa mai aiba greseli, nici eu nu sunt expert. Sunt deschis la alte comentarii, sugestii, rectificari. P.S. Ce trebuie sa mai fac pentru a-mi recapata V.I.P.-ul ?
-
Cum obtinem un ShellCode? Ce este un ShellCodingul ? In principiu, cand ne gandim la ShellCoding ne gandim la orice cod care returneaza un remote shell cand este executat. Intelesul cuvantului ShellCode a evoluat, acum intelegand prin acest cuvant orice byte code care este introdus intr-un exploit pentru a indeplini o anumita sarcina. ATENTIE! Un shellcode nu trebuie sa contina Null Bytes si este ideal ca acesta sa aiba o dimensiune in bytes cat mai mica. Un alt amanunt destul de important este faptul ca in acest tutorial voi prezenta doar Window ShellCoding, nu si Linux ShellCoding. Multumiri multe ii sunt aduse lui SlicK. Sa incepem! Toolurile de care aveti nevoie pe parcursul tutorialului: 1. NASM [Compilarea programelor ASM o vom face in NASM] Download Link: http://nasm.sourceforge.net/ 2. ALINK [Programul .exe il vom realize folosind acest tool] Download Link: http://alink.sourceforge.net/download.html 3. ARWIN [Cu acest program C, care trebuie compilat, putem gasi adresele functiilor API in respectivul dll in care ele se afla] Download Link: http://www.vividmachines.com/shellcode/arwin.c 4. W32DASM [Dezasamblator, va recomand versiunea 8.93] 5. WDHEX [un program util care copiaza ShellCodeul dintr-o lista .alf salvata anterior cu W32DASM]. Download Link: http://rapidshare.com/files/46936025/wdhex.exe.html Avand aceste tooluri si niste cunostine decente de ASM, sa vedem cum se poate extrage ShellCodeul, iar, mai apoi, sa optimizam codul ASM pentru ca ShellCodeul sa fie de dimensiune cat mai mica si sa nu contina Null Bytes (\x00). Sa consideram un mic cod ASM, care nu face nimic altceva decat sa produca un Beep ! ATENTIE! Un amanunt destul de important pe care eu nu il voi atinge in acest tutorial [poate intr-o versiune ulterioara] este faptul ca orice program vine incarcat in decat cu kernel32.dll, deci utilizarea altor functii api din alte dlluri (user32.dll, etc.) necesita incarcarea librariei respective (2 functii API sunt foarte importante aici: LoadLibraryA si GetProcAddress). Un alt amanunt important, cand vom extrage shellcodeul, il vom extrage doar din zona ..start a programului realizat in ASM, de aceea declararea variabilelor este INTERZISA, iar importarea functiilor API deasupra acestei sectiuni este iarasi incorecta. Un astfel de exemplu de cod incorrect este urmatorul: %include "win32n.inc" extern SetCursorPos import SetCursorPos user32.dll title db "hello",0 message db "hello world",0 Ideea este alta, va prezint un mic cod, cum ar fi corect, apoi lasam balta aceasta idee si trecem la dezvoltarea bazelor ShellCodingului. segment .code USE32 ..start xor eax, eax xor ebx, ebx xor ecx, ecx xor edx, edx jmp short functie ; sari la labelul @functie functie2: pop eax ;scoate din stack ultima valoare si baga in eax mov byte [eax+10], dl ;scriem 10 caractere: user32.dll, ignoram N mov ebx, 0x77e7d961 ;adresa functiei LoadLibraryA push eax ;echivalent cu push user32.dll call ebx ;callam LoadLibraryA mov ecx, eax xor eax, eax jmp short functie3 functie4: pop eax mov byte [eax+12], dl mov ebx, 0x77e7b332 ;adresa functiei GetProcAddress push eax push ecx call ebx restul: push byte 1 push byte 1 call eax ;SetCursorPos mov ebx, 0x77e798fd ;adresa functiei ExitProcess push byte 1 call ebx functie: call functie2 db 'user32.dllN' jmp short functie2 ; sari (intoarce-te la labelul @functie2) functie3: call functie4 db 'SetCursorPosN' Daca am fi realizat un cod in FASM care sa faca acest lucru era mult mai simplu, deoarece am fi putut utiliza direct variabilele, iar in NASM nu putem scrie ceva genul: push ceva Call [functieapi], decat daca ceva este numar. De aceea, inainte de a executa labelul specific unei functii API am sarit la un alt label care calleaza labelul initial, dar in care se afla un element foarte important: db 'SetCursorPosN', unde SetCursorPos este numele “variabilei” care trebuie utilizata, iar N vine de la Null Byte. Traind cu speranta ca ati inteles ceva din codul de mai sus, trec la lucruri mai simple. Sa consideram micul nostru cod care face Beep. ;beep.asm segment .code USE32 ..start: xor eax, eax xor ebx, ebx xor ecx, ecx mov ebx, 0x77eac910 ;adresa functiei Beep din kernel32.dll mov ax, 750 ;frecventa sunetului in Hertzi mov cx, 3000 ;durata Beepului push eax push ecx call ebx ;Callam functia Beep mov ebx, 0x77e798fd ;adresa functiei ExitProcess din kernel32.dll mov ax, 1 push eax call ebx Mai multe despre functia api Beep gasiti aici: http://msdn2.microsoft.com/en-us/library/ms679277.aspx . Un alt lucru care trebuie sa vi-l spun este faptul ca in Windows, un cod NASM incepe cu segment .code USE32 ..start:, pe cand pe Linux incepe: [sECTION .text] global _start _start: ATENTIE! Adresele functiilor api in dllurile lor pot diferi de la un utilizator de Windows la altul, datorita versiunii de Windows, versiunii Service Packului si datorita diferitelor updateuri care se aduc zi de zi. De aceea vom utiliza ARWIN pentru aflarea adreselor functiilor in dllurile din windowsul nostru. Intram in fisierul in care am salvat arwin.exe folosind CMD ! Dupa ce am ajuns, tastam urmatoarea comanda: arwin.exe NumeleDllului NumeleFunctiei. Spre exemplu, putem introduce: arwin.exe kernel32.dll Beep. Poate imaginea urmatoare va fi de folos: Dupa ce inlocuim in codul de mai sus adresele dumneavoastra ale functiilor API, poate incepe distractia! Copiati codul [cu tot cu modificarea dumneavoastra] in notepad si apoi salvati cu extensia .asm (File -> Save As -> Filename: beep.asm). Deci fisierul nostru se va numi beep si va avea extensia .asm. Ideal ar fi sa salvati toate toolurile care le-am prezentat mai sus [compilate-cele care au nevoie de asa ceva] impreuna cu beep.asm intr-un folder. Acum deschideti iar CMD pentru a compila codul ASM si pentru a-l face .exe ! Intrati din cmd in folderul in care ati salvat toate cele de mai sus. Apoi tastati urmatoarea comanda: nasmw.exe -fobj beep.asm. Asa verificam daca programul are erori, daca nu are, putem trece mai departe la crearea executabilului. Introduceti in CMD: alink -c -oPE -subsys gui beep, iar daca operatiunea a decurs fara nicio problema, atunci puteti rula executabilul tastand in CMD: beep ! Sper ca imaginea urmatoare sa fie edificatoare: Acum ca am reusit crea executabilul, sa extragem ShellCodeul. Pentru aceasta, deschideti .exele cu w32dasm. In imaginea de mai sus, observam ca sunt prezente 3 coloane: adresele, shellcodeul si codul ASM (de la stanga la dreapta). Putem sa extragem acest shellcode manual, adica, spre exemplu, din 31C031DB obtinem: “\x31\xC0\x31\xDB”, sau folosind wdhex, care extrage ShellCodeul automat pentru noi. Pentru a face acest lucru, trebuie mai intai sa salvam ceea ce am vazut in W32DASM. Cum facem asta ? Simplu: File -> Save Disassembly Text File and Create Project File -> FileName: beep.ALF -> Ok. Atentie, fisierul trebuie sa aiba extensia .ALF, nu .ELF (care este specific Linuxului). Intrati in CMD in foldeul in care ati salvat beep.alf si in care [sper] aveti si wdhex.exe, si tastati urmatoarea comanda: wdhex beep.alf ! Programul va va arata shellcodeul deja extras. In concluzie, shellcodeul nostrum este urmatorul: char shellcode[]= "\x31\xC0\x31\xDB\x31\xC9\xBB\x10\xC9\xEA\x77\x66\xB8\xEE\x02" "\x66\xB9\xB8\x0B\x50\x51\xFF\xD3\xBB\xFD\x98\xE7\x77\x66\xB8" "\x00\x00\x50\xFF\xD3"; Cum putem verifica daca ShellCodeul functioneaza ? Foarte simplu! Sa consideram urmatorul “schelet” al unui program in C: /*shellcodetest.c*/ char code[] = "bytecode will go here!"; int main(int argc, char **argv) { int (*func)(); func = (int ()) code; (int)(*func)(); } Dumneavoastra trebuie sa inlocuiti "bytecode will go here!" cu shellcodeul dumneavoastra, sa compilati programul, sa-l faceti .exe, iar apoi sa vedeti daca functioneaza. Optimizarea ShellCodeului Cum am precizat la inceput, este ideal ca ShellCodeul sa nu contina Null Bytes, dar, din pacate, codul nostru contine deja 2 nullbytes (“\x00\x00”). Ideea este sa verificam de unde acestia provin si sa incercam, daca se poate, sa ii eliminam. Daca ne uitam in imaginea din W32DASM, NullBytes provin de pe linia mov ax, 1. Se stie ca registrul eax are 3 parti -> ax, ah, al. al reprezinta partea inferioara a registrului. Sa incercam sa schimbam linia mov ax, 1 cu mov al, 1. Pe langa faptul ca vom scapa de NullBytes, programul va avea 32 de bytes !!! Cam atat am avut de prezentat, o sa rectific eventualele greseli in caz ca acestea exista (si daca exista, imi cer din tot sufletul iertare pentru ele, mai ales ca am incercat sa creez ceva util si folositor). Asa ca tineti aproape! Linkuri Utile: - http://www.vividmachines.com/shellcode/shellcode.html - http://en.wikipedia.org/wiki/Shellcode - http://www.bradleybeast.com/content/view/84/ Enjoy it! @vladii 2007
-
Pe ultimele versiuni de Ubuntu, gcc este inclus, nu mai ai nevoie de apt -get install gcc :wink:
-
Nu am inteles ce ai vrut sa arati in poza aia Flama My ScreenShot: http://i9.tinypic.com/4qq6vb9.jpg%5b/IMG%5d
-
Si asta este foarte tare
-
Crezi ca eu am asteptat laude ? P.S. Ultimul post in care raspund la provocarile lui HexString. P.P.S. HexString, vorbeste cat vrei, nu ma pasa !
-
[E-book] Retele pentru incepatori ( RETv2.0 ) scris de !_30
vladiii replied to !_30's topic in Tutoriale in romana
Sper ca asta este (am gasit-o in colectia mea de carti): [url]http://rapidshare.com/files/45366538/RET.v2.0.rar.html[/url] Bafta! -
Sterge ultimul status din registrii de la 1_bin si o sa iti afiseze