OceanLotus: macOS üçün zərərli proqram yeniləməsi

2019-cu ilin mart ayında OceanLotus kiberqrupundan macOS zərərli proqramlarının yeni nümunəsi məşhur onlayn skanetmə xidməti VirusTotal-a yükləndi. Backdoor icra edilə bilən faylı tədqiq etdiyimiz macOS zərərli proqram təminatının əvvəlki versiyası ilə eyni imkanlara malikdir, lakin onun strukturu dəyişib və onu aşkar etmək çətinləşib. Təəssüf ki, bu nümunə ilə əlaqəli damcı tapa bilmədik, ona görə də infeksiya vektorunu hələ bilmirik.

Bu yaxınlarda dərc etdik OceanLotus haqqında yazı və operatorların əzmkarlığı təmin etməyə, kodun icrasını sürətləndirməyə və Windows sistemlərində izi minimuma endirməyə necə çalışır. Bu kiberqrupda macOS üçün də komponentin olduğu da məlumdur. Bu yazı əvvəlki versiya ilə müqayisədə macOS üçün zərərli proqramın ən yeni versiyasında dəyişiklikləri təfərrüatlandırır (Trend Micro tərəfindən təsvir edilmişdir) və həmçinin IDA Hex-Rays API istifadə edərək təhlil zamanı sətirlərin şifrəsini necə avtomatlaşdıra biləcəyinizi təsvir edir.

OceanLotus: macOS üçün zərərli proqram yeniləməsi

Təhlil

Növbəti üç hissə SHA-1 hash ilə nümunənin təhlilini təsvir edir E615632C9998E4D3E5ACD8851864ED09B02C77D2. Fayl çağırılır fənərli, ESET antivirus məhsulları onu OSX/OceanLotus.D kimi aşkar edir.

Sazlama əleyhinə və sandbox qorunması

Bütün macOS OceanLotus ikili faylları kimi, nümunə UPX ilə qablaşdırılır, lakin əksər paketləyici identifikasiya vasitələri onu belə tanımır. Bunun səbəbi, onların əsasən “UPX” sətirinin mövcudluğundan asılı olan imzaya malik olmasıdır, əlavə olaraq, Mach-O imzaları daha az yayılmışdır və tez-tez yenilənmir. Bu xüsusiyyət statik aşkarlanmağı çətinləşdirir. Maraqlıdır ki, paketi açdıqdan sonra giriş nöqtəsi bölmənin əvvəlindədir __cfstring seqmentdə .TEXT. Bu bölmədə aşağıdakı şəkildə göstərildiyi kimi bayraq atributları var.

OceanLotus: macOS üçün zərərli proqram yeniləməsi
Şəkil 1. MACH-O __cfstring bölmə atributları

Şəkil 2-də göstərildiyi kimi, bölmədəki kod yerləri __cfstring kodu sətirlər kimi göstərməklə bəzi sökmə alətlərini aldatmağa imkan verir.

OceanLotus: macOS üçün zərərli proqram yeniləməsi
Şəkil 2. Məlumat kimi IDA tərəfindən aşkarlanan arxa qapı kodu

İcra edildikdən sonra ikili sistem bir anti-debugger kimi bir ip yaradır, onun yeganə məqsədi daim sazlayıcının mövcudluğunu yoxlamaqdır. Bu axın üçün:

— Zəng edən hər hansı sazlayıcını açmağa çalışır ptrace с PT_DENY_ATTACH sorğu parametri kimi
- Funksiyaya zəng etməklə bəzi eksklüziv portların açıq olub olmadığını yoxlayır task_get_exception_ports
- Aşağıdakı şəkildə göstərildiyi kimi, bayrağın mövcudluğunu yoxlayaraq, sazlayıcının bağlı olub olmadığını yoxlayır P_TRACED cari prosesdə

OceanLotus: macOS üçün zərərli proqram yeniləməsi
Şəkil 3. sysctl funksiyasından istifadə edərək sazlayıcı əlaqənin yoxlanılması

Gözətçi bir sazlayıcının mövcudluğunu aşkar edərsə, funksiya çağırılır exit. Bundan əlavə, nümunə iki əmr işlətməklə mühiti yoxlayır:

ioreg -l | grep -e "Manufacturer" и sysctl hw.model

Nümunə daha sonra məlum virtuallaşdırma sistemlərindən gələn sətirlərin sərt kodlu siyahısı ilə müqayisədə qaytarılan dəyəri yoxlayır: acle, VMware, VirtualBox və ya paralellər. Nəhayət, növbəti əmr maşının aşağıdakı “MBP”, “MBA”, “MB”, “MM”, “IM”, “MP” və “XS”lərdən biri olub olmadığını yoxlayır. Bunlar sistem modeli kodlarıdır, məsələn, “MBP” MacBook Pro, “MBA” MacBook Air deməkdir və s.

system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}

Əsas əlavələr

Trend Micro-nun araşdırmasından sonra arxa qapı əmrləri dəyişməsə də, biz bir neçə başqa dəyişiklik də müşahidə etdik. Bu nümunədə istifadə edilən C&C serverləri kifayət qədər yenidir və 22.10.2018/XNUMX/XNUMX tarixində yaradılmışdır.

- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com

Resurs URL-i olaraq dəyişdirildi /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
C&C serverinə göndərilən ilk paket aşağıdakı cədvəldəki əmrlər tərəfindən toplanan bütün məlumatlar daxil olmaqla, host maşın haqqında daha çox məlumatı ehtiva edir.

OceanLotus: macOS üçün zərərli proqram yeniləməsi

Bu konfiqurasiya dəyişikliyinə əlavə olaraq, nümunə şəbəkə filtrasiyası üçün kitabxanadan istifadə etmir libcurl, lakin xarici kitabxana. Onu tapmaq üçün arxa qapı açarla AES-256-CBC istifadə edərək cari kataloqdakı hər faylın şifrəsini açmağa çalışır. gFjMXBgyXWULmVVVzyxy, sıfırlarla doldurulmuşdur. Hər bir faylın şifrəsi deşifr edilir və kimi saxlanılır /tmp/store, və funksiyadan istifadə edərək onu kitabxana kimi yükləməyə cəhd edilir dlopen. Şifrəni açmaq cəhdi uğurlu zənglə nəticələndikdə dlopen, arxa qapı ixrac edilmiş funksiyaları çıxarır Boriry и ChadylonV, yəqin ki, serverlə şəbəkə əlaqəsinə cavabdehdir. Nümunənin orijinal yerindən damcı və ya digər fayllarımız yoxdur, ona görə də bu kitabxananı təhlil edə bilmirik. Üstəlik, komponent şifrələndiyi üçün bu sətirlərə əsaslanan YARA qaydası diskdə tapılan fayla uyğun gəlməyəcək.

Yuxarıdakı məqalədə təsvir edildiyi kimi, yaradır müştəri ID. Bu ID aşağıdakı əmrlərdən birinin qaytarılması dəyərinin MD5 hashıdır:

- 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 ünvanını əldə edin)
- naməlum komanda ("x1ex72x0a"), əvvəlki nümunələrdə istifadə olunur

Hashing etməzdən əvvəl, kök imtiyazlarını göstərmək üçün qaytarılan dəyərə "0" və ya "1" əlavə edilir. Bu müştəri ID -də saxlanılır /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, əgər kod kök kimi və ya bütün digər hallarda ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML-də işlədilirsə. Fayl adətən funksiyadan istifadə edərək gizlədilir _chbayraqlar, onun vaxt möhürü əmri ilə dəyişdirilir touch –t təsadüfi dəyəri ilə.

Deşifrə sətirləri

Əvvəlki seçimlərdə olduğu kimi, sətirlər AES-256-CBC (onaltılıq açar) istifadə edərək şifrələnir. 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 sıfırlarla doldurulur və IV sıfırlarla doldurulur) funksiyası vasitəsilə CCCrypt. Açar əvvəlki versiyalardan dəyişib, lakin qrup hələ də eyni sətir şifrələmə alqoritmini istifadə etdiyi üçün şifrənin açılması avtomatlaşdırıla bilər. Bu yazıya əlavə olaraq, ikili faylda mövcud olan sətirlərin şifrəsini açmaq üçün Hex-Rays API istifadə edən IDA skriptini buraxırıq. Bu skript OceanLotus-un gələcək təhlilinə və hələ əldə edə bilmədiyimiz mövcud nümunələrin təhlilinə kömək edə bilər. Skript funksiyaya ötürülən arqumentləri qəbul etmək üçün universal metoda əsaslanır. Bundan əlavə, o, parametr təyinatlarına baxır. Metod funksiya arqumentlərinin siyahısını almaq və sonra onu geri çağırışa ötürmək üçün təkrar istifadə edilə bilər.

Funksiya prototipini bilmək decrypt, skript bu funksiyaya bütün çarpaz istinadları, bütün arqumentləri tapır, sonra verilənlərin şifrəsini açır və çapraz istinad ünvanında şərhin içərisinə düz mətn yerləşdirir. Skriptin düzgün işləməsi üçün o, base64 deşifrə funksiyası tərəfindən istifadə edilən fərdi əlifbaya təyin edilməli və açarın uzunluğunu ehtiva edən qlobal dəyişən müəyyən edilməlidir (bu halda DWORD, Şəkil 4-ə baxın).

OceanLotus: macOS üçün zərərli proqram yeniləməsi
Şəkil 4. key_len qlobal dəyişənin tərifi

Funksiya pəncərəsində, deşifrə funksiyasını sağ klikləyə və "Arqumentləri çıxarın və şifrəsini açın" düyməsini klikləyə bilərsiniz. Skript Şəkil 5-də göstərildiyi kimi şifrəsi açılmış sətirləri şərhlərdə yerləşdirməlidir.

OceanLotus: macOS üçün zərərli proqram yeniləməsi
Şəkil 5. Şifrədən çıxarılan mətn şərhlərdə yerləşdirilir

Beləliklə, şifrəsi açılmış sətirlər IDA pəncərəsində rahat şəkildə birlikdə yerləşdirilir xrefs Şəkil 6-da göstərildiyi kimi bu funksiya üçün.

OceanLotus: macOS üçün zərərli proqram yeniləməsi
Şəkil 6. Xrefs to f_decrypt funksiyası

Son skriptlə burada tanış olmaq olar Github deposu.

Buraxılış

Artıq qeyd edildiyi kimi, OceanLotus alət dəstini daim təkmilləşdirir və yeniləyir. Bu dəfə kiberqrup Mac istifadəçiləri ilə işləmək üçün zərərli proqramı təkmilləşdirib. Kod çox dəyişməyib, lakin bir çox Mac istifadəçiləri təhlükəsizlik məhsullarına məhəl qoymadığından zərərli proqram təminatının aşkarlanmasından qorunması ikinci dərəcəli əhəmiyyət kəsb edir.

ESET məhsulları araşdırma zamanı bu faylı artıq aşkar edirdi. C&C rabitəsi üçün istifadə edilən şəbəkə kitabxanası indi diskdə şifrələndiyi üçün təcavüzkarların istifadə etdiyi dəqiq şəbəkə protokolu hələ məlum deyil.

Güzəşt göstəriciləri

Kompromis göstəriciləri, həmçinin MITER ATT&CK atributları da mövcuddur Github.

Mənbə: www.habr.com

Добавить комментарий