OceanLotus: macOS için kötü amaçlı yazılım güncellemesi

Mart 2019'da, OceanLotus siber grubuna ait yeni bir macOS kötü amaçlı yazılım örneği, popüler bir çevrimiçi tarama hizmeti olan VirusTotal'a yüklendi. Arka kapı çalıştırılabilir dosyası, incelediğimiz macOS kötü amaçlı yazılımının önceki sürümüyle aynı yeteneklere sahip ancak yapısı değişti ve tespit edilmesi daha zor hale geldi. Ne yazık ki bu örnekle ilişkili bir damlalık bulamadık, dolayısıyla enfeksiyon vektörünü henüz bilmiyoruz.

Yakın zamanda yayınladık OceanLotus hakkında gönderi ve operatörlerin Windows sistemlerinde kalıcılığı nasıl sağlamaya, kod yürütmeyi hızlandırmaya ve ayak izini en aza indirmeye çalıştıkları. Ayrıca bu siber grubun macOS için de bir bileşeninin olduğu biliniyor. Bu gönderi, önceki sürümle karşılaştırmalı olarak macOS için kötü amaçlı yazılımın en yeni sürümündeki değişiklikleri ayrıntılarıyla anlatıyor (Trend Micro tarafından açıklanan) ve ayrıca IDA Hex-Rays API'sini kullanarak analiz sırasında dizelerin şifresinin çözülmesini nasıl otomatikleştirebileceğinizi açıklar.

OceanLotus: macOS için kötü amaçlı yazılım güncellemesi

analizi

Sonraki üç bölüm, SHA-1 karmasına sahip bir numunenin analizini açıklamaktadır E615632C9998E4D3E5ACD8851864ED09B02C77D2. Dosya denir el feneriESET antivirüs ürünleri bunu OSX/OceanLotus.D olarak algılar.

Hata ayıklamayı önleme ve sanal alan koruması

Tüm macOS OceanLotus ikili dosyaları gibi örnek de UPX ile paketlenmiştir ancak çoğu paketleyici tanımlama aracı bunu bu şekilde tanımaz. Bunun nedeni muhtemelen çoğunlukla "UPX" dizisinin varlığına bağlı bir imza içermeleridir; ayrıca Mach-O imzaları daha az yaygındır ve o kadar sık ​​güncellenmez. Bu özellik statik algılamayı zorlaştırır. İlginçtir ki, paketi açtıktan sonra giriş noktası bölümün başındadır __cfstring segmentte .TEXT. Bu bölüm aşağıdaki resimde gösterildiği gibi bayrak özelliklerine sahiptir.

OceanLotus: macOS için kötü amaçlı yazılım güncellemesi
Şekil 1. MACH-O __cfstring bölüm özellikleri

Şekil 2'de gösterildiği gibi bölümdeki kod konumları __cfstring kodu dizeler halinde görüntüleyerek bazı sökme araçlarını kandırmanıza olanak tanır.

OceanLotus: macOS için kötü amaçlı yazılım güncellemesi
Şekil 2. IDA tarafından veri olarak tespit edilen arka kapı kodu

Çalıştırıldığında, ikili dosya, tek amacı sürekli olarak bir hata ayıklayıcının varlığını kontrol etmek olan bir anti-hata ayıklayıcı olarak bir iş parçacığı oluşturur. Bu akış için:

— Herhangi bir hata ayıklayıcının kancasını kaldırmaya çalışır ve çağırır ptrace с PT_DENY_ATTACH istek parametresi olarak
- Bir işlevi çağırarak bazı özel bağlantı noktalarının açık olup olmadığını kontrol eder task_get_exception_ports
- Bayrağın varlığını kontrol ederek aşağıdaki şekilde gösterildiği gibi hata ayıklayıcının bağlı olup olmadığını kontrol eder. P_TRACED mevcut süreçte

OceanLotus: macOS için kötü amaçlı yazılım güncellemesi
Şekil 3. Sysctl işlevini kullanarak hata ayıklayıcı bağlantısını kontrol etme

Watchdog bir hata ayıklayıcının varlığını tespit ederse, işlev çağrılır exit. Ayrıca örnek, iki komutu çalıştırarak ortamı denetler:

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

Örnek daha sonra dönüş değerini bilinen sanallaştırma sistemlerinden gelen sabit kodlanmış bir dize listesine göre kontrol eder: açı, vmware, virtualbox veya paralellikler. Son olarak bir sonraki komut, makinenin aşağıdaki “MBP”, “MBA”, “MB”, “MM”, “IM”, “MP” ve “XS”lerden biri olup olmadığını kontrol eder. Bunlar sistem modeli kodlarıdır; örneğin, “MBP” MacBook Pro anlamına gelir, “MBA” MacBook Air anlamına gelir vb.

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

Temel eklemeler

Trend Micro'nun araştırmasından bu yana arka kapı komutları değişmemiş olsa da birkaç değişiklik daha fark ettik. Bu örnekte kullanılan C&C sunucuları oldukça yenidir ve 22.10.2018 tarihinde oluşturulmuştur.

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

Kaynak URL'si şu şekilde değiştirildi: /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
C&C sunucusuna gönderilen ilk paket, aşağıdaki tabloda yer alan komutlar tarafından toplanan tüm veriler de dahil olmak üzere, ana makine hakkında daha fazla bilgi içerir.

OceanLotus: macOS için kötü amaçlı yazılım güncellemesi

Bu yapılandırma değişikliğine ek olarak örnek, ağ filtreleme için bir kitaplık kullanmaz libcurl, ancak harici bir kütüphane. Bunu bulmak için arka kapı, AES-256-CBC anahtarını kullanarak geçerli dizindeki her dosyanın şifresini çözmeye çalışır. gFjMXBgyXWULmVVVzyxy, sıfırlarla doldurulmuş. Her dosyanın şifresi çözülür ve kaydedilir. /tmp/storeve bu işlev kullanılarak kitaplık olarak yüklenmeye çalışılır. açılmak. Şifre çözme girişimi başarılı bir aramayla sonuçlandığında dlopen, arka kapı dışa aktarılan işlevleri çıkarır Boriry и ChadylonVGörünüşe göre sunucuyla ağ iletişiminden sorumlular. Numunenin orijinal konumundan damlalık veya diğer dosyalara sahip olmadığımız için bu kitaplığı ayrıştıramıyoruz. Üstelik bileşen şifrelendiğinden bu dizelere dayalı bir YARA kuralı, diskte bulunan dosyayla eşleşmeyecektir.

Yukarıdaki makalede açıklandığı gibi, oluşturur Müşteri Kimliği. Bu kimlik, aşağıdaki komutlardan birinin dönüş değerinin MD5 karması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 adresini al)
- bilinmeyen takım ("x1ex72x0a"), önceki örneklerde kullanılan

Karma işleminden önce, kök ayrıcalıklarını belirtmek için dönüş değerine "0" veya "1" eklenir. Bu Müşteri Kimliği içinde depolanan /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, diğer tüm durumlarda kod root olarak veya ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML konumunda çalıştırılıyorsa. Dosya genellikle işlev kullanılarak gizlenir _chflags, zaman damgası komut kullanılarak değiştirilir touch –t rastgele bir değerle.

Dizelerin kodunu çözme

Önceki seçeneklerde olduğu gibi dizeler AES-256-CBC (onaltılık anahtar: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 işlev aracılığıyla sıfırlarla doldurulmuş ve IV sıfırlarla doldurulmuş) CCCkript. Anahtar önceki sürümlere göre değişti, ancak grup hala aynı dize şifreleme algoritmasını kullandığından şifre çözme otomatikleştirilebilir. Bu yazıya ek olarak, ikili dosyada bulunan dizelerin şifresini çözmek için Hex-Rays API'sini kullanan bir IDA betiği yayınlıyoruz. Bu komut dosyası, OceanLotus'un gelecekteki analizine ve henüz elde edemediğimiz mevcut örneklerin analizine yardımcı olabilir. Komut dosyası, bir işleve aktarılan argümanları almak için evrensel bir yönteme dayanmaktadır. Ek olarak parametre atamalarına da bakar. Yöntem, işlev bağımsız değişkenlerinin bir listesini almak ve ardından onu geri aramaya iletmek için yeniden kullanılabilir.

Fonksiyon prototipini bilmek şifresini, komut dosyası bu işleve yapılan tüm çapraz referansları, tüm argümanları bulur, ardından verilerin şifresini çözer ve düz metni çapraz referans adresindeki bir yorumun içine yerleştirir. Komut dosyasının düzgün çalışması için, base64 kod çözme işlevi tarafından kullanılan özel alfabeye ayarlanmalı ve anahtarın uzunluğunu içeren genel bir değişken tanımlanmalıdır (bu durumda bir DWORD, bkz. Şekil 4).

OceanLotus: macOS için kötü amaçlı yazılım güncellemesi
Şekil 4. Global değişken key_len'in tanımı

İşlev penceresinde, şifre çözme işlevine sağ tıklayıp "Argümanları çıkar ve şifresini çöz" seçeneğine tıklayabilirsiniz. Komut dosyası, şifresi çözülmüş satırları Şekil 5'te gösterildiği gibi yorumlara yerleştirmelidir.

OceanLotus: macOS için kötü amaçlı yazılım güncellemesi
Şekil 5. Şifresi çözülmüş metin yorumlara yerleştirilmiştir

Bu şekilde şifresi çözülmüş dizeler IDA penceresine uygun bir şekilde bir araya yerleştirilir. xref'ler Bu işlev için Şekil 6'da gösterildiği gibi.

OceanLotus: macOS için kötü amaçlı yazılım güncellemesi
Şekil 6. f_decrypt işlevine yönelik Xref'ler

Son komut dosyası şu adreste bulunabilir: Github havuzu.

Aviator apk

Daha önce de belirtildiği gibi OceanLotus araç setini sürekli olarak geliştiriyor ve güncelliyor. Bu kez siber grup, kötü amaçlı yazılımı Mac kullanıcılarıyla çalışacak şekilde geliştirdi. Kod pek değişmedi, ancak birçok Mac kullanıcısı güvenlik ürünlerini göz ardı ettiğinden, kötü amaçlı yazılımların tespit edilmesini önlemek ikinci derecede önem taşıyor.

ESET ürünleri araştırma sırasında bu dosyayı zaten tespit ediyordu. C&C iletişimi için kullanılan ağ kitaplığı artık diskte şifrelendiğinden, saldırganların kullandığı ağ protokolü henüz bilinmiyor.

Uzlaşma göstergeleri

Uzlaşma göstergelerinin yanı sıra MITRE ATT&CK özellikleri de şu adreste mevcuttur: GitHub.

Kaynak: habr.com

Yorum ekle