대학생들을 위한 IT

쉘코드4 :: 이커시 본문

악성코드

쉘코드4 :: 이커시

phantomik 2019. 1. 20. 15:03

지난 시간까지 기본적인 쉘코드 작성을 해보고 실제로 [계산기]를 띄어보는 작업까지 해보았다.

하지만 윈도우 자체 프로그램인 [계산기],[지뢰찾기]를 띄우는 쉘코드를 해봤다!라고 하기엔 무언가 부족해 보여서
이번 시간에는 실제로 상용하는 프로그램들 깔아보는 쉘코드를 작성해보겠다.

예고!! 다음 포스팅에서는 프로그램을 깔고 자동으로 실행되는 작업까지 해보도록 해보겠다.


지난 시간과과 마찬가지로 취약점이 있는 [All to Mp3 Converter] 프로그램으로 진행하겠다.


먼저 프로그램을 다운 받는 간단한 코드를 짜보았다.


URL 다운로드

URLDownloadToFile 함수의 인자를 살펴보면 5개로, 2번쨰는 다운 받을 URL 주소, 3번째는 다운 받을 시 받는 장소와 파일 이름이다.


잘 작동하는 확인 완료!


지난 시간에 사용했던 펄 소스를 고쳐서 이어 쉘코드를 만들어 보겠다!


그러기 위해서는 URL주소와 다운 받는 이름을 16진수로 고쳐줘야 한다.

[Hxd]프로그램을 이용해 쉽게 바꿀 수 있다.

URL 주소 16진수로 바꾸기



헥사코드만 따로 메모장으로 가져왔다. 하지만 16진수라는 걸 알려주기 위해 앞에 '\x'(16진수표시)를 붙여주어야 한다.


TIP)


\x로 바꿔주기

가장 앞에 있는 문자 [68]앞에 스페이스 한 번 눌러주고 [CTRL + H]을 눌러준다.
찾을 내용 부분에 공백(스페이스 한 번), 바꿀 내용에 \x을 입력하고 모두 바꾸기 눌러주면 개꿀!


3번째 인자(다운 받을 시 이름) 부분도 같은 방법으로 바꿔준다.


16진수로 모두 바꿔주기

펄 소스를 천천히 살펴보자. (저번 시간에 상세히 설명하지 않은 것 같아...)


필자가 사용할 변수를 정해주고 그게 맞는 값들을 입력한다. 가장 기본적인거라.. 어떻게 설명해야 할지...

[print] 부분에 파일을 열고 URL, NAME, DUMMY, RETURN, SHELL 코드를 순서대로 출력하기 위해 작성하였고

중간에 [.]은 위 내용들이 너무 길어 이어주는 역할을 해 준다.


예)

hell $file = "whoiam.xxx";

hell $1 = "필자는";

hell $2 = "여자가";

hell $3 = "아니고";

hell $4 = "남자다";

hell $5 = "힝속았찌";

open($fd, ">$file");

print $fd $1.$2.$3.$4.$5;

close($fd);

==> 필자는여자가아니고남자다힝속았찌


다음은 쉘코드를 짜주기 위한 기계어 작성부분이다.

URL다운로드 소스를 디버깅하여 실제로 다운받는 함수를 찾아가 본다. [B0204000]에 있는 값을 읽어온다는 것을 알 수 있다.

밑에 헥사덤프값에서 [B0204000]주소 값을 찾아보자

찾을 때는 [CTRL+G]을 사용해서 찾는데 또 저 값을 그대로 치면 안되고 뒤에서 부터 작성해야 한다.

==> [CTRL+G] --> 004020B0


함수 주소 값 찾아가기

[004020B0]주소를 찾아가면 [8B BC 6E 7E]로 나온다. 이 역시 역전 값임으로 거꾸로 된 [7E 6E BC 8B] 값을 사용해야 한다.


쉘코드 기계어 코드

[ESP-0x1024]

ESP기준으로 [All to Mp3 Converter]이 죽지 않고 실행되는 지점 4128 = 0x1020에서 [JMP ESP]을 실행하기 위해 4바이트 사용

--> 0x1024

[ESP-0xFD9]

2번째 인자인 URL 주소 글자수 + 널(\x00) 값 포함해서 75글자(십진수)를 뺀 다음 주소!


인자가 5개 이기에 차례대로 [0, EAX, EBX, 0, 0]값을 거꾸로 입력 (스택 저장, 널값 디폴트 :0)


디버깅 완료

디버깅 완료한 기계어 부분을 긁어다가 어서 쉘코드를 만들어보자 우헤ㅔ헤헤헤헤헤ㅔㅎ

쉘코드 최종 완성

[payload1.wav] 파일을 만들어 낼 최종 펄 소스가 완성되었다.

이제 잘 작동하는 지 확인만 하면 쉬러 갈 수 있다. 우에헤헤헤헤ㅔㅎ

attach 하고 파일 열기 직전!

[Attach]하는 부분은 저번 포스팅을 참조하면 알 수 있다. [CTRL+F1]누르고 블라블라~~

-->CLICK https://ikersyit.tistory.com/17


다운 완료!

[F9] 키를 눌러 실행시키면 지정했던 [C:\] 경로에 goclean.exe 이름을 지정한 파일이 생겼다.


다음시간에는 이 프로그램을 클릭과 엔터없이 자동 실행되는 완벽한 [나쁜행동]을 해보겠다.

정리 잘해두자. 질문은 댓글을 달아주시라!! 이해 안되는 부분도 댓글로 달아주시라!

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

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