OceanLotus: posodobitev zlonamerne programske opreme za macOS

V marcu 2019 bol na VirusTotal, populárnej online službe pre skenovanie, nahratý nový vzor malvéru pre macOS od kybernetickej skupiny OceanLotus. Spúšťací súbor zadného otvoru má rovnaké schopnosti ako predchádzajúca verzia malvéru pre macOS, ktorú sme skúmali, ale jeho štruktúra sa zmenila a je ťažšie ho odhaliť. Bohužiaľ, zatiaľ sme nedokázali nájsť dropper súvisiaci s týmto vzorom, takže zatiaľ nevieme, aký je vektor nákazy.

Nedávno sme uverejnili príspevok o OceanLotus a o tom, ako sa operátori snažia zabezpečiť perzistenciu, urýchliť vykonávanie kódu a minimalizovať stopy prítomnosti v systémoch Windows. Je známe, že táto kybernetická skupina má aj komponent pre macOS. V tomto príspevku sa podrobne opisujú zmeny v najnovšej verzii malvéru pre macOS v porovnaní s predchádzajúco uvedenou (opísanou Trend Micro), ako aj to, ako je možné automatizovať dešifrovanie reťazcov počas analýzy pomocou API IDA Hex-Rays.

OceanLotus: posodobitev zlonamerne programske opreme za macOS

Analiza

V nasledujúcich troch častiach sa opisuje analýza vzoru s hashom SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2. Súbor sa nazýva flashlightd, antivírusové produkty ESET detekujú ho ako OSX/OceanLotus.D.

Anti-debugging a ochrana pred pieskoviskami

Rovnako ako všetky macOS binárne súbory OceanLotus, vzor je zabalený s UPX, ale väčšina identifikačných nástrojov ho nerozpoznáva ako taký. Pravdepodobne preto, že väčšinou obsahujú podpis, ktorý závisí od prítomnosti reťazca 'UPX'; navyše Mach-O podpisy sú menej časté a nie sú tak často aktualizované. Táto vlastnosť sťažuje statické odhaľovanie. Zaujímavé je, že po rozbalení sa vstupný bod nachádza na začiatku sekcie __cfstring v segmente .TEXT. V tejto sekcii sú atribúty flag, ako je znázornené na obrázku nižšie.

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Obrázok 1. Atribúty sekcie MACH-O __cfstring

Ako je znázornené na obrázku 2, umiestnenia kódu v sekcii __cfstring umožňuje oklamať niektoré nástroje disassemblovania, pričom zobrazuje kód ako reťazce.

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Obrázok 2. Kód zadného otvoru je definovaný IDA ako dáta

Po spustení binárneho súboru vytvára vlákno ako ochranný prostriedok pred ladicami, ktorého jediným cieľom je nepretržite kontrolovať prítomnosť debuggra. Na tento účel vlákno:

— Snaží sa odpojiť akýkoľvek debugger vyvolaním ptrace z PT_DENY_ATTACH ako parametra požiadavky
— Kontroluje, či sú otvorené niektoré výnimočné porty, vyvolaním funkcie task_get_exception_ports
— Preverja, ali je debager povezan, kot je prikazano na spodnji sliki, tako da preveri prisotnost zastavice P_TRACED v trenutnem procesu

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Slika 3. Preverjanje povezave debagerja preko funkcije sysctl

Če watchdog shema odkrije prisotnost debagerja, se pokliče funkcija exit. Poleg tega vzorec nato preveri okolje z izvedbo dveh ukazov:

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

Nato vzorec preveri vrnjeno vrednost proti trdo kodiranemu seznamu znanih virtualizacijskih sistemov: acle, vmware, virtualbox ili parallels. Nazadnje naslednji ukaz preveri, ali je stroj eden od naslednjih “MBP”, “MBA”, “MB”, “MM”, “IM”, “MP” in “XS”. To so kode modelov sistemov, na primer, “MBP” pomeni MacBook Pro, “MBA” – MacBook Air itd.

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

Glavne dodatke

Kljub temu da ukazi backdoor-a niso spremenjeni od raziskave Trend Micro, smo opazili nekaj drugih sprememb. C&C strežniki, uporabljeni v tem vzorcu, so precej novi, datum njihovega nastanka pa je 22.10.2018.

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

URL vir se je spremenil na /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
Prvi paket, poslan na C&C strežnik, vsebuje več informacij o gostiteljski napravi, vključno z vsemi podatki, ki jih zbirajo ukazi iz spodnje tabele.

OceanLotus: posodobitev zlonamerne programske opreme za macOS

Poleg tega, spremembe konfiguracije vzorec uporablja za omrežno filtriranje ne biblioteke libcurl, temveč zunanjo knjižnico. Da bi jo našel, backdoor poskuša dešifrirati vsako datoteko v trenutnem imeniku z uporabo AES-256-CBC s ključem gFjMXBgyXWULmVVVzyxy, dopolnjenim z ničlami. Vsaka datoteka se dešifrira in shrani kot /tmp/store, medtem ko je poskus nalaganja kot knjižnice opravljen z uporabo funkcije dlopen. Ko dešifracijski poskus privede do uspešnega klica dlopen, backdoor izkoplje izvožene funkcije Boriry in ChadylonV, katerih naloga naj bi bila omrežno sodelovanje s strežnikom. Nimamo dropparja ali drugih datotek iz izvorne lokacije vzorca, zato te knjižnice ne moremo analizirati. Poleg tega, ker je komponenta šifrirana, YARA pravilo, ki temelji na teh nizih, ne bo ustrezalo datoteki, najdeni na disku.

Kot je opisano v zgoraj omenjenem članku, se ustvari cliendIDTa identidad je MD5 hash vraćene vrednosti jedne od sledećih komandi:

— 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}' (dobiti MAC adresu)
— nepoznata komanda ("x1ex72x0a") koja se koristi u prethodnim primerima

Pre hashovanja vraćenoj vrednosti se dodaje karakter "0" ili "1", što označava prisustvo root privilegija. Ovaj clientID se čuva u /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, ako se kod izvršava kao root ili u ~\/Library\/SmartCardsServices\/Technology\/PlugIns\/drivers\/snippets.ecgML u svim ostalim slučajevima. Datoteka je obično skrivena pomoću funkcije _chflags, njen vremenski pečat se menja pomoću komande touch –t sa slučajnom vrednošću.

Dekodiranje nizov

Kao i u prethodnim verzijama, stringovi su šifrovani koristeći AES-256-CBC (heksadecimalni ključ: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 dopunjen nulama, a IV ispunjen nulama) koristeći funkciju CCCrypt. Ključ je promenjen u poređenju sa prethodnim verzijama, ali pošto grupa i dalje koristi isti algoritam šifrovanja stringova, dešifrovanje može biti automatizovano. Pored ovog posta, izdvajamo IDA skriptu koja koristi Hex-Rays API za dešifrovanje stringova prisutnih u binarnom fajlu. Ova skripta može pomoći u budućoj analizi OceanLotus i analizi postojećih uzoraka koje još nismo mogli dobiti. Osnova skripte je univerzalna metoda dobijanja argumenata prosledjenih funkciji. Pored toga, ona traži odredišta parametara. Metoda se može koristiti ponovo da bi dobila spisak argumenata funkcije, a zatim ih prosledila na povratni poziv (callback).

Znajući prototip funkcije decrypt, skripta pronalazi sve međusobne reference na ovu funkciju, sve argumente, zatim dešifruje podatke i stavlja običan tekst unutar komentara na adresi međusobne reference. Da bi skripta ispravno radila, mora biti postavljen prilagođeni alfabet koji koristi funkcija dekodiranja base64, i mora biti definisana globalna promenljiva koja sadrži dužinu ključa (u ovom slučaju DWORD, vidi sliku 4).

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Slika 4. Definisanje globalne promenljive key_len

V oknu Function lahko z desnim klikom pokličete funkcijo dekriptiranja in kliknete »Izvleči in dekriptiraj argumente«. Skripta naj dešifrirane vrstice postavi v komentarje, kot je prikazano na sliki 5.

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Slika 5. Dešifrirano besedilo je postavljeno v komentarje

Tako so dešifrirane vrstice priročno združene v oknu IDA xrefs za to funkcijo, kot je prikazano na sliki 6.

OceanLotus: posodobitev zlonamerne programske opreme za macOS
Slika 6. Xrefs do funkcije f_decrypt

Končna različica skripte je na voljo na Github repository.

Izlaz

Kot že omenjeno, OceanLotus nenehno izboljšuje in posodablja svoj nabor orodij. Tokrat je kibernetska skupina izboljšala zlonamerno programsko opremo za uporabnike Mac. Koda se ni bistveno spremenila, vendar je zaščita pred odkritjem zlonamerne programske opreme manj pomembna, saj mnogi uporabniki Mac ignorirajo varnostne proizvode.

Proizvodi ESET so to datoteko že zaznali ob času preiskave. Ker je omrežna knjižnica, uporabljena za C&C komunikacijo, zdaj šifrirana na disku, natančen omrežni protokol, ki ga uporabljajo napadalci, zaenkrat ni znan.

Indikatori kompromitacije

Kazalniki kompromitacije in atributi MITRE ATT&CK so prav tako na voljo na GitHub.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster