OceanLotus: macOS үшін зиянды бағдарлама жаңартуы

2019 жылдың наурыз айында OceanLotus кибер тобының macOS зиянды бағдарламасының жаңа үлгісі танымал онлайн сканерлеу қызметіне 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, виртуалды қорап немесе параллельдер. Соңында, келесі пәрмен құрылғының келесі «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 үшін зиянды бағдарлама жаңартуы

Бұл конфигурация өзгерісіне қосымша, үлгі желіні сүзу үшін кітапхананы пайдаланбайды libcurl, бірақ сыртқы кітапхана. Оны табу үшін бэкдор кілтпен AES-256-CBC арқылы ағымдағы каталогтағы әрбір файлды шифрдан шығаруға тырысады. gFjMXBgyXWULmVVVzyxy, нөлдермен толтырылған. Әрбір файл шифры шешіледі және басқаша сақталады /tmp/store, және оны кітапхана ретінде жүктеу әрекеті функция арқылы жасалады длопен. Шифрды шешу әрекеті сәтті қоңырауға әкелгенде dlopen, бэкдор экспортталған функцияларды шығарады Boriry и ChadylonV, олар сервермен желілік байланыс үшін жауап береді. Бізде үлгінің бастапқы орнындағы тамшуыр немесе басқа файлдар жоқ, сондықтан бұл кітапхананы талдау мүмкін емес. Сонымен қатар, компонент шифрланғандықтан, осы жолдарға негізделген YARA ережесі дискідегі файлға сәйкес келмейді.

Жоғарыдағы мақалада сипатталғандай, ол жасайды клиент идентификаторы. Бұл идентификатор келесі пәрмендердің бірінің қайтару мәнінің 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» қосылады. Бұл клиент идентификаторы ішінде сақталған /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, егер код түбірлік ретінде іске қосылса немесе барлық басқа жағдайларда ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML ішінде іске қосылса. Файл әдетте функция арқылы жасырылады _ch flags, оның уақыт белгісі пәрмен арқылы өзгертіледі touch –t кездейсоқ мәнмен.

Жолдарды декодтау

Алдыңғы опциялар сияқты, жолдар AES-256-CBC (он алтылық кілт) арқылы шифрланады. 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 нөлдермен толтырылған, ал IV нөлдермен толтырылған) функциясы арқылы CCCrypt. Кілт алдыңғы нұсқалардан өзгерді, бірақ топ әлі де бірдей жолды шифрлау алгоритмін пайдаланатындықтан, шифрды шешуді автоматтандыруға болады. Осы жазбаға қосымша, біз екілік файлдағы жолдардың шифрын ашу үшін Hex-Rays API қолданатын IDA сценарийін шығарамыз. Бұл сценарий болашақта OceanLotus талдауына және біз әлі ала алмаған бар үлгілерді талдауға көмектесуі мүмкін. Сценарий функцияға жіберілген аргументтерді алудың әмбебап әдісіне негізделген. Оған қоса, ол параметр тағайындауларын іздейді. Әдісті функция аргументтерінің тізімін алу үшін қайта пайдалануға болады, содан кейін оны кері шақыруға жіберуге болады.

Функцияның прототипін білу шифрын, сценарий осы функцияның барлық айқас сілтемелерін, барлық аргументтерді табады, содан кейін деректерді шифрдан шығарады және айқас сілтеме мекенжайындағы түсініктеменің ішіне кәдімгі мәтінді орналастырады. Сценарий дұрыс жұмыс істеуі үшін ол base64 декодтау функциясы пайдаланатын теңшелетін алфавитке орнатылуы керек және кілттің ұзындығын қамтитын жаһандық айнымалы мән анықталуы керек (бұл жағдайда DWORD, 4-суретті қараңыз).

OceanLotus: macOS үшін зиянды бағдарлама жаңартуы
Сурет 4. key_len жаһандық айнымалысының анықтамасы

Функция терезесінде шифрды шешу функциясын тінтуірдің оң жақ түймешігімен басып, «Аргументтерді шығарып алу және шифрын ашу» түймесін басуға болады. Сценарий 5-суретте көрсетілгендей шифры шешілген жолдарды түсініктемелерде орналастыруы керек.

OceanLotus: macOS үшін зиянды бағдарлама жаңартуы
Сурет 5. Шифры шешілген мәтін түсініктемелерде орналастырылған

Осылайша шифры шешілген жолдар IDA терезесінде ыңғайлы орналастырылады xrefs бұл функция үшін 6-суретте көрсетілгендей.

OceanLotus: macOS үшін зиянды бағдарлама жаңартуы
Сурет 6. f_decrypt функциясына арналған Xrefs

Соңғы сценарийді мына жерден табуға болады Github репозиторийі.

қорытынды

Жоғарыда айтылғандай, OceanLotus өзінің құралдар жинағын үнемі жетілдіріп, жаңартып отырады. Бұл жолы кибертоп Mac пайдаланушыларымен жұмыс істеу үшін зиянды бағдарламаны жақсартты. Код көп өзгерген жоқ, бірақ көптеген Mac пайдаланушылары қауіпсіздік өнімдерін елемейтіндіктен, зиянды бағдарламаны анықтаудан қорғау екінші маңызды болып табылады.

ESET өнімдері бұл файлды зерттеу кезінде әлдеқашан анықтаған. C&C байланысы үшін пайдаланылатын желілік кітапхана енді дискіде шифрланғандықтан, шабуылдаушылар пайдаланатын нақты желі протоколы әлі белгісіз.

Келісім көрсеткіштері

Ымыра көрсеткіштері, сондай-ақ MITER ATT&CK атрибуттары да қол жетімді GitHub.

Ақпарат көзі: www.habr.com

пікір қалдыру