Duqu je zlonamerna matrjoška

Predstavitev

1. septembra 2011 je bila z Madžarske na spletno stran VirusTotal poslana datoteka z imenom ~DN1.tmp. Takrat sta datoteko kot zlonamerno zaznala samo dva protivirusna mehanizma – BitDefender in AVIRA. Tako se je začela zgodba Duqu. Če pogledamo naprej, je treba povedati, da je družina zlonamerne programske opreme Duqu dobila ime po tej datoteki. Vendar pa je ta datoteka povsem neodvisen vohunski modul s funkcijami zapisovalnika tipk, verjetno nameščen s pomočjo zlonamernega programa za nalaganje s kapalko, in jo je mogoče obravnavati le kot »koristni tovor«, ki ga med delovanjem prenese zlonamerna programska oprema Duqu, ne pa kot sestavni del del (modul) Duqu . Ena izmed komponent Duqu je bila servisu Virustotal poslana šele 9. septembra. Njegova posebnost je gonilnik, podpisan z digitalnim podpisom C-Media. Nekateri strokovnjaki so takoj začeli vleči analogije z drugim dobro znanim primerom zlonamerne programske opreme - Stuxnetom, ki je prav tako uporabljal podpisane gonilnike. Skupno število računalnikov, okuženih z Duqu, ki so jih zaznala različna protivirusna podjetja po vsem svetu, je v desetinah. Mnoga podjetja trdijo, da je glavna tarča ponovno Iran, a sodeč po geografiji razširjenosti okužb tega ni mogoče trditi z gotovostjo.
Duqu je zlonamerna matrjoška
V tem primeru bi morali samozavestno govoriti samo o drugem podjetju z novodobno besedo APT (napredna trajna grožnja).

Postopek implementacije v sistem

Preiskava, ki so jo izvedli strokovnjaki madžarske organizacije CrySyS (Madžarski laboratorij za kriptografijo in sistemsko varnost Univerze za tehnologijo in ekonomijo v Budimpešti), je privedla do odkritja namestitvenega programa (dropperja), prek katerega je bil okužen sistem. Šlo je za datoteko Microsoft Word z izkoriščanjem ranljivosti gonilnika win32k.sys (MS11-087, opisal Microsoft 13. novembra 2011), ki je odgovoren za mehanizem upodabljanja pisave TTF. Lupinska koda izkoriščanja uporablja pisavo, vdelano v dokument, imenovano 'Dexter Regular', Showtime Inc. pa velja za ustvarjalca pisave. Kot lahko vidite, ustvarjalcem Duqu ni tuj smisel za humor: Dexter je serijski morilec, junak istoimenske televizijske serije, ki jo je posnel Showtime. Dexter ubija samo (če je mogoče) kriminalce, torej krši zakon v imenu zakona. Verjetno so na ta način razvijalci Duqu ironični, da se ukvarjajo z nezakonitimi dejavnostmi za dobre namene. Pošiljanje pisem po elektronski pošti je potekalo namensko. Za pošiljanje so bili najverjetneje uporabljeni ogroženi (vdrti) računalniki kot posredniki, ki otežujejo sledenje.
Wordov dokument je tako vseboval naslednje komponente:

  • besedilna vsebina;
  • vdelana pisava;
  • izkoriščanje silkcode;
  • voznik;
  • namestitveni program (DLL).

V primeru uspešne izvedbe je lupinska koda izkoriščanja izvedla naslednje operacije (v načinu jedra):

  • opravljeno je bilo preverjanje ponovne okužbe, za to je bil obstoj ključa 'CF4D' preverjen v registru na naslovu 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsZones1', če je bil resničen, je lupinska koda zaključila svojo izvedbo;
  • dve datoteki sta bili dešifrirani - gonilnik (sys) in namestitveni program (dll);
  • gonilnik je bil vstavljen v proces services.exe in zagnal namestitveni program;
  • na koncu se je lupinska koda obrisala z ničlami ​​v pomnilniku.

Z zagonom win32k.sys kot korenskega uporabnika 'System' so razvijalci Duqu elegantno rešili problem nepooblaščenega zagona in povišanja (izvajanje pod uporabniškim računom z omejenimi privilegiji).
Namestitveni program je po prejemu nadzora dešifriral tri podatkovne bloke v pomnilniku, ki vsebujejo:

  • podpisan gonilnik (sys);
  • glavni modul (dll);
  • konfiguracijski podatki namestitvenega programa (pnf).

V konfiguracijskih podatkih namestitvenega programa je bil določen razpon datumov (v obliki dveh časovnih žigov - začetka in konca). Namestitveni program je preveril, ali trenutni datum spada vanj, če ne, je dokončal svojo izvedbo. V konfiguracijskih podatkih namestitvenega programa so bila navedena tudi imena, pod katerimi sta bila shranjena gonilnik in glavni modul. V tem primeru je bil glavni modul shranjen na disku v šifrirani obliki.

Duqu je zlonamerna matrjoška

Za samodejni zagon Duqu je bila ustvarjena storitev, ki uporablja datoteko gonilnika, ki sproti dešifrira glavni modul z uporabo ključev, shranjenih v registru. Glavni modul vsebuje lasten konfiguracijski podatkovni blok. Ob prvem zagonu je bil dešifriran, vanj vnesen datum namestitve, nato pa je bil ponovno šifriran in shranjen z glavnim modulom. Tako so bile v prizadetem sistemu ob uspešni namestitvi shranjene tri datoteke - gonilnik, glavni modul in njegova konfiguracijska podatkovna datoteka, zadnji dve datoteki pa sta bili shranjeni na disku v šifrirani obliki. Vsi postopki dešifriranja so bili izvedeni samo v pomnilniku. Ta zapleten postopek namestitve je bil uporabljen za zmanjšanje možnosti zaznavanja s protivirusno programsko opremo.

Glavni modul

Glavni modul (vir 302), avtor informacije Kaspersky Lab, napisan z uporabo MSVC 2008 v čistem C, vendar z uporabo objektno usmerjenega pristopa. Ta pristop ni značilen pri razvoju zlonamerne kode. Takšna koda je praviloma napisana v C, da se zmanjša velikost in se znebi implicitnih klicev, ki so del C ++. Tudi tukaj je simbioza. Poleg tega je bila uporabljena na dogodke usmerjena arhitektura. Zaposleni v družbi Kaspersky Lab se nagibajo k teoriji, da je bil glavni modul napisan z uporabo predprocesorskega dodatka, ki omogoča pisanje kode v C v objektnem slogu.
Glavni modul je odgovoren za postopek sprejemanja ukazov od operaterjev. Duqu ponuja več načinov interakcije: z uporabo protokolov HTTP in HTTPS ter z uporabo imenovanih cevi (pipe). Za HTTP(S) so podana imena domen ukaznih centrov, medtem ko je bilo mogoče delati prek proxy strežnika - dobili so uporabniško ime in geslo. Kanal dobi naslov IP in ime kanala. Navedeni podatki so shranjeni v konfiguracijskem bloku podatkov glavnega modula (šifrirani).
Za uporabo imenovanih cevi je bila uvedena implementacija strežnika RPC po meri. Podprl je naslednjih sedem funkcij:

  • vrnite nameščeno različico;
  • vstavite dll v navedeni proces in pokličite navedeno funkcijo;
  • nalaganje dll;
  • zaženite proces s klicem CreateProcess();
  • prebrati vsebino dane datoteke;
  • zapisovanje podatkov v določeno datoteko;
  • izbrišite dano datoteko.

Poimenovane cevi bi lahko uporabili znotraj lokalnega omrežja za distribucijo posodobljenih modulov in konfiguracijskih podatkov med računalniki, okuženimi z Duqu. Poleg tega bi lahko Duqu deloval kot proxy strežnik za druge okužene računalnike (ki zaradi nastavitev požarnega zidu na prehodu niso imeli dostopa do interneta). Nekatere različice Duqu niso imele funkcije RPC.

Znane "koristne obremenitve"

Symantec je identificiral vsaj štiri "tovore", naložene na ukaz iz nadzornega centra Duqu.
Vendar je bil samo eden od njih rezidenčen in preveden kot izvedljiva datoteka (exe), ki je bila shranjena na disk. Preostale tri so bile implementirane kot knjižnice dll. Nalagali so se dinamično in izvajali v pomnilniku, ne da bi jih shranili na disk.

Rezidenčni "tovor" je bil vohunski modul (infostealer) s funkcijami keyloggerja. Delo na raziskavi Duqu se je začelo s pošiljanjem VirusTotalu. Glavna vohunska funkcionalnost je bila v viru, katerega prvih 8 kilobajtov je vsebovalo del fotografije galaksije NGC 6745 (za maskiranje). Naj spomnimo, da so aprila 2012 nekateri mediji objavili informacijo (http://www.mehrnews.com/en/newsdetail.aspx?NewsID=1297506), da je bil Iran izpostavljen nekakšni zlonamerni programski opremi Stars, medtem ko so podrobnosti o incidenta niso razkrili. Možno je, da je bil prav tak vzorec "tovora" Duqu odkrit takrat v Iranu, od tod tudi ime "Stars" (zvezde).
Vohunski modul je zbral naslednje podatke:

  • seznam tekočih procesov, podatki o trenutnem uporabniku in domeni;
  • seznam logičnih pogonov, vključno z omrežnimi;
  • posnetki zaslona;
  • naslovi omrežnih vmesnikov, usmerjevalne tabele;
  • dnevniška datoteka pritiskov tipk na tipkovnici;
  • imena odprtih oken aplikacij;
  • seznam razpoložljivih omrežnih virov (skupni viri);
  • popoln seznam datotek na vseh pogonih, vključno z odstranljivimi;
  • seznam računalnikov v »omrežnem okolju«.

Še en vohunski modul (infostealer) je bila različica že opisanega, vendar je bila prevedena kot knjižnica dll, funkcije zapisovalnika tipk, sestavljanje seznama datotek in naštevanje računalnikov, vključenih v domeno, so bile iz nje odstranjene.
Naslednji modul (izvidovanje) zbrane informacije o sistemu:

  • ali je računalnik del domene;
  • poti do sistemskih imenikov Windows;
  • različica operacijskega sistema;
  • ime trenutnega uporabnika;
  • seznam omrežnih adapterjev;
  • sistemski in lokalni čas ter časovni pas.

Zadnji modul (podaljševalec življenjske dobe) je implementiral funkcijo za povečanje vrednosti (shranjene v konfiguracijski podatkovni datoteki glavnega modula) števila preostalih dni do konca dela. Privzeto je bila ta vrednost nastavljena na 30 ali 36 dni, odvisno od spremembe Duqu, in se je vsak dan zmanjšala za enega.

komandni centri

Operaterji Duqu so 20. oktobra 2011 (tri dni po objavi odkritja) izvedli postopek uničenja sledi delovanja komandnih centrov. Poveljniški centri so gostovali na vdrtih strežnikih po vsem svetu – v Vietnamu, Indiji, Nemčiji, Singapurju, Švici, Veliki Britaniji, na Nizozemskem in v Južni Koreji. Zanimivo je, da so vsi identificirani strežniki uporabljali CentOS različice 5.2, 5.4 ali 5.5. Operacijski sistemi so bili tako 32-bitni kot 64-bitni. Kljub dejstvu, da so bile vse datoteke, povezane z delovanjem ukaznih centrov, izbrisane, je strokovnjakom družbe Kaspersky Lab uspelo obnoviti nekaj informacij v datotekah LOG iz slack prostora. Najbolj zanimiv podatek je, da so napadalci na strežnikih vedno zamenjali privzeti paket OpenSSH 4.3 z različico 5.8. To lahko pomeni, da je bila za vdor v strežnike uporabljena neznana ranljivost v OpenSSH 4.3. Vsi sistemi niso bili uporabljeni kot poveljniški centri. Nekateri so bili, sodeč po napakah v dnevnikih sshd pri poskusu preusmeritve prometa za vrata 80 in 443, uporabljeni kot proxy strežnik za povezavo s končnimi ukaznimi centri.

Datumi in moduli

Wordov dokument, distribuiran aprila 2011, ki ga je pregledal Kaspersky Lab, je vseboval gonilnik za prenos namestitvenega programa z datumom kompilacije 31. avgusta 2007. Podoben gonilnik (velikost - 20608 bajtov, MD5 - EEDCA45BD613E0D9A9E5C69122007F17) v dokumentu, ki je prišel v laboratorij CrySys, je imel datum kompilacije 21. februar 2008. Poleg tega so strokovnjaki Kaspersky Laba našli gonilnik za samodejni zagon rndismpc.sys (velikost - 19968 bajtov, MD5 - 9AEC6E10C5EE9C05BED93221544C783E) z datumom 20. januar 2008. Komponente z oznako 2009 niso bile najdene. Na podlagi časovnih žigov kompilacije posameznih delov Duqu bi lahko njegov razvoj segal v začetek leta 2007. Njegova najzgodnejša manifestacija je povezana z odkrivanjem začasnih datotek v obliki ~DO (verjetno ustvarjenih s strani enega od vohunskih programov), katerih datum nastanka je 28. november 2008 (članek "Duqu & Stuxnet: Časovnica zanimivih dogodkov"). Najnovejši datum, povezan z Duqu, je 23. februar 2012, vsebovan v gonilniku za prenos namestitvenega programa, ki ga je Symantec odkril marca 2012.

Uporabljeni viri informacij:

serija člankov o Duqu iz Kaspersky Laba;
Poročilo analitika Symantec "W32.Duqu Predhodnik naslednjega Stuxneta", različica 1.4, november 2011 (pdf).

Vir: www.habr.com

Dodaj komentar