본문 바로가기
System

포트바인딩 쉘코드

by k0o9 2020. 7. 30.

이 글은 윈도우 시스템 해킹가이드 버그헌팅과 익스플로잇을 보고 정리한 글입니다.

 

자 앞전에는 우리가 Poc(Proof of Concept)라는 증명코드를 이용해 쉘코드를 만드는 방법을 알아왓다. 이번에는 실제 공격에 사용되는 쉘코드 중 하나인 포트바인딩 쉘코드에 대해 알아보자. 

일반적으로 Exploit의 목적은 공격대상의 시스템 권한 취득이다. 여기서 말하는 시스템 권한 취득이란 것은 대상 시스템 쉘 접속을 의미한다. 

 

포트바인딩 쉘코드란?

쉘을 접속할 수 있게 포트를 열도록 해주는 쉘코드를 의미한다.

 

이전에 우리는 Universal 쉘코드의 동작원리와 제작법을 배웠다. 실제 Windows 7 이상부터는 Universal 쉘코드로 제작하여야 한다. 하지만 실제 공격코드들을 universal 쉘코드로 작성하면 코드가 길어지고 어려워 진다.

따라서 쉽게 shellcode를 사용하기 위해 Metasploit로 실습을 하겠다.

 

실습환경

칼리리눅스(msfvenom)

Windows7 home sp1 /32bit

 

msf cmd

msfvenom명령어형식 = payload + option + format 

msfvenom  -p windows/exec       cmd=cmd           -f c 

               [윈도우명령어실행]     [cmd 명령어]      [c언어 포맷]]

 

이렇게 명령어를 사용하면 앞전에 힘들게 구한 univeral쉘코드 실습한 cmd를 호출하는 shellcode를 손쉽게 얻을 수 있다. 이 쉘코드를 잘보면 하나의 단점이 있다. 바로 널바이트가 포함되어 있다는 점이다. 이러한 점을 해결할 수 있는 방법으로 쉘코드 인코딩이라는 것이 있다. 이것은 나중에 학습할 것이니 일단은 널바이트는 무시하고 넘어가자.

 

위의 명령어처럼 다양한 쉘코드를 msfvenom에 구현되어있고, 손쉽게 쉘코드를 얻을 수 있다. 포맷을 -f python으로 하면 파이썬 형식으로 얻을 수 있으며 다양한 언어들 모두 지원이 가능하다. 우리의 목적은 포트바인딩 쉘코드이므로 바로 포트바인딩 쉘코드로 넘어 가겠다.

msf 포트바인딩

msfvenom -p windows/shell_bind_tcp lport=7777 -f c

라는 명령어 한줄로 우리는 목표한 바인딩 쉘코드를 얻었다. 이것을 이제 윈도우 7 HOME SP1 32bit 환경에서 실행시켜보겠다.

바인딩 쉘코드 테스트

위에 명령어 수행이 쉘코드 수행 전이고 밑의 명령어 결과값이 쉘코드 수행 후 의 결과 값이다.

바인딩 쉘코드 테스트 2

밑의 명령프롬프트 창이 실행중일때까지는 7777포트가 리스닝 상태가 되고 이것을 종료하면 7777번 포트가 다시 닫힌다. 자 이제 다른 컴퓨터에서 7777번 포트를 이용해서 들어가보자.

nc를 이용하여 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