2019 թվականի մարտին MacOS չարամիտ ծրագրերի նոր նմուշ OceanLotus կիբեր խմբից վերբեռնվեց VirusTotal՝ առցանց սկանավորման հանրահայտ ծառայություն: Backdoor-ի գործարկվող ֆայլն ունի նույն հնարավորությունները, ինչ մեր ուսումնասիրած macOS չարամիտ ծրագրի նախորդ տարբերակը, սակայն դրա կառուցվածքը փոխվել է, և այն ավելի դժվար է դարձել հայտնաբերելը: Ցավոք, մենք չկարողացանք գտնել այս նմուշի հետ կապված կաթիլիչ, ուստի մենք դեռ չգիտենք վարակի վեկտորը:
Վերջերս հրապարակեցինք
Վերլուծություն
Հաջորդ երեք մասերը նկարագրում են SHA-1 հեշով նմուշի վերլուծությունը E615632C9998E4D3E5ACD8851864ED09B02C77D2
. Ֆայլը կոչվում է լապտեր, ESET հակավիրուսային արտադրանքները հայտնաբերում են այն որպես OSX/OceanLotus.D:
Վրիպազերծման և ավազատուփի պաշտպանություն
Ինչպես macOS OceanLotus-ի բոլոր երկուական սարքերը, նմուշը փաթեթավորված է UPX-ով, սակայն փաթեթավորողների նույնականացման գործիքների մեծ մասը այն չի ճանաչում որպես այդպիսին: Սա հավանաբար այն պատճառով է, որ դրանք հիմնականում պարունակում են ստորագրություն՝ կախված «UPX» տողի առկայությունից, բացի այդ, Mach-O ստորագրությունները ավելի քիչ տարածված են և այնքան էլ հաճախ չեն թարմացվում: Այս հատկությունը դժվարացնում է ստատիկ հայտնաբերումը: Հետաքրքիր է, որ փաթեթավորումից հետո մուտքի կետը գտնվում է հատվածի սկզբում __cfstring
հատվածում .TEXT
. Այս բաժինն ունի դրոշի ատրիբուտներ, ինչպես ցույց է տրված ստորև նկարում:
Նկար 1. MACH-O __cfstring հատվածի ատրիբուտները
Ինչպես ցույց է տրված Նկար 2-ում, կոդերի տեղադրությունները բաժնում __cfstring
թույլ է տալիս խաբել որոշ ապամոնտաժման գործիքներ՝ ցուցադրելով կոդը որպես տողեր:
Նկար 2. Հետևի դռան կոդը, որը հայտնաբերվել է IDA-ի կողմից որպես տվյալ
Կատարվելուց հետո երկուականը ստեղծում է թել՝ որպես հակավրիպազերծիչ, որի միակ նպատակն է շարունակաբար ստուգել վրիպազերծողի առկայությունը: Այս հոսքի համար.
— Փորձում է անջատել վրիպազերծիչը՝ զանգահարելով ptrace
с PT_DENY_ATTACH
որպես հարցման պարամետր
- Ստուգում է, արդյոք որոշ բացառիկ նավահանգիստներ բաց են՝ զանգահարելով ֆունկցիա task_get_exception_ports
- Ստուգում է արդյոք վրիպազերծիչը միացված է, ինչպես ցույց է տրված ստորև նկարում, ստուգելով դրոշակի առկայությունը P_TRACED
ընթացիկ գործընթացում
Նկար 3. Վրիպազերծիչի կապի ստուգում sysctl ֆունկցիայի միջոցով
Եթե դիտորդը հայտնաբերում է վրիպազերծողի առկայությունը, ֆունկցիան կանչվում է exit
. Բացի այդ, նմուշն այնուհետև ստուգում է միջավայրը՝ գործարկելով երկու հրաման.
ioreg -l | grep -e "Manufacturer" и sysctl hw.model
Այնուհետև նմուշը ստուգում է վերադարձված արժեքը հայտնի վիրտուալացման համակարգերից տողերի կոշտ կոդավորված ցանկի համեմատ. acle, vmware, VirtualBox կամ զուգահեռներ. Վերջապես, հաջորդ հրամանը ստուգում է, թե արդյոք մեքենան հետևյալ «MBP», «MBA», «MB», «MM», «IM», «MP» և «XS» մեկն է: Սրանք համակարգի մոդելային կոդերն են, օրինակ՝ «MBP» նշանակում է MacBook Pro, «MBA» նշանակում է MacBook Air և այլն:
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}
Հիմնական լրացումներ
Թեև ետնամուտքի հրամանները չեն փոխվել Trend Micro-ի հետազոտությունից հետո, մենք նկատեցինք մի քանի այլ փոփոխություններ: Այս նմուշում օգտագործվող C&C սերվերները բավականին նոր են և ստեղծվել են 22.10.2018/XNUMX/XNUMX-ին:
- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com
Ռեսուրսի URL-ը փոխվել է /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35
.
C&C սերվերին ուղարկված առաջին փաթեթը պարունակում է լրացուցիչ տեղեկություններ հյուրընկալող մեքենայի մասին, ներառյալ ստորև բերված աղյուսակի հրամաններով հավաքված բոլոր տվյալները:
Ի հավելումն այս կազմաձևման փոփոխությանը, նմուշը չի օգտագործում գրադարան ցանցի զտման համար gFjMXBgyXWULmVVVzyxy
, լցված զրոներով։ Յուրաքանչյուր ֆայլ վերծանվում և պահվում է որպես /tmp/store
, և այն որպես գրադարան բեռնելու փորձ է արվում՝ օգտագործելով ֆունկցիան dlopen
, backdoor-ն արտահանում է արտահանվող գործառույթները Boriry
и ChadylonV
, որոնք, ըստ երեւույթին, պատասխանատու են սերվերի հետ ցանցային հաղորդակցության համար: Մենք չունենք կաթիլ կամ այլ ֆայլեր նմուշի սկզբնական վայրից, ուստի մենք չենք կարող վերլուծել այս գրադարանը: Ավելին, քանի որ բաղադրիչը գաղտնագրված է, այս տողերի վրա հիմնված YARA կանոնը չի համընկնի սկավառակի վրա հայտնաբերված ֆայլի հետ:
Ինչպես նկարագրված է վերը նշված հոդվածում, այն ստեղծում է հաճախորդի ID. Այս ID-ն հետևյալ հրամաններից մեկի վերադարձի արժեքի MD5 հեշն է.
- 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}'
(ստացեք MAC հասցե)
- անհայտ թիմ ("x1ex72x0a
«), որն օգտագործվում է նախորդ նմուշներում
Հաշինգից առաջ վերադարձվող արժեքին ավելացվում է «0» կամ «1»՝ նշելու արմատային արտոնությունները: Սա հաճախորդի ID պահվում է /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex
, եթե կոդը գործարկվում է որպես արմատ կամ ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML-ում բոլոր մյուս դեպքերում: Ֆայլը սովորաբար թաքնվում է ֆունկցիայի միջոցով touch –t
պատահական արժեքով:
Վերծանման տողեր
Ինչպես նախորդ տարբերակների դեպքում, տողերը կոդավորված են AES-256-CBC-ի միջոցով (վեցանկյուն բանալի. 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92
լիցքավորված զրոներով, և IV լցված զրոներով) ֆունկցիայի միջոցով
Իմանալով ֆունկցիայի նախատիպը decrypt, սկրիպտը գտնում է այս ֆունկցիայի բոլոր խաչաձև հղումները, բոլոր արգումենտները, այնուհետև վերծանում է տվյալները և տեղադրում պարզ տեքստ մեկնաբանության մեջ՝ խաչաձև հղումի հասցեում։ Որպեսզի սկրիպտը ճիշտ աշխատի, այն պետք է սահմանվի հատուկ այբուբենի վրա, որն օգտագործվում է base64 ապակոդավորման ֆունկցիայի կողմից, և պետք է սահմանվի գլոբալ փոփոխական, որը պարունակում է ստեղնի երկարությունը (այս դեպքում՝ DWORD, տես Նկար 4):
Նկար 4. Գլոբալ փոփոխականի սահմանում key_len
Գործառույթի պատուհանում կարող եք աջ սեղմել վերծանման ֆունկցիայի վրա և սեղմել «Արտահանել և վերծանել փաստարկները»: Սցենարը պետք է տեղադրի վերծանված տողերը մեկնաբանություններում, ինչպես ցույց է տրված Նկար 5-ում:
Նկար 5. Վերծանված տեքստը տեղադրված է մեկնաբանություններում
Այս կերպ ապակոդավորված տողերը հարմար տեղավորվում են միասին IDA պատուհանում xrefs այս ֆունկցիայի համար, ինչպես ցույց է տրված Նկար 6-ում:
Նկար 6. Xrefs to f_decrypt ֆունկցիան
Վերջնական սցենարը կարող եք գտնել այստեղ
Արտադրողականություն
Ինչպես արդեն նշվեց, OceanLotus-ը մշտապես կատարելագործում և թարմացնում է իր գործիքակազմը։ Այս անգամ կիբեր խումբը կատարելագործել է չարամիտ ծրագիրը՝ Mac օգտատերերի հետ աշխատելու համար: Կոդը շատ չի փոխվել, բայց քանի որ Mac-ի շատ օգտվողներ անտեսում են անվտանգության արտադրանքները, չարամիտ ծրագրերը հայտնաբերելուց պաշտպանելը երկրորդական նշանակություն ունի:
ESET արտադրանքներն արդեն հայտնաբերել էին այս ֆայլը հետազոտության պահին: Քանի որ C&C հաղորդակցության համար օգտագործվող ցանցային գրադարանն այժմ գաղտնագրված է սկավառակի վրա, հարձակվողների կողմից օգտագործվող ցանցի ճշգրիտ արձանագրությունը դեռ հայտնի չէ:
Փոխզիջման ցուցանիշներ
Փոխզիջման ցուցիչները, ինչպես նաև MITER ATT&CK ատրիբուտները նույնպես հասանելի են
Source: www.habr.com