Në mars 2019, në VirusTotal, shërbimi popullor online për skanimin e virusve, u ngarkua një mostër e re e softuerit të dëmshëm për macOS nga grupi kibernetik OceanLotus. Skedari ekzekutiv i backdoor-it ka të njëjtat mundësi si versioni i mëparshëm i malware-it për macOS që e studiojmë, por struktura e tij ka ndryshuar dhe tani është më e vështirë për t'u zbuluar. Fatkeqësisht, nuk arritëm të gjejmë dropper-in që lidhet me këtë mostër, prandaj për momentin nuk e dimë se cila është rruga e infektimit.
SĂ« fundmi publikoi dhe mĂ«nyrat se si operatorĂ«t pĂ«rpiqen tĂ« sigurojnĂ« qĂ«ndrueshmĂ«rinĂ«, tĂ« pĂ«rshpejtojnĂ« ekzekutimin e kodit dhe tĂ« zvogĂ«lojnĂ« gjurmĂ«t e pranishme nĂ« sistemet Windows. ĂshtĂ« gjithashtu e njohur se ky grup kibernetik ka njĂ« komponent edhe pĂ«r macOS. KĂ«tu pĂ«rshkruhen hollĂ«sisht ndryshimet nĂ« versionin mĂ« tĂ« fundit tĂ« malware-it pĂ«r macOS kraHASUAR me variantin e mĂ«parshĂ«m (), si dhe se si mund tĂ« automatizohet dekodimi i vargjeve gjatĂ« analizĂ«s duke pĂ«rdorur IDA Hex-Rays API.

Analiza
Në tri pjesët e ardhshme përshkruhet analiza e mostrës me hash SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2. Skedari quhet flashlightd, produktet antivirus ESET e identifikojnë atë si OSX/OceanLotus.D.
Antidebugging dhe mbrojtje nga sandbox
Siç janĂ« tĂ« gjitha binaret e macOS nga OceanLotus, mostra Ă«shtĂ« paketuar me UPX, por shumica e mjeteve tĂ« identifikimit tĂ« paketuesve nuk e njohin si tĂ« tillĂ«. Ndoshta, sepse ato zakonisht pĂ«rmbajnĂ« njĂ« nĂ«nshkrim qĂ« varet nga prania e vargjet "UPX", pĂ«rveç kĂ«saj, nĂ«nshkrimet Mach-O Ă«shtĂ« mĂ« pak e zakonshme dhe nuk pĂ«rditĂ«sohen aq shpesh. Kjo veçori e bĂ«n tĂ« vĂ«shtirĂ« zbulimin statik. ĂshtĂ« interesante se pas nxjerrjes, pika e hyrjes Ă«shtĂ« nĂ« fillim tĂ« seksionit __cfstring nĂ« segmentin .TEXT. NĂ« kĂ«tĂ« seksion ka atribute flag, siç tregohet nĂ« figurĂ«n mĂ« poshtĂ«.

Figura 1. Atributet e seksionit MACH-O __cfstring
Siç tregohet në figurën 2, pozitat e kodit në seksionin __cfstring lejojnë mashtrimin e disa mjeteve të disasemblering, duke e paraqitur kodin si vargje.

Figura 2. Kodi i backdoor identifikohet nga IDA si të dhëna
Pas ekzekutimit, binari krijon një rrjedh si një mjet mbrojtjeje nga debugimi, qëllimi i vetëm i të cilit është të kontrollojë vazhdimisht praninë e debuger-it. Për këtë, rrjedha:
â PĂ«rdor njĂ« thirrje pĂ«r tĂ« ndarĂ« çdo debuger, duke thirrur ptrace me PT_DENY_ATTACH si parametĂ«r kĂ«rkese
â Kontrollon nĂ«se disa porte tĂ« veçanta janĂ« tĂ« hapura, duke thirrur funksionin task_get_exception_ports
â Kontrollon nĂ«se debuggere Ă«shtĂ« i lidhur, siç ilustrohet mĂ« poshtĂ«, duke e verifikuar praninĂ« e flamurit P_TRACED nĂ« procesin aktual

Figurë 3. Kontrollimi i lidhjes së debugger-it përmes funksionit sysctl
Nëse skema e mbikëqyrjes zb discovers praninë e debugger-it, thirret funksioni exit. Për më tepër, më pas mostra kontrollon mjedisin, duke ekzekutuar dy komandat:
ioreg -l | grep -e "Manufacturer" dhe sysctl hw.model
Pas kĂ«saj, mostra kontrollon vlerĂ«n e kthyer sipas njĂ« liste tĂ« koduar fort tĂ« vargjeve tĂ« njohura tĂ« sistemeve tĂ« virtualizimit: acle, vmware, virtualbox ose parallels. NĂ« fund, komanda e mĂ«poshtme kontrollon nĂ«se makina Ă«shtĂ« njĂ« nga kĂ«to âMBPâ, âMBAâ, âMBâ, âMMâ, âIMâ, âMPâ dhe âXSâ. KĂ«to janĂ« kodet e modelit tĂ« sistemit, pĂ«r shembull, âMBPâ do tĂ« thotĂ« MacBook Pro, âMBAâ â MacBook Air etj.
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}'
Shtesat kryesore
Pavarësisht se komandat e backdoor nuk janë ndryshuar që nga hulumtimi i Trend Micro, ne vërejmë disa modifikime të tjera. Serverët C&C të përdorur në këtë mostrë janë mjaft të rinj, data e krijimit të tyre është 22.10.2018.
â daff.faybilodeau[.]com
â sarc.onteagleroad[.]com
â au.charlineopkesston[.]com
URL-i i burimeve është ndryshuar në /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
Paketa e parë, e dërguar në serverin C&C, përmban më shumë informacion rreth makinerisë pritëse, duke përfshirë të gjitha të dhënat e mbledhura nga komandat nga tabela më poshtë.

PĂ«rveç kĂ«saj, ndryshimet nĂ« konfigurim, mostra pĂ«rdor njĂ« filtrimi rrjeti qĂ« nuk Ă«shtĂ« njĂ« bibliotekĂ« , por njĂ« bibliotekĂ« tĂ« jashtme. PĂ«r ta gjetur atĂ«, backdoor pĂ«rpiqet tĂ« dekriptojĂ« çdo skedar nĂ« katalogun aktual, duke pĂ«rdorur AES-256-CBC me çelĂ«sin gFjMXBgyXWULmVVVzyxy, i plotĂ«suar me zero. Ădo skedar dekriptohet dhe ruhet si /tmp/store, dhe pĂ«rpjekja pĂ«r ta ngarkuar atĂ« si bibliotekĂ« bĂ«het duke pĂ«rdorur funksionin . Kur pĂ«rpjekja pĂ«r dekriptim çon nĂ« njĂ« thirrje tĂ« suksesshme dlopen, backdoor nxjerr funksionet e eksportuara Boriry dhe ChadylonV, tĂ« cilat, duket se janĂ« pĂ«rgjegjĂ«se pĂ«r ndĂ«rveprimin rrjet me serverin. Nuk kemi dropper apo skedarĂ« tĂ« tjerĂ« nga burimi origjinal tĂ« mostrĂ«s, prandaj nuk mund tĂ« analizojmĂ« kĂ«tĂ« bibliotekĂ«. MĂ« shumĂ« se kaq, duke qenĂ« se komponenti Ă«shtĂ« i enkriptuar, rregulli YARA i bazuar nĂ« kĂ«to vargje nuk do tĂ« pĂ«rputhet me skedarin e gjetur nĂ« disk.
Siç është përshkruar në artikullin e mësipërm, krijohet cliendID. Ky identifikues është një hash MD5 i vlerës së kthyer nga njërës prej komandave të mëposhtme:
â 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}' (merrni adresĂ«n MAC)
â komandĂ« e panjohur («x1ex72x0a«), e cila pĂ«rdoret nĂ« mostrat e mĂ«parshme
Para se tĂ« hash-ohen, vlerĂ«s sĂ« kthyer i shtohet simboli «0» ose «1», qĂ« tregon praninĂ« e privilegjeve root. Ky clientID ruhet nĂ« /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, nĂ«se kodi ekzekutohet nga root ose nĂ« ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML nĂ« tĂ« gjitha rastet e tjera. Skedari zakonisht fshihet nga funksioni , timestamp-i i tij ndryshohet pĂ«rmes komandĂ«s touch ât me njĂ« vlerĂ« tĂ« rastĂ«sishme.
Dekriptimi i vargjeve
Si nĂ« variantet e mĂ«parshme, vargjet janĂ« tĂ« enkriptura duke pĂ«rdorur AES-256-CBC (çelĂ«si hex: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 shtuar me zero, dhe IV e mbushur me zero) pĂ«rmes funksionit . ĂelĂ«si Ă«shtĂ« ndryshuar krahasuar me versionet e mĂ«parshme, por pasi grupi ende pĂ«rdor tĂ« njĂ«jtin algoritĂ«m pĂ«r enkriptimin e vargjeve, dekriptimi mund tĂ« automatizohet. PĂ«rveç kĂ«tij postimi, po lĂ«shojmĂ« njĂ« skenari IDA qĂ« pĂ«rdor API-nĂ« Hex-Rays pĂ«r tĂ« dekriptuar vargjet e pranishme nĂ« skedarin binar. Ky skenar mund tĂ« ndihmojĂ« nĂ« analizĂ«n e OceanLotus nĂ« tĂ« ardhmen dhe nĂ« analizĂ«n e mostrave ekzistuese qĂ« deri tani nuk kemi arritur t'i marrim. NĂ« thelbin e skenarit Ă«shtĂ« njĂ« metodĂ« universale pĂ«r marrjen e argumenteve tĂ« dĂ«rguara nĂ« funksion. PĂ«r mĂ« tepĂ«r, ai kĂ«rkon emĂ«rtimet e parametrave. Metoda mund tĂ« pĂ«rdoret pĂ«rsĂ«ri pĂ«r tĂ« marrĂ« njĂ« listĂ« tĂ« argumenteve tĂ« funksionit dhe pastaj pĂ«r t'i kaluar ato nĂ« njĂ« thirrje prapa (callback).
Duke ditur prototipin e funksionit decrypt, skenari gjen të gjitha lidhjet e kryqëzuara në këtë funksion, të gjitha argumentet, pastaj dekripton të dhënat dhe vendos tekstin e thjeshtë brenda një komenti në adresën e lidhjes së kryqëzuar. Që skenari të funksionojë siç duhet, duhet të ketë një alfabet personal që përdoret nga funksioni i dekriptimit base64, dhe një variabël globale që përmban gjatësi e çelësit (në këtë rast DWORD, shih figurën 4).

Figura 4. Përcaktimi i variablit global key_len
Në dritaren Function, mund të thirrni me klikim të djathtë funksionin e dekodimit dhe të klikoni "Nxito dhe dekodifiko argumentet". Skema duhet të vendosë stringat e dekoduar në komente, siç tregohet në figurën 5.

Figura 5. Teksti i dekoduar është vendosur në komente
Kështu, stringat e dekoduara vendosen rehat bashkë në dritaren IDA xrefs për këtë funksion, siç tregohet në figurën 6.

Figura 6. Xrefs për funksionin f_decrypt
Versioni përfundimtar i skenarit mund të gjendet në .
Përfundim
Siç u tha më parë, OceanLotus vazhdon të përmirësojë dhe të azhurnojë grupin e saj të mjeteve. Këtë herë, grupi kibernetik ka përmirësuar programin e dëmshëm për të punuar me përdoruesit e Mac. Kodi nuk ka ndryshuar shumë, por, ngaqë shumë përdorues të Mac injorojnë produktet për siguri, mbrojtja e malware nga zbulimi është një prioritet i dytë.
Produktet ESET tashmë e kanë identifikuar këtë skedar në momentin e hetimit. Duke qenë se biblioteka e rrjetit e përdorur për komunikimin C&C tani është e enkriptuar në disk, protokolli i saktë rrjetor, i përdorur nga sulmuesit, deri tani është i panjohur.
Të dhënat për komprometimin
Të dhënat për komprometimin, si dhe atributet MITRE ATT&CK janë gjithashtu të disponueshme në .
Burimi: habr.com
