第1章 Nmap基础学习

本章知识点

本章节将介绍在几大主流平台中如何安装Nmap,并介绍多种安装方式,通过对每一步的演示进行解说,让初学者可以很快地掌握安装Nmap技巧,以及如何简单地使用Nmap扫描一个目标地址、一个IP段,从而迈入Nmap渗透测试的大门。

本章选项

表1.1 第一章所需选项

选  项

解  释

-A

全面扫描/综合扫描

Nmap的英文全称是“Network Mapper”,中文为“网络映射器”。Nmap是一款开放源代码的网络探测和安全审核的工具,它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,这些主机提供什么服务(应用程序名和版本),服务运行在什么操作系统(包括版本信息),它们使用什么类型的报文过滤器/防火墙,以及一些其他功能。虽然Nmap通常用于安全审核,许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息、管理服务升级计划,以及监视主机和服务的运行。

Nmap的基本功能有3个,一是探测一组主机是否在线,其次是扫描主机端口,嗅探所提供的网络服务,还可以推断主机所用的操作系统。Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的Ping操作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所使用的操作系统;还可以将所有探测结果记录到各种格式的日志中,供进一步分析操作。

Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。Filtered(被过滤的)意味着防火墙,过滤器或者其他网络障碍阻止了该端口被访问,Nmap无法得知它是Open(开放的)还是Closed(关闭的)。Closed(关闭的)端口上面没有应用程序监听,但是它们随时可能开放。

Nmap——Script功能的使用。在Nmap的安装目录的share/nmap/scripts中,已经有多种写好的脚本提供,使用这些脚本可以轻易地发起渗透测试。

Nmap可以运行在所有的Windows NT版本中,包括Windows 2000、Windows XP、Windows 2003、Windows Vista、Windows 7等。

在浏览器中打开网址“http://nmap.org/download.html ”,在Microsoft Windows binaries中选择下载。

下载完毕后双击安装文件即可安装。

如图1.1所示,阅读Nmap许可协议,点击“I Agree”进行下一步安装。

1

▲图1.1 Nmap许可协议

如图1.2所示,选择所需要安装的组建,如果不需要安装某些组件可以勾选掉,一般默认安装所有组件,确实无误后点击“Next”进行下一步安装。

2

▲图1.2 Nmap组件选择

如图1.3所示,选择Nmap安装路径,一般保持默认即可。

3

▲图1.3 Nmap安装路径

如图1.4所示,Nmap正在安装中。

4

▲图1.4 Nmap安装

如图1.5所示,在Nmap安装过程中会弹出对话框,询问某些组件的许可协议,选择“I Agrree”进行安装。

5

▲图1.5 Nmap组件许可

如图1.6所示,选择“Next”进行下一步安装。

6

▲图1.6 Nmap安装

如图1.7所示,选择您所需要的选项,点击“Next”进行下一步。

7

▲图1.7 Nmap选项选择

如图1.8所示,点击“Finish”完成安装。

8

▲图1.8 Nmap安装完成

在如图1.9所示的对话框中选择创建快捷方式,这里保持默认,点击“Next”进行下一步安装。

9

▲图1.9 Nmap创建快捷方式

如图1.10所示,点击“Finish”完成安装。

8

▲图1.10 Nmap安装完成

在Linux/Unix中我们可以很方便地通过源码编译安装Nmap,首先在“http://nmap.org/ download.html ”中选择源码进行下载。下载完毕后首先解压压缩包。

root@ubuntu:/home# bzip2 -cd nmap-6.46.tar.bz2 | tar xvf -
nmap-6.46/zenmap/zenmapCore/I18N.py
nmap-6.46/zenmap/zenmapCore/Version.py
nmap-6.46/zenmap/zenmapCore/Paths.py
nmap-6.46/zenmap/COPYING_HIGWIDGETS
…省略…
root@ubuntu:/home#

切换到Nmap目录进行编译。

root@ubuntu:/home# cd nmap-6.46
root@ubuntu:/home/nmap-6.46# ./configure
…省略…
checking whether we are using the GNU C++ compiler... no
checking whether g++ accepts -g... no
no
configure: creating ./config.status
config.status: creating Makefile
config.status: WARNING: 'Makefile.in' seems to ignore the --datarootdir setting
config.status: creating config.h
      .    .
      \`-"'"-'/
       } 6 6 {
      ==. Y ,==
       /^^^\ .
       /   \ ) Ncat: A modern interpretation of classic Netcat
      ( )-( )/
      -""---""---  /
      /  Ncat  \_/
     (   ____
      \_.=|____E
Configuration complete.
  ( )  /\  _         (
  \ | ( \ ( \.(        )           _____
 \ \ \ ` `  ) \       ( ___         / _  \
 (_`  \+  . x ( .\      \/  \____-----------/ (o)  \_
- .-        \+ ;     ( O              \____

(__        +- .( -'.- <.  \_____________ `       \ /
(_____      ._._: <_ - <- _- _ VVVVVVV VV V\        \/
 .  /./.+- . .- / +-- - .  (--_AAAAAAA__A_/        |
 (__ ' /x / x _/ (        \______________//_       \_______
 , x / ( ' . / . /                 \___'     \   /
  / / _/ /  +                    |      \  /
  ' (__/                        /       \/
                            /         \
       NMAP IS A POWERFUL TOOL -- USE CAREFULLY AND RESPONSIBLY
Configuration complete. Type make (or gmake on some *BSD machines) to compile.
root@ubuntu:/home/nmap-6.46# make
root@ubuntu:/home/nmap-6.46# make install

编译完成后就可以使用Nmap进行渗透测试。

http://nmap.org/download.html 页面下载RPM安装包,查看一下RPM安装包并安装。

root@ubuntu:~# cd /home/
root@ubuntu:/home# ls
apache nmap-6.46-1.i386.rpm
root@ubuntu:/home# rpm -ivh nmap-6.46-1.i386.rpm

http://nmap.org/download.html 页面下载Mac OS版本的DMG文件,下载完毕后进行安装。

图1.11所示为Nmap的介绍页面,点击“继续”进行下一步。

11

▲图1.11 Nmap介绍

阅读如图1.12所示的许可协议,点击“继续”进行下一步安装。

12

▲图1.12 Nmap许可协议

如图1.13所示,安装程序进行许可协议的再次确认,点击“同意”进行下一步。

13

▲图1.13 Nmap许可协议

如图1.14所示,选择您所需要的组件,在一般情况下保持默认即可。

14

▲图1.14 Nmap组件选择

如图1.15所示,确认有充足的空间安装Nmap,点击“安装”。

17

▲图1.15 确认安装空间

如图1.16所示,看到此页面则表示安装成功。

18

▲图1.16 Nmap安装完成

如图1.17所示,在Shell终端中输入Nmap命令可以成功打开Nmap并使用。至此在Mac OS下的安装就已经完成。

19

▲图1.17 Nmap在MAC OS下使用

 

Mac OS的安全体系默认不允许安装非安全认证的软件,这需要在系统偏好设置——安全性与隐私当中将“允许从以下位置下载的应用程序”更改为“任何来源”,即可自由安装第三方软件。

Nmap使用TCP/IP协议栈指纹准确地判断目标主机的操作系统类型,Nmap工作原理如表1.2所示。

表1.2 Nmap TCP/IP协议栈指纹

测  试

描  述

T1

发送TCP数据包(Flag=SYN)到开放TCP端口

T2

发送一个空的TCP数据包到开放的TCP端口

T3

发送TCP数据包(Flag=SYN,URG,PSH,FIN)到开放的TCP端口

T4

发送TCP数据包(Flag=ACK)到开放的TCP端口

T5

发送TCP数据包(Flag=SYN)到关闭的TCP端口

T6

发送TCP数据包(Flag=ACK)到开放的TCP端口

T7

发送TCP数据包(Flag=URG,PSH,FIN)到关闭的TCP端口

如表1.2所示,Nmap对目标主机进行一系列的测试,利用测试结果建立相应目标主机的Nmap指纹,然后Nmap会对指纹进行匹配,最终输出相应的结果。

我们在使用Nmap的时候大多是在命令行下进行的,即使是使用可视化Zenmap也是需要遵循Nmap固定的语法格式的。Nmap的固定语法格式如下:

Nmap【空格】【选项|多选项|协议】【空格】【目标】

其中,选项与多选项之间也是用空格进行分割的,如果某些选项需要指定某些数据,那么在这些选项与指定的数据之间也需要用空格进行分割。

 

所有的选项与命令以及选项参数都是用空格进行分割的,有时候选项与参数直接可以不用空格分割,如-p80,-p是选项,80是参数。为了使Nmap语法更加严谨,建议严格按照空格进行分割。

表1.3 本小节所需选项

选  项

解  释

-A

全面扫描/综合扫描

Nmap全面扫描的选项是-A,它可以全面扫描指定IP或域名的所有端口及其目标系统信息等,这需要花费点时间等待Nmap的扫描。

root@Wing:~# nmap -A 192.168.126.131

Starting Nmap 6.40 ( http://nmap.org

 ) at 2014-06-12 15:43 CST
Nmap scan report for 192.168.126.131
Host is up (0.00040s latency).
Not shown: 977 closed ports
PORT   STATE SERVICE   VERSION
21/tcp  open ftp     vsftpd 2.3.4  #FTP服务商是vsftpd,版本是2.3.4


|_ftp-anon: Anonymous FTP login allowed (FTP code 230) #允许匿名登录


22/tcp  open ssh     OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0) #SSH供应商是OpenSSH 版本是4.7


| ssh-hostkey: 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)#秘钥


|_2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
23/tcp  open telnet   Linux telnetd  #Telnet服务


25/tcp  open smtp    Postfix smtpd  #Smtp服务


|_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, 
| ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/ stateOrProvinceName=There is no such thing outside US/countryName=XX
| Not valid before: 2010-03-17T14:07:45+00:00
|_Not valid after: 2010-04-16T14:07:45+00:00
|_ssl-date: 2014-06-10T10:00:54+00:00; -1d21h42m30s from local time.
53/tcp  open domain   ISC BIND 9.4.2  #DNS服务端口


| dns-nsid: 
|_ bind.version: 9.4.2           
80/tcp  open http    Apache httpd 2.2.8 ((Ubuntu) DAV/2)  #HTTP服务


|_http-methods: No Allow or Public header in OPTIONS response (status code 200)
|_http-title: Metasploitable2 - Linux
111/tcp open rpcbind   2 (RPC #100000)  #RPC服务


| rpcinfo:                    #RPC服务详细信息


|  program version  port/proto service
|  100000 2      111/tcp rpcbind
|  100000 2      111/udp rpcbind
|  100003 2,3,4    2049/tcp nfs
|  100003 2,3,4    2049/udp nfs
|  100005 1,2,3   40529/tcp mountd
|  100005 1,2,3   43983/udp mountd
|  100021 1,3,4   41255/tcp nlockmgr
|  100021 1,3,4   55723/udp nlockmgr
|  100024 1     35526/tcp status
|_ 100024 1     50609/udp status
139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) #Samba版本为5.X


445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) #Samba版本为5.X


512/tcp open exec    netkit-rsh rexecd
513/tcp open login?
514/tcp open tcpwrapped
1099/tcp open rmiregistry GNU Classpath grmiregistry
|_rmi-dumpregistry: Registry listing failed (No return data received from server)
1524/tcp open shell    Metasploitable root shell
2049/tcp open nfs     2-4 (RPC #100003)
2121/tcp open ftp     ProFTPD 1.3.1
3306/tcp open mysql    MySQL 5.0.51a-3ubuntu5
| mysql-info: Protocol: 10
| Version: 5.0.51a-3ubuntu5
| Thread ID: 21
| Some Capabilities: Connect with DB, Compress, SSL, Transactions, Secure Connection
| Status: Autocommit
|_Salt: fRHP:oB9:Tvy|$:6@}uU
5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp open vnc     VNC (protocol 3.3)
| vnc-info: 
|  Protocol version: 3.3
|  Security types:
|_  Unknown security type (33554432)
6000/tcp open X11     (access denied)
6667/tcp open irc     Unreal ircd
| irc-info: 
|  server: irc.Metasploitable.LAN
|  version: Unreal3.2.8.1. irc.Metasploitable.LAN 
|  servers: 1
|  users: 1
|  lservers: 0
|  lusers: 1
|  uptime: 0 days, 23:24:39
|  source host: A5B014C0.D9689365.FFFA6D49.IP
|_ source ident: nmap
8009/tcp open ajp13    Apache Jserv (Protocol v1.3)
|_ajp-methods: Failed to get a valid response for the OPTION request
8180/tcp open http    Apache Tomcat/Coyote JSP engine 1.1
|_http-favicon: Apache Tomcat
|_http-methods: No Allow or Public header in OPTIONS response (status code 200)
|_http-title: Apache Tomcat/5.5
MAC Address: 00:0C:29:E0:2E:76 (VMware)    #目标主机MAC地址


Device type: general purpose          #设备类型


Running: Linux 2.6.X               #目标主机操作系统


OS CPE: cpe:/o:linux:linux_kernel:2.6     #目标主机中央处理单元


OS details: Linux 2.6.9 - 2.6.33        #目标主机详细资料


Network Distance: 1 hop             #网络距离


Service Info: Hosts: metasploitable.localdomain, localhost, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_nbstat: NetBIOS name: METASPLOITABLE, NetBIOS user: , NetBIOS MAC: 
| smb-os-discovery:                #SMB系统发现


|  OS: Unix (Samba 3.0.20-Debian)       #操作系统为Unix,Samba版本为2.0.20


|  NetBIOS computer name:           #NetBIOS计算机名称


|  Workgroup: WORKGROUP            #所在工作组


|_ System time: 2015-06-10T06:00:51-04:00   #系统时间



TRACEROUTE
HOP RTT   ADDRESS
1  0.41 ms 192.168.126.131

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 26.21 seconds
root@Wing:~# 


全面扫描又称作综合扫描,是一种完整扫描目标信息的扫描方式。

在Nmap中我们可以指定扫描一个C段,这个功能不需要其他额外的选项,只需要使用“-”进行连接。

root@Wing:~# nmap 192.168.126.1-200

Starting Nmap 6.40 ( http://nmap.org

 ) at 2014-06-12 15:45 CST
Nmap scan report for 192.168.126.1
Host is up (0.00039s latency).
All 1000 scanned ports on 192.168.126.1 are filtered
MAC Address: 00:50:56:C0:00:08 (VMware)

Nmap scan report for 192.168.126.2
Host is up (0.00053s latency).
All 1000 scanned ports on 192.168.126.2 are closed
MAC Address: 00:50:56:F1:06:20 (VMware)

Nmap scan report for 192.168.126.131
Host is up (0.00039s latency).
Not shown: 977 closed ports
PORT   STATE SERVICE
21/tcp  open ftp
22/tcp  open ssh
23/tcp  open telnet
25/tcp  open smtp
53/tcp  open domain
80/tcp  open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
MAC Address: 00:0C:29:E0:2E:76 (VMware)

Nmap scan report for 192.168.126.130
Host is up (0.0000040s latency).
All 1000 scanned ports on 192.168.126.130 are closed

Nmap done: 200 IP addresses (4 hosts up) scanned in 5.71 seconds
root@Wing:~#