[exploit writing] 1_스택 기반 오버플로우 (1) First

Corelan가 쓴 Exploit Writing 을 통해
이제 뭔가 보안 공부의 첫 걸음을 시작하려 한다.

목표

윈도우 xp에서 의 취약점을 이용한 스택 오버 플로우한다.

준비 프로그램

1. kali (가상 머신)
2. windows xp (가상 머신)
3. windows xp 에서 windbg
4. windows xp 에서 펄 스크립트를 사용하기 위한 액티브펄
5. windows xp 에서 펄 스크립트를 사용하기 위한 per dev kit
6. Easy RM to MP3 Converter

과정

1. 우선 xp에서 Easy RM to MP3 Converter를 설치한다.

2. 빈 윈도우 xp에서는 위에 쓴 준비물 중 펄 스크립트 파일을 실행시키기 위한 프로그램들을 설치한다.

3. 메모장에 밑의 코드를 작성하고 test.pl이라는 이름으로 저장한다.
my $file = "crash.m3u";
my $junk = "\x41" x 10000;
open($FILE, ">$file");
print $FILE "$junk";
close($FILE);
print "m3u File Created Successfully \n";

4. 그럼 밑의 그림처럼 아이콘들이 있을 것이다.




6. test 파일을 실행 시키면 위에서 봤듯이 crash.m3u 라는 파일이 생성될 것이다.
(커맨드 라인을 이용해서 test 파일을 실행시키면 m3u File Created Successfully 문구가 나옴)


7. 이제 Easy RM to MP3 Converter를 실행시키고 crash 파일을 LOAD 하면 


에러 메시지가 나온다. 이 수행결과는 converter 가 crash 되지 않고, 정상적인 에러 메시지를 출력함을 알 수 있다.

8. 대부분 어플리케이션에서 발생하는 crash가 무조건 공격의 성공 여부를 보장하지는 않는다. 즉, crash가 발생한다 해도 공격이 가능한 것은 아니라는 뜻이다. 여기서 ‘공격’이란 공격자가 공격코드 수행과 같은 행동을 통해 어플리케이션에서 의도치 않는 행동을 유발하게 만드는 것을 의미한다.

9. 위에서 말한 ‘공격’을 가능케 하는 가장 쉬운 방법은 바로 어플리케이션의 흐름을 통제하는 것이다. 이것은 보통 다음에 실행될 명령이 위치한 포인터를 가진 EIP-Instruction Pointer(or PC)를 통제하는 방법으로 이루어진다. 어플리케이션 흐름을 통제한 후 실행되기를 바라는 공격자의 코드는 일반적으로 쉘코드인 경우가 많다. 그래서 만약 어플리케이션이 해당 쉘코드를 실행하게 되면 그 exploit은 유효한 공격코드라고 할 수 있다.


여기까지 간단하게 스택 기반의 오버플로우에 대해 알아보았고
다음 내용에서는 공격코드 작성에 앞서 짚고 넘어가야 할 몇 가지 내용에 대해 알아보겠다.

출처 : Exploit Writing By Corelan

댓글

댓글 쓰기

이 블로그의 인기 게시물

윈도우 설치에서 파티션 설정 오류(NTFS)

하둡 설치 오류 정리