Nmap 是当今最顶尖的网络审计工具之一,在国外已经被大量的网络安全所使用,甚至在一些电影电视中,它都会大显身手。最有影响力的就是《黑客帝国》,在《黑客帝国2》中,就曾使用Nmap攻击 ssh 服务从而破坏了发电厂的工作。当然,攻击只是 Nmap 的副业,扫描才是Nmap的主要功能。
看下图,Nmap扫的 IP 地址是局域网地址,意味着攻击机已经和被攻击的机器在同一网段了。这里只是简单的扫出开放了 ssh 的端口,就被后面的 sshnuke 工具给破解了,直接替换掉了 该系统root的密码。不过我没有查到sshnuke这个工具,估计是虚构。当然暴力破解密码的工具有很多,我会在 hydra 工具这一章节再讲暴力破解密码。
目前 Nmap 具备以下主要功能
a) 主机发现功能
b) 端口扫描功能
c) 服务以及版本检测功能
d) 操作系统检测功能。
除此之外,Nmap还可以实现一些高级的审计技术,如伪造发起扫描端的身份,进行隐蔽的扫描,规避目标的防御设备(例如防火墙),对于系统进行安全漏洞检测并提供完善的报告选项等。
在后来,随着Nmap强大的脚本引擎NSE的推出,任何人都可以自己向Nmap中添加新的功能模块。
Nmap对主机进行发现
1. 指定无论目标是否相应Ping扫描,都要将整个扫描过程完成。
语法规则:nmap -PN <目标主机>
2.仅使用Ping协议进行主机发现。有时候要对大量的主机进行扫描,如果同时对上万台计算机进行扫描,当然这种情况很少,但如果采用Ping扫描方式会节省很多时间
语法规则: nmap -sP <目标主机>
3.使用ARP协议进行主机发现,当目标主机和我们出于同一个网段时候,使用ARP协议扫描技术就是最佳的选择,不仅仅速度最快,扫描结果也最为精准,因为没有任何安全措施会阻止正常的ARP请求。
语法规则: nmap -PR <目标主机>
请大家注意这一点,做渗透测试时候用-PR非常有效。
4.使用TCP协议进行主机发现。由于三次握手中最后一步在主机发现中意义不大,所以这一步可以完成也可以不完成。如果完成称之为全开Connect扫描,如果这一步不完成的话,一般称之为半开SYN扫描
Nmap 半开扫描:nmap -sS <目标主机> //使用最频繁,安全,快
Nmap 全开扫描:nmap -sT <目标主机> //不安全,慢
5.使用UDP协议进行主机发现,UDP协议相比TCP简单,但是进行扫描时候,并不如TCP协议方便,而且花费的时间很差,因此这种扫描方式并不常用
Nmap UDP协议扫描:nmap -sU <目标主机>
6.其余如空闲扫描-sI //使用僵尸机对目标机发送数据包等等
Nmap对主机进行扫描
1. 对单个主机的扫描,在命令行中输入namp <目标主机>
结果第一行指出Nmap的版本号,第二行指出关于 <目标主机>的报告
第三给给出 <目标主机>的状态为up,意味着这台主机是出于开机并且连上了互联网的状态,第四行表示在检查的1000个端口中,有多少给是关闭或者filtered的状态。再下面是表格,每一行有三个字段,分别是Port、STATE、SERVICE,即 <目标主机>上的端口号,端口状态,和运行的服务
a) 扫描全部端口 即对 65535 个端口进行扫描
nmap -p “*” <目标主机>
b) 扫描前n个端口
nmap --top-ports n <目标主机>
2.对多个不连续的主机进行扫描:
nmap <目标主机1> <目标主机2> <目标主机3>
3.对多个连续的主机进行扫描: nmap 192.168.168.1-255
4.对整个子网主机进行扫描,Nmap支持使用CIDR的方式进行扫描整个子网
在命令行中输入nmap 192.168.168.1/24
5. 将Nmap的扫描结果保持为XML文件:nmap -X <目标主机>
Nmap 能使用脚本进行扫描,这简直是如虎添翼。
nmap脚本(nse)主要分为以下几类,在扫描时可根据需要设置--script=类别这种方式进行比较笼统的扫描:
![](https://img-blog.csdnimg.cn/20210806141900277.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3MDEyNzQ=,size_16,color_FFFFFF,t_70)