보안vs해킹2011. 11. 29. 05:30

MSFconsole에서 Nmap 돌리기

msfbook 데이타베이스로 연결을 알아보겠다.

msf > db_connect postgres:toor@127.0.0.1/msf3

msfconsole에서 db_nmap 명령을 통해서 nmap을 사용할 수 있다.

msf > db_nmap -sS -A 172.16.32.131
Warning: Traceroute does not support idle or connect scan, disabling...
Nmap scan report for 172.16.32.131
Host is up (0.00056s latency).
Not shown: 990 closed ports
PORT STATE SERVICE VERSION
21/tcp ..open ftp Microsoft ftpd
25/tcp open smtp Microsoft ESMTP 6.0.2600.2180 ..
80/tcp open http Microsoft IIS webserver 5.1
|_html-title:
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
443/tcp open https?
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
1025/tcp open msrpc Microsoft Windows RPC
1433/tcp open ms-sql-s Microsoft SQL Server 2005 9.00.1399; RTM
3389/tcp open microsoft-rdp Microsoft Terminal Service
MAC Address: 00:0C:29:EA:26:7C (VMware)
Device type: general purpose
Running: Microsoft Windows XP|2003 ..
OS details: Microsoft Windows XP Professional SP2 or Windows Server 2003
Network Distance: 1 hop
Service Info: Host: ihazsecurity; OS: Windows
Host script results:
|_nbstat: NetBIOS name: IHAZSECURITY, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:ea:26:7c
| smb-os-discovery:
| OS: Windows XP (Windows 2000 LAN Manager)
| Name: WORKGROUP\IHAZSECURITY
|_smbv2-enabled: Server doesn't support SMBv2 protocol
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/.
Nmap done: 1 IP address (1 host up) scanned in 33.51 seconds




이런 스캔을 통해서 db_services를 통해서 데이타베이스에 저장된 스캔결과값을 알 수 있다.

msf > db_services
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
172.16.32.131 135 tcp msrpc open Microsoft Windows RPC
172.16.32.131 139 tcp netbios-ssn open
172.16.32.131 445 tcp microsoft-ds open Microsoft Windows XP microsoft-ds
172.16.32.131 777 tcp unknown open
172.16.32.131 1433 tcp ms-sql-s open Microsoft SQL Server 2005 9.00.1399; RTM

Metasploit
를 이용한 포트 스캔

Nmap의 스캐닝 기능뿐만 아니라 Metasploit에 관한 포트스캐너에 대해도 알아보겠다. 이 스캐닝 기능을 통해서 타겟 호스트의 접근과 공격등 다양한 방법을 제시한다.

msf > search portscan

프토스캔의 리스트를 통해 scanner/portscan/syn에서 192.168.1.155을 스캔해보겠다.

msf > use scanner/portscan/syn
msf auxiliary(syn) > set RHOSTS 192.168.1.155
RHOSTS => 192.168.1.155
msf auxiliary(syn) > set THREADS 50
THREADS => 50
26 Chapter 3
msf auxiliary(syn) > run
 [*] TCP OPEN 192.168.1.155:135
[*] TCP OPEN 192.168.1.155:139
[*] TCP OPEN 192.168.1.155:445
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(syn) >msf > use scanner/portscan/syn
msf auxiliary(syn) > set RHOSTS 192.168.1.155
RHOSTS => 192.168.1.155
msf auxiliary(syn) > set THREADS 50
THREADS => 50
26 Chapter 3
msf auxiliary(syn) > run
[*] TCP OPEN 192.168.1.155:135
[*] TCP OPEN 192.168.1.155:139
[*] TCP OPEN 192.168.1.155:445
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(syn) >


135, 139
그리고 445의 포트가 열려있음을 볼 수 있다.

Posted by 구텐모르겐
보안vs해킹2011. 11. 7. 09:46

hping
을 통해 사용자는 idle scan, land scan, stealth scan등 다양한 스캔을 통해 방화벽이 설치되어 있는 네트워크에서도 상대 호스트의 포트가 열려있는지 유무를 알 수 있다. 또한 패킷을 임의적으로 생성할 수 있으므로 활용범위가 상당히 넓다고 할 수 있다.

기존의 ping과 다른점은 ping은 UDP만을 사용하지만 hping은 TCP를 이용한다. 보통의 방화벽은 ping을 허용치 않기 위해 UDP를 블록해 놓지만 hping은 TCP를 이용하므로 이를 우회할 수 있다.

지금의 강좌는 Philippe Bogaerts의HPING Tutorial을 기준으로 작성하였으므로 내용이 모호한 점은 원문을 참조하기 바란다.

hping은 TCP를 이용하므로 여러가지 패킷을 전송하면서 네트워크의 스캔이 가능하다.
  • -F --fin set FIN flag
  • -S --syn set SYN flag
  • -R --rst set RST flag
  • -P --push set PUSH flag
  • -A --ack set ACK flag
  • -U --urg set URG flag
  • -X --xmas set X unused flag (0x40)
  • -Y --ymas set Y unused flag (0x80)
아시다시피(?) TCP는 SYN-ACK/SYN-ACK을 통해서 통신자간 신원확인(?)후 데이타 전송이 시작된다. 데이타 전송이 모두 끝나면 FIN을 통해 데이터전송을 종료하고, RST를 통해 전송을 재요청하게 된다. PUSH는 전송대기중인 패킷의 강제전송을 요청하게 된다. URG는 급할때 XMAS는 이 여러가지의 명령어들을 한꺼번에 요청하게 되서 송신자의 네트워크는 크리스마스트리처럼 반짝거린다고 해서 XMAS스캔이라고 한다.

[root@localhost root]# hping -I eth0 -S 192.168.10.1 -p 80
HPING 192.168.10.1 (eth0 192.168.10.1): S set, 40 headers + 0 data bytes
len=46 ip=192.168.10.1 flags=SA DF seq=0 ttl=64 id=11101 win=16080 rtt=2.7 ms
len=46 ip=192.168.10.1 flags=SA DF seq=1 ttl=64 id=11102 win=16080 rtt=2.4 ms
len=46 ip=192.168.10.1 flags=SA DF seq=2 ttl=64 id=11103 win=16080 rtt=2.4 ms

-I는 인터페이스를 나타내므로 그냥 eth0을 사용하면 되고 -S는 SYN스캔을 요청한 것이고, -p는 포트번호를 나타낸다. SA는 SYN/ACK를 나타내므로 192.168.10.1의 포트80은 열려있다고 보면 된다.

또한 ++기능을 통하여 포트번호를 하나씩 증가해가면서 스캔하게 된다.

[root@localhost root]# hping -I eth0 -S 192.168.10.1 -p ++79
HPING 192.168.10.1 (eth0 192.168.10.1): S set, 40 headers + 0 data bytes
len=46 ip=192.168.10.1 sport=79 flags=RA seq=0 ttl=255 id=17491 win=0 rtt=2.4 ms
len=46 ip=192.168.10.1 sport=80 flags=SA DF seq=1 ttl=64 id=17492 win=16080 rtt=3.1 ms len=46 ip=192.168.10.1 sport=81 flags=RA seq=2 ttl=255 id=17493 win=0 rtt=1.7 ms
len=46 ip=192.168.10.1 sport=82 flags=RA seq=3 ttl=255 id=17494 win=0 rtt=1.8 ms
len=46 ip=192.168.10.1 sport=83 flags=RA seq=4 ttl=255 id=17495 win=0 rtt=1.4 ms
len=46 ip=192.168.10.1 sport=84 flags=RA seq=5 ttl=255 id=17496 win=0 rtt=3.6 ms

또한 아래와 같이 모든 nmap의 기능들을 모두 사용 가능하다.

  • -s --baseport base source port (default random)
  • -p --destport [+][+] destination port(default 0) or ctrl+z inc/dec
  • -k --keep keep still source port -w --win winsize (default 64)
  • -O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4)
  • -Q --seqnum shows only tcp sequence number
  • -b --badcksum (try to) send packets with a bad IP checksum many systems will fix the IP checksum sending the packet you'll get bad UDP/TCP checksum instead.
  • -M --setseq set TCP sequence number -L --setack set TCP ack

nmap의 기능을 추가하여 네트워크의 스캔을 좀 더 효율적으로 수행할 수 있다.

[root@localhost root]# hping -I eth0 -M 3000 -SA 192.168.10.1 -p 80
HPING 192.168.10.1 (eth0 192.168.10.1): SA set, 40 headers + 0 data bytes
len=46 ip=192.168.10.1 flags=R seq=3000 ttl=255 id=11118 win=0 rtt=1.8 ms
len=46 ip=192.168.10.1 flags=R seq=3001 ttl=255 id=11119 win=0 rtt=1.9 ms
len=46 ip=192.168.10.1 flags=R seq=3002 ttl=255 id=11120 win=0 rtt=1.9 ms.

보시다시피 nmaphping을 효울적으로 사용하는데 있어 필수적인 지식이다. nmap이 command 스타일이라 적응하기 힘든 분들은 zenmap이라도 깔아서 간단한 스캔기능을 익히는게 많은 도움이 될 것이다.

본인이 네트워크에 대한 지식이 없다면 Elite Nabukadnezar의 becoming a hacker를 꼭 읽어보기 바란다.

내일은 hping을 통한 IDLE SCAN, LAND SCAN등 다양한 스캔의 방법을 알아보도록 하겠다.

'보안vs해킹' 카테고리의 다른 글

CEH Chap 4. Zenmap  (0) 2011.11.10
CEH Chap 3. hping - Attach.  (0) 2011.11.09
CEH Chap 2. hping - Idle scanning, ...  (0) 2011.11.08
BackTrack 5 백트랙 5 설치하기  (2) 2011.11.06
해킹의 5단계 from CEH  (2) 2011.11.05
Posted by 구텐모르겐
IT 이야기2009. 8. 29. 04:51
Nmap에 나온 모든 명령어들은 목표 호스트에 대해 알아보기 위한 것이다. 이에 대한 가장 간단한 방법은 해당 호스트의 IP 어드레스나 호스트이름을 넣는 것이다.


NMAP 'Gridsweep' Scan with Decoys


때로 우리는 인접한 모든 네트웍을 스캔해 보고 싶기도 한데 nmap은 CIDR형태의 주소형태를 이용한다. Nmap 이용시에 IP뒤에 /넘버 혹은 호스트 이름을 입력하면 자동으로 해당 주소를 검색하게 된다. 예를 들어 192.168.10.0/24는 192.168.10.0(바이너리:11000000 10101000 00001010 00000000) 192.168.10.255(바이너리:1100000000 10101000 00001010 11111111)부터 256개의 호스트를 검색하게 된다. 192.168.10.40/24도 정확히 같은 네트웍 대역을 스캔하게 된다. 또한 호스트 이름 scanme.nmap.org은 64.13.134.52라는 IP르르 가지고 있는데 scanme.nmap.org/16이라고 스캔하게 되면 64.13.0.0에서 64.13.255.255까지 총 65,536개의 IP를 스캔하게 된다. 가장 작은 값은 /0으로 표현되고 이는 전세계의 모든 네트웍을 스캔하게 될 것이고 가장 큰 값은 /32이고 이는 해당 호스트만을 스캔하게 될 것이다.

CIDR의 적용은 간단하지만 유용하지는 못하다. 예로써, 만약 당신이 192.168.0.0/16을 스캔하고 싶지만 .0과 .255가 broadcast나 서브넷으로 사용하고 있어 생략하고 싶을 때가 있다. Nmap은 octet range 어드레싱으로 이를 해결하고 있다. 일반적인 IP를 사용하기 보다는 콤마로 구분시켜 각 IP를 192.168.3.1, 192.168.4.1, 192.168.5.1, 192.168.6.1와 같이 적어주는 것이고 0과 255의 호스트는 생략된다. 또한 192.168.3-5,7.1이라고 하면 192.168.3.1, 192.168.4.1, 192.168.5.1 그리고 192.168.7.1이 스캔되게 된다. IP영역의 설정의 마지막 옥텟으로만 결정되는 것이 아니다. 0-255255.01-255.13.37이라고 하면 전세계에 있는 13.37으로 끝나는 모든 네트웍을 스캔하게 된다. 이러한 광범위한 스캔을 통해 nmap은 서베이나 리서치에 사용될 수 있다.

IPv6는 전체 주소를 써 주어야만 하고 CIDR은 사용될수 없으므로 nmap으로는 그다지 효용도가 높지 않다.

Nmap은 또한 여러개의 호스트를 옵션을 통해 서치할 수 있고 똑같은 포맷일 필요는 없다. 예를 들어 nmap scanme.nmap.org 192.168.0.0/8 10.0.0.1,3-7 과 같이 표현하면 된다.

대게 목표 호스트는 명령어에 입력해야 하지만 다음과 같이 목표 호스트를 정의해 줄수도 있다.

-iL (Input from list)
을 통해 자세한 내용을 알 수 있다. 거대한 네트웍을 스캔하는 것이 부담스러운 일이기도 하지만 또한 필요한 일이기도 하다. 예를 들어 DHCP서버가 분배한 10,000개의 호스트를 스캔하고 싶을 것이다. 혹은 인가받지 않은(unauthorized) 호스트들은 제외하고 스캔하고 싶을 것이다. 이럴땐 -iL옵션을 이용해서 스캔할 수 있고 IP 어드레스, 호스트 이름, CIDR, Ipv6, 옥텟 범위의 내용이 파일을 통해 저장되게 되고 각각의 값은 스페이스, 탭 혹은 새로운 줄로 분류된다. 하이픈(-)을 이용해서 입력하게 되면 일반적인 파일의 형태가 아닌 nmap의 표준 형태로 입력할 수 있기도 하다.

-iR (무작위 탐색)
인터넷 관련 서베이나 리서치를 한다면 아마도 임의로 목표 호스트를 설정하고 싶을 것이다. 은 생성할 IP어드레스의 갯수를 나타내고 사설IP, 멀티케스트 그리고 할당되지 않은 IP에 대해서는 생략될 것이다. 0을 입력하면 영원히 스캔을 멈추지 않을 것이다. 만약 이것을 사용하면 다른 네트웍 관리자가 불평할지도 모르니 조심히 사용해야 한다. 만약 당신이 정말로 지루한 하루를 보내고 있다면nmap -sS -PS80 -iR 0 -p 80과 같은 스캔을 통해 무작위적으로 웹서버를 탐험하게 될 것이다.

--exclude [,[,...]] (열외)
콤마로 구분되는 IP나 호스트 이름들은 스캔에서 제외된다. 이것은 일반적인 스캔 방식이므로 CIDR이나 옥텟방식으로의 나열이 가능하다. 이 옵션을 통해 우리는 중요한 임무를 하고 있는 서버를 건들지 않도록 하게 할 수 있다.

--excludefile (파일을 통해 열외 나열)
--exclude 와 같은 옵션이지만 이는 해당 파일을 통해 읽어들이게 되고 호스트들은 콤마, 스페이스, 탭 등으로 나뉘어져 있다.

원문링크:http://nmap.org/book/man-target-specification.html
Posted by 구텐모르겐