En marto 2019, nova specimeno de macOS malware de la cibergrupo OceanLotus estis alŝutita al VirusTotal, populara interreta skana servo. La plenumebla dosiero malantaŭporda havas la samajn kapablojn kiel la antaŭa versio de la macOS-malware, kiun ni studis, sed ĝia strukturo ŝanĝiĝis kaj ĝi fariĝis pli malfacile detektebla. Bedaŭrinde, ni ne povis trovi guton asociitan kun ĉi tiu specimeno, do ni ankoraŭ ne konas la infektan vektoron.
Ni ĵus publikigis
Анализ
La sekvaj tri partoj priskribas la analizon de specimeno kun SHA-1 hash E615632C9998E4D3E5ACD8851864ED09B02C77D2
. La dosiero estas nomita poŝlampo, ESET-antivirusaj produktoj detektas ĝin kiel OSX/OceanLotus.D.
Kontraŭ-sencimiga kaj sablokesto-protekto
Kiel ĉiuj macOS OceanLotus binaroj, la specimeno estas pakita kun UPX, sed la plej multaj pakaĵidentigiloj ne rekonas ĝin kiel tia. Ĉi tio verŝajne estas ĉar ili plejparte enhavas subskribon dependantan de la ĉeesto de la "UPX" ĉeno, krome, Mach-O-subskriboj estas malpli oftaj kaj ne estas ĝisdatigitaj tiel ofte. Ĉi tiu funkcio malfaciligas senmovan detekton. Kurioze, post malpakado, la enirpunkto estas komence de la sekcio __cfstring
en la segmento .TEXT
. Ĉi tiu sekcio havas flagajn atributojn kiel montrite en la bildo sube.
Figuro 1. MACH-O __cfstring-sekciaj atributoj
Kiel montrite en Figuro 2, la kodaj lokoj en la sekcio __cfstring
permesas vin trompi iujn malmuntajn ilojn per montrado de kodo kiel ŝnuroj.
Figuro 2. Malantaŭa kodo detektita de IDA kiel datumoj
Post kiam ekzekutita, la binaro kreas fadenon kiel kontraŭ-eraĉilo, kies sola celo estas kontinue kontroli la ĉeeston de erarserĉilo. Por ĉi tiu fluo:
— Provas malkroĉi ajnan erarserĉilon, vokante ptrace
с PT_DENY_ATTACH
kiel peta parametro
- Kontrolas ĉu iuj ekskluzivaj havenoj estas malfermitaj per vokado de funkcio task_get_exception_ports
- Kontrolas ĉu la erarserĉilo estas konektita, kiel montrite en la suba figuro, kontrolante la ĉeeston de la flago P_TRACED
en la nuna procezo
Figuro 3. Kontrolo de la erarĉimilo-konekto uzante la sysctl-funkcion
Se la gardohundo detektas la ĉeeston de erarserĉilo, la funkcio estas vokita exit
. Aldone, la specimeno tiam kontrolas la medion rulante du komandojn:
ioreg -l | grep -e "Manufacturer" и sysctl hw.model
La provaĵo tiam kontrolas la revenvaloron kontraŭ malmola kodita listo de ŝnuroj de konataj virtualigsistemoj: aklo, vmware, virtualabulo aŭ paraleloj. Fine, la sekva komando kontrolas ĉu la maŝino estas unu el la jenaj "MBP", "MBA", "MB", "MM", "IM", "MP" kaj "XS". Ĉi tiuj estas sistemaj modelkodoj, ekzemple, "MBP" signifas MacBook Pro, "MBA" signifas MacBook Air, ktp.
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}
Ĉefaj aldonoj
Kvankam la malantaŭpordaj komandoj ne ŝanĝiĝis post la esplorado de Trend Micro, ni rimarkis kelkajn aliajn modifojn. La C&C-serviloj uzataj en ĉi tiu specimeno estas sufiĉe novaj kaj estis kreitaj la 22.10.2018/XNUMX/XNUMX.
- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com
La URL de la rimedo ŝanĝiĝis al /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35
.
La unua pako sendita al la C&C-servilo enhavas pli da informoj pri la gastiga maŝino, inkluzive de ĉiuj datumoj kolektitaj de la komandoj en la suba tabelo.
Krom ĉi tiu agorda ŝanĝo, la specimeno ne uzas bibliotekon por retfiltrado gFjMXBgyXWULmVVVzyxy
, plenigita per nuloj. Ĉiu dosiero estas deĉifrita kaj konservita kiel /tmp/store
, kaj provo ŝargi ĝin kiel biblioteko estas farita uzante la funkcion dlopen
, la malantaŭa pordo ĉerpas eksportitajn funkciojn Boriry
и ChadylonV
, kiuj ŝajne respondecas pri retkomunikado kun la servilo. Ni ne havas la guton aŭ aliajn dosierojn el la origina loko de la specimeno, do ni ne povas analizi ĉi tiun bibliotekon. Krome, ĉar la komponanto estas ĉifrita, YARA-regulo bazita sur ĉi tiuj ŝnuroj ne kongruos kun la dosiero trovita sur disko.
Kiel priskribite en la supra artikolo, ĝi kreas klientoID. Ĉi tiu ID estas la MD5 hash de la revena valoro de unu el la sekvaj komandoj:
- 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}'
(ricevu MAC-adreson)
- nekonata teamo ("x1ex72x0a
"), kiu estas uzata en antaŭaj specimenoj
Antaŭ hashing, "0" aŭ "1" estas aldonita al la revenvaloro por indiki radikajn privilegiojn. Ĉi tio klientoID stokita en /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex
, se la kodo estas rulita kiel radiko aŭ en ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML en ĉiuj aliaj kazoj. La dosiero estas kutime kaŝita uzante la funkcion touch –t
kun hazarda valoro.
Malkodado de ŝnuroj
Kiel ĉe antaŭaj opcioj, la ĉenoj estas ĉifritaj per AES-256-CBC (deksesuma ŝlosilo: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92
plenigita kun nuloj, kaj IV plenigita per nuloj) tra la funkcio
Konante la funkciprototipon malĉifri, la skripto trovas ĉiujn krucreferencojn al ĉi tiu funkcio, ĉiujn argumentojn, tiam deĉifras la datumojn kaj metas klartekston ene de komento ĉe la krucreferenca adreso. Por ke la skripto funkciu ĝuste, ĝi devas esti agordita al la kutima alfabeto uzata de la malkoda funkcio baza64, kaj tutmonda variablo devas esti difinita enhavanta la longon de la ŝlosilo (ĉi-kaze DWORD, vidu Figuro 4).
Figuro 4. Difino de la tutmonda variablo key_len
En la Funkcia fenestro, vi povas dekstre alklaki la deĉifradan funkcion kaj alklaki "Eltiri kaj malĉifri argumentojn." La skripto devus meti la deĉifritajn liniojn en komentojn, kiel montrite en Figuro 5.
Figuro 5. La malĉifrita teksto estas metita en la komentojn
Tiel la deĉifritaj ŝnuroj estas oportune kunmetitaj en la IDA fenestro ksrefs por ĉi tiu funkcio kiel montrite en Figuro 6.
Figuro 6. Xrefs al f_decrypt funkcio
La fina skripto troveblas ĉe
konkludo
Kiel jam menciite, OceanLotus konstante plibonigas kaj ĝisdatigas sian ilaron. Ĉi-foje, la cibergrupo plibonigis la malware por labori kun Mac-uzantoj. La kodo ne multe ŝanĝiĝis, sed ĉar multaj Mac-uzantoj ignoras sekurecajn produktojn, protekti malbonware kontraŭ detekto estas de duaranga graveco.
ESET-produktoj jam detektis ĉi tiun dosieron dum la esploro. Ĉar la retbiblioteko uzata por C&C komunikado nun estas ĉifrita sur disko, la preciza retprotokolo uzata de la atakantoj ankoraŭ ne estas konata.
Indikiloj de kompromiso
Indikiloj de kompromiso same kiel MITRE ATT&CK-atributoj estas ankaŭ haveblaj sur
fonto: www.habr.com