天天看点

笔记——nmap渗透常用功能汇总参考

文章目录

    • nmap扫描的端口状态解释:
    • ICMP
    • 服务指纹
    • nmap侵略性探测
    • 局域网中的主机发现
    • 结果输出
    • 端口探测
    • NSE脚本
    • NSE调试功能使用
      • NSE参数的使用
    • NSE更新
    • 指定特定网卡进行探测
    • ndiff对比扫描结果
    • 其他
  • 参考

最近在深入学习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,同事开启调试模式,命令如下:

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进行探测,有可能会花费很多时间,nmap会逐个筛选网卡进行探测。在筛选网卡过程中,很多时间都浪费在选用了错误的网卡,等待超时的过程中。

使用下面命令列出主机的网卡接口和路由信息:

nmap --iflist
           

获得这些信息,可以进一步选择特定的网卡进行探测。避免探测过程中的"错选网卡超时等待"。

ndiff对比扫描结果

对某个网络进行探测的时候,可能与之前有探测过的结果,现在探测过后,需要对之前的结果与现在的结果对比,找到两次不同点。

监视网络变化,达到网络监控的目的。

其他

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