V marci 2019 bola do populárnej online skenovacej služby VirusTotal nahraná nová vzorka malvéru macOS od kybernetickej skupiny OceanLotus. Spustiteľný súbor backdoor má rovnaké možnosti ako predchádzajúca verzia škodlivého softvéru macOS, ktorý sme študovali, ale jeho štruktúra sa zmenila a bolo ťažšie ho odhaliť. Bohužiaľ sa nám nepodarilo nájsť kvapkadlo spojené s touto vzorkou, takže zatiaľ nepoznáme vektor infekcie.
Nedávno sme zverejnili
analýza
Nasledujúce tri časti popisujú analýzu vzorky s hashom SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2
. Súbor sa volá baterkou, antivírusové produkty ESET ho detegujú ako OSX/OceanLotus.D.
Ochrana proti ladeniu a karanténe
Rovnako ako všetky binárne súbory MacOS OceanLotus, vzorka je zabalená s UPX, ale väčšina nástrojov na identifikáciu balíčka ju ako takú nerozpozná. Je to pravdepodobne preto, že väčšinou obsahujú podpis závislý od prítomnosti reťazca „UPX“, navyše podpisy Mach-O sú menej bežné a nie sú tak často aktualizované. Táto funkcia sťažuje detekciu statickej elektriny. Zaujímavosťou je, že po vybalení je vstupný bod na začiatku úseku __cfstring
v segmente .TEXT
. Táto sekcia má atribúty vlajky, ako je znázornené na obrázku nižšie.
Obrázok 1. Atribúty sekcie MACH-O __cfstring
Ako je znázornené na obrázku 2, umiestnenie kódu v sekcii __cfstring
umožňuje oklamať niektoré nástroje na demontáž zobrazením kódu ako reťazcov.
Obrázok 2. Kód zadného vrátka detekovaný IDA ako dáta
Po spustení binárny súbor vytvorí vlákno ako anti-debugger, ktorého jediným účelom je neustále kontrolovať prítomnosť debuggera. Pre tento tok:
— Pokúša sa odpojiť akýkoľvek debugger, volá ptrace
с PT_DENY_ATTACH
ako parameter požiadavky
- Volaním funkcie kontroluje, či sú otvorené niektoré exkluzívne porty task_get_exception_ports
- Skontroluje, či je debugger pripojený, ako je znázornené na obrázku nižšie, kontrolou prítomnosti príznaku P_TRACED
v aktuálnom procese
Obrázok 3. Kontrola pripojenia debuggera pomocou funkcie sysctl
Ak strážny pes zistí prítomnosť debuggera, funkcia sa zavolá exit
. Okrem toho vzorka skontroluje prostredie spustením dvoch príkazov:
ioreg -l | grep -e "Manufacturer" и sysctl hw.model
Vzorka potom skontroluje návratovú hodnotu oproti pevne zakódovanému zoznamu reťazcov zo známych virtualizačných systémov: acle, vmware, VirtualBox alebo paralely. Nakoniec nasledujúci príkaz skontroluje, či je stroj jedným z nasledujúcich „MBP“, „MBA“, „MB“, „MM“, „IM“, „MP“ a „XS“. Ide o kódy modelu systému, napríklad „MBP“ znamená MacBook Pro, „MBA“ znamená MacBook Air atď.
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}
Hlavné doplnky
Zatiaľ čo príkazy pre zadné vrátka sa od výskumu Trend Micro nezmenili, všimli sme si niekoľko ďalších úprav. Servery C&C použité v tejto vzorke sú celkom nové a boli vytvorené 22.10.2018.
- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com
Adresa URL zdroja sa zmenila na /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35
.
Prvý paket odoslaný na server C&C obsahuje viac informácií o hostiteľskom počítači vrátane všetkých údajov zhromaždených príkazmi v tabuľke nižšie.
Okrem tejto zmeny konfigurácie vzorka nepoužíva knižnicu na filtrovanie siete gFjMXBgyXWULmVVVzyxy
, doplnené nulami. Každý súbor je dešifrovaný a uložený ako /tmp/store
a pomocou funkcie sa vykoná pokus o načítanie ako knižnice dlopen
, zadné vrátka extrahujú exportované funkcie Boriry
и ChadylonV
, ktoré sú zrejme zodpovedné za sieťovú komunikáciu so serverom. Nemáme kvapkadlo ani iné súbory z pôvodného umiestnenia vzorky, takže túto knižnicu nemôžeme analyzovať. Navyše, keďže je komponent šifrovaný, pravidlo YARA založené na týchto reťazcoch sa nebude zhodovať so súborom nájdeným na disku.
Ako je opísané vo vyššie uvedenom článku, vytvára clientID. Toto ID je MD5 hash návratovej hodnoty jedného z nasledujúcich príkazov:
- 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}'
(získať MAC adresu)
- neznámy tím ("x1ex72x0a
"), ktorý je použitý v predchádzajúcich vzorkách
Pred hashovaním sa k vrátenej hodnote pridá „0“ alebo „1“, ktoré označujú oprávnenia root. Toto clientID uložené v /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex
, ak je kód spustený ako root alebo vo všetkých ostatných prípadoch v ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML. Súbor je zvyčajne skrytý pomocou funkcie touch –t
s náhodnou hodnotou.
Dekódovacie reťazce
Rovnako ako v predchádzajúcich možnostiach sú reťazce šifrované pomocou AES-256-CBC (hexadecimálny kľúč: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92
vyplnené nulami a IV vyplnené nulami) prostredníctvom funkcie
Poznanie prototypu funkcie dešifrovať, skript nájde všetky krížové odkazy na túto funkciu, všetky argumenty, potom dešifruje údaje a umiestni obyčajný text do komentára na adresu krížového odkazu. Aby skript fungoval správne, musí byť nastavený na vlastnú abecedu používanú dekódovacou funkciou base64 a musí byť definovaná globálna premenná obsahujúca dĺžku kľúča (v tomto prípade DWORD, pozri obrázok 4).
Obrázok 4. Definícia globálnej premennej key_len
V okne Funkcia môžete kliknúť pravým tlačidlom myši na funkciu dešifrovania a kliknúť na „Extrahovať a dešifrovať argumenty“. Skript by mal umiestniť dešifrované riadky do komentárov, ako je znázornené na obrázku 5.
Obrázok 5. Dešifrovaný text je umiestnený v komentároch
Týmto spôsobom sú dešifrované reťazce pohodlne umiestnené spolu v okne IDA xrefs pre túto funkciu, ako je znázornené na obrázku 6.
Obrázok 6. Xrefs funkcie f_decrypt
Finálny scenár nájdete na
Výkon
Ako už bolo spomenuté, OceanLotus neustále zlepšuje a aktualizuje svoju sadu nástrojov. Tentoraz kybernetická skupina vylepšila malvér na prácu s používateľmi počítačov Mac. Kód sa príliš nezmenil, no keďže mnohí používatelia Macov ignorujú bezpečnostné produkty, ochrana malvéru pred detekciou je druhoradá.
Produkty ESET tento súbor detegovali už v čase výskumu. Keďže sieťová knižnica používaná na komunikáciu C&C je teraz na disku šifrovaná, presný sieťový protokol, ktorý útočníci použili, zatiaľ nie je známy.
Ukazovatele kompromisu
Indikátory kompromisu, ako aj atribúty MITER ATT&CK sú dostupné aj na
Zdroj: hab.com