Nmap端口扫描
Nmap端口扫描
通过对目标主机发送数据包(ICMP Echo Request)来探测主机存活性,如果目标主机接收数据包后会返回数据包,Nmap就解析返回来的数据包得到远程机器的信息,其中就包括端口信息。
目标域名:scanme.nmap.org
默认扫描
Nmap scanme.nmap.org
用8.8.8.8 的dns对域名进行解析后扫描
Nmap --dns-servers 8.8.8.8 scanme.nmap.org
用于取消ICMP 从而不触发目标机器防火墙
Nmap -Pn scanme.nmap.org
识别目标机器的服务信息
Nmap -sV scanme.nmap.org
查看服务信息
服务指纹信息:包含服务端口、服务名、版本等
Nmap -A -v -T4 scanme.nmap.org --带有侵略性的扫描服务信息(-A 侵略性 -v 过程详细信息 -T4 0-5 设置扫描速度)
Nmap -sC -sV -o scanme.nmap.org --作用同上条 (-sC 表示使用nmap脚本探测 -sV探测服务信息 -o 探测操作系统信息)
查看ip网段中存活主机
Nmap -sP 10.173.20.1/21 (后面跟CIDR形式)
Nmap -sn 10.173.20.1/21(后面跟CIDR形式)
将扫描结果打印
Nmap -sn 10.173.20.1/21 -oX test.xml(后面跟DIOR形式)
特定端口扫描
Nmap -p 80 192.168.192.163 (扫描80端口)
也可以 -p 80,135 扫多个端口;也可以 -p1-100 扫描1-100的端口号 ;-p- 扫描所有端口
指定协议探测端口
Nmap -Pn -p T:25,U:53 10.173.20.153 探测TCP 25号端口 UDP53号端口
探测指定协议
Nmap -p ssh 10.173.20.153 探测ssh协议
模糊探测协议
Nmap -p s* 10.173.20.153 探测s开头的协议
使用nmap脚本进行探测
wins下nmap的脚本在nmap/scripts下
linux下nmap脚本在/usr/share/nmap/script/下
用法:Nmap --script 脚本名 192.168.198.136
如: Nmap --script http-headers 192.168.198.136 (使用http-headers脚本)
Nmap -sV --script vuln 192.168.198.136(使用vuln脚本)
http-enum.nse(敏感文件扫描)
更新脚本库
nmap --script-updatedb
端口状态
Open:应用程序正在该端口接收 TCP 连接或者 UDP 报文
closed:关闭的端口对于 Nmap 也是可访问的 ( 它接受 Nmap 的探测报文并作出响应 ), 但没有应用程序在其上监听。
filtered:由于包过滤阻止探测报文到达端口,Nmap 无法确定该端口是否开放。(可能有防火墙)
unfiltered:未被过滤状态意味着端口可访问,但 Nmap 不能确定它是开放还是关闭。
open/filtered:当无法确定端口是开放还是被过滤的,Nmap 就把该端口划分成 这种状态。开放的端口不响应就是一个例子
closed/filtered:该状态用于 Nmap 不能确定端口是关闭的还是被过滤的。 它只可能出现在 IPID Idle 扫描中
扫描方式
ping扫描(-sP)
通过向指定的IP地址发送ICMP echo请求数据包,收到一个RST包,就表示主机正在运行。
如:nmap IP 或者 nmap -sP IP
TCP SYN Ping扫描(-PS)
使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYN/ACK包)
如:nmap -sP -PS IP
TCP ACK Ping扫描(-PA)
半开扫描(-sS)
用户可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接。扫描记录不容易被记录到日志中,具有隐蔽性。