OceanLotus: Pag-update sa malware alang sa macOS

Niadtong Marso 2019, usa ka bag-ong sample sa macOS malware gikan sa cyber nga grupo nga OceanLotus ang gi-upload sa VirusTotal, usa ka sikat nga online scanning nga serbisyo. Ang backdoor executable file adunay parehas nga kapabilidad sama sa miaging bersyon sa macOS malware nga among gitun-an, apan ang istruktura niini nausab ug kini nahimong mas lisud nga mahibal-an. Ikasubo, wala kami makit-an nga usa ka dropper nga adunay kalabotan sa kini nga sample, mao nga wala pa kami nahibal-an ang vector sa impeksyon.

Bag-o lang namo gimantala post bahin sa OceanLotus ug kung giunsa ang mga operator naningkamot sa paghatag pagpadayon, pagpadali sa pagpatuman sa code, ug pagminus sa footprint sa mga sistema sa Windows. Nahibal-an usab nga kini nga grupo sa cyber adunay bahin usab alang sa macOS. Ang kini nga post nagdetalye sa mga pagbag-o sa labing bag-ong bersyon sa malware alang sa macOS kung itandi sa miaging bersyon (gihulagway ni Trend Micro), ug naghulagway usab kung unsaon nimo pag-automate ang decryption sa mga string sa panahon sa pagtuki gamit ang IDA Hex-Rays API.

OceanLotus: Pag-update sa malware alang sa macOS

Анализ

Ang sunod nga tulo ka bahin naghulagway sa pagtuki sa usa ka sample nga adunay SHA-1 hash E615632C9998E4D3E5ACD8851864ED09B02C77D2. Ang file gitawag flashlight, ang ESET antivirus nga mga produkto nakamatikod niini isip OSX/OceanLotus.D.

Anti-debugging ug proteksyon sa sandbox

Sama sa tanan nga macOS OceanLotus binaries, ang sample giputos sa UPX, apan kadaghanan sa mga himan sa pag-ila sa packager wala makaila niini. Kini tingali tungod kay sila kasagaran adunay usa ka pirma nga nagsalig sa presensya sa "UPX" string, dugang pa, ang mga pirma sa Mach-O dili kaayo komon ug dili kanunay nga gi-update. Kini nga feature nagpalisod sa static detection. Makapainteres, pagkahuman sa pag-unpack, ang entry point naa sa sinugdanan sa seksyon __cfstring sa bahin .TEXT. Kini nga seksyon adunay mga hiyas sa bandila sama sa gipakita sa imahe sa ubos.

OceanLotus: Pag-update sa malware alang sa macOS
Figure 1. MACH-O __cfstring nga seksyon nga mga hiyas

Ingon sa gipakita sa Figure 2, ang mga lokasyon sa code sa seksyon __cfstring nagtugot kanimo sa paglimbong sa pipila ka mga himan sa pag-disassembly pinaagi sa pagpakita sa code isip mga string.

OceanLotus: Pag-update sa malware alang sa macOS
Figure 2. Ang backdoor code nga nakita sa IDA isip data

Sa higayon nga gipatuman, ang binary nagmugna og usa ka hilo isip usa ka anti-debugger kansang bugtong katuyoan mao ang padayon nga pagsusi sa presensya sa usa ka debugger. Alang niini nga dagan:

- Naningkamot sa pagtangtang sa bisan unsang debugger, pagtawag ptrace с PT_DENY_ATTACH isip usa ka parameter sa hangyo
- Pagsusi kung ang pipila ka eksklusibo nga mga pantalan bukas pinaagi sa pagtawag sa usa ka function task_get_exception_ports
- Pagsusi kon ang debugger konektado, sama sa gipakita sa hulagway sa ubos, pinaagi sa pagsusi sa presensya sa bandila P_TRACED sa kasamtangan nga proseso

OceanLotus: Pag-update sa malware alang sa macOS
Figure 3. Pagsusi sa koneksyon sa debugger gamit ang sysctl function

Kung ang tigbantay nakamatikod sa presensya sa usa ka debugger, ang function gitawag exit. Dugang pa, gisusi sa sample ang palibot pinaagi sa pagpadagan sa duha ka mga sugo:

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

Gisusi dayon sa sample ang kantidad sa pagbalik batok sa usa ka hard-coded nga lista sa mga string gikan sa nahibal-an nga mga sistema sa virtualization: acle, vmware, virtualbox o managsama. Sa katapusan, ang sunod nga command nagsusi kung ang makina usa sa mosunod nga "MBP", "MBA", "MB", "MM", "IM", "MP" ug "XS". Kini ang mga code sa modelo sa sistema, pananglitan, ang "MBP" nagpasabut nga MacBook Pro, "MBA" nagpasabut nga MacBook Air, ug uban pa.

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

Pangunang mga pagdugang

Samtang ang mga mando sa backdoor wala magbag-o sukad sa panukiduki sa Trend Micro, namatikdan namon ang pipila nga ubang mga pagbag-o. Ang mga server sa C&C nga gigamit sa kini nga sample medyo bag-o ug gihimo kaniadtong 22.10.2018/XNUMX/XNUMX.

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

Ang URL sa kapanguhaan nausab sa /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
Ang unang packet nga gipadala ngadto sa C&C server naglangkob sa dugang nga impormasyon mahitungod sa host machine, lakip ang tanang datos nga nakolekta sa mga command sa table sa ubos.

OceanLotus: Pag-update sa malware alang sa macOS

Dugang sa kini nga pagbag-o sa pag-configure, ang sample wala mogamit usa ka librarya alang sa pagsala sa network libcurl, apan usa ka eksternal nga librarya. Aron makit-an kini, ang backdoor mosulay sa pag-decrypt sa matag file sa kasamtangan nga direktoryo gamit ang AES-256-CBC nga adunay yawe gFjMXBgyXWULmVVVzyxy, giputos sa mga sero. Ang matag file gi-decrypted ug gitipigan isip /tmp/store, ug usa ka pagsulay sa pagkarga niini isip librarya gihimo gamit ang function dlopen. Kung ang usa ka pagsulay sa pag-decryption moresulta sa usa ka malampuson nga tawag dlopen, ang backdoor nagkuha sa mga gi-eksport nga mga gimbuhaton Boriry и ChadylonV, nga dayag nga responsable sa komunikasyon sa network sa server. Wala namo ang dropper o ubang mga file gikan sa orihinal nga lokasyon sa sample, mao nga dili namo ma-parse kini nga librarya. Dugang pa, tungod kay ang sangkap gi-encrypt, ang usa ka lagda sa YARA nga gibase sa kini nga mga kuwerdas dili motakdo sa file nga nakit-an sa disk.

Sama sa gihulagway sa ibabaw nga artikulo, kini nagmugna clientID. Kini nga ID mao ang MD5 hash sa pagbalik nga bili sa usa sa mosunod nga mga sugo:

- 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}' (kuhaa ang MAC address)
- wala mailhi nga grupo ("x1ex72x0a"), nga gigamit sa miaging mga sample

Sa wala pa ang pag-hash, usa ka "0" o "1" ang idugang sa pagbalik nga kantidad aron ipakita ang mga pribilehiyo sa gamut. Kini kliyenteID gitipigan sa /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, kung ang code gipadagan ingon gamut o sa ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML sa tanang ubang mga kaso. Ang file kasagarang gitago gamit ang function _chflags, ang timestamp niini giusab gamit ang command touch –t nga adunay random nga kantidad.

Pag-decode sa mga string

Sama sa nangaging mga kapilian, ang mga kuwerdas gi-encrypt gamit ang AES-256-CBC (hexadecimal key: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 giputos sa mga zero, ug IV nga puno sa mga zero) pinaagi sa function CCCrypt. Ang yawe nausab gikan sa nangaging mga bersyon, apan tungod kay ang grupo naggamit gihapon sa sama nga string encryption algorithm, decryption mahimong automated. Dugang pa niini nga post, nagpagawas kami og script sa IDA nga naggamit sa Hex-Rays API aron ma-decrypt ang mga string nga anaa sa binary file. Kini nga script mahimong makatabang sa umaabot nga pagtuki sa OceanLotus ug pagtuki sa kasamtangan nga mga sample nga wala pa namo makuha. Ang script gibase sa usa ka unibersal nga pamaagi sa pagdawat sa mga argumento nga gipasa sa usa ka function. Dugang pa, gipangita niini ang mga assignment sa parameter. Ang pamaagi mahimong magamit pag-usab aron makakuha usa ka lista sa mga argumento sa function ug dayon ipasa kini sa callback.

Nahibal-an ang function prototype pag-decrypt, makit-an sa script ang tanang cross-reference niini nga function, tanang argumento, dayon i-decrypt ang data ug ibutang ang plain text sulod sa comment sa cross-reference address. Aron ang script molihok sa husto, kini kinahanglan nga itakda sa naandan nga alpabeto nga gigamit sa base64 decoding function, ug ang usa ka global nga variable kinahanglan ipasabut nga adunay gitas-on sa yawe (sa kini nga kaso usa ka DWORD, tan-awa ang Figure 4).

OceanLotus: Pag-update sa malware alang sa macOS
Figure 4. Kahulugan sa global variable key_len

Sa window sa Function, mahimo nimong i-right-click ang function sa decryption ug i-klik ang "I-extract ug i-decrypt ang mga argumento." Kinahanglang ibutang sa script ang mga decrypted nga linya sa mga komento, sama sa gipakita sa Figure 5.

OceanLotus: Pag-update sa malware alang sa macOS
Figure 5. Ang decrypted nga teksto gibutang sa mga komento

Niining paagiha ang mga decrypted nga mga kuwerdas sayon ​​​​nga ibutang sa bintana sa IDA mga xref alang niini nga function sama sa gipakita sa Figure 6.

OceanLotus: Pag-update sa malware alang sa macOS
Figure 6. Xrefs sa f_decrypt function

Ang katapusan nga script makita sa Github pagtipig.

konklusyon

Sama sa nahisgutan na, ang OceanLotus kanunay nga nagpauswag ug nag-update sa toolkit niini. Niining higayona, gipauswag sa cyber nga grupo ang malware aron ma-target ang mga tiggamit sa Mac. Ang code wala kaayo nagbag-o, apan tungod kay daghang mga tiggamit sa Mac ang wala magtagad sa mga produkto sa seguridad, ang pagpanalipod sa malware gikan sa pagkakita usa ka ikaduha nga importansya.

Ang mga produkto sa ESET nakamatikod na niini nga file sa panahon sa panukiduki. Tungod kay ang librarya sa network nga gigamit alang sa komunikasyon sa C&C karon na-encrypt sa disk, ang eksaktong protocol sa network nga gigamit sa mga tig-atake wala pa mahibal-an.

Mga timailhan sa pagkompromiso

Ang mga timailhan sa pagkompromiso ingon man ang mga kinaiya sa MITRE ATT&CK anaa usab sa GitHub.

Source: www.habr.com

Idugang sa usa ka comment