Kısa süre önce bilgi güvenliği uzmanları, Web3 şirketlerinin çalışanlarını hedef alan yeni bir zararlı yazılım dağıtım kampanyası keşfetti. Saldırganlar kendilerini işe alım uzmanı olarak tanıtıyor, adaylarla bir mülakat düzenleme bahanesiyle iletişime geçiyor ve ardından görüşmeye relay.lc sitesi üzerinden devam etmeyi öneriyor.

İlk bakışta kaynak oldukça inandırıcı görünüyor. Kendisini, yapay zeka kullanan çevrimiçi toplantılar için modern bir platform olarak sunuyor. Sitede gerçek zamanlı otomatik konuşma dökümü, ortak notlar, toplantı sonuçlarına ilişkin yapay zeka özetleri, görev listeleri ve Windows ile macOS için masaüstü uygulamaları gibi özellikler tanıtılıyor.

Uzaktan mülakata giren biri için bu senaryo tamamen olağan görünüyor. Mülakatın bir sonraki aşamasından önce özel bir uygulama yükleme talebi hiçbir şüphe uyandırmıyor. Dahası, sitenin sayfaları güveni daha da pekiştiriyor: hizmetin olanaklarını ayrıntılı biçimde anlatıyor ve programın hem Windows hem de macOS sürümlerini indirmeyi öneriyor.
Yükleme sonrasında ne oluyor
Mac bilgisayarlarda kullanıcıdan Terminal uygulamasını açması, indirilen dosyayı bu pencereye sürüklemesi ve Enter tuşuna basması isteniyor.
Windows'ta her şey daha da basit görünüyor: yükleyiciyi çalıştırmak ve işlemin bitmesini beklemek yeterli. Ekranda, yaklaşık %80'e kadar yavaşça dolan bir güncelleme ilerleme çubuğu içeren bir pencere beliriyor.
İlk bakışta bir seçenek olağan bir manuel program yüklemesini, diğeri ise standart bir yazılım güncellemesini andırıyor. Ancak yükleyicilerin içeriği incelendiğinde, her şeyin tamamen farklı düzenlendiği ortaya çıkıyor.
macOS'un bulaşması: Terminal üzerinden yükleme
Disk imajının içinde gerçek bir uygulama yok. Relay.dmg dosyası, sıradan bir macOS disk imajıdır. Kural olarak, bu işletim sistemine yönelik yasal programlar, kullanıcının yalnızca Uygulamalar klasörüne sürüklediği bir .app paketi biçiminde dağıtılır.
İçinde ne standart bir .app uygulaması ne de bir .pkg yükleme paketi var. Üstelik gerçek yürütülebilir dosya, Finder'ın varsayılan olarak göstermediği .back dizininde gizlenmiş durumda.
Terminal'e sürüklemek bir yükleme değildir
Yazarlar, Apple'ın resmi dijital imzalama ve noterleme prosedüründen vazgeçmelerini «karmaşıklığı azaltma» ve «süreci daha basit ve şeffaf hale getirme» isteğiyle açıklayan yorumlar bile bırakmışlar. Aslında saldırının kilit noktası tam da burada gizli.
Saldırganlar macOS'un yerleşik korumasını nasıl atlıyor
Saldırganların kullandığı komut bu karantina özniteliğini kaldırır. Bu sırada macOS'ta herhangi bir güvenlik açığı kullanılmaz. Kullanıcı, Terminal'i kendi eliyle açar ve önerilen betiği çalıştırır; betik de zararlı dosyadan koruma işaretini kendiliğinden kaldırır.
Sonuç olarak, olağan bir manuel program yüklemesi gibi görünen şey, aslında işletim sisteminin yerleşik güvenlik mekanizmalarından birinin devre dışı bırakılmasına dönüşür.
Parolaların ve Keychain verilerinin çalınması
Gizli yürütülebilir dosyanın içinde, hassas veriler içeren birçok dize sabit bir anahtarla şifrelenmiştir. Bu sayede, programın metin dizeleri arasında yapılan sıradan bir aramayla bulunamazlar.
Şifre çözüldüğünde, programın iki uzak adres içerdiği görülüyor:
Ayrıca, bir macOS sistem penceresini taklit eden bir AppleScript betiği bulunuyor:
«Uygulamanın mevcut sürümü, macOS sürümünüzle tam olarak uyumlu değil. Programın düzgün çalışması için lütfen sistem parolanızı girin.»
Pencerenin başlığı Application Error olup gerçek bir sistem uyarısı gibi görünüyor. Giriş alanı, yazılan karakterleri noktalarla maskeliyor; bu yüzden kullanıcı bunu kolayca standart bir macOS yönetici parolası istemi zannedebilir.
Ancak bu pencerenin sistem kimlik doğrulamasıyla hiçbir ilgisi yok. Bu, yalnızca kullanıcının parolasını ele geçirmek için oluşturulmuş sıradan bir AppleScript iletişim kutusudur. Girildikten sonra parola, program tarafından PWD etiketi altında saklanır ve daha sonra İnternet üzerinden gönderilmek üzere hazırlanır.
Keychain anahtar zincirinin çalınması
Veri toplama burada bitmiyor. Zararlı yazılım, şu dosyayı okumaya olanak tanıyan bir kod içeriyor:
Kod çözüldüğünde, saldırganların aynı anda iki nesneyle ilgilendiği anlaşılıyor:
Keychain dosyasını ve ilgili parolayı ele geçiren saldırganlar, bu veritabanını kendi bilgisayarlarında açmayı deneyerek içinde saklanan tüm kimlik bilgilerine erişebilir.
Telegram, Apple Notes ve sistem verileri tehlikede
Tarayıcı verilerinin yanı sıra program, Telegram Desktop'tan bilgi çalmaya yönelik kod da içeriyor. Telegram'ın yerel yetkilendirme verilerini ve etkin kullanıcı oturumunu sakladığı tdata dizinine erişmeye çalışıyor.
Saldırganlar bu dizini kopyalamayı başarırsa, mevcut Telegram oturumunu başka bir bilgisayarda geri yükleyebilir ve telefon numarasını ya da onay kodunu yeniden girmeye gerek kalmadan hesaba erişebilir.
Apple Notes'tan veri toplamaya yönelik modül de daha az ilgi çekici değil. Program, kullanıcının tüm hesaplarını, klasörlerini ve notlarını sırayla tarar, her kaydın içeriğini okur ve not başlığını dosya adı olarak kullanarak ayrı bir HTML dosyasına kaydeder.
Bunun yanı sıra, donanım kripto cüzdanlarıyla çalışmaya yönelik popüler uygulamaların varlığı da kontrol edilir: Ledger Live ve Trezor Suite.
Truva atı Terminal kapatıldıktan sonra neden çalışmaya devam ediyor
Araştırma sırasında uzmanlar, zararlı yazılımın bilgisayarın her yeniden başlatılmasından sonra otomatik olarak çalışmasını sağlayan mekanizmaların var olup olmadığını da kontrol etti.
Mevcut verilere göre, macOS yeniden başlatıldıktan sonra programın otomatik olarak başlatılmasını sağlayacak bir mekanizmaya dair herhangi bir iz bulunamadı. Yine de, başlatma sırasında kullanılan nohup komutu, zararlı işlemin Terminal penceresi kapatıldıktan sonra bile çalışmaya devam etmesine olanak tanıyor.
Başka bir deyişle, kullanıcı yüklemenin tamamlandığını ve programın kapatılabileceğini düşünebilir; oysa zararlı işlem, görevlerini tamamlayana kadar arka planda çalışmaya devam eder.
Programın yapısına bakılırsa, temel amacı tek bir çalıştırmada mümkün olan en fazla veriyi toplamak, paketlemek ve uzak bir sunucuya aktarmaktır.
macOS sürümünün aksine, Windows sürümü aynı anda birden fazla kalıcılık mekanizması kullanır; Windows kayıt defterinin Run ve RunOnce bölümlerinde kayıtlar oluşturur ve asıl veri hırsızlığı başlamadan önce kendini başlangıç klasörüne yerleştirir.
Windows'un bulaşması: sahte bir güncelleme ekranı
Kullanıcı, aslında var olmayan bir «güncelleme» görüyor. Programın Windows sürümü, NSIS yükleyicisi kullanılarak oluşturulmuş kendi kendine açılan bir yürütülebilir dosyadır.
Açıldıktan sonra içinde, Electron 2.9.0 sürümü temel alınarak geliştirilmiş bir uygulama bulunuyor. Kullanıcıya Relay logosu ve sürekli hareket eden bir ilerleme çubuğu içeren bir arayüz gösteren de budur. «Güncelleme» sırasında ekranda sırayla şu mesajlar beliriyor:
Tüm bunlar, gerçekten bir program güncellemesi yapılıyormuş izlenimi yaratıyor. Ancak kod analizi tamamen farklı bir tablo ortaya koydu. İlerleme çubuğunun ne dosya indirmeyle, ne sistem kontrolüyle, ne de uygulama yüklemesiyle herhangi bir ilgisi var.
Değeri %4'ten başlıyor ve ardından her 1.4 saniyede bir 0 ile 11 arasında rastgele bir sayı kadar artıyor. Mesajlar da yalnızca ilerleme çubuğunun değerine bağlı olarak otomatik değişiyor ve programın gerçek eylemlerini hiçbir şekilde yansıtmıyor.
Gösterge %80'e ulaştığında işlem aniden duruyor. Ancak uygulama, yüklemeyi tamamlamak yerine runUpdate adlı dahili bir mesaj gönderiyor. Saldırının bir sonraki aşaması işte tam da bundan sonra başlıyor.
Virüs yönetici hakları elde etmeye çalışıyor
Yükleme göstergesi %80 işaretine ulaştığında, uygulama dahili runUpdate komutunu gönderir.
Kod analizi sırasında bu komutu alan bir modül keşfedildi. Onunla birlikte uzmanlar, updater.exe dosyasının yolunu ve onu çalıştırmaya yönelik bir PowerShell komutunu buldu:
Bu komut aynı anda birkaç şey yapar. İlk olarak, PowerShell'in standart güvenlik politikasını devre dışı bırakarak programın ek kısıtlamalar olmadan çalıştırılmasına olanak tanır. Ardından Windows Kullanıcı Hesabı Denetimi (UAC) mekanizması aracılığıyla ayrıcalık yükseltme talep eder. Bunun ardından, kullanıcının herhangi bir ek pencere görmemesi için işlemi gizli modda çalıştırır.
updater.exe dosyasının kendisi yaklaşık 116 MB boyutunda olup kaynağını doğrulayan herhangi bir dijital imza içermiyor. Dahası, yapılandırmasında çalışması için yönetici hakları gerektirdiği açıkça belirtiliyor.
Araştırma, bu dosyanın içinde tarayıcılardan, Telegram'dan, masaüstü kripto cüzdanlarından ve işletim sisteminin kendisinden bilgi toplamaya yönelik modüller bulunduğunu gösterdi.
Ayrıca program, yerleşik bir yürütülebilir dosya daha içeriyor. Görevi çok daha dar kapsamlı: zararlı yazılımın bilgisayarın yeniden başlatılmasından sonra sistemde kalıcılığını sağlamak ve Chrome ile Brave tarayıcı işlemlerinin belleğini analiz etmek.
Truva atı sistemde nasıl kalıcılık sağlıyor
Yerleşik modülün dahili adı callsoul. Çalıştırıldıktan sonra ilk iş olarak, her Windows yeniden başlatmasından sonra otomatik olarak başlatılmasını sağlamaya çalışır.
Bunun için program kendini şu dizine kopyalar:
Kopyalamanın ardından dosyaya gizli ve sistem öznitelikleri atanır; bu nedenle kullanıcı, standart Windows Dosya Gezgini'nde gizli dosyaların görüntülenmesini etkinleştirmeden dosyayı göremez.
Ardından program, aynı anda birkaç bağımsız yöntemle kendini kaydetmeye çalışır. Sistem kayıt defterinin Run bölümünde kayıtlar oluşturur, ardından aynısını RunOnce bölümünde yapar ve Windows başlangıç klasörüne de bir kısayol ekler.
Bu sırada kayıtların işletim sisteminin bileşenleri gibi görünmesi ve şüphe uyandırmaması için tamamen zararsız adlar kullanılır: WindowsSysUpdateCheck ve Windows Update.
Program tek bir kalıcılık yöntemiyle yetinmez. Üç seçeneği de art arda kullanır. Zararlı yazılımın bilgisayarın her yeniden başlatılmasından sonra otomatik olarak çalışabilmesi için bunlardan en az birinin işe yaraması yeterlidir. Program, ancak sistemde kalıcılık sağlama girişimlerini tamamladıktan sonra bir sonraki aşamaya geçer: tarayıcı işlemlerinin belleğinin analizi.
Chrome ve Brave tarayıcılarının belleğinin analizi
Windows sürümünün en sıra dışı özelliği, bu tür zararlı yazılımların çoğunun yaptığı gibi yalnızca tarayıcı profil dosyalarını çalmakla yetinmemesidir.
Bunun yerine, çalışan Chrome ve Brave işlemlerinin belleğine doğrudan erişmeye çalışır. Program önce tüm etkin Windows işlemlerini tarar ve Chrome ya da Brave'e ait olup aynı zamanda tarayıcı uzantılarının çalışmasından sorumlu olanları arar.
Gerekli işlemi bulduktan sonra, onu bellek içeriğini okumaya olanak tanıyan haklarla açar. Ardından ayrılmış bellek bölgelerini sırayla inceleyerek mevcut tüm verileri çıkarır.
Elde edilen bilgiler, tarayıcı uzantısı olarak çalışan kripto cüzdanlarının kilidinin açılmasıyla ilgili bir yöntemin dahili adı olan syncPasswordAndUnlockWallet dizesi aranarak analiz edilir.
Böyle bir dize bulunursa, program bir JSON yapısı içinde yer alan yakındaki parametreleri çıkarmaya çalışır. Daha sonra uzak bir sunucuya gönderilmek üzere hazırlanan da işte tam olarak bu değerlerdir.
Çalınan veriler uzak bir sunucuya gönderiliyor
Program, tarayıcının belleğinden bilgileri çıkardıktan sonra üç değer içeren küçük bir JSON nesnesi oluşturur: yüklü Windows kopyasının benzersiz tanımlayıcısı (MachineGuid), bellekte bulunan tarayıcı uzantısıyla ilgili parametre ve verilerin hangi tarayıcıdan elde edildiğine dair bir bilgi, Chrome ya da Brave.
Bunun ardından program, oluşturduğu verileri bir HTTPS isteğiyle şu adresteki uzak sunucuya göndermeye çalışır:
Zararlı yazılımın çalışması sırasında toplamayı başardığı en değerli bilgilerin aktarımında ana kanal olarak kullanılan adres işte tam olarak budur.
Sentry aracılığıyla ek bir bilgi aktarım kanalı
Araştırma ayrıca, programın Sentry hizmetini kullandığını da gösterdi.
Ancak bu durumda tamamen farklı bir şekilde kullanılıyor.
Kodun çeşitli bölümlerinde, Sentry'ye programın ilerleyişi, ortaya çıkan hatalar ve çalışmanın çeşitli aşamaları hakkında mesaj gönderen işlev çağrıları bulundu. Bunlarla birlikte ek hizmet bilgileri de aktarılıyor: bilgisayarın tanımlayıcısı, işlemin tanımlayıcısı, kullanılan tarayıcının adı ve programın çalışma aşamalarının dahili adlandırmaları, örneğin Init, Conn ve Success.
Özellikle ilgi çekici olan, ana POST isteğinin sonuçlarını göndermekten sorumlu işleyicidir. Kodun bu bölümünde uzmanlar, h, v ve b parametrelerini içeren veri yapısının da Sentry aracılığıyla aktarıldığını keşfetti.
Buna rağmen, gizli bilgilerin aktarımında ana kanal olarak cdnresolver.com sunucusu kullanılmaya devam ediyor. Sentry'nin kullanımı büyük olasılıkla, zararlı yazılımın operatörlerinin bulaşmaların başarısını denetlemesine ve kendi yazılımlarının çalışmasını izlemesine olanak tanıyan ek bir araç işlevi görüyor.
Bir başka rastlantı da dikkat çekici. macOS sürümü analiz edilirken aynı e1.cdnresolver.com ve a2.cdnresolver.com alan adları tespit edildi. macOS ve Windows yükleyicileri tamamen farklı teknolojilerle geliştirilmiş olsa da, ikisi de sonuçta aynı altyapıyla iletişim kuruyor.
Ek bir veri aktarım kanalı olarak Sentry
Windows sürümünü analiz ederken araştırmacılar bir ilginç ayrıntı daha keşfetti. Ana işlemin derlenmiş bayt kodunun içinde şu dize kalmıştı:
Bu dizenin, uygulamanın altında dağıtıldığı Relay markasıyla hiçbir ilgisi yok. Ayrıca, programın çalıştırıldıktan sonra kendini kopyaladığı sysupdwin.exe dosyasının adı ile sistem kayıt defterinde oluşturulan WindowsSysUpdateCheck kaydı da Relay'in kimliğiyle hiçbir şekilde örtüşmüyor.
Bu süreçlerin adları, incelenen örnekte kullanılanlarla tamamen örtüşüyor.
Yine de araştırmanın yazarları, orijinal FYMeet örneğini elde edemediklerinin altını çiziyor. Bu nedenle bugün için yalnızca dosya adlarında ve bazı altyapı ögelerinde bir örtüşmeden söz edilebilir. Her iki kampanyanın da aynı saldırgan grubu tarafından düzenlendiği ya da ortak bir kaynak kod kullandığı sonucuna varmak şimdilik erken.
Sonuç: tek bir çalıştırma, tüm verilere erişim
Soruşturma, relay.lc sitesine dikkat çeken topluluk üyelerinin bildirimlerinin ardından başladı. Analiz sırasında, saldırganların biri macOS, diğeri Windows kullanıcıları için olmak üzere tamamen farklı iki bulaşma senaryosu hazırladığı ortaya çıktı. Uygulamadaki farklılıklara rağmen, her iki yükleyici de aynı amacı güdüyor: kurbanın gizli verilerine mümkün olan en geniş erişimi elde etmek.
Saldırının tüm zinciri, her işletim sisteminin kullanıcılarının alışkanlıkları göz önünde bulundurularak kurgulanmış.
macOS'ta saldırganlar sıra dışı ama psikolojik olarak inandırıcı bir yöntem kullanıyor. Kullanıcıdan, bir dosyayı Terminal penceresine sürükleyerek uygulamayı yüklemesi isteniyor. İlk bakışta bu, alışılmadık ama tamamen kabul edilebilir bir yükleme yöntemi gibi görünüyor. Oysa pratikte, dosyanın sistem köken işaretini kaldıran bir betik çalıştırılıyor; bu da macOS'un yerleşik güvenlik uyarılarından birini atlatıyor ve ardından zararlı yazılım gizlice başlatılıyor.
Windows'ta ise tamamen farklı bir yaklaşım uygulanıyor. Bunun yerine kullanıcı, ilerleme çubuğu bulunan inandırıcı bir güncelleme ekranı görüyor. En iyi ihtimalle bir sonraki aşamaya geçiş yaklaşık on saniye sonra gerçekleşiyor; ancak koddaki maksimum bekleme süresi hiçbir şekilde sınırlandırılmamış. Çubuk %80 işaretine ulaşır ulaşmaz program dahili runUpdate komutunu gönderiyor. Bayt kodu analizi, bundan sonra imzasız updater.exe dosyasının, üstelik yönetici hakları talebiyle çalıştırılması gerektiğini gösterdi.
Veri hırsızlığı yaklaşımı da platforma göre farklılık gösteriyor.
macOS sürümünde kullanıcıya, parolayı girmesini isteyen sahte bir sistem penceresi gösteriliyor. Aynı anda program, parolaların ve diğer gizli verilerin saklandığı Keychain veritabanına erişiyor. Ardından girilen parola ve Keychain içeriği, uzak bir sunucuya gönderilmek üzere tek bir pakette birleştiriliyor.
Windows'ta ise asıl vurgu, programın sistemde kalıcılık sağlamasına ve ardından Chrome ile Brave tarayıcılarının belleğinin analizine yapılıyor. Zararlı yazılım, kripto cüzdanlarının kilidinin açılmasıyla ilgili bilgileri arıyor, gerekli parametreleri çıkarıyor ve bunları özel olarak oluşturulmuş bir JSON isteğiyle uzak altyapıya aktarıyor.
Araştırma, olası zararın tek bir kripto cüzdanının ele geçirilmesinden çok daha geniş olduğunu gösteriyor.
Programın kodu; tarayıcılardan, parola yöneticilerinden, Keychain içeriğinden, Telegram'ın yerel verilerinden, Apple Notes notlarından ve cihaza ilişkin çeşitli bilgilerden veri toplamaya yönelik modüller ya da doğrudan bunlara yapılan başvurular içeriyor. Bu da, tek bir başarılı bulaşmanın ardından saldırganların yalnızca kullanıcının kişisel verilerine değil, aynı zamanda kurumsal hesaplara, bulut hizmetlerine, şirketin iç sistemlerine ve diğer kritik kaynaklara da erişebileceği anlamına geliyor.
Mağdurlar için öneriler
Dosya yalnızca indirildiyse ama kullanıcı onu çalıştırmadıysa, indirilen DMG ya da EXE dosyasını silmek, Çöp Kutusu'nu boşaltmak ve araştırmada listelenen tüm alan adlarını, URL'leri ve karma değerlerini DNS filtreleme, güvenlik ağ geçitleri ya da EDR çözümleriyle engellemek yeterlidir.
Dosyanın yalnızca indirilmiş olması, tek başına cihazın ele geçirildiği anlamına gelmez; belirleyici etken, tam olarak onun çalıştırılmasıdır.
Zararlı yazılım macOS'ta çalıştırıldıysa (kullanıcı dosyayı Terminal'e sürükleyip Enter'a bastıysa), cihaz derhal ağdan çıkarılmalı, ancak mümkünse adli analiz tamamlanana kadar yeniden başlatılmamalıdır.
Kullanıcı parolayı sahte pencereye girdiyse, saldırganların hem parolayı hem de Keychain içeriğini ele geçirmiş olabileceği varsayılmalıdır.
Bulaşma Windows'ta gerçekleştiyse, bilgisayar derhal ağdan yalıtılmalı ve parola girme ya da kripto cüzdanlarının kilidini açma ile ilgili her türlü işlem durdurulmalıdır.
Tarayıcıda kripto cüzdanları kullanılmışsa, bunların kilidinin açılmasıyla ilgili verilerin ifşa olmuş olabileceği varsayılmalı ve varlıklar güvenli bir cihazda oluşturulan yeni cüzdanlara aktarılmalıdır.
Yukarıdaki önerilerin tümü, kod analizi sırasında doğrulanan yeteneklerden yola çıkılarak yapılmış olabildiğince ihtiyatlı bir risk değerlendirmesine dayanmaktadır.
Zararlı yazılımın, tarayıcı uzantılarının belleğinde halihazırda bulunan ya da bunların çalışması sırasında orada beliren parametreleri analiz ettiğini göz önünde bulundurmak önemlidir. Ayrıca, çalınan çerezler ve belirteçler, parola değiştirilmese bile geçerli kalmaya devam edebilir. Bu nedenle, bu tür olayların soruşturulması yalnızca kripto varlıklarının çalınıp çalınmadığının kontrol edilmesiyle sınırlı kalmamalıdır; bir bulaşmanın sonuçları çok daha kapsamlı olabilir.
