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
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.
Şə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.
Şə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ə
Şə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.
Bu konfiqurasiya dəyişikliyinə əlavə olaraq, nümunə şəbəkə filtrasiyası üçün kitabxanadan istifadə etmir 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
, 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 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ə
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).
Şə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.
Şə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.
Şəkil 6. Xrefs to f_decrypt funksiyası
Son skriptlə burada tanış olmaq olar
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
Mənbə: www.habr.com