본문 바로가기

IT/시스템 해킹(System Hacking)

메타스플로잇(Metasploit)을 이용한 쉘코드 작성


이 포스팅은 서적 '윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇'을 기반으로 작성한 포스팅입니다.




이전 포스팅 보러가기

쉘코드(Shellcode) 기초(1)

쉘코드(Shellcode) 기초(2)

범용 쉘코드(Universal Shellcode) (1)

범용 쉘코드(Universal Shellcode) (2)



이전 포스팅 범용 쉘코드(Universal Shellcode) (2)를 보면


함수의 주소를 구할 때 어떠한 과정을 통해서 동적으로 구할수 있는지 확인하였다.


하지만 중요한 문제가 있다.


지금까지 다루었던 쉘코드는 단순히 cmd 명령을 실행시키는 코드였다.


이에 반해 실제 공격에 사용되는 쉘코드는 조금 더 다양하고 강력한 기능을 수행하게 된다.



조금더 다양하고 강력한 기능을 수행하기 위해서는


더욱 다양하고 많은 함수를 이용하여 쉘코드를 작성하여야 하며


이러한 쉘코드는 모두 앞서말한 범용성을 지닌 Universal 쉘코드여야 한다.


그렇다면 앞의 동적으로 함수의 주소를 구하는 방법으로


모든 원리를 거쳐 작성해야하는 만큼 작성 과정이 쉽지만은 않다.



하지만 과연 늘 이렇게 복잡한 쉘코드 작성 과정을 거쳐야 할까?


동일한 불편함을 느낀 해커들이 쉘코드를 작성하는 원리를 기반으로 한


Metasploit이라는 자동화 Framework를 제작해두었다.



Metasploit Framework를 이용하여 쉘코드를 작성해보자.



실습



Kali Linux에 로그인 한 뒤 터미널을 실행한 뒤 아래와 같이 msfvenom 명령어를 실행해보도록 하자.



Payload 목록을 살펴보면 cmd로 시작하는 간단한 명령 실행부터, 바인드 쉘코드, 파일 다운로드 및 실행까지 수 많은 payload를 볼 수 있을 것이다.





이제 직접 명령어를 이용하여 쉘코드를 작성해보자.


첫번째로는 cmd 명령 수행 쉘코드를 만들어 볼 것이다.




메타스플로잇을 이용하여 작성한 쉘코드를 직접 빌드 해보자.







쉘코드의 정상동작을 확인할 수 있다.



두번째로는 Messagebox를 실행하는 쉘코드를 작성하여 보자.




메타스플로잇을 이용하여 작성한 쉘코드를 직접 빌드 해보자.






이또한 쉘코드의 정상동작을 확인할 수 있다.




이외에도 메타스플로잇은 다양한 페이로드와 옵션을 제공하니, 구체적으로 공부해보는 것이 도움이 될 것같다.