In Maart 2019 is 'n nuwe voorbeeld van macOS-wanware van die kubergroep OceanLotus na VirusTotal, 'n gewilde aanlyn skanderingsdiens, opgelaai. Die agterdeur-uitvoerbare lêer het dieselfde vermoëns as die vorige weergawe van die macOS-wanware wat ons bestudeer het, maar die struktuur daarvan het verander en dit het moeiliker geword om op te spoor. Ongelukkig kon ons nie 'n drupper vind wat met hierdie monster geassosieer word nie, so ons ken nog nie die infeksievektor nie.
Ons het onlangs gepubliseer
Analise
Die volgende drie dele beskryf die ontleding van 'n monster met 'n SHA-1 hash E615632C9998E4D3E5ACD8851864ED09B02C77D2
. Die lêer word genoem flitslig, ESET-antivirusprodukte bespeur dit as OSX/OceanLotus.D.
Anti-ontfouting en sandbox beskerming
Soos alle macOS OceanLotus-binaries, is die monster verpak met UPX, maar die meeste verpakker-identifikasienutsgoed herken dit nie as sodanig nie. Dit is waarskynlik omdat hulle meestal 'n handtekening bevat wat afhanklik is van die teenwoordigheid van die "UPX"-string, boonop is Mach-O-handtekeninge minder algemeen en word nie so gereeld opgedateer nie. Hierdie kenmerk maak statiese opsporing moeilik. Interessant genoeg, na die uitpak, is die toegangspunt aan die begin van die afdeling __cfstring
in die segment .TEXT
. Hierdie afdeling het vlagkenmerke soos in die prent hieronder getoon.
Figuur 1. MACH-O __cfstring afdeling eienskappe
Soos getoon in Figuur 2, die kode plekke in die afdeling __cfstring
laat jou toe om 'n paar demontage-instrumente te mislei deur kode as stringe te vertoon.
Figuur 2. Agterdeur-kode wat deur IDA as data opgespoor is
Sodra dit uitgevoer is, skep die binêre 'n draad as 'n anti-ontfouter wie se enigste doel is om voortdurend te kyk vir die teenwoordigheid van 'n ontfouter. Vir hierdie vloei:
— Probeer om enige ontfouter te onthaak, roep ptrace
с PT_DENY_ATTACH
as 'n versoekparameter
- Kontroleer of sommige eksklusiewe poorte oop is deur 'n funksie te roep task_get_exception_ports
- Kontroleer of die ontfouter gekoppel is, soos in die figuur hieronder getoon, deur die teenwoordigheid van die vlag na te gaan P_TRACED
in die huidige proses
Figuur 3. Kontroleer die ontfouterverbinding deur die sysctl-funksie te gebruik
As die waghond die teenwoordigheid van 'n ontfouter bespeur, word die funksie genoem exit
. Daarbenewens kontroleer die monster dan die omgewing deur twee opdragte uit te voer:
ioreg -l | grep -e "Manufacturer" и sysctl hw.model
Die monster kontroleer dan die terugkeerwaarde teen 'n hardgekodeerde lys stringe van bekende virtualisasiestelsels: akel, VMware, virtualbox of parallelle. Laastens, die volgende opdrag kyk of die masjien een van die volgende "MBP", "MBA", "MB", "MM", "IM", "MP" en "XS" is. Dit is stelselmodelkodes, byvoorbeeld, "MBP" beteken MacBook Pro, "MBA" beteken MacBook Air, ens.
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}
Belangrikste toevoegings
Alhoewel die agterdeur-opdragte nie verander het sedert Trend Micro se navorsing nie, het ons 'n paar ander wysigings opgemerk. Die C&C-bedieners wat in hierdie voorbeeld gebruik word, is redelik nuut en is op 22.10.2018/XNUMX/XNUMX geskep.
- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com
Die hulpbron-URL het verander na /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35
.
Die eerste pakkie wat na die C&C-bediener gestuur word, bevat meer inligting oor die gasheermasjien, insluitend al die data wat deur die opdragte in die tabel hieronder ingesamel is.
Benewens hierdie konfigurasieverandering, gebruik die monster nie 'n biblioteek vir netwerkfiltrering nie gFjMXBgyXWULmVVVzyxy
, opgevul met nulle. Elke lêer word gedekripteer en gestoor as /tmp/store
, en 'n poging om dit as 'n biblioteek te laai word met die funksie aangewend dlopen
, die agterdeur onttrek uitgevoer funksies Boriry
и ChadylonV
, wat blykbaar verantwoordelik is vir netwerkkommunikasie met die bediener. Ons het nie die dropper of ander lêers vanaf die monster se oorspronklike ligging nie, so ons kan nie hierdie biblioteek ontleed nie. Verder, aangesien die komponent geïnkripteer is, sal 'n YARA-reël gebaseer op hierdie stringe nie ooreenstem met die lêer wat op skyf gevind is nie.
Soos beskryf in die bogenoemde artikel, skep dit kliëntID. Hierdie ID is die MD5-hash van die terugkeerwaarde van een van die volgende opdragte:
- 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}'
(kry MAC-adres)
- onbekende span ("x1ex72x0a
"), wat in vorige voorbeelde gebruik word
Voor hashing word 'n "0" of "1" by die terugkeerwaarde gevoeg om wortelvoorregte aan te dui. Hierdie kliëntID gestoor in /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex
, as die kode as wortel of in ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML in alle ander gevalle uitgevoer word. Die lêer word gewoonlik met die funksie versteek touch –t
met 'n ewekansige waarde.
Dekodering snare
Soos met vorige opsies, word die stringe geïnkripteer met AES-256-CBC (heksadesimale sleutel: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92
opgevul met nulle, en IV gevul met nulle) deur die funksie
Ken die funksie prototipe decrypt, vind die skrip alle kruisverwysings na hierdie funksie, alle argumente, dekripteer dan die data en plaas gewone teks binne 'n opmerking by die kruisverwysingsadres. Vir die skrif om korrek te werk, moet dit gestel word op die pasgemaakte alfabet wat deur die base64-dekoderingsfunksie gebruik word, en 'n globale veranderlike moet gedefinieer word wat die lengte van die sleutel bevat (in hierdie geval 'n DWORD, sien Figuur 4).
Figuur 4. Definisie van die globale veranderlike key_len
In die funksie-venster kan u met die rechtermuisknop op die dekripsiefunksie klik en op "Uittreksel en dekripteer argumente" klik. Die skrip moet die gedekripteerde lyne in opmerkings plaas, soos in Figuur 5 getoon.
Figuur 5. Die ontsyferde teks word in die kommentaar geplaas
Op hierdie manier word die gedekripteerde stringe gerieflik saam in die IDA-venster geplaas xrefs vir hierdie funksie soos in Figuur 6 getoon.
Figuur 6. Xrefs na f_decrypt funksie
Die finale draaiboek kan gevind word by
Output
Soos reeds genoem, is OceanLotus voortdurend besig om sy gereedskapstel te verbeter en op te dateer. Hierdie keer het die kubergroep die wanware verbeter om met Mac-gebruikers te werk. Die kode het nie veel verander nie, maar aangesien baie Mac-gebruikers sekuriteitsprodukte ignoreer, is die beskerming van wanware teen opsporing van sekondêre belang.
ESET-produkte het reeds hierdie lêer bespeur ten tyde van navorsing. Omdat die netwerkbiblioteek wat vir C&C-kommunikasie gebruik word, nou op skyf geïnkripteer is, is die presiese netwerkprotokol wat deur die aanvallers gebruik word nog nie bekend nie.
Aanduiders van kompromie
Aanwysers van kompromie sowel as MITER ATT&CK-eienskappe is ook beskikbaar op
Bron: will.com