대학생들을 위한 IT

쉘코드3 :: 이커시 본문

악성코드

쉘코드3 :: 이커시

phantomik 2019. 1. 17. 02:03

이번 시간에는 취약점이 있는 프로그램을 실행시켰을 때, [계산기]가 실행되게끔 만드는 쉘코드를 만들어 볼 것이다.

이번 취약점이 있는 프로그램에는 [All to Mp3 Converter]가 되시겠다.

All to Mp3 Converter

다른 확장자들을 .mp3 확장자로 바꾸어 주는 프로그램이다. 

즉, 필자가 하려는 작업은 [Add] 버튼을 눌러 mp3 확장자로 바꾸려는 파일을 열었을 때, '계산기'가 실행되게 끔 만드는 작업이다.

안티디버깅

[All to Mp3 Converter] 프로그램을 리버싱해서 취약점을 알아보려는 도중 안티디버깅 기술이 걸려있는 걸 확인했다... 이러면 어떻게 Immunity Debugger를 실행시킬 수 있을까 생각해보자!!

이럴 때 사용하는 방법이 [Attach]이다. 디버깅 화면에서 [ctrl + F1]을 누르거나 파일 탭을 누르면 [Attach] 하위 탭이 보일 것이다.

실행중인 프로그램에 해당하는 이름을 찾고 Attach를 누르면

All to Mp3 Immunity Debugger 실행 성공

step over 과정에서 꺼져버리는 프로그램

하지만 이내 프로그램이 멈춰버리고 말았다.

프로그램이 멈추지 않고 계속 실행되는 그 지점을 찾아야 한다.

(복귀 주소 값을 찾아가기 위한 지점까지 값을 만들어 넣어주어야 죽지 않고 리턴 값을 찾아간다!)

그 지점을 찾기 위해 펄 소스로 만들어 진 파일을 Immunity에 계속 Attach 하는 작업을 반복해 준다.

먼저 무료로 제공되는 펄 엔진을 다운 받아 보자. 필자는 베리베리스트로베리를 사용하였다. 

cf. (perl 확장자 : .pl)

strawberryperl.com

처음은 넉넉히 10000으로 설정하고 시작해보자!!

펄 소스

소스에서 보면 fuzzer1.pl을 실행시켰을 경우 fuzz1.wav라는 사운드 파일이 만들어지게끔 만들었고, 더미를 0x값 [41] (A) 10000개로 지정하여 실험해 보았다.

10000개의 경우 프로그램이 역시나 죽어버렸고, 다음은 그 반 값인 5000으로 설정하였으나 이래도 죽어 버렸다.

머 노가다로 하나하나 맞춰보는 수밖에 없지요! 노가다 시작합시다...


노가다를 하던 중, EIP 주소 값이 [46366846] 곳을 발견했고, 이 다음 쭉 진행되는 걸 발견했다.

(ESP 값의 Contents 부분이 ASCII "AAAAA..."로 나오지 않고 그림과 같은 값이 나온 이유는 중간에 [https://wiremask.eu/tools/buffer-overflow-pattern-generator/] 사이트의 도움을 받아 처리했기 때문이다.)

저 '46366846'의 값을 [https://wiremask.eu/tools/buffer-overflow-pattern-generator/] 사이트에 들어가 [Find the Offset] 탭에 넣어보면

4128

[4128]이란 오프셋 값이 나오고 4128바이트만큼의 더미 값을 지정해준다면 죽지 않고 계속 실행됨을 의미하기도 한다!!

이제 펄 소스를 수정해서 다시 시도해보자!

fuzz4.wav 열기!

다시 F9를 눌러 진행하는 중..또 다시 프로그램이 죽어버리는 모습을 포착했다... 힘이 너무 빠진다...

이유는 다음의 그림에 나타나 있다.

더미 값이 끝나고 복귀 주소를 [0012F8E4]로 지정해 놓았더니, 스택 주소가 매번 바뀌는 걸 발견했다.

즉 ]0012F8E4]로 복귀하여 명령을 시행해야 하는데 바로 다음에 그 주소 값이 나오지 않으니 자꾸 죽어버리는 것이다...

이를 수정하기 위해서는 항상 고정 주소 값을 받는 구간을 찾아야 할 것같다.

포스팅은 다음에 이어서 해야할 것 같다...

'악성코드' 카테고리의 다른 글

쉘코드4-1 :: 이커시  (1) 2019.01.20
쉘코드4 :: 이커시  (0) 2019.01.20
쉘코드3-1 :: 이커시 (Trampoline)  (0) 2019.01.18
쉘코드2 :: 이커시  (1) 2019.01.16
쉘코드 :: 이커시  (0) 2019.01.15
Comments