U ovom postu ćemo vam reći kako je cyber grupa OceanLotus (APT32 i APT-C-00) nedavno koristila jedan od javno dostupnih eksploatacija za
OceanLotus je specijalizovan za sajber špijunažu, a prioritetne mete su zemlje jugoistočne Azije. Napadači krivotvore dokumente koji privlače pažnju potencijalnih žrtava kako bi ih uvjerili da izvrše backdoor, a također rade na razvoju alata. Metode koje se koriste za kreiranje honeypots variraju u zavisnosti od napada, od datoteka sa „dvostrukim proširenjima“, arhiva koje se samoraspakuju, dokumenata sa makroima, do poznatih eksploatacija.
Korištenje eksploatacije u Microsoft Equation Editoru
Sredinom 2018. godine, OceanLotus je sproveo kampanju iskorištavajući ranjivost CVE-2017-11882. Jedan od zlonamjernih dokumenata cyber grupe analizirali su stručnjaci iz 360 Threat Intelligence Center (
U prvoj fazi
Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc
(SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3
) je sličan onom spomenutom u prethodnoj studiji. Zanimljiva je jer je namijenjena korisnicima zainteresovanim za kambodžansku politiku (CNRP - Cambodia National Rescue Party, raspuštena krajem 2017.). Uprkos ekstenziji .doc, dokument je u RTF formatu (pogledajte sliku ispod), sadrži smeće kod, a takođe je iskrivljen.
Slika 1. "Smeće" u RTF-u
Iako ima iskrivljenih elemenata, Word uspješno otvara ovu RTF datoteku. Kao što možete vidjeti na slici 2, postoji struktura EQNOLEFILEHDR na pomaku 0xC00, nakon čega slijedi MTEF zaglavlje, a zatim MTEF unos (slika 3) za font.
Slika 2. Vrijednosti unosa FONT-a
Slika 3.
Moguće prelivanje u polju ime, jer se njegova veličina ne provjerava prije kopiranja. Predugačko ime pokreće ranjivost. Kao što možete vidjeti iz sadržaja RTF datoteke (offset 0xC26 na slici 2), bafer je ispunjen shell kodom nakon čega slijedi lažna naredba (0x90
) i povratnu adresu 0x402114
. Adresa je element dijaloga u EQNEDT32.exe
, sa uputama RET
. Ovo uzrokuje da EIP pokazuje na početak polja imekoji sadrži shellcode.
Slika 4. Početak exploit shellcode-a
Adresa 0x45BD3C
pohranjuje varijablu koja je dereferencirana sve dok ne dođe do pokazivača na trenutno učitanu strukturu MTEFData
. Ostatak shell koda je ovdje.
Svrha shell koda je da izvrši drugi dio shell koda ugrađenog u otvoreni dokument. Originalni shellcode prvo pokušava pronaći deskriptor datoteke otvorenog dokumenta iteracijom preko svih sistemskih deskriptora (NtQuerySystemInformation
sa argumentima SystemExtendedHandleInformation
) i provjerava da li se podudaraju PID deskriptor i PID proces WinWord
i da li je dokument otvoren sa pristupnom maskom - 0x12019F
.
Da biste potvrdili da je pronađen ispravan ručnik (a ne ručnik drugog otvorenog dokumenta), sadržaj datoteke se prikazuje pomoću funkcije CreateFileMapping
, a shellcode provjerava da li se posljednja četiri bajta dokumenta podudaraju "yyyy
"(metoda lova na jaja). Kada se pronađe podudaranje, dokument se kopira u privremeni folder (GetTempPath
) Kako ole.dll
. Zatim se čita zadnjih 12 bajtova dokumenta.
Slika 5. Kraj markera dokumenta
32-bitna vrijednost između markera AABBCCDD
и yyyy
je pomak sljedećeg shell koda. Poziva se pomoću funkcije CreateThread
. Ekstrahovao isti shellcode koji je ranije koristila grupa OceanLotus.
Druga faza
Uklanjanje komponenti
Nazivi datoteka i direktorija biraju se dinamički. Kod nasumično bira naziv izvršne ili DLL datoteke u C:Windowssystem32
. Zatim postavlja zahtjev svojim resursima i preuzima polje FileDescription
koristiti kao ime foldera. Ako ovo ne uspije, kod nasumično bira naziv mape iz direktorija %ProgramFiles%
ili C:Windows
(iz GetWindowsDirectoryW). Izbjegava korištenje imena koje bi moglo biti u sukobu s postojećim datotekama i osigurava da ne sadrži sljedeće riječi: windows
, Microsoft
, desktop
, system
, system32
ili syswow64
. Ako direktorij već postoji, imenu se dodaje "NLS_{6 znakova}".
resurs 0x102
se analizira i datoteke se ubacuju %ProgramFiles%
ili %AppData%
, u nasumično odabrani folder. Vrijeme kreiranja je promijenjeno da ima iste vrijednosti kao kernel32.dll
.
Na primjer, ovdje je folder i lista datoteka kreiranih odabirom izvršne datoteke C:Windowssystem32TCPSVCS.exe
kao izvor podataka.
Slika 6. Izdvajanje različitih komponenti
Struktura resursa 0x102
u kapaljci je prilično složeno. Ukratko, sadrži:
— Imena datoteka
— Veličina i sadržaj datoteke
— Format kompresije (COMPRESSION_FORMAT_LZNT1
, koju koristi funkcija RtlDecompressBuffer
)
Prvi fajl se resetuje kao TCPSVCS.exe
, što je legitimno AcroTranscoder.exe
(prema FileDescription
, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3
).
Možda ste primijetili da su neke DLL datoteke veće od 11 MB. To je zato što je veliki neprekidni bafer nasumičnih podataka smješten unutar izvršne datoteke. Moguće je da je to način da se izbjegne detekcija od strane nekih sigurnosnih proizvoda.
Osiguravanje upornosti
resurs 0x101
u dropperu sadrži dva 32-bitna cijela broja koja određuju kako treba pružiti postojanost. Vrijednost prvog određuje kako će zlonamjerni softver opstati bez administratorskih prava.
Tabela 1. Mehanizam postojanosti bez administratorskih prava
Vrijednost drugog cijelog broja određuje kako bi zlonamjerni softver trebao postići postojanost kada se pokreće s administratorskim pravima.
Tabela 2. Mehanizam postojanosti s administratorskim pravima
Ime usluge je ime datoteke bez ekstenzije; ime za prikaz je ime fascikle, ali ako već postoji, string “ se dodaje u njegaRevision 1
” (broj se povećava sve dok se ne pronađe nekorišteno ime). Operateri su se pobrinuli da upornost kroz uslugu bude robusna - u slučaju kvara, servis treba ponovo pokrenuti nakon 1 sekunde. Zatim vrijednost WOW64
Ključ registratora nove usluge je postavljen na 4, što ukazuje da se radi o 32-bitnoj usluzi.
Planirani zadatak se kreira kroz nekoliko COM interfejsa: ITaskScheduler
, ITask
, ITaskTrigger
, IPersistFile
и ITaskScheduler
. U suštini, zlonamjerni softver kreira skriveni zadatak, postavlja informacije o računu zajedno s informacijama o trenutnom korisniku ili administratoru, a zatim postavlja okidač.
Ovo je dnevni zadatak u trajanju od 24 sata i intervalima između dva izvršavanja od 10 minuta, što znači da će se izvoditi neprekidno.
Malicious bit
U našem primjeru, izvršna datoteka TCPSVCS.exe
(AcroTranscoder.exe
) je legitiman softver koji učitava DLL-ove koji se resetuju zajedno s njim. U ovom slučaju, to je od interesa Flash Video Extension.dll
.
Njegova funkcija DLLMain
samo poziva drugu funkciju. Prisutni su neki nejasni predikati:
Slika 7. Fazni predikati
Nakon ovih obmanjujućih provjera, kod dobiva odjeljak .text
file TCPSVCS.exe
, mijenja svoju odbranu u PAGE_EXECUTE_READWRITE
i prepisuje ga dodavanjem lažnih instrukcija:
Slika 8. Redoslijed instrukcija
Na kraju do adrese funkcije FLVCore::Uninitialize(void)
, izvezeno Flash Video Extension.dll
, dodato je uputstvo CALL
. To znači da nakon učitavanja zlonamjernog DLL-a, kada runtime pozove WinMain
в TCPSVCS.exe
, pokazivač instrukcije će pokazivati na NOP, uzrokujući FLVCore::Uninitialize(void)
, sljedeća faza.
Funkcija jednostavno kreira mutex počevši od {181C8480-A975-411C-AB0A-630DB8B0A221}
nakon čega slijedi trenutno korisničko ime. Zatim čita izbačenu *.db3 datoteku, koja sadrži kod neovisan o poziciji, i koristi CreateThread
za izvršenje sadržaja.
Sadržaj *.db3 datoteke je shellcode koji OceanLotus grupa obično koristi. Ponovo smo uspješno raspakirali njegov teret koristeći skriptu emulatora koju smo objavili
Skripta izdvaja završnu fazu. Ova komponenta je backdoor, u kojem smo već analizirali {A96B020F-0000-466F-A96D-A91BBF8EAC96}
binarni fajl. Konfiguracija zlonamjernog softvera je još uvijek šifrirana u PE resursu. Ima približno istu konfiguraciju, ali se C&C serveri razlikuju od prethodnih:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
OceanLotusov tim ponovo demonstrira kombinaciju različitih tehnika kako bi se izbjeglo otkrivanje. Vratili su se sa "pročišćenim" dijagramom procesa infekcije. Odabirom nasumičnih imena i popunjavanjem izvršnih datoteka nasumičnim podacima, oni smanjuju broj pouzdanih IoC-a (na osnovu hashova i imena datoteka). Štaviše, zahvaljujući korištenju učitavanja DLL-a treće strane, napadači trebaju samo ukloniti legitimni binarni AcroTranscoder
.
Samoraspakirajuće arhive
Nakon RTF datoteka, grupa je prešla na samoraspakirajuće (SFX) arhive sa uobičajenim ikonama dokumenata kako bi dodatno zbunila korisnika. Threatbook je pisao o ovome ({A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
. Od sredine januara 2019. godine, OceanLotus ponovo koristi ovu tehniku, ali mijenja neke konfiguracije s vremenom. U ovom dijelu ćemo govoriti o tehnici i promjenama.
Kreiranje mamaca
Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE
(SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB
) prvi put je pronađen 2018. Ovaj SFX fajl je mudro kreiran - u opisu (Informacije o verziji) kaže da je ovo JPEG slika. SFX skripta izgleda ovako:
Slika 9. SFX komande
Zlonamjerni softver se resetira {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx
(SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC
), kao i sliku 2018 thich thong lac.jpg.
Slika varalice izgleda ovako:
Slika 10. Slika varalice
Možda ste primijetili da prva dva reda u SFX skripti dvaput pozivaju OCX datoteku, ali to nije greška.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
Kontrolni tok OCX datoteke je vrlo sličan drugim komponentama OceanLotus - mnogim sekvencama komandi JZ/JNZ
и PUSH/RET
, naizmjenično s kodom za smeće.
Slika 11. Zamagljeni kod
Nakon filtriranja neželjenog koda, izvezite DllRegisterServer
, zvao regsvr32.exe
, kao što slijedi:
Slika 12. Osnovni kod instalatera
Uglavnom, na prvi poziv DllRegisterServer
export postavlja vrijednost registra HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model
za šifrirani pomak u DLL (0x10001DE0
).
Kada se funkcija pozove drugi put, ona čita istu vrijednost i izvršava se na toj adresi. Odavde se resurs i mnoge akcije u RAM-u čitaju i izvršavaju.
Shellcode je isti PE loader koji je korišten u prošlim OceanLotus kampanjama. Može se emulirati pomoću db293b825dcc419ba7dc2c49fa2757ee.dll
, učitava ga u memoriju i izvršava DllEntry
.
DLL izdvaja sadržaj svog resursa, dešifruje (AES-256-CBC) i dekompresuje (LZMA). Resurs ima specifičan format koji je lako dekompilirati.
Slika 13. Struktura konfiguracije instalatera (KaitaiStruct Visualizer)
Konfiguracija je eksplicitno specificirana - ovisno o nivou privilegija, binarni podaci će biti upisani %appdata%IntellogsBackgroundUploadTask.cpl
ili %windir%System32BackgroundUploadTask.cpl
(ili SysWOW64
za 64-bitne sisteme).
Dalja postojanost je osigurana kreiranjem zadatka s imenom BackgroundUploadTask[junk].job
gde [junk]
predstavlja skup bajtova 0x9D
и 0xA0
.
Naziv aplikacije zadatka %windir%System32control.exe
, a vrijednost parametra je putanja do preuzete binarne datoteke. Skriveni zadatak se izvodi svaki dan.
Strukturno, CPL datoteka je DLL sa internim imenom ac8e06de0a6c4483af9837d96504127e.dll
, koji izvozi funkciju CPlApplet
. Ovaj fajl dešifruje svoj jedini resurs {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
, zatim učitava ovaj DLL i poziva njegov jedini izvoz DllEntry
.
Backdoor konfiguracijski fajl
Konfiguracija backdoor-a je šifrirana i ugrađena u svoje resurse. Struktura konfiguracijske datoteke je vrlo slična prethodnoj.
Slika 14. Struktura konfiguracije pozadinskih vrata (KaitaiStruct Visualizer)
Iako je struktura slična, mnoge vrijednosti polja su ažurirane u odnosu na one prikazane u
Prvi element binarnog niza sadrži DLL (HttpProv.dll
MD5: 2559738D1BD4A999126F900C7357B759
),
Dodatna istraživanja
Pri prikupljanju uzoraka uočili smo neke karakteristike. Upravo opisani primjerak pojavio se oko jula 2018., a drugi poput njega pojavili su se tek od sredine januara do početka februara 2019. SFX arhiva je korištena kao vektor infekcije, ispuštajući legitimni lažni dokument i zlonamjerni OSX fajl.
Iako OceanLotus koristi lažne vremenske oznake, primijetili smo da su vremenske oznake SFX i OCX datoteka uvijek iste (0x57B0C36A
(08. u 14:2016 UTC) i 0x498BE80F
(02/06/2009 @ 7:34 am UTC) respektivno). Ovo vjerovatno ukazuje da autori imaju neku vrstu “dizajnera” koji koristi iste šablone i jednostavno mijenja neke karakteristike.
Među dokumentima koje smo proučavali od početka 2018. nalaze se različita imena koja ukazuju na zemlje od interesa za napadače:
— Nove kontakt informacije Cambodia Media(New).xls.exe
— 李建香 (个人简历).exe (lažni pdf dokument CV-a)
— povratne informacije, Reli u SAD od 28. do 29. jula 2018.exe
Otkako su zadnja vrata otkrivena {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
i objavljivanjem njegove analize od strane nekoliko istraživača, uočili smo neke promjene u podacima o konfiguraciji zlonamjernog softvera.
Prvo, autori su počeli da uklanjaju imena iz pomoćnih DLL-ova (DNSprov.dll
i dvije verzije HttpProv.dll
). Operateri su tada prestali sa pakiranjem trećeg DLL-a (druga verzija HttpProv.dll
), odabirom ugradnje samo jednog.
Drugo, mnoga backdoor konfiguracijska polja su promijenjena, vjerovatno da bi se izbjeglo otkrivanje jer je mnogo IoC-a postalo dostupno. Važna polja koja su modificirali autori uključuju:
- AppX ključ registra promijenjen (pogledajte IoC-ove)
- mutex kodirajući niz ("def", "abc", "ghi")
- broj porta
Konačno, sve nove analizirane verzije imaju nove C&C navedene u odjeljku IoC.
nalazi
OceanLotus nastavlja da se razvija. Sajber grupa je fokusirana na usavršavanje i proširenje alata i mamaca. Autori prikrivaju zlonamjerne sadržaje koristeći dokumente koji privlače pažnju čija je tema relevantna za namjeravane žrtve. Oni razvijaju nove šeme i takođe koriste javno dostupne alate, kao što je eksploatacija Equation Editor. Štaviše, oni poboljšavaju alate za smanjenje broja artefakata preostalih na mašinama žrtava, čime se smanjuje mogućnost otkrivanja od strane antivirusnog softvera.
Indikatori kompromisa
Dostupni su indikatori kompromisa kao i MITER ATT&CK atributi
izvor: www.habr.com