Rezumat CISO

Este un caz de ascundere la vedere. CofenseTM a gasit recent o campanie de phishing care ascunde malware-ul Kutaki intr-o aplicatie legitima pentru a ocoli gateway-urile de e-mail si pentru a recolta acreditarile utilizatorilor.

Un distribuitor de date, Kutaki foloseste tehnici vechi de scoala pentru a detecta cutiile de nisip si depanarea, dar nu o subestima – Kutaki functioneaza destul de bine impotriva masinilor virtuale neincarcate si a altor dispozitive de analiza. Prin retardarea unei aplicatii legitime, poate pacali metodologiile de detectie nesofisticate.

Aflati cum Cofense IntelligenceTM mentine echipele IT in fata celor mai recente amenintari impotriva phishing-ului si malware-ului, precum aceasta noua campanie.

Toate detaliile

Cofense Intelligence a descoperit recent o campanie de phishing la scara mica, care a livrat un esantion al stealerului de informatii Kutaki si al keyloggerului care era ascuns intr-o aplicatie legitima Visual Basic si livrat ca pachet OLE intr-un document Office armat.

Kutaki foloseste o serie de tehnici anti-virtualizare si anti-analiza care au fost copiate in mod ostensibil, in mod verbatim, dintr-o serie de bloguri care dateaza din 2010-2011 (Anexa: surse). Kutaki – un operator de date – este capabil sa recolteze date de intrare direct de la tastaturi, soareci, tablouri, microfoane si ecrane (sub forma de capturi de ecran). Campania observata de Cofense Intelligence a vazut, de asemenea, Kutaki sa recupereze o copie a utilitatii BrowserPasswordDump de SecurityXploded, prin abandonarea si executarea unei copii de cURL pentru Windows.

In ciuda faptului ca tehnicile de evaziune sunt antichizate, ele au oarecum succes impotriva observatiei si analizei cauzale.

Ascunderea in campia vizuala: Obstructie

Aceasta varianta de Kutaki foloseste codul sursa ca aplicatie de instruire Visual Basic pentru a-si ascunde continutul rau intentionat. Prin retroactivarea unei aplicatii de instruire, in mod evident, incearca sa exploateze orice posibila listare in alb sau pur si simplu ocoleste semnaturile statice.

Figura 1 arata aplicatia retrocedata ca defalcarea proiectului. Figura 2 este o vedere mai atenta a procedurilor.

Figura 1: defalcarea proiectului

Figura 2: Sectiunile de cod (procedurile) prezente in proiect.

Chiar si pentru non-programatori, exista anumite nume de procedura care par sa fie neplacute in mod salbatic. Intr-adevar, putem observa o corelatie stransa (dar nu tocmai completa) intre Formele – care sunt elemente GUI – si procedurile care le alimenteaza. Figura 3 demonstreaza aceasta mapare.

Figura 3: Elementele de forma in raport cu omologii lor de procedura (cod).

Dovada finala a faptului ca aceasta cerere a fost intarziata poate fi gasita inspectand procedurile. Figura 4 prezinta proceduri legitime in comparatie cu cele care au fost injectate.

Figura 4: „ff” si „frmLogin” sunt proceduri originale. Se injecteaza „chee”, „saamneao”, „dewani” si „ende”.

Nu numai ca vedem o discrepanta intre conventiile de denumire – cele mai legitime proceduri incep aici cu „frm” – dar putem intui, de asemenea, numele aleatorii atribuite procedurilor injectate. Mai mult, functiile – cele gasite in cadrul procedurilor injectate – au nume de nerezolvat, astfel incat acestea sunt pur si simplu atribuite unul de decompilator.

Scufundarea in unele coduri injectate genereaza si mai multa ofuscare. Sirurile din cadrul binarului sunt inversate si decodate folosind functia rtcStrReverse. Figura 5 prezinta un exemplu de astfel de ofuscari.

Figura 5: 3 instante de rtcStrReverse utilizate pentru deobfuscarea sirurilor stocate.

Tehnici similare de obstructie in sir pot fi gasite care mascheaza apeluri API suspecte. Figura 6 prezinta obuscularea sirurilor de somn si ShellExecuteA.

Figura 6: Siruri de somn si ShellExecuteA.

Aceste siruri fac parte dintr-o structura mica folosita de DllFunctionCall – o metoda prin care aplicatiile Visual Basic pot prelua adresele functiilor din DLL-uri specifice. Structura arata cam asa:

typedef struct _DllFunctionCallDataStruct {

void * lpLibName;

void * lpExportName;

} DllFunctionCallDataStruct;

Putem vedea cum aceasta structura mapeaza ceea ce vedem in dezasamblarea din figura 6. Toate apelurile catre DLLFunctionCall sunt infasurate in fragmente identice, asa cum se arata in figura 7.

Figura 7: un invelis tipic pentru apeluri la DllFunctionCall.

Dupa o analiza atenta, descoperim ca 18 apeluri API de inalta valoare sunt obuscate in acest mod. Figura 8 detaliaza acestea.

Figura 8: Apeluri API dezafectate utilizate de Kutaki pentru a efectua o parte din activitatea sa rau intentionata.

Anti-Virtualizare

Kutaki utilizeaza cateva verificari de baza si comparatii pentru a identifica daca se executa intr-un mediu virtualizat. Primul dintre acestea implica citirea cheii de registru HKLM \ System \ CurrentControlSet \ Services \ Disk \ Enum si compararea sirului returnat cu o lista de siruri „nedorite”. Figura 9 detaliaza citirea acestei chei.

Figura 9: Kutaki citeste metadatele discului din registru.

Aceasta cheie de registru contine informatii despre discurile prezente pe aparat. Primul disc este stocat intr-o valoare numita „0”, al doilea intr-o valoare numita „1” si asa mai departe. In cazul acestei analize VM, valoarea 0 contine datele observate in figura 10.

Figura 10: Exemple de date din cheia de registru Disks \ Enum.

Textul evidentiat arata ca discul apartine unei virtuale virtuala. Figurile 11 si 12 prezinta doua comparatii cu siruri diferite, incercand sa identifice diferite tipuri de masini virtuale prezente. Figura 13 reprezinta toate sirurile cu care se va compara Kutaki.

Figura 11: Verificati daca valoarea registrului contine „VIRTUAL” oriunde in sir.

Figura 12: Verificati daca valoarea registrului contine „VBOX” oriunde in sir.

Figura 13: Siruri anti-virtualizare.

Comparatia de siruri vazuta in figura 12 ar corespunde datelor gasite in valoarea registrului afisata in figura 10. In ciuda potrivirii, Kutaki nu iese imediat, ci continua cu alte verificari de virtualizare. Numai dupa finalizarea tuturor verificarilor, acesta va determina daca executia trebuie sa continue. Figura 14 prezinta fluxul de executie al acestui concept. Detaliile verificatorului de rezultate sunt detaliate mai tarziu.

Figura 14: Lant anti-analiza / virtualizare.

Pentru a suplimenta verificarile pe disc, Kutaki incearca sa determine daca in spatiul de adrese ale acestuia au fost injectate module specifice, care apartin casetelor de nisip si utilitatilor de depanare. Obtine acest lucru folosind o combinatie de CreateToolhelp32Snapshot, Module32First si Module32Next. Aceste API-uri iau o imagine a procesului de rulare (inclusiv heap, module, etc.), gasesc primul modul, si itereaza asupra modulelor ulterioare mapate la proces, respectiv. Figura 15 prezinta Kutaki configurarea instantaneelor ​​si regasirea unui indicator catre primul modul.

Figura 15: Kutaki configurarea unei bucle de identificare a modulului.

Kutaki verifica existenta sbiedll.dll si dbghelp.dll. Aceste module apartin respectiv Sandboxie si Microsoft. Figura 16 prezinta rutina de debusare si comparare pentru dbghelp.dll.

Figura 16: Desfocarea DLL de Windows Debug si compararea sirurilor.

Toate rezultatele comparatiei sunt stocate intr-o structura de date, care este verificata ulterior de rutina _check_anti_analysis.

La o verificare finala pentru a va asigura ca nu este respectata, Kutaki citeste din nou o cheie de registru – HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion – de data aceasta verificand existenta unor valori ProductID foarte specifice in stupul CurrentVersion. Figura 17 arata aceasta functie.

Figura 17: Deschiderea cheii registrului pentru a facilita comparatiile de valori.

Kutaki incearca sa gaseasca o valoare cu numele „ProductID”. Daca gaseste o cheie cu acea valoare, se va bucla prin trei comparatii cu siruri, incercand sa identifice trei platforme de tip sandbox. Unele pseudocoduri pentru a descrie aproximativ acest proces ar putea fi:

p_id = RegQueryValueExA („ProductID”)

if (p_id)) {

if (p_id == ‘76487-337-8429955-22614’) {

returnati „Anubis”

}

elif (p_id == ‘76487-644-3177037-23510’) {

returnati „CWSandbox”

}

elif (p_id == ‘55274-640-2673064-23950’) {

returnati „JoeSandbox”

}

altfel {

returnare Niciuna

}

}

Figura 18 prezinta aceasta bucla cuibarita, deoarece exista cu Kutaki.

Figura 18: Buclati prin verificari pentru diverse cutii de nisip.

Dupa ce toate verificarile au fost procesate, Kutaki analizeaza rezultatele pentru a determina daca bucla principala ar trebui sa termine sau sa continue executarea. Procedura de verificare analizeaza fiecare rezultat pentru un „cod de retur” non-zero (adica a fost detectat ceva) si, daca se gaseste un astfel de cod de retur, bucla principala iese. Figura 19 prezinta un exemplu al acestor verificari.

Figura 19: Analiza rezultatelor unuia dintre controalele anti-analiza.

Comportament

Dupa ce Kutaki a stabilit ca nu este monitorizata, va continua cu scopul sau principal de a pregati masina pentru furtul de date. In timpul acestui proces, Kutaki extrage o imagine din resursele sale, o arunca in directorul temporal al utilizatorului si o lanseaza cu ShellExecuteA („cmd.exe / c C: \ Users \ admin \ AppData \ Local \ Temp \ images1.png”). Aceasta afiseaza o imagine decorata pentru a pacali utilizatorul sa creada ca pachetul OLE pe care au dat clic a fost pur si simplu o imagine. Figura 20 este imaginea precisa scazuta pe disc si afisata utilizatorului.

Figura 20: Imagine decoy lansata de Kutaki.

Documentul este un sablon de factura; in mod clar, actorii care implementeaza acest efort depun foarte putin efort in acest document decorativ, deoarece o cautare rapida pe Google arata ca este a doua imagine lovita folosind termenul de cautare „detalii fiscale pentru facturare”. Intr-adevar, aceasta este imaginea exacta folosita de atacatori: hxxp: // batayneh [.] Me / factura-cu-banca-detalii-sablon / factura-cu-banca-detalii-sablon-blank-tax-lux /

Dupa afisarea documentului, Kutaki verifica numele sau executabil curent pe sirul codat „hyuder” si, daca nu se potriveste, procedeaza sa renunte la o copie a acestuia, cu noul nume, la

C: \ Utilizatori \ <nume utilizator> \ AppData \ Roaming \ Microsoft \ Windows \ Meniu Start \ Programe \ Startup \ hyuder.exe

Figura 21 arata aceasta verificare intr-un depanator.

porno vintage http://chattotext.com/__media__/js/netsoltrademark.php?d=adult69.ro/
porno amatori romani http://www.smallasses.net/cgi-bin/ucj/c.cgi?url=https://adult69.ro/
porno mom mature http://www.krui.ru/news/redirect.php?to=https://adult69.ro/
porno bestial http://off-the-internet.com/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/amatori
filme porno colanti http://www.mapawarszawy.ja.pl/link.php?url=https://adult69.ro/filme-porno/anal
indian porno http://www.vtvacu.com/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/asiatice
türk türbanlı porno http://channelsolutions.com/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/beeg
filme porno youtube http://www.swisstld.ch/tldreview/redirect.php?url=https://adult69.ro/filme-porno/blonde
filme porno cu latine http://denti-gift.net/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/brazzers
gina pistol porno http://presidioassetmgmt.com/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/brunete
filme porno cu grase http://comicviewer.net/?param=qdDWp2qI2LlPRXNSWbH%2FXhSgbCsI2trmDWYw1Qi4VXx0utSMndni3ZNVaG3gCZSLoc0rte2aBdwEgAKGaIzPdBnZOQKtdZjVf7uwAhOoQRR0lZUofL3OZfng43dhH2hB&url=https://adult69.ro/filme-porno/chaturbate
celebrity porno http://ejewelry.biz/__media__/js/netsoltrademark.php?d=adult69.ro/blonda-de-16-ani-este-linsa-in-pizda-de-tatal-ei
porno femei mature http://1800newbasement.com/__media__/js/netsoltrademark.php?d=adult69.ro/bruneta-minora-sta-in-genuchi-si-suge-pula-vecinullui-ei
madonna porno http://superbabe2000.com/__media__/js/netsoltrademark.php?d=adult69.ro/film-porno-cu-un-cuplu-de-amatori-filmati-cu-camera-ascunsa
filme porno xxxn http://www.mag-stand.net/__media__/js/netsoltrademark.php?d=adult69.ro/blona-frumoasa-care-seamana-cu-bianca-dragusanu-este-supusa-la-perversiuni
filme porno masaj https://celebboots.com/url.php?url=https://adult69.ro/studenta-face-show-la-web-si-se-masturbeaza-cu-un-vibrator
video porno gratis http://globaltoolsupply.com/__media__/js/netsoltrademark.php?d=adult69.ro/un-culpu-de-amatori-fac-sex-in-padure-o-fute-pe-la-spate-anal
porno la mare http://modot.biz/__media__/js/netsoltrademark.php?d=adult69.ro/fututa-cu-degetele-de-sora-ei-mai-mica
türk porno twitter http://northernplainsinvestment.com/__media__/js/netsoltrademark.php?d=adult69.ro/curva-bruneta-care-stie-ce-vrea
filme porno grtis http://www.spiritualgifts.org/__media__/js/netsoltrademark.php?d=adult69.ro/fetita-naiva-violata-de-bunic

Daca este lansat un nou proces, procesul parinte va ramane inactiv fara a iesi.

Figura 21: Kutaki comparand numele sau curent cu dorinta.

Figura 22 arata Kutaki construind calea fisierului catre care va renunta la o copie a acestuia. Coborand in folderul de pornire, Kutaki atinge persistenta.

Figura 22: Kutaki construieste sirul pe care il va folosi pentru a renunta la o copie de sine si pentru a obtine persistenta.

Kutaki executa codul abandonat si procedeaza la executarea functionalitatii sale daunatoare primare. Nota: unii cititori nu se indoiesc cu siguranta daca redenumirea pur si simplu a „hyuder.exe” executabil il va impiedica sa renunte la o copie a acestuia. Asta e corect; Kutaki se va executa direct fara a arunca nimic mai departe, daca ruleaza cu un nume aprobat. Restul codului este oarecum neinteresant, mai ales pentru ca aproape tot comportamentul rau intentionat apare in afara binarului propriu-zis.

Inainte de a merge mai departe, Kutaki se va conecta cu serverul sau C2, anuntand noua infectie. Figura 22 este un exemplu de trafic observat in timpul analizei.

Figura 23: Serverul C2 al lui Kutaki este offline.

De asemenea, Kutaki vine la pachet cu o copie de cURL – o aplicatie Linux portata la Windows care permite accesul liniei de comanda la resursele de internet. Utilizeaza cURL pentru a prelua o sarcina utila de la o gazda de la distanta, desi acest motiv nu este clar – are capacitatea de a contacta serverele la distanta, asa cum demonstreaza incercarea sa initiala de a contacta serverul sau C2. Indiferent, utilizarea cURL se face prin design, deoarece gazda de la care incearca sa descarce o sarcina utila suplimentara refuza conexiunile, cu exceptia cazului in care Agentul Utilizator este setat la un cURL de referinta. Figura 23 documenteaza conexiunile realizate de cURL cu gazda de la distanta, preluand o sarcina utila secundara.

Figura 24: Kutaki foloseste cURL pentru a descarca si executa o sarcina utila secundara. Retineti sirul User-Agent „curl / 7.47.1”.

Sarcina utila preluata, in acest caz, a fost o copie a SecurityXploded’s BrowserPasswordDump. Acest utilitar este conceput pentru a prelua parolele din casutele urmatoarelor browsere:

  • Firefox
  • Google Chrome
  • Microsoft Edge
  • Internet Explorer
  • Browser UC
  • Navigator de torte
  • Chrome Canary / SXS Cool
  • Browser Novo
  • Browser Opera
  • Safari Apple

Deoarece serverul C2 era offline, nu am putut monitoriza exfiltrarea datelor furate facilitate de utilitatea BrowserPasswordDump.

Vechi nu inseamna ineficient

Kutaki foloseste niste tehnici bine documentate din vechile scoli pentru a detecta cutiile de nisip si depanarea. Acestea sunt inca eficiente impotriva masinilor virtuale neincarcate si a altor dispozitive de analiza. In plus, prin retardarea unei aplicatii legitime, metodele de detectare nesofisticate ar putea fi pacalite.

Pentru a afla mai multe despre tendintele malware recente, cititi recenzia noastra la sfarsitul anului 2018.

Apendice

surse

https://www.alienvault.com/blogs/labs-research/your-malware-shall-not-fool-us-with-those-anti-analysis-tricks

https://www.fireeye.com/blog/threat-research/2011/01/the-dead-giveaways-of-vm-aware-malware.html

Verificari ProductID

76487-337-8429955-22614 // Anubis Sandbox

76487-644-3177037-23510 // CW Sandbox

55274-640-2673064-23950 // Joe Sandbox

Corzi AntiVM

*VIRTUAL*

* VBox *

* VMW

sbiedll.dll

dbghelp.dll

IoCs

hxxp: [.] [.] // babaobadf Club / Kera / kera3x php

hxxp: // janawe licitata / FF / OM2 exe [.] [.]

artefactele

89D45698E66587279460F77BA19AE456

A69A799E2773F6D9D24D0ECF58DBD9E3

70bf5dd41548e37550882eba858c84fa

8e4aa7c4adec20a48fe4127f3cf2656d

Toate marcile comerciale terte la care face referire Cofense, indiferent daca sunt sub forma de logo, forma de nume sau forma de produs, sau altfel, raman proprietatea detinatorilor respectivi, iar utilizarea acestor marci comerciale nu indica in niciun fel vreo relatie intre Cofense si detinatorii marcilor comerciale.