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 тарабынан маалымат катары аныкталган Backdoor коду

Аткарылгандан кийин, бинардык система мүчүлүштүктөрдү оңдоочуга каршы жипти түзөт, анын бирден бир максаты мүчүлүштүктөрдү оңдоочунун бар-жоктугун үзгүлтүксүз текшерүү. Бул агым үчүн:

— Каалаган мүчүлүштүктөрдү чыгаруучу, чалууга аракет кылат 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 үчүн кесепеттүү программа жаңыртуу

Бул конфигурацияны өзгөртүүгө кошумча, үлгү тармак чыпкалоо үчүн китепкананы колдонбойт libcurl, бирок тышкы китепкана. Аны табуу үчүн, бэкдор учурдагы каталогдогу ар бир файлды AES-256-CBC аркылуу ачкыч менен чечүүгө аракет кылат. gFjMXBgyXWULmVVVzyxy, нөлдөр менен толтурулган. Ар бир файлдын шифри чечилет жана катары сакталат /tmp/store, жана аны китепкана катары жүктөө аракети функциянын жардамы менен жасалат dlopen. Шифрди чечмелөө аракети ийгиликтүү чалууга алып келгенде dlopen, backdoor экспорттолгон функцияларды чыгарат Boriry и ChadylonV, алар, сыягы, сервер менен тармактык байланыш үчүн жооптуу. Үлгүнүн түпнуска жайгашкан жеринен тамчылаткыч же башка файлдар бизде жок, андыктан бул китепкананы талдай албайбыз. Андан тышкары, компонент шифрленгендиктен, бул саптарга негизделген YARA эрежеси дискте табылган файлга дал келбейт.

Жогорудагы макалада айтылгандай, ал жаратат clientID. Бул 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" кошулат. Бул clientID ичинде сакталган /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 нөлдөр менен толтурулган) функция аркылуу 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.

Source: www.habr.com

Комментарий кошуу