ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus

En aquesta publicació us explicarem com el cibergrup OceanLotus (APT32 i APT-C-00) va utilitzar recentment una de les explotacions disponibles públicament per CVE-2017-11882, vulnerabilitats de corrupció de memòria a Microsoft Office i com el programari maliciós del grup aconsegueix la persistència en sistemes compromesos sense deixar rastre. A continuació, descriurem com, des de principis del 2019, el grup ha estat utilitzant arxius autoextractius per executar codi.

OceanLotus s'especialitza en ciberespionatge, amb objectius prioritaris els països del sud-est asiàtic. Els atacants falsifiquen documents que criden l'atenció de les víctimes potencials per convèncer-les perquè facin una porta del darrere, i també estan treballant en el desenvolupament d'eines. Els mètodes utilitzats per crear honeypots varien segons els atacs, des de fitxers de "doble extensió", arxius autoextractius, documents amb macros, fins a exploits coneguts.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus

Ús d'un exploit al Microsoft Equation Editor

A mitjans de 2018, OceanLotus va dur a terme una campanya aprofitant la vulnerabilitat CVE-2017-11882. Un dels documents maliciosos del grup cibernètic va ser analitzat per especialistes del 360 Threat Intelligence Center (investigació en xinès), inclosa una descripció detallada de l'explotació. La publicació següent conté una visió general d'un document tan maliciós.

La etapa primera

El document FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) és similar a l'esmentat a l'estudi anterior. És interessant perquè s'adreça a usuaris interessats en la política cambodjana (CNRP - Cambodia National Rescue Party, dissolt a finals de 2017). Malgrat l'extensió .doc, el document està en format RTF (vegeu la imatge següent), conté codi d'escombraries i també està distorsionat.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 1. "Escombraries" en RTF

Tot i que hi ha elements confusos, Word obre aquest fitxer RTF amb èxit. Com podeu veure a la figura 2, hi ha una estructura EQNOLEFILEHDR al desplaçament 0xC00, seguida d'una capçalera MTEF i després una entrada MTEF (figura 3) per a la font.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 2. Valors d'entrada FONT

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 3. Format de gravació FONT

Possible desbordament al camp nom, perquè la seva mida no es comprova abans de copiar. Un nom massa llarg desencadena una vulnerabilitat. Com podeu veure al contingut del fitxer RTF (desplaçament 0xC26 a la figura 2), la memòria intermèdia s'omple amb el codi shell seguit d'una ordre simulada (0x90) i adreça de retorn 0x402114. L'adreça és un element de diàleg a EQNEDT32.exe, indicant instruccions RET. Això fa que l'EIP apunti a l'inici del camp nomque conté el codi shell.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 4. Inici de l'exploit shellcode

Direcció 0x45BD3C emmagatzema una variable que es desreferencia fins que arriba a un punter a l'estructura carregada actualment MTEFData. La resta de l'shellcode és aquí.

El propòsit de l'shellcode és executar la segona part de shellcode incrustada al document obert. El codi d'intèrpret d'ordres original primer intenta trobar el descriptor de fitxer del document obert iterant sobre tots els descriptors del sistema (NtQuerySystemInformation amb un argument SystemExtendedHandleInformation) i comprovant si coincideixen PID descriptor i PID procés WinWord i si el document es va obrir amb una màscara d'accés - 0x12019F.

Per confirmar que s'ha trobat el controlador correcte (i no el d'un altre document obert), el contingut del fitxer es mostra mitjançant la funció CreateFileMapping, i el shellcode comprova si els darrers quatre bytes del document coincideixen amb "yyyy"(Mètode de caça d'ous). Un cop es troba una coincidència, el document es copia a una carpeta temporal (GetTempPath) Com ole.dll. A continuació, es llegeixen els darrers 12 bytes del document.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 5. Marcadors de final de document

Valor de 32 bits entre marcadors AABBCCDD и yyyy és el desplaçament del següent shellcode. S'anomena utilitzant la funció CreateThread. S'ha extret el mateix codi shell que el grup OceanLotus va utilitzar anteriorment. Script d'emulació de Python, que vam llançar el març de 2018, encara funciona per a l'abocador de la segona etapa.

La segona etapa

Eliminació de components

Els noms de fitxers i directoris es trien de forma dinàmica. El codi selecciona aleatòriament el nom del fitxer executable o DLL C:Windowssystem32. A continuació, fa una sol·licitud als seus recursos i recupera el camp FileDescription per utilitzar com a nom de carpeta. Si això no funciona, el codi selecciona aleatòriament un nom de carpeta dels directoris %ProgramFiles% o C:Windows (de GetWindowsDirectoryW). Evita utilitzar un nom que podria entrar en conflicte amb els fitxers existents i assegura que no contingui les paraules següents: windows, Microsoft, desktop, system, system32 o syswow64. Si el directori ja existeix, s'afegeix "NLS_{6 caràcters}" al nom.

recurs 0x102 s'analitza i s'aboquen els fitxers %ProgramFiles% o %AppData%, a una carpeta seleccionada aleatòriament. S'ha canviat el temps de creació per tenir els mateixos valors que kernel32.dll.

Per exemple, aquí teniu la carpeta i la llista de fitxers creats seleccionant l'executable C:Windowssystem32TCPSVCS.exe com a font de dades.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 6. Extracció de diversos components

Estructura de recursos 0x102 en un comptagotes és força complex. En poques paraules, conté:
- Noms dels fitxers
— Mida i contingut del fitxer
— Format de compressió (COMPRESSION_FORMAT_LZNT1, utilitzat per la funció RtlDecompressBuffer)

El primer fitxer es restableix com a TCPSVCS.exe, que és legítim AcroTranscoder.exe (d'acord amb FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

És possible que hàgiu notat que alguns fitxers DLL són més grans que 11 MB. Això es deu al fet que un gran buffer contigu de dades aleatòries es col·loca dins del fitxer executable. És possible que aquesta sigui una manera d'evitar la detecció per part d'alguns productes de seguretat.

Assegurant la persistència

recurs 0x101 al dropper conté dos nombres enters de 32 bits que especifiquen com s'ha de proporcionar la persistència. El valor del primer especifica com persistirà el programari maliciós sense drets d'administrador.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Taula 1. Mecanisme de persistència sense drets d'administrador

El valor del segon nombre enter especifica com ha d'aconseguir la persistència el programari maliciós quan s'executa amb drets d'administrador.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Taula 2. Mecanisme de persistència amb drets d'administrador

El nom del servei és el nom del fitxer sense extensió; el nom de visualització és el nom de la carpeta, però si ja existeix, s'hi afegeix la cadena "Revision 1” (el nombre augmenta fins que es troba un nom no utilitzat). Els operadors s'asseguraven que la persistència a través del servei fos robusta; en cas de fallada, el servei s'hauria de reiniciar després d'1 segon. Després el valor WOW64 La clau de registre del nou servei s'estableix en 4, cosa que indica que és un servei de 32 bits.

Es crea una tasca programada mitjançant diverses interfícies COM: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Bàsicament, el programari maliciós crea una tasca oculta, estableix la informació del compte juntament amb la informació de l'usuari o de l'administrador actual i, a continuació, estableix l'activador.

Es tracta d'una tasca diària amb una durada de 24 hores i intervals entre dues execucions de 10 minuts, el que significa que s'executarà de forma continuada.

Bit maliciós

En el nostre exemple, el fitxer executable TCPSVCS.exe (AcroTranscoder.exe) és un programari legítim que carrega DLL que es restableixen juntament amb ell. En aquest cas, és d'interès Flash Video Extension.dll.

La seva funció DLLMain només crida a una altra funció. Hi ha alguns predicats difusos:

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 7. Predicats difusos

Després d'aquestes comprovacions enganyoses, el codi obté una secció .text dossier TCPSVCS.exe, canvia la seva defensa a PAGE_EXECUTE_READWRITE i el reescriu afegint instruccions simulades:

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 8. Seqüència d'instruccions

Al final de l'adreça de la funció FLVCore::Uninitialize(void), exportat Flash Video Extension.dll, s'afegeix una instrucció CALL. Això vol dir que després de carregar la DLL maliciosa, quan el temps d'execució crida WinMain в TCPSVCS.exe, el punter d'instrucció apuntarà a NOP, provocant FLVCore::Uninitialize(void), següent etapa.

La funció simplement crea un mutex començant per {181C8480-A975-411C-AB0A-630DB8B0A221}seguit del nom d'usuari actual. A continuació, llegeix el fitxer *.db3 abocat, que conté codi independent de la posició, i fa servir CreateThread per executar el contingut.

El contingut del fitxer *.db3 és el codi shell que el grup OceanLotus utilitza normalment. Hem tornat a desempaquetar la seva càrrega útil amb èxit mitjançant l'script de l'emulador que vam publicar a GitHub.

El guió extreu l'etapa final. Aquest component és una porta del darrere, que ja hem analitzat estudi anterior d'OceanLotus. Això es pot determinar pel GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} fitxer binari. La configuració del programari maliciós encara està xifrada al recurs PE. Té aproximadament la mateixa configuració, però els servidors C&C són diferents dels anteriors:

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

L'equip d'OceanLotus torna a demostrar una combinació de diferents tècniques per evitar la detecció. Van tornar amb un diagrama "refinat" del procés d'infecció. En triar noms aleatoris i omplir els executables amb dades aleatòries, redueixen el nombre d'IoC fiables (basats en hash i noms de fitxers). A més, gràcies a l'ús de la càrrega DLL de tercers, els atacants només necessiten eliminar el binari legítim. AcroTranscoder.

Arxius autoextractius

Després dels fitxers RTF, el grup es va traslladar a arxius autoextractius (SFX) amb icones de documents habituals per confondre encara més l'usuari. Threatbook va escriure sobre això (enllaç en xinès). En iniciar-se, s'eliminen els fitxers RAR autoextractius i s'executen DLL amb una extensió .ocx, la càrrega útil final de les quals s'ha documentat prèviament. {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Des de mitjans de gener de 2019, OceanLotus ha estat reutilitzant aquesta tècnica, però canviant algunes configuracions al llarg del temps. En aquest apartat parlarem de la tècnica i dels canvis.

Creant un esquer

El document THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) es va trobar per primera vegada el 2018. Aquest fitxer SFX es va crear amb prudència - a la descripció (Informació de la versió) diu que aquesta és una imatge JPEG. L'script SFX té aquest aspecte:

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 9. Ordres SFX

El programari maliciós es restableix {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), així com una imatge 2018 thich thong lac.jpg.

La imatge de l'engany té aquest aspecte:

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 10. Imatge de señuelo

És possible que hàgiu notat que les dues primeres línies de l'script SFX criden dues vegades al fitxer OCX, però això no és un error.

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

El flux de control d'un fitxer OCX és molt similar a altres components d'OceanLotus: moltes seqüències d'ordres JZ/JNZ и PUSH/RET, alternant amb el codi d'escombraries.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 11. Codi ofuscat

Després de filtrar el codi brossa, exporteu-lo DllRegisterServer, va trucar regsvr32.exe, com segueix:

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 12. Codi bàsic de l'instal·lador

Bàsicament, a la primera convocatòria DllRegisterServer exportar conjunts de valor de registre HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model per al desplaçament xifrat a DLL (0x10001DE0).

Quan la funció es crida per segona vegada, llegeix el mateix valor i s'executa a aquesta adreça. A partir d'aquí es llegeixen i s'executen el recurs i moltes accions a la memòria RAM.

El codi de comandament és el mateix carregador de PE utilitzat a les campanyes anteriors d'OceanLotus. Es pot emular utilitzant el nostre guió. Al final es reinicia db293b825dcc419ba7dc2c49fa2757ee.dll, el carrega a la memòria i s'executa DllEntry.

La DLL extreu el contingut del seu recurs, el desxifra (AES-256-CBC) i el descomprimeix (LZMA). El recurs té un format específic que és fàcil de descompilar.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 13. Estructura de configuració de l'instal·lador (KaitaiStruct Visualizer)

La configuració s'especifica de manera explícita: depenent del nivell de privilegis, s'escriuran dades binàries %appdata%IntellogsBackgroundUploadTask.cpl o %windir%System32BackgroundUploadTask.cpl (O SysWOW64 per a sistemes de 64 bits).

Es garanteix una major persistència creant una tasca amb el nom BackgroundUploadTask[junk].jobOn [junk] representa un conjunt de bytes 0x9D и 0xA0.

Nom de l'aplicació de la tasca %windir%System32control.exe, i el valor del paràmetre és el camí al fitxer binari descarregat. La tasca oculta s'executa cada dia.

Estructuralment, un fitxer CPL és una DLL amb un nom intern ac8e06de0a6c4483af9837d96504127e.dll, que exporta una funció CPlApplet. Aquest fitxer desxifra el seu únic recurs {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, després carrega aquesta DLL i crida a la seva única exportació DllEntry.

Fitxer de configuració de la porta posterior

La configuració de la porta posterior està xifrada i incrustada als seus recursos. L'estructura del fitxer de configuració és molt semblant a l'anterior.

ESET: nous esquemes de lliurament de porta posterior per al grup cibernètic OceanLotus
Figura 14. Estructura de configuració de la porta posterior (KaitaiStruct Visualizer)

Tot i que l'estructura és similar, molts dels valors de camp s'han actualitzat dels que es mostren a el nostre vell informe.

El primer element de la matriu binària conté una DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identificat per Tencent. Però com que el nom d'exportació es va eliminar del binari, els hash no coincideixen.

Investigació addicional

Durant la recollida de mostres, vam observar algunes característiques. L'exemplar que s'acaba de descriure va aparèixer al voltant de juliol de 2018, i altres semblants van aparèixer tan recentment com a mitjans de gener fins a principis de febrer de 2019. L'arxiu SFX es va utilitzar com a vector d'infecció, deixant caure un document d'engany legítim i un fitxer OSX maliciós.

Tot i que OceanLotus utilitza marques de temps falses, hem observat que les marques de temps dels fitxers SFX i OCX són sempre les mateixes (0x57B0C36A (08/14/2016 a les 7:15 UTC) i 0x498BE80F (02/06/2009 a les 7:34 a.m. UTC) respectivament). Això probablement indica que els autors tenen algun tipus de "dissenyador" que utilitza les mateixes plantilles i simplement canvia algunes característiques.

Entre els documents que hem estudiat des de principis del 2018, hi ha diversos noms que indiquen els països d'interès per als atacants:

— La nova informació de contacte de Cambodia Media (New).xls.exe
— 李建香 (个人简历).exe (document pdf fals d'un currículum)
— comentaris, Ral·li als EUA del 28 al 29 de juliol de 2018.exe

Des que es va descobrir la porta del darrere {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll i la publicació de la seva anàlisi per part de diversos investigadors, vam observar alguns canvis en les dades de configuració de programari maliciós.

Primer, els autors van començar a eliminar noms de les DLL auxiliars (DNSprov.dll i dues versions HttpProv.dll). Aleshores, els operadors van deixar d'empaquetar la tercera DLL (la segona versió HttpProv.dll), escollint incrustar només un.

En segon lloc, es van canviar molts camps de configuració de la porta del darrere, probablement evadir la detecció a mesura que es van disposar molts IoC. Els camps importants modificats pels autors inclouen:

  • S'ha canviat la clau de registre d'AppX (vegeu IoC)
  • cadena de codificació mutex ("def", "abc", "ghi")
  • número de port

Finalment, totes les noves versions analitzades tenen nous C&C llistats a la secció IoCs.

Troballes

OceanLotus continua desenvolupant-se. El grup cibernètic està centrat a perfeccionar i ampliar les eines i els enganys. Els autors dissimulen les càrregues útils malicioses mitjançant documents que criden l'atenció el tema dels quals és rellevant per a les víctimes previstes. Desenvolupen nous esquemes i també utilitzen eines disponibles públicament, com ara l'explotació de l'Equation Editor. A més, estan millorant les eines per reduir el nombre d'artefactes que queden a les màquines de les víctimes, reduint així les possibilitats de detecció pel programari antivirus.

Indicadors de compromís

Hi ha disponibles indicadors de compromís, així com els atributs MITRE ATT&CK sobre Welivesecurity и a GitHub.

Font: www.habr.com

Afegeix comentari