文章目录
最近在深入学习nmap,把过程中的重点稍微记一下,排版比较乱( __) 嘻嘻……。有强迫症的同学见谅了哈。有时间周末再修改这个博文( __) 嘻嘻……
nmap扫描的端口状态解释:
- open,表示开放状态;
- closed,表示关闭状态;
- filterd,表示端口处于过滤无法收到返回的probe状态;
- unfilterd,表示端口收到返回的probe,但是无法确定是否被过滤;
- opend/unfilterd,表示端口处于开放或者未过滤状态;
- closed/unfilterd,表示端口处于关闭或者未过滤状态;
ICMP
详见wiki:https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol
ICMP(Internet控制消息协议)是一种错误报告协议,当网络问题阻止IP数据包的传递时,路由器之类的网络设备会使用这些错误消息向源IP地址生成错误消息。ICMP创建消息并将其发送到源IP地址,该消息指示无法访问路由器,服务或主机的Internet 网关以进行数据包传递。任何IP网络设备都可以发送,接收或处理ICMP消息。
ICMP 不是在系统之间发送数据的传输协议。
尽管最终用户应用程序中不经常使用ICMP,但网络管理员可以使用它来诊断诊断实用程序(包括ping和traceroute)中的 Internet连接。
网络设备(包括路由器)使用它来发送错误消息和操作信息,以指示与另一个IP地址进行通信时的成功或失败,例如,当请求的服务不可用或主机或路由器无法提供服务时,指示错误。达到。
ICMP消息通常用于诊断或控制目的,或响应IP操作中的错误而生成。
服务指纹
为了确保有一个成功的渗透测试或网络设备监控,必须需要知道目标系统中服务的指纹信息。服务指纹信息包括服务端口、服务名和版本信息等。
通过分析目标往nmap发送的数据包中某些协议标记、选项和数据,我们可以推断发送这些数据包的操作系统等。
nmap通过向目标主机发送多个udp和tcp数据包并分析其响应来进行操作系统指纹识别工作。
使用命令:
# 获取服务指纹
nmap -sV 192.168.0.117
nmap侵略性探测
获取目标机器的操作系统、服务等信息
方法1:
# -A,侵略性地尝试进行深入的服务枚举和旗标获取,能够提供目标系统更多的细节
# -v,持续输出扫描的过程
# -T4,加快探测速度
nmap -A -v -T4 192.168.0.117
方法2:
# -sC,表示使用namp脚本进行探测
# -sV,表示探测目标机器上的服务信息
# -O,表示探测目标机器的操作系统信息
map -sC -sV -O 192.168.0.117
局域网中的主机发现
一个局域网中肯定是连接着多台设备,那么如何获取哪些设备正在开机状态呢?
CIDR,无类别域间路由
172.16.1.0/24,表示在172.168.1.0-172.16.1.255之间的所有机器。
# -sP,使用TCP SYN扫描、ICMP echo Request来探测主机存活性
nmap -sP 192.168.0.0/24
# -sn,对网络中所有主机进行ping扫描来探测主机存活性
nmap -sn 192.168.0.0/24
结果输出
对网络中所有主机进行ping扫描,并将结果存入test.xml中
nmap -sn 192.168.0.0/24 -oX test.xml
端口探测
对单个、多个、范围、所有端口进行探测
nmap -p80 192.168.0.117 # 单个端口
nmap -p80,135 192.168.0.117 # 多个端口
nmap -p1-1000 192.168.0.117 # 端口范围
nmap -p- 192.168.0.117 # 所有端口
nmap -p T:25,U:53 192.168.0.117 # 对25端口使用TCP协议探测,对53端口使用UDP探测
nmap -p smtp 192.168.0.117 # 通过指定协议名来扫描端口
nmap -p ssh 192.168.0.117 # 通过指定协议名来扫描端口
nmap -p s* 192.168.0.117 # 通过指定协议名的通配符
NSE脚本
所有脚本文件默认安装在目录:/usr/share/nmap/scripts
-sC:等价于 --script=default
扫描http服务,直接使用脚本名全称
nmap --script http-title 192.168.0.119 # 探测http服务的title信息
nmap --script http-headers 192.168.0.119 # 探测http服务的headers信息
使用脚本名通配符探测
nmap -sV --script "(http*) and not (http-slowlors and http-brute)" 192.168.0.119
使用脚本分类,所有的分类如下表所示:
脚本类别 | 描述 |
---|---|
auth | 用于用户认证的NSE脚本 |
broadcast | 使用广播收集网络信息 |
brute | 暴力破解 |
default | 默认,执行脚本(-sC) |
discovery | 与主机和服务发现相关的脚本 |
dos | 与拒绝服务攻击相关的脚本 |
exploit | 用于利用安全漏洞的脚本 |
external | 适用于第三方服务的脚本 |
fuzzer | 用于模糊测试的脚本 |
intrusive | 入侵脚本 |
malware | 与恶意软件检测相关的脚本类别 |
safe | 在所有情况下默认为是安全的脚本 |
vuln | 与检测和利用安全漏洞相关的脚本 |
version | 高级系统脚本 |
所有的分类以及所有的脚本的功能详情,可以点击查看nmap官网。
使用nmap中vuln分类脚本对目标进行探测
nmap -sV --script vuln 192.168.0.119
使用nmap中version和discovery分类进行探测
nmap -sV --script="version,discovery" 192.168.0.119
使用nmap中除了exploit分类之外的其他分类进行探测
nmap -sV --script="not exploit" 192.168.0.119
NSE调试功能使用
使用Nmap中exploit,同事开启调试模式,命令如下:
nmap -sV --script exploit -d 3 --script-trace 192.168.0.119 # 注意: -d(debug范围0~9)
NSE参数的使用
使用nmap的http-title脚本,并且指定使用对应的User-Agent。命令如下:
nmap -sV --script http-title --script-args http.useragent="Mozilla 999" 192.168.0.119
NSE更新
更新脚本库的命令
nmap --script-updatedb
指定特定网卡进行探测
nmap是一款可拓展性强的工具,并且有些NSE脚本支持嗅探。但是这种功能需要网卡支持混杂模式才可以。或者当计算机上有两张网卡,并且两张网卡对应的不同网络。
nmap中提供了切换使用特定网卡进行探测的参数:-e 网卡名
nmap -e interface_name CIDR # 对指定网卡interface_name的CIDR指定的网段进行探测
如果在主机上多张网卡连接的网络之间是无法联通的,直接使用nmap进行探测,有可能会花费很多时间,nmap会逐个筛选网卡进行探测。在筛选网卡过程中,很多时间都浪费在选用了错误的网卡,等待超时的过程中。
使用下面命令列出主机的网卡接口和路由信息:
nmap --iflist
获得这些信息,可以进一步选择特定的网卡进行探测。避免探测过程中的"错选网卡超时等待"。
ndiff对比扫描结果
对某个网络进行探测的时候,可能与之前有探测过的结果,现在探测过后,需要对之前的结果与现在的结果对比,找到两次不同点。
监视网络变化,达到网络监控的目的。
ndiff [option] FILE1 FILE2 # 比较两个xml文件的不同点,比较的内容包括:主机状态变化,端口状态变化,服务的变化以及系统检测等。
其他
nmap -O x.x.x.x # 目标系统版本探测
nmap -p80,443 --script=http-waf-detect x.x.x.x # 扫描主机端口80和443是否开启,并探测WAF
nmap -O -Pn x.x.x.x # (-Pn 禁用Nmap网络发现功能,假定所有系统都是活动的)
nmap -sT -Pn x.x.x.x # TCP扫描通常用于收集有关目标的更多信息,但是会和目标主机建立一个完成的TCP连接。
nmap -sS -Pn URI # SYN 扫描:TCP两次握手(隐藏扫描,速度快,nmap缺省参数)
nmap -sA -Pn URI # ACK扫描,用于确定TCP端口是否被防火墙过滤
nmap -sU URI # DHCP,DNS,SNMP,TFTP等都使用了UDP协议。UDP扫描会评估目标系统上的UDP端口,可以确认UDP端口是开放还是被防火墙过滤。不存在-PN参数(从UDP协议去理解,你发了就ok管他收没收到)
# timing参数可以指定nmap扫描的速度。其中各个选项如下:
# T0:paranoid 慢速网络扫描,串行扫描,两次扫描间隔5分钟。扫描速度极慢。
# T1:Sneky 慢速网络扫描,串行扫描,两次扫描间隔15秒,扫描速度较慢。
# T2:Polite 中速网络扫描,串行扫描,两次扫描间隔400毫秒,扫描速度慢。
# T3:Normal 中速网络扫描,并行扫描,两次扫描间隔0秒,扫描速度正常。
# T4:Aggressive 快速网络扫描,并行扫描,两次扫描间隔0秒,扫描速度较快。
# T5:Normal 快速网络扫描,并行扫描,两次扫描间隔0秒,扫描速度极快。
nmap -sS -T5 192.168.1.1
# 输出保存选项
# -oN 保存为文本文件
# -oX 保存为XML文件
# -oG 保存为GREPable输出
# -oS 脚本输出
nmap -oN metscan.txt 192.168.154.134 # 将扫描结果保存到metscan.txt文件。
参考
1.https://www.freebuf.com/sectool/109952.html