OceanLotus: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Π»Π²Π°Ρ€ΠΈ для macOS

Π’ ΠΌΠ°Ρ€Ρ‚Π΅ 2019 Π³ΠΎΠ΄Π° Π² VirusTotal, популярный ΠΎΠ½Π»Π°ΠΉΠ½-сСрвис сканирования, Π±Ρ‹Π» Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† врСдоносного ПО для macOS ΠΊΠΈΠ±Π΅Ρ€Π³Ρ€ΡƒΠΏΠΏΡ‹ OceanLotus. Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» бэкдора ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ возмоТностями, Ρ‡Ρ‚ΠΎ ΠΈ прСдыдущая изучСнная Π½Π°ΠΌΠΈ вСрсия ΠΌΠ°Π»Π²Π°Ρ€ΠΈ для macOS, Π½ΠΎ Π΅Π³ΠΎ структура измСнилась ΠΈ Π΅Π³ΠΎ стало слоТнСС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ. К соТалСнию, ΠΌΡ‹ Π½Π΅ смогли Π½Π°ΠΉΡ‚ΠΈ Π΄Ρ€ΠΎΠΏΠΏΠ΅Ρ€, связанный с этим ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ, поэтому ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π½Π°Π΅ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ зараТСния.

НСдавно ΠΌΡ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ пост ΠΏΡ€ΠΎ OceanLotus ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ, ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ свСсти ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ слСды присутствия Π² систСмах Windows. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ Ρƒ этой ΠΊΠΈΠ±Π΅Ρ€Π³Ρ€ΡƒΠΏΠΏΡ‹ Π΅ΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для macOS. Π’ Π΄Π°Π½Π½ΠΎΠΌ постС ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ измСнСния Π² новСйшСй вСрсии ΠΌΠ°Π»Π²Π°Ρ€ΠΈ для macOS Π² сравнСнии с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ (описанным Trend Micro), Π° Ρ‚Π°ΠΊΠΆΠ΅ рассказываСтся, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΡƒ строк с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ IDA Hex-Rays API.

OceanLotus: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Π»Π²Π°Ρ€ΠΈ для macOS

Анализ

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Ρ… частях описываСтся Π°Π½Π°Π»ΠΈΠ· ΠΎΠ±Ρ€Π°Π·Ρ†Π° с Ρ…ΡΡˆΠ΅ΠΌ SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2. Π€Π°ΠΉΠ» называСтся flashlightd, антивирусныС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ ESET Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ OSX/OceanLotus.D.

Антиотладка ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ пСсочниц

Как всС macOS-Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ OceanLotus, ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ с UPX, Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ срСдств ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² Π½Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ. ВСроятно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π² основном содСрТат подпись, Π·Π°Π²ΠΈΡΡΡ‰ΡƒΡŽ ΠΎΡ‚ наличия строки β€œUPX”, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Mach-O сигнатуры Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ€Π΅ΠΆΠ΅ ΠΈ Π½Π΅ Ρ‚Π°ΠΊ часто ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ. Π­Ρ‚Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ затрудняСт статичСскоС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ послС распаковки Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° находится Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π·Π΄Π΅Π»Π° __cfstring Π² сСгмСнтС .TEXT. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π΅ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ flag, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС Π½ΠΈΠΆΠ΅.

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 ΠΈΠ»ΠΈ parallels. НаконСц, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° провСряСт, являСтся Π»ΠΈ машина ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… β€œMBP”, β€œMBA”, β€œMB”, β€œMM”, β€œIM”, β€œMP” and β€œ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.

β€” 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, бэкдор ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ экспортированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Boriry ΠΈ ChadylonV, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΠΎ всСй видимости, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° сСтСвоС взаимодСйствиС с сСрвСром. Π£ нас Π½Π΅Ρ‚ Π΄Ρ€ΠΎΠΏΠΏΠ΅Ρ€Π° ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· исходного мСстополоТСния ΠΎΠ±Ρ€Π°Π·Ρ†Π°, поэтому ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½, YARA-ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, основанноС Π½Π° этих строках, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρƒ, Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡƒ Π½Π° дискС.

Как описано Π² Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, создаСтся cliendID. Π­Ρ‚ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ являСтся Ρ…Π΅ΡˆΠ΅ΠΌ 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Β», ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ root ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ. Π­Ρ‚ΠΎΡ‚ clientID хранится Π² /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, Ссли ΠΊΠΎΠ΄ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΎΡ‚ root ΠΈΠ»ΠΈ Π² ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML Π²ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях. Π€Π°ΠΉΠ» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ скрыт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ _chflags, Π΅Π³ΠΎ врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° измСняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ touch –t со случайным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° строк

Как ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ…, строки Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Ρ‹ с использованиСм AES-256-CBC (ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ нулями, Π° IV Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ нулями) посрСдством Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CCCrypt. ΠšΠ»ΡŽΡ‡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² сравнСнии с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π³Ρ€ΡƒΠΏΠΏΠ° всС Π΅Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ строк, Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°. Помимо этого поста ΠΌΡ‹ выпускаСм скрипт IDA, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ API Hex-Rays для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ строк, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Π­Ρ‚ΠΎΡ‚ скрипт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅ OceanLotus ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ° Π½Π΅ смогли ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ. Π’ основС сцСнария – ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ получСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ ΠΈΡ‰Π΅Ρ‚ назначСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² (callback).

Зная ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ decrypt, скрипт Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС пСрСкрСстныС ссылки Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ простой тСкст Π²Π½ΡƒΡ‚Ρ€ΠΈ коммСнтария ΠΏΠΎ адрСсу пСрСкрСстной ссылки. Π§Ρ‚ΠΎΠ±Ρ‹ скрипт Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π² Π½Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π°Π»Ρ„Π°Π²ΠΈΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ дСкодирования base64, ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° глобальная пСрСмСнная, содСрТащая Π΄Π»ΠΈΠ½Ρƒ ΠΊΠ»ΡŽΡ‡Π° (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС DWORD, см. рисунок 4).

OceanLotus: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Π»Π²Π°Ρ€ΠΈ для macOS
Рисунок 4. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ key_len

Π’ ΠΎΠΊΠ½Π΅ Function ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ ΠΈ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Β«Π˜Π·Π²Π»Π΅Ρ‡ΡŒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹Β». Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 5.

OceanLotus: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Π»Π²Π°Ρ€ΠΈ для macOS
Рисунок 5. Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ тСкст ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ вмСстС Π² ΠΎΠΊΠ½Π΅ IDA xrefs для этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 6.

OceanLotus: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Π»Π²Π°Ρ€ΠΈ для macOS
Рисунок 6. Xrefs to Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f_decrypt

Π€ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ сцСнария ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° Github repository.

Π’Ρ‹Π²ΠΎΠ΄

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, OceanLotus постоянно ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ свой Π½Π°Π±ΠΎΡ€ инструмСнтов. На этот Ρ€Π°Π· ΠΊΠΈΠ±Π΅Ρ€Π³Ρ€ΡƒΠΏΠΏΠ° ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π»Π° врСдоносноС ПО для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Мас-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ. Код Π½Π΅ сильно измСнился, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Мас-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ для бСзопасности, Π·Π°Ρ‰ΠΈΡ‚Π° ΠΌΠ°Π»Π²Π°Ρ€ΠΈ ΠΎΡ‚ обнаруТСния ΠΈΠΌΠ΅Π΅Ρ‚ второстСпСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ ESET ΡƒΠΆΠ΅ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ этот Ρ„Π°ΠΉΠ» Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ исслСдования. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сСтСвая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для C&C-ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π° Π½Π° дискС, Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ сСтСвой ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌΠΈ, ΠΏΠΎΠΊΠ° нСизвСстСн.

Π˜Π½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΈ

Π˜Π½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ MITRE ATT&CK Ρ‚Π°ΠΊΠΆΠ΅ доступны Π½Π° GitHub.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ