OceanLotus: Malware-fernijing foar macOS

Yn maart 2019 waard in nije stekproef fan macOS-malware fan 'e cybergroep OceanLotus uploaded nei VirusTotal, in populêre online skennentsjinst. It útfierbere efterdoarbestân hat deselde mooglikheden as de foarige ferzje fan 'e macOS-malware dy't wy studearre, mar de struktuer is feroare en it is dreger wurden om te ûntdekken. Spitigernôch koene wy ​​gjin dropper fine dy't ferbûn is mei dit stekproef, dus wy kenne de ynfeksjevektor noch net.

We koartlyn publisearre post oer OceanLotus en hoe't operators besykje persistinsje te leverjen, koade-útfiering te fersnellen en fuotôfdruk op Windows-systemen te minimalisearjen. It is ek bekend dat dizze cybergroep ek in komponint hat foar macOS. Dizze post beskriuwt de wizigingen yn 'e nijste ferzje fan' e malware foar macOS yn ferliking mei de foarige ferzje (beskreaun troch Trend Micro), en beskriuwt ek hoe't jo de dekodearring fan snaren kinne automatisearje by analyse mei de IDA Hex-Rays API.

OceanLotus: Malware-fernijing foar macOS

Analysis

De folgjende trije dielen beskriuwe de analyze fan in stekproef mei in SHA-1 hash E615632C9998E4D3E5ACD8851864ED09B02C77D2. De triem wurdt neamd zaklamp, ESET antivirus produkten detect it as OSX/OceanLotus.D.

Anti-debuggen en sânbakbeskerming

Lykas alle macOS OceanLotus binaries, is de stekproef ferpakt mei UPX, mar de measte ark foar identifikaasje fan pakketten werkenne it net as sadanich. Dit is wierskynlik om't se meast in hantekening befetsje dy't ôfhinklik is fan 'e oanwêzigens fan' e "UPX" tekenrige, boppedat binne Mach-O-hantekeningen minder gewoan en wurde net sa faak bywurke. Dizze funksje makket statyske deteksje lestich. Nijsgjirrich, nei it útpakke, is it yngongspunt oan it begjin fan 'e seksje __cfstring yn it segment .TEXT. Dizze seksje hat flagge-attributen lykas werjûn yn 'e ôfbylding hjirûnder.

OceanLotus: Malware-fernijing foar macOS
figuer 1. MACH-O __cfstring seksje attributen

Lykas werjûn yn figuer 2, de koade lokaasjes yn de seksje __cfstring kinne jo in trick guon disassembly ark troch werjaan fan koade as snaren.

OceanLotus: Malware-fernijing foar macOS
figuer 2. Backdoor koade ûntdutsen troch IDA as gegevens

Ien kear útfierd, makket de binêre in thread as in anty-debugger waans ienige doel is om kontinu te kontrolearjen op de oanwêzigens fan in debugger. Foar dizze stream:

- Besiket elke debugger los te meitsjen, ropt ptrace с PT_DENY_ATTACH as in fersyk parameter
- Kontrolearret as guon eksklusive havens iepen binne troch in funksje op te roppen task_get_exception_ports
- Kontrolearret as de debugger ferbûn is, lykas werjûn yn 'e ôfbylding hjirûnder, troch de oanwêzigens fan' e flagge te kontrolearjen P_TRACED yn it hjoeddeiske proses

OceanLotus: Malware-fernijing foar macOS
figuer 3. Kontrolearje de debugger ferbining mei help fan de sysctl funksje

As de wachthûn de oanwêzigens fan in debugger ûntdekt, wurdt de funksje neamd exit. Derneist kontroleart de stekproef dan de omjouwing troch twa kommando's út te fieren:

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

De stekproef kontrolearret dan de weromwearde tsjin in hurd-kodearre list mei stringen fan bekende virtualisaasjesystemen: acle, vmware, virtualbox of parallellen. Uteinlik kontrolearret it folgjende kommando as de masine ien fan 'e folgjende "MBP", "MBA", "MB", "MM", "IM", "MP" en "XS" is. Dit binne systeemmodelkoades, bygelyks "MBP" betsjut MacBook Pro, "MBA" betsjut MacBook Air, ensfh.

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

Grutte tafoegings

Wylst de efterdoar-kommando's net binne feroare sûnt it ûndersyk fan Trend Micro, hawwe wy in pear oare wizigingen opmurken. De C&C-tsjinners brûkt yn dit stekproef binne frij nij en waarden makke op 22.10.2018/XNUMX/XNUMX.

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

De boarne URL is feroare yn /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
It earste pakket stjoerd nei de C&C-tsjinner befettet mear ynformaasje oer de hostmasine, ynklusyf alle gegevens sammele troch de kommando's yn 'e tabel hjirûnder.

OceanLotus: Malware-fernijing foar macOS

Neist dizze konfiguraasjeferoaring brûkt de stekproef gjin bibleteek foar netwurkfiltering libcurl, mar in eksterne bibleteek. Om it te finen, besiket de efterdoar elk bestân yn 'e hjoeddeistige map te ûntsiferje mei AES-256-CBC mei de kaai gFjMXBgyXWULmVVVzyxy, opknapt mei nullen. Elk bestân wurdt ûntsifere en bewarre as /tmp/store, en in besykjen om it as biblioteek te laden wurdt makke mei de funksje dlopen. As in ûntsiferingspoging resultearret yn in suksesfolle oprop dlopen, de efterdoar ekstrakt eksportearre funksjes Boriry и ChadylonV, dy't blykber ferantwurdlik binne foar netwurkkommunikaasje mei de tsjinner. Wy hawwe net de dropper of oare bestannen fan 'e oarspronklike lokaasje fan' e stekproef, dus wy kinne dizze bibleteek net parse. Boppedat, om't de komponint fersifere is, sil in YARA-regel basearre op dizze snaren net oerienkomme mei it bestân fûn op skiif.

Lykas beskreaun yn it boppesteande artikel, it skept clientID. Dizze ID is de MD5-hash fan 'e weromkommende wearde fan ien fan' e folgjende kommando's:

- 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}' (krije MAC-adres)
- ûnbekend team ("x1ex72x0a"), dat wurdt brûkt yn eardere samples

Foar it hasjen wurdt in "0" of "1" tafoege oan de weromwearde om root-privileezjes oan te jaan. Dit clientID opslein yn /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, as de koade wurdt útfierd as root of yn ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML yn alle oare gefallen. It bestân wurdt normaal ferburgen mei de funksje _chflags, syn tiidstempel wurdt feroare mei it kommando touch –t mei in willekeurige wearde.

Dekodearjen fan snaren

Lykas by foarige opsjes wurde de stringen fersifere mei AES-256-CBC (hexadesimale kaai: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 padded mei nullen, en IV fol mei nullen) troch de funksje CCCrypt. De kaai is feroare fan eardere ferzjes, mar sûnt de groep noch brûkt deselde string fersifering algoritme, dekodearring kin wurde automatisearre. Neist dit berjocht jouwe wy in IDA-skript frij dat de Hex-Rays API brûkt om de stringen oanwêzich yn it binêre bestân te ûntsiferjen. Dit skript kin helpe by takomstige analyze fan OceanLotus en analyze fan besteande samples dy't wy noch net kinne krije. It skript is basearre op in universele metoade foar it ûntfangen fan arguminten trochjûn oan in funksje. Derneist siket it parameteropdrachten op. De metoade kin op 'e nij brûkt wurde om in list mei funksje-arguminten te krijen en it dan troch te jaan oan de weromrop.

It kennen fan de funksje prototype ûntsiferje, it skript fynt alle krúsferwizings nei dizze funksje, alle arguminten, ûntsiferet dan de gegevens en pleatst platte tekst yn in opmerking op it krúsferwizingsadres. Foar it skript om goed te wurkjen, moat it ynsteld wurde op it oanpaste alfabet dat brûkt wurdt troch de base64-dekodearringfunksje, en in globale fariabele moat wurde definieare mei de lingte fan 'e kaai (yn dit gefal in DWORD, sjoch figuer 4).

OceanLotus: Malware-fernijing foar macOS
figuer 4. Definysje fan de globale fariabele key_len

Yn it Funksje-finster kinne jo mei de rjochter klikke op de ûntsiferfunksje en klikje op "Arguminten útpakke en ûntsiferje." It skript moat de dekodearre rigels yn opmerkings pleatse, lykas werjûn yn figuer 5.

OceanLotus: Malware-fernijing foar macOS
Figure 5. De dekodearre tekst wurdt pleatst yn de kommentaren

Op dizze manier wurde de dekodearre snaren maklik byinoar pleatst yn it IDA-finster xrefs foar dizze funksje lykas werjûn yn figuer 6.

OceanLotus: Malware-fernijing foar macOS
figuer 6. Xrefs to f_decrypt funksje

It definitive skript is te finen op Github repository.

konklúzje

Lykas al neamd, wurdt OceanLotus syn toolkit konstant ferbettere en bywurke. Dizze kear hat de cybergroep de malware ferbettere om te wurkjen mei Mac-brûkers. De koade is net folle feroare, mar om't in protte Mac-brûkers befeiligingsprodukten negearje, is it beskermjen fan malware tsjin deteksje fan sekundêr belang.

ESET-produkten fûnen dit bestân al op it momint fan ûndersyk. Om't de netwurkbibleteek dy't brûkt wurdt foar C&C-kommunikaasje no fersifere is op skiif, is it krekte netwurkprotokol brûkt troch de oanfallers noch net bekend.

Yndikatoaren fan kompromis

Yndikatoaren fan kompromis likegoed as MITER ATT & CK attributen binne ek beskikber op GitHub.

Boarne: www.habr.com

Add a comment