OceanLotus: Nûvekirina malware ji bo macOS

Di Adara 2019-an de, nimûneyek nû ya malwareya macOS-ê ji koma sîber OceanLotus li VirusTotal, karûbarek serhêl a populer, hate barkirin. Pelê darvekirî yê paşverû xwedan heman kapasîteyên guhertoya berê ya malwareya macOS-ê ya ku me lêkolîn kir heye, lê strukturê wê guherî û dîtina wê dijwartir bûye. Mixabin, me nekaribû ku dilopek bi vê nimûneyê re têkildar bibînin, ji ber vê yekê em hîn vektora enfeksiyonê nizanin.

Me vê dawiyê weşand post li ser OceanLotus û çawa operator hewl didin ku domdariyê peyda bikin, pêkanîna kodê bilezînin, û şopa li ser pergalên Windows-ê kêm bikin. Her weha tê zanîn ku ev koma sîber ji bo macOS-ê jî pêkhateyek heye. Ev post bi hûrgulî guheztinên di guhertoya herî nû ya malware ji bo macOS-ê de li gorî guhertoya berê diyar dike (ji hêla Trend Micro ve hatî şirove kirin), û her weha diyar dike ku hûn çawa dikarin di dema analîzê de bi karanîna IDA Hex-Rays API-ê deşîfrekirina têlan otomatîk bikin.

OceanLotus: Nûvekirina malware ji bo macOS

Analysis

Sê beşên paşîn analîzkirina nimûneyek bi hashek SHA-1 vedibêjin E615632C9998E4D3E5ACD8851864ED09B02C77D2. Dosya tê gotin çira çira, Berhemên antîvîrûsên ESET wê wekî OSX/OceanLotus.D tespît dikin.

Parastina dijî-debugging û sandbox

Mîna hemî binareyên macOS OceanLotus, nimûne bi UPX-ê ve tête pak kirin, lê pir amûrên nasnameya pakker wê wekî wusa nas nakin. Ev dibe ku ji ber ku ew bi piranî îmzeyek bi hebûna rêzika "UPX" ve girêdayî ne, di heman demê de, îmzeyên Mach-O kêmtir gelemperî ne û bi gelemperî nayên nûve kirin. Ev taybetmendî tespîtkirina statîk zehmet dike. Balkêş e, piştî rakirinê, xala têketinê di destpêka beşê de ye __cfstring di beşê de .TEXT. Ev beş xwedî taybetmendiyên ala ye ku di wêneya jêrîn de têne xuyang kirin.

OceanLotus: Nûvekirina malware ji bo macOS
Wêne 1. Taybetmendiyên beşa MACH-O __cfstring

Wekî ku di Figure 2 de tê xuyang kirin, cîhên kodê di beşê de ne __cfstring destûrê dide te ku hûn bi nîşandana kodê wekî têlan hin amûrên veqetandinê bixapînin.

OceanLotus: Nûvekirina malware ji bo macOS
Wêne 2. Koda paşverû ya ku ji hêla IDA ve wekî dane tê dîtin

Piştî ku were darve kirin, binary têlekek wekî antî-debugger diafirîne ku yekane armanca wê ew e ku bi domdarî hebûna debugger kontrol bike. Ji bo vê herikînê:

- Hewl dide ku tu debugerê veke, bang dike ptrace с PT_DENY_ATTACH wekî pîvanek daxwazê
- Bi bangkirina fonksiyonek kontrol dike ka hin portên taybetî vekirî ne task_get_exception_ports
- Mîna ku di jimareya jêrîn de tê xuyang kirin, bi kontrolkirina hebûna ala ve dişoxilîne gelo debugger ve girêdayî ye P_TRACED di pêvajoya heyî de

OceanLotus: Nûvekirina malware ji bo macOS
Wêne 3. Kontrolkirina girêdana debuggerê bi karanîna fonksiyona sysctl

Ger nobedar hebûna debuggerê bibîne, fonksiyon tê gotin exit. Wekî din, nimûne dûv re bi du fermanan ve jîngehê kontrol dike:

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

Dûv re nimûne nirxa vegerê li hember navnîşek hişk-kodkirî ya rêzikên ji pergalên virtualîzasyona naskirî kontrol dike: acle, vmware, virtualbox an paralelî. Di dawiyê de, emrê paşîn kontrol dike ka makîne yek ji "MBP", "MBA", "MB", "MM", "IM", "MP" û "XS" e. Ev kodên modela pergalê ne, mînakî, "MBP" tê wateya MacBook Pro, "MBA" tê wateya MacBook Air, hwd.

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

Pêvekên sereke

Dema ku emrên paşverû ji lêkolîna Trend Micro neguherî ne, me çend guheztinên din dît. Pêşkêşkerên C&C yên ku di vê nimûneyê de têne bikar anîn pir nû ne û di 22.10.2018/XNUMX/XNUMX de hatine afirandin.

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

URL-ya çavkaniyê guhertiye /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
Yekem pakêta ku ji servera C&C re hatî şandin di derbarê makîneya mêvandar de bêtir agahdarî vedihewîne, tevî hemî daneyên ku ji hêla emrên di tabloya jêrîn de hatine berhev kirin.

OceanLotus: Nûvekirina malware ji bo macOS

Ji bilî vê guherîna veavakirinê, nimûne pirtûkxaneyek ji bo fîlterkirina torê bikar nayîne libcurl, lê pirtûkxaneyek derveyî. Ji bo dîtina wê, paşîn hewl dide ku her pelê di pelrêça heyî de bi karanîna AES-256-CBC bi mifteyê veşêre. gFjMXBgyXWULmVVVzyxy, bi sifiran hatiye pêçan. Her pel tê deşîfrekirin û wekî tomarkirin /tmp/store, û hewlek ji bo barkirina wê wekî pirtûkxane bi karanîna fonksiyonê tê çêkirin dlopen. Dema ku hewldanek deşîfrekirinê di bangek serketî de encam dide dlopen, paşîn fonksiyonên îxrackirî derdixe Boriry и ChadylonV, ku eşkere berpirsiyariya ragihandina torê ya bi serverê re ne. Dropper an pelên din ên ji cîhê orîjînal ên nimûneyê di destê me de nînin, ji ber vê yekê em nikarin vê pirtûkxaneyê parsek bikin. Digel vê yekê, ji ber ku pêkhatek şîfrekirî ye, qaîdeyek YARA ku li ser van rêzan hatî damezrandin dê bi pelê ku li ser dîskê tê dîtin re hevûdu neke.

Wekî ku di gotara jorîn de hate diyarkirin, ew diafirîne muwekîlê ID. Ev ID hash MD5 ya nirxa vegerê ya yek ji fermanên jêrîn e:

- 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}' (navnîşana MAC-ê bistînin)
- tîma nenas ("x1ex72x0a"), ku di nimûneyên berê de tê bikaranîn

Berî hashkirinê, "0" an "1" li nirxa vegerê tê zêdekirin da ku mafên root destnîşan bike. Ev muwekîlê ID de hilanîn /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, heke kod di hemî rewşên din de wekî root an di ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML de were xebitandin. Pelê bi gelemperî bi karanîna fonksiyonê veşartî ye _chflags, dema wê bi karanîna fermanê tê guhertin touch –t bi nirxek random.

Têlên deşîfrekirin

Mîna vebijarkên berê, rêzikên bi karanîna AES-256-CBC têne şîfre kirin (bişkojka hexadecimal: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 bi sifiran tê pêçan, û IV bi sifiran tê dagirtin) bi fonksiyonê CCCrypt. Mift ji guhertoyên berê guherî, lê ji ber ku kom hîn jî heman algorîtmaya şîfrekirina rêzê bikar tîne, deşîfrekirin dikare bixweber bibe. Digel vê postê, em skrîptek IDA-ya ku Hex-Rays API-yê bikar tîne ji bo deşîfrekirina rêzikên di pelê binaryê de heye derdixin. Dibe ku ev skrîpt ji bo analîza pêşerojê ya OceanLotus û analîzkirina nimûneyên heyî yên ku me hîn nekariye bi dest bixin re bibe alîkar. Skrîpt ji bo wergirtina argûmanên ku ji fonksiyonek re derbas dibin li ser rêbazek gerdûnî ye. Wekî din, ew peywirên parametreyê dinihêre. Rêbaz dikare ji nû ve were bikar anîn da ku navnîşek argumanên fonksiyonê bigire û dûv re wê ji vegerê re derbas bike.

Naskirina prototîpa fonksiyonê şîfre kirin, skrîpt hemî referansên xaçê ji bo vê fonksiyonê, hemî argumanan dibîne, dûv re daneyan deşîfre dike û nivîsa sade di hundurê şîroveyek de li navnîşana xaça referansê bi cîh dike. Ji bo ku skrîpt rast bixebite, divê ew li ser alfabeya xwerû ya ku ji hêla fonksiyona deşîfrekirina base64 ve tê bikar anîn were saz kirin, û guhêrbarek gerdûnî ya ku dirêjahiya mifteyê vedihewîne were destnîşan kirin (di vê rewşê de DWORD, li Figure 4 binêre).

OceanLotus: Nûvekirina malware ji bo macOS
Wêne 4. Pênaseya guherbara gerdûnî ya key_len

Di pencereya Fonksiyonê de, hûn dikarin fonksiyona deşîfrekirinê rast-klîk bikin û "Argumanan derxe û veşêre" bikirtînin. Pêdivî ye ku skrîpt xêzên deşîfrekirî di şîroveyan de bi cîh bike, wekî ku di Xiflteya 5 de tê xuyang kirin.

OceanLotus: Nûvekirina malware ji bo macOS
Wêne 5. Nivîsa deşîfrekirî di nav şîroveyan de cih digire

Bi vî rengî rêzikên deşîfrekirî bi hêsanî di pencereya IDA de têne danîn xrefs ji bo vê fonksiyonê wekî ku di jimar 6 de tê xuyang kirin.

OceanLotus: Nûvekirina malware ji bo macOS
Wêne 6. Xrefs ji bo f_decrypt function

Skrîpta dawî dikare li vir were dîtin Pelê Github.

encamê

Wekî ku berê jî behs kir, OceanLotus bi domdarî amûra xwe baştir dike û nûve dike. Vê carê, koma sîber malware çêtir kir ku bi bikarhênerên Mac re bixebite. Kod pir neguheriye, lê ji ber ku gelek bikarhênerên Mac hilberên ewlehiyê paşguh dikin, parastina malware ji tespîtê girîngiyek duyemîn e.

Berhemên ESET di dema lêkolînê de berê vê pelê tespît dikirin. Ji ber ku pirtûkxaneya torê ya ku ji bo ragihandina C&C tê bikar anîn niha li ser dîskê hatî şîfrekirin, protokola torê ya rastîn a ku ji hêla êrîşkaran ve hatî bikar anîn hîn nayê zanîn.

nîşaneyên lihevhatinê

Nîşaneyên lihevhatinê û her weha taybetmendiyên MITER ATT&CK jî li ser hene GitHub.

Source: www.habr.com

Add a comment