网络发现与安全监控工具nmap
阅读数:180 评论数:0
跳转到新版页面分类
hacker
正文
一、简介
nmap全称是Network Mapper,是一个免费开源软件,它可以利用原始的IP包来判断网络上哪些主机是可达的,这些可达的主机开放了哪些服务(应用程序名和版本),主机的操作系统是什么,使用的防火墙是什么类型的等。
它还提供防火墙规避和欺骗功能。
二、主要特性
1、主机发现
2、端口扫描
3、检测操作系统
-O 操作系统类型/版本检测
4、应用的名称和版本
5、脚本化交互(自带丰富的脚本库)
三、使用
1、基本的IP或host的扫描
nmap 127.0.0.1
这种方式基本只能不能扫描云主机。
2、ping扫描
nmap -sP 192.168.1.0/24
这是一种最简单的方法用于检测网络中联网的主机,但是其它主机可能会阻止响应ping,所以检测主机扫描最好用基于ARP的方法。
3、扫描特定主机时指定端口范围
nmap -p 1-65535 127.0.0.1
nmap -p 80,443 8.8.8.8
通过指定端口范围可以加快端口扫描的过程。
4、扫描多个ip地址
nmap 1.1.1.1 8.8.8.8
nmap -p 1.1.1.1,2,3,4
5、扫描指定ip范围
nmap -p 8.8.8.0/28
这会扫描ip地址从8.8.8.1到8.8.8.14
nmap 8.8.8.*
这会扫描8.8.8.1到8.8.8.256
如果想从ip范围内去掉特定的ip
nmap -p 8.8.8.* --exclude 8.8.8.1
6、扫描常用端口
nmap --top-ports 20 192.168.1.106
这样会扫描常见的20个端口。
7、从文件中读取要扫描的主机
(1)list.txt
192.168.1.106
cloudflare.com
microsoft.com
securitytrails.com
(2)nmap命令
nmap -iL list.txt
8、把扫描结果保存到文件中
nmap -oN output.txt securitytrails.com
nmap -oX output.xml securitytrails.com
9、禁用DNS域名解析
通过禁用DNS域名解析可以加速扫描过程。
nmap -p 80 -n 8.8.8.8
10、使用fast execution扫描操作系统和服务
nmap -A -T4 cloudflare.com
-A可用于执行操作系统和服务的检测,-T4用于faster execution。
11、检测服务的版本
nmap -sV localhost
12、扫描时指定使用TCP还是UDP协议
(1)TCP
nmap -sT 192.168.1.1
(2)UDP
nmap -sU localhost
四、参数说明
1、语法结构
nmap [scan types][options] [target specification]
2、端口状态
(1)open
端口开放,可达。
(2)closed
它接收nmap探测报文并作出响应,但没有应用程序在其上监听。
(3)filtered
过滤可能来自专业的防火墙设备、路由规则或者主机上的软件防火墙。
(4)open|filtered
可能开放的端口不响应
(5)closed|filtered
3、扫描目标格式
(1)-iL
从文件中加载目标
(2)-iR
随机扫描
(3)--exclude <host or network>
排除网段或主机地址
(4)--excludefile
从文件中加载排除的地址
4、主机发现
(1)-sn
只做ping扫描,不做端口扫描。
(2)-Pn
跳过主机发现,视所有主机都在线。
(3)-PS/PA/PU/PY[portlist]
基于TCP(SYNC、ACK)、UDP、SCTP的指定端口的主机发现。
(4)-PE/PP/PM
基于ICMP的echo、timestamp、network request的主机发现。
(5)-PO[Protocol list]
基于IP协议字段的ping扫描
(6)-n/-R
-n表示不对目标进行DNS解析,-R表示进行DNS解析,缺省为必要时进行DNS解析。
(7)--dns-server <serv1,[serv2]...>
指定DNS服务器
(8)--system-dns
调用系统的DNS服务器。
(9)--traceroute
显示追踪到目标的路径。
5、扫描技术
(1)-sS
TCP中的SYN扫描,半连接扫描,nmap只发送SYN报文,通过服务器是否响应SYN+ACK来判断对应的端口是否开放。
(2)-sT
TCP扫描,全连接扫描,会和服务器建立完整的三次握手,效率低。
(3)-sA
TCP扫描,发送ACK报文,通过服务器响应来判断是否开放,有的不开放会回复ICMP端口不可达,当回复RST时表示可能被拦截或者端口开放,不是一个准确的判断条件。
(4)-sW
TCP扫描,窗口扫描,发出的报文和ACK一样,利用的是在某些系统中如果端口开放,收到ACK包后会响应一个窗口非0的RST包。
(5)-sM
TCP扫描,其原理是向目标服务器发送FIN/ACK报文,在某些系统中如果端口开放则会丢弃该报文不做响应,如果端口关闭则回复RST或ICMP,不准。
(6)-sU
UDP扫描,某些系统如果UDP端口不开放会回复ICMP差错报文(这也是Linux中traceroute的实现原理),nmap udp端口扫描的强大之处在于它会针对知名端口构造初始交互报文。
(7)-sN/-sF/-sX
特定TCP标志位的扫描,N是空标志位,F是FIN置位,X是Xmas扫描,将FIN、PSH、URG同时置位,收到RST说明端口关闭,无响应说明被过滤或者端口开放,不准。
(8)--scanflags <flags>
用户自定义TCP标志位。
(9)-sl <zombie host[:probeport]>
idle扫描,需要一台没有流量的僵尸主机,这种扫描的实现原理是在一定的时间里,同一台主机发出的ip数据报文其ip头中的identification字段是累加的。探测分为三步:第一步,nmap主机向僵尸机发包,通过僵尸机的响应包探测其id。第二步,namp主机伪造僵尸机源地址向服务器的特定端口发送SYN包。第三步,nmap主机再次探测僵尸机的ip.id,如果目标服务器端口开放,则必然向僵尸机发送SYN/ACK,由于莫名收到一个SYN/ACK报文,僵尸机会向目标服务器发送RST报文,该ip.id是第一步+1,则第三步nmap探测到的ip.id应该是第一步+2;反之,如果目标主机端口示开放,不僵尸机的ip.id不会变,第三步nmap探测到的id应该是第一步+1。
(10)-sY/-sZ
SCTP协议INIT或cookie-echo扫描
(11)-sO
基于IP协议的扫描,通过变换IP报文头中的Protocol值来对服务器进行探测。
(12)-b <FTP relay host>
FTP反弹扫描
5、其他
(1)-T<0-5>
时间模板,越大速度越快。
(2)-6
IPV6探测。
(3)-v
输出详细过程。