OceanLotus: macOSentzako malware eguneratzea

2019ko martxoan, OceanLotus ziber taldeko macOS malware lagin berri bat VirusTotal-era kargatu zen, lineako eskaneaketa zerbitzu ezagun batean. Backdoor fitxategi exekutagarriak aztertu genuen macOS malwarearen aurreko bertsioaren gaitasun berberak ditu, baina bere egitura aldatu egin da eta detektatzeko zailagoa bihurtu da. Zoritxarrez, ezin izan dugu lagin honekin lotutako tantarik aurkitu, beraz, oraindik ez dugu ezagutzen infekzio-bektorea.

Duela gutxi argitaratu dugu OceanLotus-i buruzko argitalpena eta nola operadoreak iraunkortasuna ematen, kodearen exekuzioa bizkortzen eta Windows sistemetan aztarna gutxitzen saiatzen ari diren. Jakina da ziber talde honek macOSentzako osagai bat ere baduela. Argitalpen honek macOSerako malwarearen bertsio berrienean izandako aldaketak zehazten ditu aurreko bertsioarekin alderatuta (Trend Micro-k deskribatzen du), eta IDA Hex-Rays APIa erabiliz kateen deszifratzea nola automatiza dezakezun deskribatzen du analisian zehar.

OceanLotus: macOSentzako malware eguneratzea

Analisia

Hurrengo hiru zatiek SHA-1 hash batekin lagin baten analisia deskribatzen dute E615632C9998E4D3E5ACD8851864ED09B02C77D2. Fitxategia deitzen da linternaz, ESET antibirus produktuek OSX/OceanLotus.D gisa detektatzen dute.

Arazketaren aurkako eta sandbox babesa

MacOS OceanLotus bitar guztiak bezala, lagina UPX-rekin paketatuta dago, baina paketatzaileen identifikazio-tresna gehienek ez dute horrela ezagutzen. Hau da ziurrenik "UPX" katearen presentziaren menpeko sinadura bat dutelako, gainera, Mach-O sinadurak ez dira hain ohikoak eta ez dira maiz eguneratzen. Ezaugarri honek detekzio estatikoa zailtzen du. Interesgarria da, deskargatu ondoren, sarrera-puntua atalaren hasieran dago __cfstring segmentuan .TEXT. Atal honek bandera-atributuak ditu beheko irudian erakusten den moduan.

OceanLotus: macOSentzako malware eguneratzea
1. irudia. MACH-O __cfstring atalaren atributuak

2. irudian ikusten den bezala, ataleko kode-kokapenak __cfstring desmuntatzeko tresna batzuk engainatzeko aukera ematen du kodea kate gisa erakutsiz.

OceanLotus: macOSentzako malware eguneratzea
2. irudia. IDAk datu gisa detektatu duen atzeko atearen kodea

Behin exekutatuta, bitarrak hari bat sortzen du araztearen aurkako arazte gisa eta helburu bakarra arazte baten presentzia etengabe egiaztatzea den. Fluxu honetarako:

— Edozein araztaile kentzen saiatzen da, deituz ptrace с PT_DENY_ATTACH eskaera-parametro gisa
- Funtzio bati deituz ataka esklusibo batzuk irekita dauden egiaztatzen du task_get_exception_ports
- Arazgailua konektatuta dagoen egiaztatzen du, beheko irudian ikusten den moduan, banderaren presentzia egiaztatuz P_TRACED egungo prozesuan

OceanLotus: macOSentzako malware eguneratzea
3. Irudia. Araztearen konexioa egiaztatzea sysctl funtzioa erabiliz

Watchdog-ak arazte baten presentzia detektatzen badu, funtzioari deitzen zaio exit. Gainera, laginak ingurunea egiaztatzen du bi komando exekutatuz:

ioreg -l | grep -e "Manufacturer" и sysctl hw.model

Ondoren, laginak itzulera-balioa birtualizazio-sistema ezagunetako kate zerrenda gogor kode batekin egiaztatzen du: akle, vmware, VirtualBox edo paralelismo. Azkenik, hurrengo komandoak makina "MBP", "MBA", "MB", "MM", "IM", "MP" eta "XS" hauetako bat den egiaztatzen du. Hauek sistema-ereduen kodeak dira, adibidez, "MBP" MacBook Pro esan nahi du, "MBA" MacBook Air esan nahi du, etab.

system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}

Gehigarri nagusiak

Trend Micro-ren ikerketatik atzeko atzeko komandoak aldatu ez diren arren, beste aldaketa batzuk nabaritu genituen. Lagin honetan erabilitako C&C zerbitzariak nahiko berriak dira eta 22.10.2018/XNUMX/XNUMXan sortu ziren.

- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com

Baliabidearen URLa hona aldatu da /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
C&C zerbitzariari bidalitako lehen paketeak ostalari makinari buruzko informazio gehiago dauka, beheko taulako komandoek bildutako datu guztiak barne.

OceanLotus: macOSentzako malware eguneratzea

Konfigurazio aldaketa honetaz gain, laginak ez du liburutegirik erabiltzen sareko iragazketarako libcurl, baina kanpoko liburutegia. Hori aurkitzeko, atzeko atea uneko direktorioko fitxategi guztiak deszifratzen saiatzen da AES-256-CBC gakoarekin erabiliz. gFjMXBgyXWULmVVVzyxy, zeroz beteta. Fitxategi bakoitza deszifratu eta honela gordetzen da /tmp/store, eta liburutegi gisa kargatzeko saiakera egiten da funtzioa erabiliz dlopen. Deszifratze saiakera batek deia arrakastatsua lortzen duenean dlopen, atzeko ateak esportatutako funtzioak ateratzen ditu Boriry и ChadylonV, itxuraz zerbitzariarekin sareko komunikazioaz arduratzen direnak. Ez dugu tantarik edo laginaren jatorrizko kokapeneko beste fitxategirik, beraz, ezin dugu liburutegi hau analizatu. Gainera, osagaia zifratuta dagoenez, kate horietan oinarritutako YARA arau bat ez da diskoan aurkitutako fitxategiarekin bat egingo.

Goiko artikuluan azaltzen den bezala, sortzen du bezeroaren ID. ID hau komando hauetako baten itzuleraren balioaren MD5 hash da:

- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { split($0, line, """); printf("%s", line[4]); }'
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, """); printf("%s", line[4]); }'
- ifconfig en0 | awk '/ether /{print $2}' (lortu MAC helbidea)
- talde ezezaguna ("x1ex72x0a"), aurreko laginetan erabiltzen dena

Hashing aurretik, "0" edo "1" bat gehitzen zaio itzulera-balioari erro-pribilegioak adierazteko. Hau bezero-ID barruan gordeta /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, kodea root gisa exekutatzen bada edo ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML-en gainerako kasuetan. Fitxategia funtzioa erabiliz ezkutatu ohi da _chflags, bere denbora-zigilua komandoa erabiliz aldatzen da touch –t ausazko balio batekin.

Kateak deskodetzea

Aurreko aukeretan bezala, kateak AES-256-CBC (gako hamaseitarra) erabiliz enkriptatzen dira: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 zeroz beteta, eta IV zeroz beteta) funtzioaren bidez CCCrypt. Gakoa aurreko bertsioetatik aldatu da, baina taldeak oraindik kateen enkriptatzeko algoritmo bera erabiltzen duenez, deszifratzea automatizatu daiteke. Argitalpen honetaz gain, Hex-Rays APIa erabiltzen duen IDA script bat kaleratzen ari gara bitar fitxategian dauden kateak deszifratzeko. Script honek OceanLotus-en etorkizunean aztertzen eta oraindik lortu ezin izan ditugun laginak aztertzen lagun dezake. Scripta funtzio bati emandako argumentuak jasotzeko metodo unibertsal batean oinarritzen da. Gainera, parametro-esleipenak bilatzen ditu. Metodoa berrerabil daiteke funtzioen argumentuen zerrenda bat lortzeko eta, ondoren, dei-itzulera pasatzeko.

Funtzioaren prototipoa ezagutzea desenkriptatu, scriptak funtzio honen erreferentzia gurutzatuak aurkitzen ditu, argumentu guztiak, gero datuak deszifratzen ditu eta testu arrunta iruzkin baten barruan jartzen du erreferentzia gurutzatuaren helbidean. Scriptak behar bezala funtziona dezan, base64 deskodetze funtzioak erabiltzen duen alfabeto pertsonalizatua ezarri behar da, eta gakoaren luzera duen aldagai global bat definitu behar da (kasu honetan DWORD bat, ikus 4. irudia).

OceanLotus: macOSentzako malware eguneratzea
4. Irudia. Aldagai globalaren definizioa key_len

Funtzioa leihoan, egin klik eskuineko botoiarekin deszifratzeko funtzioan eta egin klik "Atera eta deszifratu argumentuak". Scriptak deszifratutako lerroak iruzkinetan jarri behar ditu, 5. irudian ikusten den moduan.

OceanLotus: macOSentzako malware eguneratzea
5. Irudia. Deszifratutako testua iruzkinetan jartzen da

Modu honetan, deszifratutako kateak eroso jartzen dira elkarrekin IDA leihoan xerreferentziak 6. irudian ikusten den funtzio honetarako.

OceanLotus: macOSentzako malware eguneratzea
6. Irudia. f_decrypt funtziorako xrefs

Azken gidoia helbidean aurki daiteke Github biltegian.

Irteera

Esan bezala, OceanLotus etengabe hobetzen eta eguneratzen ari da bere tresneria. Oraingoan, ziber-taldeak malwarea hobetu du Mac erabiltzaileekin lan egiteko. Kodea ez da asko aldatu, baina Mac erabiltzaile askok segurtasun produktuak alde batera uzten dituztenez, malwarea detektatzeko babesa bigarren mailako garrantzia du.

ESET produktuak fitxategi hau detektatzen ari ziren ikerketaren unean. C&C komunikaziorako erabiltzen den sare-liburutegia diskoan zifratuta dagoenez, oraindik ez da ezagutzen erasotzaileek erabilitako sare-protokolo zehatza.

Konpromisoaren adierazleak

Konpromisoaren adierazleak eta MITRE ATT&CK atributuak ere eskuragarri daude GitHub.

Iturria: www.habr.com

Gehitu iruzkin berria