OceanLotus: macOS-д зориулсан хортой програмын шинэчлэл

2019 оны XNUMX-р сард OceanLotus кибер бүлгийн macOS-ийн шинэ вирусын дээжийг алдартай онлайн сканнердах үйлчилгээ болох VirusTotal-д байршуулсан. Арын хаалганы гүйцэтгэгдэх файл нь бидний судалсан 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 буюу Parallels. Эцэст нь, дараагийн тушаал нь машин нь дараах "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, арын хаалга нь экспортлогдсон функцуудыг задалдаг 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"-ийг нэмээд root эрхийг заана. Энэ үйлчлүүлэгчийн ID -д хадгалагдаж байна /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 (XNUMX-тын түлхүүр) ашиглан шифрлэсэн болно. 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. Xrefs to f_decrypt функц

Эцсийн скриптийг эндээс олж болно Github хадгалах газар.

дүгнэлт

Өмнө дурьдсанчлан OceanLotus нь хэрэгслүүдээ байнга сайжруулж, шинэчилж байдаг. Энэ удаад кибер групп Mac хэрэглэгчидтэй ажиллах хортой программыг сайжруулсан байна. Код нь тийм ч их өөрчлөгдөөгүй ч олон Mac хэрэглэгчид хамгаалалтын бүтээгдэхүүнийг үл тоомсорлодог тул хортой програмыг илрүүлэхээс хамгаалах нь хоёрдогч чухал ач холбогдолтой юм.

ESET бүтээгдэхүүнүүд судалгааны явцад энэ файлыг аль хэдийн илрүүлж байсан. C&C холболтод ашигладаг сүлжээний номын сан нь дискэн дээр шифрлэгдсэн тул халдагч нарын ашигладаг сүлжээний протокол хараахан тодорхойгүй байна.

Бууйлтын үзүүлэлтүүд

Буултын үзүүлэлтүүд болон MITER ATT&CK шинж чанаруудыг мөн эндээс авах боломжтой GitHub.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх