Okuyanlarınız Man In The Proxy blog yazıma konu olan bir internet bankacılığı zararlı yazılımını hedef sisteme indirmek ve çalıştırmak amacıyla zararlı bir JScript dosyası (Flash-2017.js) kullanıldığını anımsayacaklardır. O yazıda okunaklı olmayan (encoded) bu JScript dosyasının Zararlı JavaScript Analizi başlıklı yazımda olduğu gibi internet tarayıcısı ile basit bir şekilde analiz edilemediğine yer vermiştim. Bunun sebebi ise JScript dosyasının çalışma esnasında ActiveX ve WScript kullanımına ihtiyaç duymasıydı. (“WScript is not defined”, “ActiveXObject is not defined”) Internet tarayıcısı ile Jscript dosyasının analiz edilemediği kimi durumlarda hem Visual Studio‘dan hem de ücretsiz sürümü olan Visual Studio Express‘ten faydalanabilirsiniz.

Wscript Debugging
Wscript Debugging

Wikipedia‘ya göre Microsoft Windows Script Host (WSH) (eski adıyla Windows Scripting Host), Microsoft Windows işletim sistemine özellik açısından BATCH dosyalarına kıyasla çok daha fazlasını vadeden bir betik otomasyon teknolojisidir. Birden fazla betik (JScript, VBSscript) dosyasını desteklemesi en önemli artılarından birisidir. Not olarak VBS hata ayıklaması için ayrıca VbsEdit isimli araçtan da faydalanabileceğiniz yeri gelmişken söyleyeyim.

Bu gibi durumlarda JScript dosyasını hızlıca analiz edebilmek için ilk olarak Visual Studio’da, Tools -> External Tools menüsü altında Microsoft tarafından belirtilen hata ayıklama parametrelerini tanımlamalısınız. Ardından analiz etmek istediğiniz JScript dosyasını Visual Studio’da açtıktan sonra Tools menüsü altından daha önce tanımladığınız Wscript’i seçerek JScript dosyasını kolayca analiz etmeye başlayabilirsiniz.

Wscript Debugging
Wscript Debugging

Yazıma konu olan Flash-2017.js isimli JScript dosyasını adım adım hata ayıklama ile analiz etmeye başladığımızda, kodun yorum satırlarının (comment) başındaki /* ve */ karakterleri sildiğini görebiliyoruz.

Wscript Debugging
Wscript Debugging
Wscript Debugging

Daha sonra script üzerinde yer alan gizlenmiş verileri sırasıyla çözen ddfddfdcccbcaf() ve acfabbfabdd() fonksiyonları hemen dikkatimizi çekecektir. Eğer amacımız hızlıca gizlenmiş olan verilerin çözülmüş haline ulaşmak ise bu durumda acfabbfabdd() fonksiyonunun sonunda yer alan return komutuna kesme işareti (breakpoint) koymamız durumunda gizlenmiş verilerin çözülmüş haline kolay ve hızlı bir şekilde ulaşabiliyoruz.

Wscript Debugging
Wscript Debugging

Visual Studio ve hata ayıklama ile uğraşmak istemiyorum diyenler, ilgili fonksiyonlardan faydalanarak aşağıdaki ekran görüntüsünde olduğu gibi hızlıca gizlenmiş veriyi çözen basit bir JScript kodu yazabilirler.

Wscript Debugging
Wscript Debugging

Analizin sonuna doğru yaklaşırken Jscript dosyası tarafından http://highetave.xyz/gete14.php?ff1 adresine bir istek gönderdildiğini ve her defasında web sunucusundan dönen yanıtın farklı (Server-side polymorphism) olduğunu görebiliyoruz. ||| değerinden önceki sayısal değeri gizlenmiş veriyi çözmede de kullandığını öğrendikten sonra yukarıda bahsettiğim fonksiyonlar tarafından çözülen verinin diske 0c03.exe (md5: dcfb9cab318417d3c71bc25e717221c2) adı altında kayıt edildiğini ve ardından çalıştırıldığını görebiliyoruz. Sonuç olarak, analiz adına internet tarayıcılarının yetersiz kaldığı kimi durumlarda zararlı JScript, VBScript kodlarını Visual Studio hata ayıklaması sayesinde hızlıca analiz ederek aklınızdaki sorulara yanıt bulabilirsiniz.

Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

Not:

  • Bu yazı ayrıca Pi Hediyem Var #12 oyununun çözüm yolunu da içermektedir.