之前阅读了李华峰的《Nmap网络安全审计技术揭秘》,主要学习了一下常用的命令,nse脚本.现在整一下笔记.
Nmap简介
网络安全人员经常使用的一个神奇就是Nmap,是一个全方面的安全和网络工具组件.主要的功能:
(1)主机发现功能: 判断目标是否处于开机并连接到网络的状态.
(2)端口扫描: 判断目标端口是否开放.
(3)服务及版本检测: 判断运行服务的服务类型和版本.
(4)操作系统检测: 判断目标的操作系统类型和版本.
还可以实现一些高级审计技术,例如伪造发起扫描端的身份,进行隐蔽扫描,规避目标的安全防御设备(如防火墙),对系统进行安全漏洞检测等.还有强大的NSE脚本.
基本操作
1.Nmap <目标地址>
1 | Nmap 192.168.0.1 |
2.扫描范围的确定
(1)对连续范围内的主机内进行扫描
1 | Nmap -sn 192.168.0.1-255 |
(2)对整个子网进行扫描
1 | Nmap -sn 192.168.0.1/24 |
(3)对多个不连续的主机进行扫描
1 | Nmap -sn 192.168.0.1 192.168.0.2 192.168.0.3 |
(4)在扫描时排除指定的目标
命令语法: Nmap <目标> –exclude <目标>
1 | Nmap -sn 192.168.0.0/24 --exclude 192.168.0.2 |
(5)对一个文本文件中的地址列表进行扫描
命令语法: Nmap -iL <文本文件>
1 | Nmap -sn -iL List.txt |
List.txt示例:
1 | 192.168.0.1 |
(6)随机确定扫描目标
Nmap -iR <目标数量>
1 | Nmap -sn -iR 3 |
主机发现
(1)使用ARP协议进行主机发现
命令语法:Nmap -PR <目标>
1 | Nmap -sn -PR 192.168.0.1 |
(2)使用ICMP协议进行主机发现
1 | # 通过ICMP响应请求和应答进行主机发现 |
(3)使用TCP协议进行主机发现
1 | # SYN扫描 |
(4)使用UDP进行主机发现
1 | Nmap -sn -PU 192.168.0.1 |
(5)使用SCTP进行主机发现
1 | Nmap -sn -PY 192.168.0.1 |
(6)使用IP协议进行主机发现
Nmap允许向目标主机发送IP数据包来检测目标主机是否活跃,理论上可以使用的协议多达上百个,如果不指定的话,Nmap默认使用ICMP(IP协议编号1),IGMP(IP协议编号2)和IP-in-IP(IP协议编号4)三个协议.另外也可以用-PO来指定所要使用协议的编号,默认的IP扫描方式:
1 | Nmap -sP -PO 192.168.0.1 |
如果希望使用TCP和UDP,可使用
1 | Nmap -sP -PO 6,17 192.168.0.1 |
另外这种情形发送的数据包内容都是空的,容易被检测出来,可以使用–data-length参数来发送添加了随机数据的数据包.
(7)DNS选项
不想在自己的DNS器中留下这次查询的记录,可以使用–dns-servers参数.命令语法:
Nmap –dns-servers [server1, server2,etc] <目标>
1 | Nmap --packet-trace -R --dns-servers 202.99.160.68 192.168.0.1 |
端口扫描
1.端口状态定义:
open: 表明在该端口有应用程序接收TCP连接或者UDP报文;
closed: closed不意味着没有任何反应,状态为closed的端口是可访问的,可以接收Nmap探测报文并做出响应.相比较而言,没有应用程序在open上监听.
filtered: Nmap无法确定该端口是否开放,因为探测数据包被路由器,防火墙等设备或者工具过滤掉了.
2.各种端口扫描:
(1)SYN扫描
是最流行的扫描方式,也是默认的扫描方式,扫描速度极快,也不容易被网络中安全设备发现.
1 | Nmap -sS 192.168.0.1 |
(2)Connect扫描
类似SYN扫描,完成TCP三次握手,无须root或者administrator权限
1 | Nmap -sT 192.168.0.1 |
(3)UDP扫描
UDP应答状态:
open: 从目标端口得到任意UDP应答
open|filtered: 如果目标主机没有给出应答
closed: ICMP端口无法抵达错误
filtered: ICMP无法抵达错误
1 | Nmap -sU 192.168.0.1 |
(4)TCP FIN扫描
按照RFC 793规定,对于所有关闭的端口,目标系统应该返回RST标志.
1 | Nmap -sF 192.168.0.1 |
(5)TCP NULL扫描
1 | Nmap -sN 192.168.0.1 |
(6)Xmas Tree扫描
扫描方法是向目标端口发送一个含有FIN,URG和PUSH标志的数据包.
1 | Nmap -sX 192.168.0.1 |
(7)扫描指定的端口
-F: 扫描常见的100端口
1 | Nmap -F 192.168.0.1 |
-p: 指定某一个端口
1 | Nmap -p 80 192.168.0.1 |
-p: 使用名字来指定扫描端口
1 | namp -p smtp,http 192.168.0.1 |
-p:U:,T: 使用协议指定扫描端口
1 | nmap -sU -sT -p U:53,T:25 192.168.0.1 |
-p *: 扫描所有端口
1 | Nmap -p * 192.168.0.1 |
–top-ports: 扫描常用的端口
1 | Nmap --top-ports 10 192.168.0.1 |
大概基础的就是这些,还有一些操作在Zenmap中进行配置时查看语法解释,后面有时间会记录一下学习NSE脚本的过程.