OceanLotus. չարամիտ թարմացում macOS-ի համար

2019 թվականի մարտին MacOS չարամիտ ծրագրերի նոր նմուշ OceanLotus կիբեր խմբից վերբեռնվեց VirusTotal՝ առցանց սկանավորման հանրահայտ ծառայություն: Backdoor-ի գործարկվող ֆայլն ունի նույն հնարավորությունները, ինչ մեր ուսումնասիրած macOS չարամիտ ծրագրի նախորդ տարբերակը, սակայն դրա կառուցվածքը փոխվել է, և այն ավելի դժվար է դարձել հայտնաբերելը: Ցավոք, մենք չկարողացանք գտնել այս նմուշի հետ կապված կաթիլիչ, ուստի մենք դեռ չգիտենք վարակի վեկտորը:

Վերջերս հրապարակեցինք գրառում OceanLotus-ի մասին և ինչպես են օպերատորները փորձում ապահովել կայունություն, արագացնել կոդի կատարումը և նվազագույնի հասցնել հետքը Windows համակարգերում: Հայտնի է նաև, որ այս կիբեր խումբը բաղադրիչ ունի նաև macOS-ի համար։ Այս գրառումը մանրամասնում է macOS-ի չարամիտ ծրագրի նորագույն տարբերակի փոփոխությունները նախորդ տարբերակի համեմատ (նկարագրված է Trend Micro-ի կողմից), և նաև նկարագրում է, թե ինչպես կարող եք ավտոմատացնել տողերի վերծանումը վերլուծության ժամանակ՝ օգտագործելով IDA Hex-Rays API:

OceanLotus. չարամիտ թարմացում macOS-ի համար

Վերլուծություն

Հաջորդ երեք մասերը նկարագրում են SHA-1 հեշով նմուշի վերլուծությունը E615632C9998E4D3E5ACD8851864ED09B02C77D2. Ֆայլը կոչվում է լապտեր, ESET հակավիրուսային արտադրանքները հայտնաբերում են այն որպես OSX/OceanLotus.D:

Վրիպազերծման և ավազատուփի պաշտպանություն

Ինչպես macOS OceanLotus-ի բոլոր երկուական սարքերը, նմուշը փաթեթավորված է UPX-ով, սակայն փաթեթավորողների նույնականացման գործիքների մեծ մասը այն չի ճանաչում որպես այդպիսին: Սա հավանաբար այն պատճառով է, որ դրանք հիմնականում պարունակում են ստորագրություն՝ կախված «UPX» տողի առկայությունից, բացի այդ, Mach-O ստորագրությունները ավելի քիչ տարածված են և այնքան էլ հաճախ չեն թարմացվում: Այս հատկությունը դժվարացնում է ստատիկ հայտնաբերումը: Հետաքրքիր է, որ փաթեթավորումից հետո մուտքի կետը գտնվում է հատվածի սկզբում __cfstring հատվածում .TEXT. Այս բաժինն ունի դրոշի ատրիբուտներ, ինչպես ցույց է տրված ստորև նկարում:

OceanLotus. չարամիտ թարմացում macOS-ի համար
Նկար 1. MACH-O __cfstring հատվածի ատրիբուտները

Ինչպես ցույց է տրված Նկար 2-ում, կոդերի տեղադրությունները բաժնում __cfstring թույլ է տալիս խաբել որոշ ապամոնտաժման գործիքներ՝ ցուցադրելով կոդը որպես տողեր:

OceanLotus. չարամիտ թարմացում macOS-ի համար
Նկար 2. Հետևի դռան կոդը, որը հայտնաբերվել է IDA-ի կողմից որպես տվյալ

Կատարվելուց հետո երկուականը ստեղծում է թել՝ որպես հակավրիպազերծիչ, որի միակ նպատակն է շարունակաբար ստուգել վրիպազերծողի առկայությունը: Այս հոսքի համար.

— Փորձում է անջատել վրիպազերծիչը՝ զանգահարելով ptrace с PT_DENY_ATTACH որպես հարցման պարամետր
- Ստուգում է, արդյոք որոշ բացառիկ նավահանգիստներ բաց են՝ զանգահարելով ֆունկցիա task_get_exception_ports
- Ստուգում է արդյոք վրիպազերծիչը միացված է, ինչպես ցույց է տրված ստորև նկարում, ստուգելով դրոշակի առկայությունը P_TRACED ընթացիկ գործընթացում

OceanLotus. չարամիտ թարմացում macOS-ի համար
Նկար 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 սերվերին ուղարկված առաջին փաթեթը պարունակում է լրացուցիչ տեղեկություններ հյուրընկալող մեքենայի մասին, ներառյալ ստորև բերված աղյուսակի հրամաններով հավաքված բոլոր տվյալները:

OceanLotus. չարամիտ թարմացում macOS-ի համար

Ի հավելումն այս կազմաձևման փոփոխությանը, նմուշը չի օգտագործում գրադարան ցանցի զտման համար լիբուրլ, բայց արտաքին գրադարան։ Այն գտնելու համար backdoor-ը փորձում է վերծանել ընթացիկ գրացուցակի յուրաքանչյուր ֆայլ՝ օգտագործելով AES-256-CBC բանալիով: 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-ում բոլոր մյուս դեպքերում: Ֆայլը սովորաբար թաքնվում է ֆունկցիայի միջոցով _chflags, դրա ժամանակի դրոշմը փոխվում է հրամանի միջոցով touch –t պատահական արժեքով:

Վերծանման տողեր

Ինչպես նախորդ տարբերակների դեպքում, տողերը կոդավորված են AES-256-CBC-ի միջոցով (վեցանկյուն բանալի. 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 լիցքավորված զրոներով, և IV լցված զրոներով) ֆունկցիայի միջոցով CCCcrypt. Բանալին փոխվել է նախորդ տարբերակներից, բայց քանի որ խումբը դեռ օգտագործում է նույն տողերի գաղտնագրման ալգորիթմը, ապակոդավորումը կարող է ավտոմատացվել: Ի հավելումն այս գրառման, մենք թողարկում ենք IDA սցենար, որն օգտագործում է Hex-Rays API-ը՝ երկուական ֆայլում առկա տողերը վերծանելու համար: Այս սցենարը կարող է օգնել OceanLotus-ի հետագա վերլուծությանը և առկա նմուշների վերլուծությանը, որոնք մենք դեռ չենք կարողացել ստանալ: Սցենարը հիմնված է ֆունկցիային փոխանցված արգումենտներ ստանալու ունիվերսալ մեթոդի վրա։ Բացի այդ, այն փնտրում է պարամետրերի առաջադրանքներ: Մեթոդը կարող է կրկին օգտագործվել ֆունկցիայի արգումենտների ցանկ ստանալու համար, այնուհետև փոխանցել այն հետադարձ զանգին:

Իմանալով ֆունկցիայի նախատիպը decrypt, սկրիպտը գտնում է այս ֆունկցիայի բոլոր խաչաձև հղումները, բոլոր արգումենտները, այնուհետև վերծանում է տվյալները և տեղադրում պարզ տեքստ մեկնաբանության մեջ՝ խաչաձև հղումի հասցեում։ Որպեսզի սկրիպտը ճիշտ աշխատի, այն պետք է սահմանվի հատուկ այբուբենի վրա, որն օգտագործվում է base64 ապակոդավորման ֆունկցիայի կողմից, և պետք է սահմանվի գլոբալ փոփոխական, որը պարունակում է ստեղնի երկարությունը (այս դեպքում՝ DWORD, տես Նկար 4):

OceanLotus. չարամիտ թարմացում macOS-ի համար
Նկար 4. Գլոբալ փոփոխականի սահմանում key_len

Գործառույթի պատուհանում կարող եք աջ սեղմել վերծանման ֆունկցիայի վրա և սեղմել «Արտահանել և վերծանել փաստարկները»: Սցենարը պետք է տեղադրի վերծանված տողերը մեկնաբանություններում, ինչպես ցույց է տրված Նկար 5-ում:

OceanLotus. չարամիտ թարմացում macOS-ի համար
Նկար 5. Վերծանված տեքստը տեղադրված է մեկնաբանություններում

Այս կերպ ապակոդավորված տողերը հարմար տեղավորվում են միասին IDA պատուհանում xrefs այս ֆունկցիայի համար, ինչպես ցույց է տրված Նկար 6-ում:

OceanLotus. չարամիտ թարմացում macOS-ի համար
Նկար 6. Xrefs to f_decrypt ֆունկցիան

Վերջնական սցենարը կարող եք գտնել այստեղ Github- ի պահեստը.

Արտադրողականություն

Ինչպես արդեն նշվեց, OceanLotus-ը մշտապես կատարելագործում և թարմացնում է իր գործիքակազմը։ Այս անգամ կիբեր խումբը կատարելագործել է չարամիտ ծրագիրը՝ Mac օգտատերերի հետ աշխատելու համար: Կոդը շատ չի փոխվել, բայց քանի որ Mac-ի շատ օգտվողներ անտեսում են անվտանգության արտադրանքները, չարամիտ ծրագրերը հայտնաբերելուց պաշտպանելը երկրորդական նշանակություն ունի:

ESET արտադրանքներն արդեն հայտնաբերել էին այս ֆայլը հետազոտության պահին: Քանի որ C&C հաղորդակցության համար օգտագործվող ցանցային գրադարանն այժմ գաղտնագրված է սկավառակի վրա, հարձակվողների կողմից օգտագործվող ցանցի ճշգրիտ արձանագրությունը դեռ հայտնի չէ:

Փոխզիջման ցուցանիշներ

Փոխզիջման ցուցիչները, ինչպես նաև MITER ATT&CK ատրիբուտները նույնպես հասանելի են GitHub.

Source: www.habr.com

Добавить комментарий