OceanLotus: Վնասակար ծրագրի թարմացում macOS

2019 թվականի մարտին VirusTotal, որը հայտնի առցանց սկանավորման ծառայություն է, նոր վնասակար ծրագրի նմուշ վերբեռնվեց, macOS OceanLotus կիբեր խումբ։ Հետևի դռան կատարվող ֆայլն ունի նույն հնարավորությունները, ինչ մեր կողմից ուսումնասիրված վնասակար ծրագրի նախորդ տարբերակը։ 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

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster