利器:网络扫描和嗅探工具——nmap


转自: Nmap 使用基础教程(nmap V. 2.12 )
感谢博主分享。

nmap命令是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。

安装Nmap

版本Nmap 6.40,与原博客2.12版本不同,注意区别

yum install -y nmap

常用功能

1. Ping扫描(Ping Sweeping)

入侵者使用Nmap扫描整个网络寻找目标。通过使用" -sP"命令,进行ping扫描。缺省情况下,Nmap给每个扫描到的主机发送一个ICMP echo和一个TCP ACK, 主机对任何一种的响应都会被Nmap得到。

一个TCP"ping"将发送一个ACK到目标网络上的每个主机。网络上的主机如果在线,则会返回一个TCP RST响应。使用带有ping扫描的TCP ping选项,也就是"PT"选项可以对网络上指定端口进行扫描(本文例子中指的缺省端口是80(http)号端口),它将可能通过目标边界路由器甚至是防火墙。注意,被探测的主机上的目标端口无须打开,关键取决于是否在网络上。

[root@localhost ~]# nmap -sP -PT80 192.168.60.0/24
Starting Nmap 6.40 ( http://nmap.org ) at 2018-05-31 23:19 CST
Nmap scan report for 192.168.60.1
Host is up (0.00021s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.60.2
Host is up (0.000091s latency).
MAC Address: 00:50:56:FB:FD:53 (VMware)
Nmap scan report for 192.168.60.109
Host is up (0.00014s latency).
MAC Address: 00:0C:29:DA:54:2B (VMware)
Nmap scan report for 192.168.60.101
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 1.87 seconds

当潜在入侵者发现了在目标网络上运行的主机,下一步是进行端口扫描。
Nmap支持不同类别的端口扫描TCP连接, TCP SYN, Stealth FIN, Xmas Tree,Null和UDP扫描。

2. 端口扫描(Port Scanning)

一个攻击者使用TCP连接扫描很容易被发现,因为Nmap将使用connect()系统调用打开目标机上相关端口的连接,并完成三次TCP握手。黑客登录到主机将显示开放的端口。一个tcp连接扫描使用"-sT"命令如下。

[root@localhost ~]# nmap -sT 192.168.60.109
Starting Nmap 6.40 ( http://nmap.org ) at 2018-06-01 00:32 CST
Nmap scan report for 192.168.60.109
Host is up (0.00041s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
MAC Address: 00:0C:29:DA:54:2B (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds

3. 隐蔽扫描(Stealth Scanning)

如果一个攻击者不愿在扫描时使其信息被记录在目标系统日志上,TCP SYN扫描可帮你的忙,它很少会在目标机上留下记录,三次握手的过程从来都不会完全实现。通过发送一个SYN包(是TCP协议中的第一个包)开始一次SYN的扫描。任何开放的端口都将有一个SYN|ACK响应。然而,攻击者发送一个RST替代ACK,连接中止。三次握手得不到实现,也就很少有站点能记录这样的探测。如果是关闭的端口,对最初的SYN信号的响应也会是RST,让NMAP知道该端口不在监听。"-sS"命令将发送一个SYN扫描探测主机或网络:

root@debian:~# tailf /var/log/syslog
...
May 31 04:46:47 debian in.ftpd[10446]: warning: can't get client address: Connection reset by peer
May 31 04:46:47 debian in.ftpd[10446]: connect from unknown (unknown)
May 31 04:46:47 debian ftpd[10446]: getpeername (in.ftpd): Transport endpoint is not connected
#使用-sT,对方系统会记录被扫描的日志

虽然SYN扫描可能不被注意,但他们仍会被一些入侵检测系统捕捉。Stealth FIN,Xmas树和Null scans可用于躲避包过滤和可检测进入受限制端口的SYN包。这三个扫描器对关闭的端口返回RST,对开放的端口将吸收包。一个 FIN “-sF"扫描将发送一个FIN包到每个端口。
然而Xmas扫描”-sX"打开FIN, URG和PUSH的标志位,一个Null scans "-sN"关闭所有的标志位。因为微软不支持TCP标准,所以FIN, Xmas Tree和Null scans在非微软公司的操作系统下才有效。

4. UDP扫描(UDP Scanning)

如果一个攻击者寻找一个流行的UDP漏洞,比如 rpcbind漏洞或cDc Back orifice。为了查出哪些端口在监听,则进行UDP扫描,即可知哪些端口对UDP是开放的。Nmap将发送一个O字节的UDP包到每个端口。如果主机返回端口不可达,则表示端口是关闭的。但这种方法受到时间的限制,因为大多数的UNIX主机限制ICMP错误速率。幸运的是,Nmap本身检测这种速率并自身减速,也就不会产生溢出主机的情况。

[root@localhost ~]# nmap -sU www.abcdocker.com

Starting Nmap 6.40 ( http://nmap.org ) at 2018-05-31 17:40 CST
Nmap scan report for www.abcdocker.com (59.110.69.51)
Host is up (0.0035s latency).
Not shown: 999 open|filtered ports
PORT    STATE SERVICE
123/udp open  ntp

Nmap done: 1 IP address (1 host up) scanned in 4.13 seconds

5. 操作系统识别(OS Fingerprinting)

通常一个入侵者可能对某个操作系统的漏洞很熟悉,能很轻易地进入此操作系统的机器。一个常见的选项是TCP/IP上的指纹,带有"-O"选项决定远程操作系统的类型。这可以和一个端口扫描结合使用,但不能和ping扫描结合使用。Nmap通过向主机发送不同类型的探测信号,缩小查找的操作系统系统的范围。指纹验证TCP包括使用FIN探测技术发现目标机的响应类型。BOGUS的标志探测,发现远程主机对发送的带有SYN包的不明标志的反应,TCP 初始序列号(ISN)取样发现ISN数值的样式,也可以用另外的方式决定远程操作系统。
有一篇权威的关于指纹(fingertprinting)的文章,作者:Fyodor,也是namp的作者,参见地址:http://www.insecure.org/nmap/nmap-fingerprinting-article.html

[root@localhost ~]# nmap -sS -O www.abcdocker.com

Starting Nmap 6.40 ( http://nmap.org ) at 2018-05-31 17:37 CST
Nmap scan report for www.abcdocker.com (59.110.69.51)
Host is up (0.13s latency).
Not shown: 988 closed ports
PORT     STATE    SERVICE
80/tcp   open     http
81/tcp   open     hosts2-ns
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
443/tcp  open     https
445/tcp  filtered microsoft-ds
514/tcp  filtered shell
593/tcp  filtered http-rpc-epmap
2222/tcp open     EtherNet/IP-1
3306/tcp open     mysql
4444/tcp filtered krb524
8080/tcp open     http-proxy
Device type: general purpose|storage-misc|VoIP phone
Running (JUST GUESSING): Linux 2.4.X|3.X (98%), Microsoft Windows 7|XP (96%), BlueArc embedded (91%), Pirelli embedded (88%)
OS CPE: cpe:/o:linux:linux_kernel:2.4 cpe:/o:linux:linux_kernel:3 cpe:/o:microsoft:windows_7:::enterprise cpe:/o:microsoft:windows_xp::sp3 cpe:/h:bluearc:titan_2100 cpe:/h:pirelli:dp-10
Aggressive OS guesses: DD-WRT v24-sp2 (Linux 2.4.37) (98%), Linux 3.2 (98%), Microsoft Windows 7 Enterprise (96%), Microsoft Windows XP SP3 (96%), BlueArc Titan 2100 NAS device (91%), Pirelli DP-10 VoIP phone (88%)
No exact OS matches for host (test conditions non-ideal).

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 51.68 seconds

6. Ident扫描(Ident Scanning)

一个攻击者常常寻找一台对于某些进程存在漏洞的电脑。比如,一个以root运行的WEB服务器。如果目标机运行了identd,一个攻击者使用Nmap通过"-I"选项的TCP连接,就可以发现哪个用户拥有http守护进程。我们将扫描一个Linux WEB服务器为例:

[root@localhost ~]# nmap -sT -p 80 -I -O www.abcdocker.com
WARNING: identscan (-I) no longer supported.  Ignoring -I

Starting Nmap 6.40 ( http://nmap.org ) at 2018-05-31 17:34 CST
Nmap scan report for www.abcdocker.com (59.110.69.51)
Host is up (0.014s latency).
PORT   STATE SERVICE
80/tcp open  http
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|storage-misc|VoIP phone
Running (JUST GUESSING): Linux 2.4.X|3.X (99%), Microsoft Windows XP|7 (96%), BlueArc embedded (93%), Pirelli embedded (89%)
OS CPE: cpe:/o:linux:linux_kernel:2.4 cpe:/o:linux:linux_kernel:3 cpe:/o:microsoft:windows_xp::sp3 cpe:/o:microsoft:windows_7:::enterprise cpe:/h:bluearc:titan_2100 cpe:/h:pirelli:dp-10
Aggressive OS guesses: DD-WRT v24-sp2 (Linux 2.4.37) (99%), Linux 3.2 (99%), Microsoft Windows XP SP3 (96%), Microsoft Windows 7 Enterprise (95%), BlueArc Titan 2100 NAS device (93%), Pirelli DP-10 VoIP phone (89%)
No exact OS matches for host (test conditions non-ideal).

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 3.85 seconds

7. 其他功能选项

除了以上这些扫描,Nmap还提供了无数选项。有一个是-PT,我们已经介绍过了。在目标机或网络上常见的未经过滤的端口,进行TCP "ping"扫描。

另一个选项是-P0。在缺省设置下试图扫描一个端口之前,Nmap将用TCP ping" 和 ICMP echo命令ping一个目标机,如果ICMP 和TCP的探测扫描得不到响应,目标主机或网络就不会被扫描,即使他们是运行着的。而-P0选项允许在扫描之前不进行ping,直接进行扫描。

你应该习惯使用-v 选项,它详细列出所有信息,能和所有的扫描选项一起使用。你能反复地使用这个选项,获得有关目标机的更多信息。
使用-p 选项,可以指定扫描端口。比如 ,攻击者想探测你的web服务器的ftp(port 21),telnet (port 23), dns (port 53), http (port 80),想知道你所使用的操作系统,它将使用SYN扫描。

# nmap -sS -p 21,23,53,80 -O -v www.yourserver.com 

小结

使用什么样的方法来抵制一个黑客使用Nmap,这样的工具是有的,比如 Scanlogd, Courtney, and Shadow;,然而使用这样的工具并不能代替网络安全管理员。因为扫描只是攻击的前期准备,站点使用它只可以进行严密的监视。
使用Nmap监视自己的站点,系统和网络管理员能发现潜在入侵者对你的系统的探测。

资料参考

  1. Nmap参考指南中文版
    感谢Fei Yang和Lei Li翻译英文原版。
posted @ 2018-05-31 14:57  M1927  阅读(157)  评论(0编辑  收藏  举报