Posted on May 7th, 2015
map

Giriş

TRAPMINE bazı devlet kurumlarına karşı hedefli düzenlenen bir dizi saldırıyı tespit etti. Saldırganlar tarafından hedeflenen devlet kurumları Kazakistan, Moğolistan, Vietnam, Ukrayna ve Rusya gibi ülkelerde bulunuyor.

Saldırıda kullanılan exploit’in ve zararlının hızlı bir analizinden sonra, saldırının ardındaki grubun Lurid / Enfal APT’lerinin arkasında olan grup ile aynı olduğunu tespit ettik.

Lurid / Enfal saldırılarının arkasında kim olduğu pek net değildi fakat Çin’deki bazı saldırganlar ile bağlantıları vardı. İnanıyoruz ki bu saldırı ile Kuzey Kore’deki saldırganlar arasında bazı bağlantılar var.

Saldırının arkasında kim var?

Saldırıyı analiz ettiğimizde, saldırganların belirli hedefleri seçtiğini gördük. Özellikle ulusal stratejik araştırma merkezleri ve enstitü araştırmacıları hedef alınmış. Hedeflenen araştırmacıların genellikle Kuzey Kore üzerine araştırma yaptığını da tespit ettik. Örneğin hedef alınan bazı araştırmacıların Kuzey Kore’nin ekonomi ve politikası üzerine birçok yayını olduğu görülüyor. İşte bu nedenle bu saldırının Kuzey Kore merkezli tehdit aktörleriyle ilişkili olduğunu düşünüyoruz.

Saldırı Şekli

Saldırganlar genellikle seçilen hedeflere word dökümanı eklenmiş bazı phishing(avlama) mailleri gönderiyorlar. Gönderilen döküman Microsoft Office’de CVE-2012-0158 gibi bilinen zafiyetleri sömürüyor.

email
Saldırıda kullanılan mail örneği.

Teknik Analiz

Exploit içerisinde bulunan shellcode xor şifrelemesinden geçirilmiş, çözmek için gereken anahtar ise “9E”. Anahtarı kullanarak hafıza üzerinde decrypt yapıp, ne yapılmaya çalışıldığını anlamak zor değil. Anladığımız kadarıyla, “xpsfiltsvc.tmp” adında bir dosya oluşturup, başlangıçta çalışması için kayıt defterine ekliyor. Bu dosyanın bir downloader olduğu aşikar.

shellcode-xor

DLL dosyasında birkaç dışa aktarma bulunuyor, XpsRegisterServer, XpsUnregisterServer, StartAddress gibi. DLL’i “XpsRegisterServer” parametresi ile rundll32.exe kullanarak çalıştırmak mümkün.

Downloader oldukça enteresan. Saldırganlar birkaç tane ilgi çekici yönteme sahip, örneğin GetProcAddress fonksiyonunu alternatif bir yoldan simüle etmek gibi. Görüldüğü üzere, LoadLibrary fonksiyonunun ardından beklediğimiz gibi GetProcAddress gelmiyor.

loadlibrary

GetProcAddress yerine, ImageDirectoryEntrytoData yardımıyla EAT kontrolü yapıyor, bunu gerçekleştirmek için de sub_10001738 çağırılıyor.

imagedirectoryentrytodata

Burada kütüphaneden çağırılacak olan fonksiyonun 3 baytı belirtiliyor. Ardından ImageDirectoryEntrytoData kullanarak bütün EAT taranıp, fonksiyon ismi eşleşene kadar karşılaştırılıyor.

Aşağıda görebileceğiniz gibi, beklenen çağrı olan GetProcAddress(wininet.dll, InternetConnectA) yapılmıyor. InternetConnectA fonksiyonunun adresini alabilmek adına, kullandıkları alt fonksiyon EAT kontolünü yaparak hangisinin 3. baytının “e”, 8. baytının “C” ve 15. baytının “A” olduğunu kontrol ediyor. Kısaca, zararlı hiçbir zaman bu fonksiyonların isimlerini string olarak saklamıyor, ve bu oldukça güzel bir bypass yöntemi.

getprocaddr

Downloaderın asıl zararlıyı indirmek için “question.eboregi.com” adresine bağlantı kurduğu aşağıda görülüyor.

url

YARA Kuralı

rule Enfal_Downloader {
meta:
description = "Enfal Downloader YARA Rule"
author = "TRAPMINE"
date = "2015/05/07"
sha1 = "695f73cf0f85ebaca280e265b9acefc8967ce1cb"
strings:
$st1 = “DF64159.TMP” fullword
$st2 = “iphlpsvc.tmp” fullword
$st3 = “XpsUnregisterServer” fullword
$st4 = “XpsRegisterServer” fullword
$st5 = “{86A43R7C-F91F-4054-9076-301AC5EC03F7}” fullword
condition:
uint16(0) == 0x5A4D and all of ($st*)
}