ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle

Tässä viestissä kerromme, kuinka kyberryhmä OceanLotus (APT32 ja APT-C-00) käytti äskettäin yhtä julkisesti saatavilla olevista hyväksikäytöistä CVE-2017-11882, muistin vioittumishaavoittuvuuksia Microsoft Officessa ja kuinka ryhmän haittaohjelmat saavuttavat pysyvyyden vaarantuneissa järjestelmissä jättämättä jälkiä. Seuraavaksi kuvataan, kuinka ryhmä on vuoden 2019 alusta lähtien käyttänyt itsepurkavia arkistoja koodin suorittamiseen.

OceanLotus on erikoistunut kybervakoiluun, ja ensisijaiset kohteet ovat Kaakkois-Aasian maat. Hyökkääjät väärentävät asiakirjoja, jotka kiinnittävät mahdollisten uhrien huomion vakuuttaakseen heidät toteuttamaan takaoven, ja myös kehittävät työkaluja. Honeypottien luomiseen käytetyt menetelmät vaihtelevat hyökkäyksissä "kaksoislaajennustiedostoista", itsepurkautuvista arkistoista, makroja sisältävistä asiakirjoista tunnettuihin hyväksikäyttöihin.

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle

Hyödynnä Microsoft Equation Editorissa

Vuoden 2018 puolivälissä OceanLotus toteutti kampanjan, jossa hyödynnettiin CVE-2017-11882-haavoittuvuutta. 360 Threat Intelligence Centerin asiantuntijat analysoivat yhden kyberryhmän haitallisista dokumenteista (tutkimusta kiinaksi), mukaan lukien yksityiskohtainen kuvaus hyväksikäytöstä. Alla oleva viesti sisältää yleiskatsauksen tällaisesta haitallisesta asiakirjasta.

Ensimmäisessä vaiheessa

Asiakirja FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) on samanlainen kuin yllä olevassa tutkimuksessa mainittu. Se on mielenkiintoinen, koska se on suunnattu käyttäjille, jotka ovat kiinnostuneita Kambodžan politiikasta (CNRP - Cambodia National Rescue Party, hajotettiin vuoden 2017 lopussa). Huolimatta .doc-laajennuksesta asiakirja on RTF-muodossa (katso kuva alla), sisältää roskakoodia ja on myös vääristynyt.

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 1. "Roska" RTF:ssä

Vaikka elementtejä on sekaisin, Word avaa tämän RTF-tiedoston onnistuneesti. Kuten näet kuvasta 2, EQNOLEFILEHDR-rakenne on siirtymäkohdassa 0xC00, jota seuraa MTEF-otsikko ja sitten kirjasimen MTEF-merkintä (kuva 3).

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 2. FONT-syöttöarvot

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 3. FONT tallennusmuoto

Mahdollinen ylivuoto pellolla nimi, koska sen kokoa ei tarkisteta ennen kopioimista. Liian pitkä nimi laukaisee haavoittuvuuden. Kuten voit nähdä RTF-tiedoston sisällöstä (offset 0xC26 kuvassa 2), puskuri täytetään shellkoodilla, jota seuraa dummy-komento (0x90) ja palautusosoite 0x402114. Osoite on dialogielementti EQNEDT32.exe, jossa on ohjeet RET. Tämä saa EIP osoittamaan kentän alkuun nimisisältää shell-koodin.

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 4. Hyödyntämiskuorikoodin alku

osoite 0x45BD3C tallentaa muuttujan, johon viitataan, kunnes se saavuttaa osoittimen sillä hetkellä ladattavaan rakenteeseen MTEFData. Loput shell-koodista on täällä.

Shell-koodin tarkoitus on suorittaa toinen avoimeen dokumenttiin upotettu shellkoodin osa. Alkuperäinen shellkoodi yrittää ensin löytää avoimen asiakirjan tiedostokuvaajan iteroimalla kaikkia järjestelmäkuvauksia (NtQuerySystemInformation argumentin kanssa SystemExtendedHandleInformation) ja tarkistaa, vastaavatko ne PID kuvaaja ja PID prosessi WinWord ja onko asiakirja avattu pääsymaskilla - 0x12019F.

Varmistaaksesi, että oikea kahva on löydetty (eikä toisen avoimen asiakirjan kahvaa), tiedoston sisältö näytetään toiminnolla CreateFileMapping, ja shellkoodi tarkistaa, vastaavatko asiakirjan neljä viimeistä tavua "yyyy"(munanmetsästysmenetelmä). Kun vastaavuus löytyy, asiakirja kopioidaan väliaikaiseen kansioon (GetTempPath) kuten ole.dll. Sitten asiakirjan viimeiset 12 tavua luetaan.

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 5. Asiakirjan loppumerkit

32-bittinen arvo merkkien välillä AABBCCDD и yyyy on seuraavan kuorikoodin offset. Sitä kutsutaan funktion avulla CreateThread. Purettu sama shellkoodi, jota OceanLotus-ryhmä käytti aiemmin. Python-emulointiskripti, jonka julkaisimme maaliskuussa 2018, toimii edelleen toisen vaiheen dumpissa.

Toisessa vaiheessa

Komponenttien poistaminen

Tiedostojen ja hakemistojen nimet valitaan dynaamisesti. Koodi valitsee satunnaisesti suoritettavan tai DLL-tiedoston nimen C:Windowssystem32. Sitten se tekee pyynnön resursseilleen ja hakee kentän FileDescription käytettäväksi kansion nimenä. Jos tämä ei auta, koodi valitsee satunnaisesti kansion nimen hakemistoista %ProgramFiles% tai C:Windows (GetWindowsDirectoryW:stä). Se välttää käyttämästä nimeä, joka saattaa olla ristiriidassa olemassa olevien tiedostojen kanssa, ja varmistaa, että se ei sisällä seuraavia sanoja: windows, Microsoft, desktop, system, system32 tai syswow64. Jos hakemisto on jo olemassa, "NLS_{6 merkkiä}" lisätään nimeen.

resurssi 0x102 analysoidaan ja tiedostot tallennetaan %ProgramFiles% tai %AppData%, satunnaisesti valittuun kansioon. Luontiaika muutettu niin, että sillä on samat arvot kuin kernel32.dll.

Tässä on esimerkiksi kansio ja luettelo tiedostoista, jotka on luotu valitsemalla suoritettava tiedosto C:Windowssystem32TCPSVCS.exe tietolähteenä.

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 6. Eri komponenttien purkaminen

Resurssien rakenne 0x102 tiputtimessa on melko monimutkaista. Pähkinänkuoressa se sisältää:
— Tiedostojen nimet
— Tiedoston koko ja sisältö
- pakkausmuoto (COMPRESSION_FORMAT_LZNT1, jota toiminto käyttää RtlDecompressBuffer)

Ensimmäinen tiedosto nollataan nimellä TCPSVCS.exe, mikä on laillista AcroTranscoder.exe (mukaan FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Olet ehkä huomannut, että jotkut DLL-tiedostot ovat suurempia kuin 11 Mt. Tämä johtuu siitä, että suoritettavan tiedoston sisään on sijoitettu suuri jatkuva puskuri satunnaista dataa. On mahdollista, että tämä on tapa välttää joidenkin tietoturvatuotteiden havaitseminen.

Pysyvyyden varmistaminen

resurssi 0x101 dropperissa sisältää kaksi 32-bittistä kokonaislukua, jotka määrittelevät, kuinka pysyvyys tulee tarjota. Ensimmäisen arvo määrittää, kuinka haittaohjelma säilyy ilman järjestelmänvalvojan oikeuksia.

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Taulukko 1. Pysyvyysmekanismi ilman järjestelmänvalvojan oikeuksia

Toisen kokonaisluvun arvo määrittää, kuinka haittaohjelman tulee saavuttaa pysyvyys, kun se suoritetaan järjestelmänvalvojan oikeuksilla.

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Taulukko 2. Pysyvyysmekanismi järjestelmänvalvojan oikeuksilla

Palvelun nimi on tiedoston nimi ilman päätettä; näyttönimi on kansion nimi, mutta jos se on jo olemassa, siihen lisätään merkkijono "Revision 1” (luku kasvaa, kunnes käyttämätön nimi löytyy). Operaattorit varmistivat, että pysyvyys palvelun kautta on vakaata - epäonnistuessa palvelu tulee käynnistää uudelleen 1 sekunnin kuluttua. Sitten arvo WOW64 Uuden palvelun rekisteriavain on asetettu arvoon 4, mikä tarkoittaa, että kyseessä on 32-bittinen palvelu.

Ajastettu tehtävä luodaan useiden COM-liitäntöjen kautta: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Pohjimmiltaan haittaohjelma luo piilotetun tehtävän, asettaa tilitiedot nykyisen käyttäjän tai järjestelmänvalvojan tietojen kanssa ja asettaa sitten laukaisimen.

Tämä on päivittäinen tehtävä, jonka kesto on 24 tuntia ja kahden suorituksen välit ovat 10 minuuttia, mikä tarkoittaa, että se toimii jatkuvasti.

Haitallinen bitti

Esimerkissämme suoritettava tiedosto TCPSVCS.exe (AcroTranscoder.exe) on laillinen ohjelmisto, joka lataa DLL-tiedostoja, jotka nollataan sen mukana. Tässä tapauksessa se kiinnostaa Flash Video Extension.dll.

Sen toiminto DLLMain kutsuu vain toista toimintoa. Joitakin sumeita predikaatteja on olemassa:

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 7. Sumeat predikaatit

Näiden harhaanjohtavien tarkistusten jälkeen koodi saa osion .text tiedosto TCPSVCS.exe, muuttaa puolustustaan ​​muotoon PAGE_EXECUTE_READWRITE ja kirjoittaa sen uudelleen lisäämällä tyhjät ohjeet:

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 8. Ohjeiden järjestys

Lopussa funktion osoite FLVCore::Uninitialize(void), viedään Flash Video Extension.dll, ohje on lisätty CALL. Tämä tarkoittaa, että kun haitallinen DLL on ladattu, kun ajonaikainen kutsuu WinMain в TCPSVCS.exe, käskyosoitin osoittaa kohtaan NOP, mikä aiheuttaa FLVCore::Uninitialize(void), seuraava vaihe.

Toiminto yksinkertaisesti luo mutexin, joka alkaa {181C8480-A975-411C-AB0A-630DB8B0A221}perässä nykyinen käyttäjätunnus. Sitten se lukee poistetun *.db3-tiedoston, joka sisältää sijainnista riippumattoman koodin, ja käyttää CreateThread sisällön toteuttamiseksi.

*.db3-tiedoston sisältö on shell-koodi, jota OceanLotus-ryhmä yleensä käyttää. Purimme jälleen onnistuneesti sen hyötykuorman julkaisemallamme emulaattorikomentosarjalla GitHubissa.

Käsikirjoitus poimii viimeisen vaiheen. Tämä komponentti on takaovi, jota olemme jo analysoineet edellinen OceanLotus-tutkimus. Tämä voidaan määrittää GUID:n avulla {A96B020F-0000-466F-A96D-A91BBF8EAC96} binääritiedosto. Haittaohjelmakokoonpano on edelleen salattu PE-resurssissa. Siinä on suunnilleen sama kokoonpano, mutta C&C-palvelimet eroavat edellisistä:

- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz

OceanLotus-tiimi esittelee jälleen eri tekniikoiden yhdistelmää havaitsemisen välttämiseksi. He palasivat "puhdistetun" kaavion kanssa tartuntaprosessista. Valitsemalla satunnaisia ​​nimiä ja täyttämällä suoritettavat tiedostot satunnaisilla tiedoilla ne vähentävät luotettavien IoC:iden määrää (pohjainen tiiviste ja tiedostonimi). Lisäksi kolmannen osapuolen DLL-latauksen ansiosta hyökkääjien tarvitsee vain poistaa laillinen binaari AcroTranscoder.

Itsepurkautuvat arkistot

RTF-tiedostojen jälkeen ryhmä siirtyi itsepurkaviin (SFX) arkistoon, jossa oli yleisiä asiakirjakuvakkeita hämmentääkseen käyttäjää entisestään. Threatbook kirjoitti tästä (linkki kiinaksi). Käynnistyksen yhteydessä itsepurkautuvat RAR-tiedostot hylätään ja .ocx-laajennuksella varustetut DLL-tiedostot suoritetaan, joiden lopullinen hyötykuorma on dokumentoitu aiemmin {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Tammikuun 2019 puolivälistä lähtien OceanLotus on käyttänyt tätä tekniikkaa uudelleen, mutta muuttanut joitain määrityksiä ajan myötä. Tässä osiossa puhumme tekniikasta ja muutoksista.

Vieheen luominen

Asiakirja THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) löydettiin ensimmäisen kerran vuonna 2018. Tämä SFX-tiedosto luotiin viisaasti - kuvauksessa (Version tiedot) se sanoo, että tämä on JPEG-kuva. SFX-skripti näyttää tältä:

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 9. SFX-komennot

Haittaohjelma nollautuu {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), sekä kuva 2018 thich thong lac.jpg.

Huijauskuva näyttää tältä:

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 10. Syöttikuva

Olet ehkä huomannut, että SFX-komentosarjan kaksi ensimmäistä riviä kutsuvat OCX-tiedostoa kahdesti, mutta tämä ei ole virhe.

{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

OCX-tiedoston ohjausvirta on hyvin samanlainen kuin muiden OceanLotus-komponenttien - monet komentosarjat JZ/JNZ и PUSH/RET, vuorotellen roskakoodin kanssa.

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 11. Hämärtynyt koodi

Vie roskakoodin suodattamisen jälkeen DllRegisterServer, nimeltään regsvr32.exe, näyttää seuraavalta:

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 12. Perusasennuskoodi

Periaatteessa ensimmäisellä puhelulla DllRegisterServer vienti asettaa rekisteriarvon HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model salatulle offsetille DLL:ssä (0x10001DE0).

Kun funktiota kutsutaan toisen kerran, se lukee saman arvon ja suoritetaan kyseisessä osoitteessa. Tästä eteenpäin resurssi ja monet RAM-muistissa olevat toiminnot luetaan ja suoritetaan.

Shellcode on sama PE-lataaja, jota käytettiin aiemmissa OceanLotus-kampanjoissa. Sitä voidaan emuloida käyttämällä meidän käsikirjoitus. Lopulta hän nollautuu db293b825dcc419ba7dc2c49fa2757ee.dll, lataa sen muistiin ja suorittaa sen DllEntry.

DLL purkaa resurssinsa sisällön, purkaa sen salauksen (AES-256-CBC) ja purkaa sen (LZMA). Resurssilla on tietty muoto, joka on helppo purkaa.

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 13. Asentimen kokoonpanorakenne (KaitaiStruct Visualizer)

Kokoonpano on määritetty eksplisiittisesti - käyttöoikeustasosta riippuen binääritietoa kirjoitetaan %appdata%IntellogsBackgroundUploadTask.cpl tai %windir%System32BackgroundUploadTask.cpl (tai SysWOW64 64-bittisille järjestelmille).

Lisää pysyvyyttä varmistetaan luomalla tehtävä nimeltä BackgroundUploadTask[junk].jobMissä [junk] edustaa tavujoukkoa 0x9D и 0xA0.

Tehtävän sovelluksen nimi %windir%System32control.exe, ja parametrin arvo on polku ladattavaan binaaritiedostoon. Piilotettu tehtävä suoritetaan joka päivä.

Rakenteellisesti CPL-tiedosto on DLL, jolla on sisäinen nimi ac8e06de0a6c4483af9837d96504127e.dll, joka vie funktion CPlApplet. Tämä tiedosto purkaa ainoan resurssinsa salauksen {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, lataa sitten tämän DLL:n ja kutsuu sen ainoaa vientiä DllEntry.

Takaoven määritystiedosto

Takaoven kokoonpano on salattu ja upotettu sen resursseihin. Asetustiedoston rakenne on hyvin samanlainen kuin edellinen.

ESET: uudet takaoven toimitusjärjestelmät OceanLotus-verkkoryhmälle
Kuva 14. Takaoven kokoonpanorakenne (KaitaiStruct Visualizer)

Vaikka rakenne on samanlainen, monet kenttäarvoista on päivitetty kuvassa esitetyistä vanha raporttimme.

Binääritaulukon ensimmäinen elementti sisältää DLL:n (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), tunnistanut Tencent. Mutta koska vientinimi poistettiin binaarista, tiivisteet eivät täsmää.

Lisätutkimuksia

Näytteitä kerättäessä havaitsimme joitain ominaisuuksia. Juuri kuvattu näyte ilmestyi heinäkuun 2018 paikkeilla, ja muut sen kaltaiset ilmestyivät vasta tammikuun puolivälistä helmikuun alkuun 2019. SFX-arkistoa käytettiin tartuntavektorina, mikä pudotti laillisen houkutusasiakirjan ja haitallisen OSX-tiedoston.

Vaikka OceanLotus käyttää väärennettyjä aikaleimoja, huomasimme, että SFX- ja OCX-tiedostojen aikaleimat ovat aina samat (0x57B0C36A (08 klo 14 UTC) ja 0x498BE80F (02/06/2009 klo 7:34 UTC)). Tämä todennäköisesti viittaa siihen, että kirjoittajilla on jonkinlainen "suunnittelija", joka käyttää samoja malleja ja muuttaa yksinkertaisesti joitain ominaisuuksia.

Asiakirjoissa, joita olemme tutkineet vuoden 2018 alusta lähtien, on useita nimiä, jotka osoittavat hyökkääjiä kiinnostavat maat:

— Cambodia Median (New.xls.exe) uudet yhteystiedot
— 李建香 (个人简历).exe (väärennetty pdf-dokumentti CV:stä)
— palaute, ralli USA:ssa 28.-29.exe

Siitä lähtien kun takaovi löydettiin {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll ja useiden tutkijoiden julkaisema sen analyysi, havaitsimme joitakin muutoksia haittaohjelmien kokoonpanotiedoissa.

Ensin kirjoittajat alkoivat poistaa nimiä apu-DLL-tiedostoista (DNSprov.dll ja kaksi versiota HttpProv.dll). Tämän jälkeen operaattorit lopettivat kolmannen DLL:n (toisen version) pakkaamisen HttpProv.dll), valitsit upottaa vain yhden.

Toiseksi monia takaoven määrityskenttiä muutettiin, mikä todennäköisesti välttyisi havaitsemiselta, koska monet IoC:t tulivat saataville. Tärkeitä tekijöiden muokkaamia kenttiä ovat:

  • AppX-rekisteriavain muutettu (katso IoC:t)
  • mutex-koodausmerkkijono ("def", "abc", "ghi")
  • porttinumero

Lopuksi, kaikissa analysoiduissa uusissa versioissa on uudet C&C:t, jotka on lueteltu IoCs-osiossa.

Tulokset

OceanLotus jatkaa kehitystään. Kyberryhmä keskittyy työkalujen ja houkuttimien jalostukseen ja laajentamiseen. Tekijät naamioivat haitallisia hyötykuormia käyttämällä huomiota herättäviä asiakirjoja, joiden aihe on olennainen aiotun uhrin kannalta. He kehittävät uusia järjestelmiä ja käyttävät myös julkisesti saatavilla olevia työkaluja, kuten yhtälöeditorin hyväksikäyttöä. Lisäksi he parantavat työkaluja vähentääkseen uhrien koneille jäävien esineiden määrää, mikä vähentää virustorjuntaohjelmiston havaitsemismahdollisuutta.

Kompromissin osoittimet

Kompromissin osoittimet sekä MITER ATT&CK -attribuutit ovat saatavilla Welifesecuritysta и GitHubissa.

Lähde: will.com

Lisää kommentti