이 글은 윈도우 시스템 해킹가이드 버그헌팅과 익스플로잇을 보고 정리한 글입니다.
자 앞전에는 우리가 Poc(Proof of Concept)라는 증명코드를 이용해 쉘코드를 만드는 방법을 알아왓다. 이번에는 실제 공격에 사용되는 쉘코드 중 하나인 포트바인딩 쉘코드에 대해 알아보자.
일반적으로 Exploit의 목적은 공격대상의 시스템 권한 취득이다. 여기서 말하는 시스템 권한 취득이란 것은 대상 시스템 쉘 접속을 의미한다.
포트바인딩 쉘코드란?
쉘을 접속할 수 있게 포트를 열도록 해주는 쉘코드를 의미한다.
이전에 우리는 Universal 쉘코드의 동작원리와 제작법을 배웠다. 실제 Windows 7 이상부터는 Universal 쉘코드로 제작하여야 한다. 하지만 실제 공격코드들을 universal 쉘코드로 작성하면 코드가 길어지고 어려워 진다.
따라서 쉽게 shellcode를 사용하기 위해 Metasploit로 실습을 하겠다.
실습환경
칼리리눅스(msfvenom)
Windows7 home sp1 /32bit
msfvenom명령어형식 = payload + option + format
msfvenom -p windows/exec cmd=cmd -f c
[윈도우명령어실행] [cmd 명령어] [c언어 포맷]]
이렇게 명령어를 사용하면 앞전에 힘들게 구한 univeral쉘코드 실습한 cmd를 호출하는 shellcode를 손쉽게 얻을 수 있다. 이 쉘코드를 잘보면 하나의 단점이 있다. 바로 널바이트가 포함되어 있다는 점이다. 이러한 점을 해결할 수 있는 방법으로 쉘코드 인코딩이라는 것이 있다. 이것은 나중에 학습할 것이니 일단은 널바이트는 무시하고 넘어가자.
위의 명령어처럼 다양한 쉘코드를 msfvenom에 구현되어있고, 손쉽게 쉘코드를 얻을 수 있다. 포맷을 -f python으로 하면 파이썬 형식으로 얻을 수 있으며 다양한 언어들 모두 지원이 가능하다. 우리의 목적은 포트바인딩 쉘코드이므로 바로 포트바인딩 쉘코드로 넘어 가겠다.
msfvenom -p windows/shell_bind_tcp lport=7777 -f c
라는 명령어 한줄로 우리는 목표한 바인딩 쉘코드를 얻었다. 이것을 이제 윈도우 7 HOME SP1 32bit 환경에서 실행시켜보겠다.
위에 명령어 수행이 쉘코드 수행 전이고 밑의 명령어 결과값이 쉘코드 수행 후 의 결과 값이다.
밑의 명령프롬프트 창이 실행중일때까지는 7777포트가 리스닝 상태가 되고 이것을 종료하면 7777번 포트가 다시 닫힌다. 자 이제 다른 컴퓨터에서 7777번 포트를 이용해서 들어가보자.
다른 vm에서 칼리리눅스로 7777번 포트를 이용하여 들어가보았다.
사진 맨 위에 결과가 dir의 결과이다. 처음에 없던 c를 mkdir로 만들 수 있는 권한을 가지고 있다. 물론 삭제도 가능하다.
'System' 카테고리의 다른 글
쉘코드 인코딩 (0) | 2020.07.31 |
---|---|
Reverse Connection Shellcode(리버스 커넥션 쉘코드) (0) | 2020.07.31 |
Universal Shellcode(4)-실습 (0) | 2020.07.20 |
Universal Shellcode(3) -실습 (0) | 2020.07.18 |
Universal Shellcode(2) - offset 구하기 (0) | 2020.07.18 |