뉴비에욤

Metasploit - Windows 해킹 - 1 ( CVE-2008-4250 / MS08-067 ) 본문

Kali 2.0 & Metasploit/Windows Hacking

Metasploit - Windows 해킹 - 1 ( CVE-2008-4250 / MS08-067 )

초보에욤 2016. 2. 12. 23:55

이번 실습에서는 MS08-067 취약점을 이용할 예정이다. 이번 취약점은 "CVE-2008-4250" 번호를 가지고 있으며,

취약점에 대한 원인/설명은 다음과 같다.

 

NetBIOS 기반의 공유 기능을 담당하는 NetAPI32.dll 라이브러리 파일에서 Stack BoF가 발생하고, 이를 악용해

원격 명령 실행이 가능한 취약점이다. 또한 특정 운영체제에 대해서는 NX (DEP) 우회가 가능하다고 알려져 있다.

이 취약점에 영향을 받는 운영체제들은 "Windows 2000, Windows XP, Windows Server 2003, Windows Server 2008,

Windows Vista" 이다.

* 아마도 Windows7 이상부터는 기본적으로 패치된 상태에서 릴리즈가 되는 듯 하다.

 

 

대상 시스템이 "ms08-067"에 대하여 취약한지는 nse (nmap script engien)을 이용하여 알아낼 수 있다. 참고로

기존의 서적이나 구글링에서 사용하라고 알려주는 "smb-check-vulns.nse" 파일은 칼리 리눅스 2.0 부터는

삭제되었다. 따라서 "smb-vuln-ms08-067.nse" 파일을 이용해야 한다.

* 본 실습에서는 굳이 nse를 사용하지 않을 예정이다.

 

msfconsole에서 해당 취약점을 검색해보면 한 가지 모듈이 나타난다. 해당 모듈은 총 3가지 옵션을 제공해야 한다.

 

참고로 해당 모듈을 이용하면 공격자가 전달한 명령이 없기 때문에 그냥 익스플로잇이 완료될 뿐이다. 따라서

좀 더 강력한 공격을 위해서는 "reverse_tcp" 페이로드를 이용해야 한다. 참고로 위 상태에서 바로 익스를 해도

되지만, "LPORT" 옵션을 "443" 으로 바꾸면 공격 시스템의 네트워크 관리자가 볼 때는 외부의 https 로 접속하는

것으로 보여지기 때문에 좀 더 유용하다고 할 수 있다.

 

익스플로잇이 성공하면 미터프리터 세션이 리턴된다.

 

미터프리터 세션에서 shell 명령을 입력하면 해당 시스템의 "cmd" 환경이 리턴된다.

 

sysinfo 명령어를 이용하면 해당 시스템에 대한 정보가 출력되고, getuid 명령을 입력하면 익스플로잇을 통해

생성된 세션의 권한(사용자 정보)가 나타난다. 참고로 위 사진처럼 시스템이 아닐 경우 getsystem 명령을 이용하면 된다.

 

공격은 완료되었지만, 좀 더 완벽하기 하기 위해서는 공격 대상 시스템에 전달한 페이로드 프로세스를 정상

프로세스로 인식시키는 작업이 필요하다. 이 작업을 하지 않으면 대상 시스템에서 작업 관리자를 통해 프로세스를

종료시킬 경우 세션이 끊어지기 때문이다. ps 명령을 이용하면 대상 시스템에서 실행되는 프로세스들의 정보가

출력된다.

 

getpid 명령을 이용하면 현재 페이로드의 프로세스가 나타나는데, "1084 => svchost.exe" 프로세스로 실행되고

있는 것을 볼 수 있다. 해당 프로세스 역시 정상 프로세스이지만 "svchost" 프로세스가 꽤 여러개 실행되고 있기

때문에 종료시킬 수 있다. 따라서 GUI 환경을 지원하는 "explorer.exe" 프로세스로 페이로드를 옮겨야 한다.

 

그리고 미터프리터 세션에서는 run 명령어를 통해 몇가지 추가 기능을 실행할 수 있다. 몇가지를 보여주면 우선 "enum_applications" 모듈은 대상 시스템에서 동작하는 어플리케이션 이름과 버전 정보를 출력한다.

* 일종의 nmap -sV 

 

"checkvm" 모듈을 해당 시스템이 가상 환경인지 보여준다. 실행 결과 공격 대상 시스템(Windows XP)은 가상

환경임을 알 수 있다. 

 

"keylog_recorder" 모듈은 키로깅을 수행하는 모듈로써, 실행하면 "[*] Recording keystrokes" 까지 출력된다.

그리고 대상 시스템에서 네이버 웹사이트에서 로그인을 시도한 뒤, 다시 미터프리터에서 "Ctrl+C"를 눌러

종료한다.

 

키로깅 결과 파일을 보면 대상 시스템에서 시도한 로그인 정보를 볼 수 있다.

 

참고로 미터프리터 세션에서 대상 시스템에 대한 추가 공격을 시도하기 위해 background 명령을 이용하여 해당

세션을 저장하고 메타스플로잇 콘솔로 돌아갈 수 있다. "sessions -l" 명령어를 이용하면 저장된 세션 정보를

볼 수 있다.

 

"sessions -i [세션 번호]"를 이요하면 저장된 세션으로 다시 돌아갈 수 있다.

Comments