일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- aireplay-ng
- NOR
- 듀얼부팅
- WPA1
- cmd
- airodump-ng
- WPA-PSK
- Slim3
- 초시대
- 윈도우
- E14-20T6S04X00
- NAND
- 이커시
- wep
- 2021-3156
- 보안이 미래다
- sudo
- 반사서버
- shellcode
- 무선랜
- 디스크
- DOS
- 5G
- WPA3
- DDos
- 디도스
- airmon-ng
- 쉘코드
- WLAN
- aircrack-ng
- Today
- Total
대학생들을 위한 IT
쉘코드4 :: 이커시 본문
지난 시간까지 기본적인 쉘코드 작성을 해보고 실제로 [계산기]를 띄어보는 작업까지 해보았다.
하지만 윈도우 자체 프로그램인 [계산기],[지뢰찾기]를 띄우는 쉘코드를 해봤다!라고 하기엔 무언가 부족해 보여서
이번 시간에는 실제로 상용하는 프로그램들 깔아보는 쉘코드를 작성해보겠다.
예고!! 다음 포스팅에서는 프로그램을 깔고 자동으로 실행되는 작업까지 해보도록 해보겠다.
지난 시간과과 마찬가지로 취약점이 있는 [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 |