机智喵
首页
机器学习
代码分享
网络安全
学习分享
关于
登录
首页
机器学习
代码分享
网络安全
学习分享
首页
›
网络安全
›
Nmap命令的简介及常用命令语法
Nmap命令的简介及常用命令语法
2024-02-25 22:03
345
0
# 简介 Network Mapper ( Nmap) 是一个用 C、C++、Python 和 Lua 编写的开源网络分析和安全审计工具。它旨在扫描网络并使用原始数据包以及服务和应用程序(包括名称和版本)来识别网络上可用的主机(如果可能)。它还可以识别这些主机的操作系统和版本。除了其他功能之外,Nmap 还提供扫描功能,可以确定是否根据需要配置数据包过滤器、防火墙或入侵检测系统 (IDS)。 # Nmap架构 Nmap 提供许多不同类型的扫描,可用于获取有关目标的各种结果。基本上,Nmap可以分为以下几种扫描技术: ``` 主机发现 端口扫描 服务枚举和检测 操作系统检测 与目标服务的脚本化交互(Nmap 脚本引擎) ``` # 语法 ``` $ nmap
``` # 扫描技术 Nmap 提供许多不同的扫描技术,建立不同类型的连接并使用不同结构的数据包进行发送。在这里我们可以看到 Nmap 提供的所有扫描技术: ``` $ nmap --help
SCAN TECHNIQUES: -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon 扫描 -sU: UDP 扫描 -sN/sF/sX: TCP Null, FIN, and Xmas scans --scanflags
: Customize TCP scan flags -sI
: Idle scan -sY/sZ: SCTP INIT/COOKIE-ECHO scans -sO: IP protocol scan -b
: FTP bounce scan
-sU: UDP扫描 用于扫描目标主机上的UDP端口,以确定哪些UDP端口处于打开状态。 -sN/sF/sX: TCP Null、FIN和Xmas扫描 Null扫描:发送一个没有设置TCP标志的TCP数据包,用于探测目标主机上的端口是否处于打开状态。 FIN扫描:发送一个带有FIN标志的TCP数据包,用于探测目标主机上的端口是否处于打开状态。 Xmas扫描:发送一个带有FIN、URG和PSH标志的TCP数据包,用于探测目标主机上的端口是否处于打开状态。 --scanflags
: 自定义TCP扫描标志 允许用户自定义TCP扫描时使用的标志,例如SYN、ACK、FIN等。 -sI
: 空闲扫描 使用第三方主机(“僵尸主机”)来探测目标主机上的端口,以减少对目标主机的直接扫描。 -sY/sZ: SCTP INIT/COOKIE-ECHO扫描 SCTP(流控制传输协议)是一种面向连接的传输层协议,用于在网络上传输数据。这些选项允许对SCTP端口进行扫描。 -sO: IP协议扫描 用于探测目标主机上支持的IP协议类型,例如ICMP、IGMP、IPV4、IPV6等。 -b
: FTP反弹扫描 通过FTP代理服务器(“FTP反弹主机”)来扫描目标主机上的FTP端口,以减少对目标主机的直接扫描。 ``` 例如,-sS除非我们另有定义,否则 TCP-SYN 扫描 ( ) 是默认设置之一,也是最流行的扫描方法之一。这种扫描方法可以每秒扫描数千个端口。TCP-SYN 扫描会发送一个带有 SYN 标志的数据包,因此永远不会完成三向握手,从而导致无法与扫描的端口建立完整的 TCP 连接。 如果我们的目标将SYN-ACK带标记的数据包发送回扫描的端口,Nmap 会检测到该端口是open。 如果数据包收到一个RST标志,则表明该端口是closed。 如果 Nmap 没有收到返回的数据包,它将显示为filtered。根据防火墙配置,某些数据包可能会被防火墙丢弃或忽略。 # 网络扫描范围 ## 指定ip扫描 ``` $ sudo nmap 10.129.2.0/24 -sn -oA tnet | grep for | cut -d" " -f5 扫描选项 描述 10.129.2.0/24 目标网络范围。 -sn 禁用端口扫描。 -oA tnet 以名称“tnet”开头的所有格式存储结果。 ``` ## 导入ip数据扫描 ``` cat hosts.lst 10.129.2.4 10.129.2.10 10.129.2.11 10.129.2.18 10.129.2.19 10.129.2.20 10.129.2.28 $ sudo nmap -sn -oA tnet -iL hosts.lst | grep for | cut -d" " -f5 10.129.2.18 10.129.2.19 10.129.2.20 扫描选项 描述 -sn 禁用端口扫描。 -oA tnet 以名称“tnet”开头的所有格式存储结果。 -iL 对提供的“hosts.lst”列表中的目标执行定义的扫描。 ``` ## 扫描多个IP ``` $ sudo nmap -sn -oA tnet 10.129.2.18 10.129.2.19 10.129.2.20| grep for | cut -d" " -f5 10.129.2.18 10.129.2.19 10.129.2.20 如果这些 IP 地址彼此相邻,我们还可以在各自的八位字节中定义范围。 $ sudo nmap -sn -oA tnet 10.129.2.18-20| grep for | cut -d" " -f5 10.129.2.18 10.129.2.19 10.129.2.20 ``` ## 扫描单个IP 在扫描单个主机的开放端口及其服务之前,我们首先必须确定它是否处于活动状态。为此,我们可以使用与之前相同的方法。 ``` $ sudo nmap 10.129.2.18 -sn -oA host Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-14 23:59 CEST Nmap scan report for 10.129.2.18 Host is up (0.087s latency). MAC Address: DE:AD:00:00:BE:EF Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds 扫描选项 描述 10.129.2.18 对目标执行定义的扫描。 -sn 禁用端口扫描。 -oA host 以名称“host”开头的所有格式存储结果。 ``` 如果我们禁用端口扫描 ( ),Nmap 会自动使用( )-sn进行 ping 扫描。一旦发送了这样的请求,我们通常会期望ping 主机是否处于活动状态。更有趣的事实是,我们之前的扫描并没有这样做,因为在 Nmap 发送 ICMP 回显请求之前,它会发送一个. 我们可以通过“ ”选项来确认这一点。为了确保发送 ICMP 回显请求,我们还为此定义了选项 ( )。ICMP Echo Requests-PEICMP replyARP pingARP reply--packet-trace-PE ``` $ sudo nmap 10.129.2.18 -sn -oA host -PE --packet-trace Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 00:08 CEST SENT (0.0074s) ARP who-has 10.129.2.18 tell 10.10.14.2 RCVD (0.0309s) ARP reply 10.129.2.18 is-at DE:AD:00:00:BE:EF Nmap scan report for 10.129.2.18 Host is up (0.023s latency). MAC Address: DE:AD:00:00:BE:EF Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds 扫描选项 描述 10.129.2.18 对目标执行定义的扫描。 -sn 禁用端口扫描。 -oA host 以名称“host”开头的所有格式存储结果。 -PE 通过使用“ICMP Echo 请求”针对目标执行 ping 扫描。 --packet-trace 显示所有发送和接收的数据包 ``` 确定为什么 Nmap 将我们的目标标记为“活动”的另一种方法是使用“ --reason”选项。 ``` $ sudo nmap 10.129.2.18 -sn -oA host -PE --reason Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 00:10 CEST SENT (0.0074s) ARP who-has 10.129.2.18 tell 10.10.14.2 RCVD (0.0309s) ARP reply 10.129.2.18 is-at DE:AD:00:00:BE:EF Nmap scan report for 10.129.2.18 Host is up, received arp-response (0.028s latency). MAC Address: DE:AD:00:00:BE:EF Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds 扫描选项 描述 10.129.2.18 对目标执行定义的扫描。 -sn 禁用端口扫描。 -oA host 以名称“host”开头的所有格式存储结果。 -PE 通过使用“ICMP Echo 请求”针对目标执行 ping 扫描。 --reason 显示特定结果的原因。 ``` 我们看到这里确实通过and单独Nmap检测了宿主是否还活着。要禁用 ARP 请求并使用所需的扫描目标,我们可以通过设置“ ”选项来禁用 ARP ping。然后我们可以再次扫描目标并查看发送和接收的数据包。ARP requestARP replyICMP echo requests--disable-arp-ping ``` $ sudo nmap 10.129.2.18 -sn -oA host -PE --packet-trace --disable-arp-ping Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 00:12 CEST SENT (0.0107s) ICMP [10.10.14.2 > 10.129.2.18 Echo request (type=8/code=0) id=13607 seq=0] IP [ttl=255 id=23541 iplen=28 ] RCVD (0.0152s) ICMP [10.129.2.18 > 10.10.14.2 Echo reply (type=0/code=0) id=13607 seq=0] IP [ttl=128 id=40622 iplen=28 ] Nmap scan report for 10.129.2.18 Host is up (0.086s latency). MAC Address: DE:AD:00:00:BE:EF Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds ``` # 其他命令 更多使用方法参考:https://nmap.org/book/host-discovery-strategies.html ``` 10.129.2.28 扫描指定的目标。 -sU 执行UDP扫描。 -Pn 禁用ICMP回显请求。 -n 禁用DNS解析。 --disable-arp-ping 禁用ARP ping。 --packet-trace 显示所有发送和接收的数据包。 -p 137 仅扫描指定的端口。 --reason 显示端口处于特定状态的原因。 -sV 执行服务扫描。 -p- 扫描所有端口。 -oA target 以所有格式保存结果,每个文件的名称以“target”开头。 ``` #结果导出 当我们运行各种扫描时,我们应该始终保存结果。我们稍后可以使用这些来检查我们使用的不同扫描方法之间的差异。 Nmap可以以 3 种不同的格式保存结果。 ``` 正常输出 ( -oN) 带.nmap文件扩展名 带有文件扩展名的Grepable 输出 ( -oG).gnmap XML 输出 ( -oX) 带有.xml文件扩展名 ``` 我们还可以指定选项 ( -oA) 以所有格式保存结果。该命令可能如下所示: ``` $ sudo nmap 10.129.2.28 -p- -oA target ``` ## 样式表 通过 XML 输出,我们可以轻松创建易于阅读的 HTML 报告,即使对于非技术人员也是如此。这对于以后的文档非常有用,因为它以详细而清晰的方式呈现了我们的结果。要将存储的结果从 XML 格式转换为 HTML,我们可以使用该工具xsltproc。 ``` $ xsltproc target.xml -o target.html ```
相关文章
Nmap扫描速度及扫描方式
Nmap工具下的端口扫描命令
评论
(暂无评论)
取消回复
发表评论
admin
谢谢各位的支持~
25
文章
0
评论
4
栏目
最新文章
Centos 8系统本地自建mysql仓库源报错汇总
Nmap扫描速度及扫描方式
Nmap的脚本引擎(NSE)的使用方法
Nmap工具下的端口扫描命令
Nmap命令的简介及常用命令语法
Centos下docker系统的安装和使用方法
leetcode刷题|242. 有效的字母异位词
leetcode刷题|28. 找出字符串中第一个匹配项的下标
leetcode刷题|389. 找不同
leetcode刷题|1768. 交替合并字符串
热门文章
Mysql数据库的查询操作(一)
0 评论
Mysql的基本操作
0 评论
Mysql数据库的查询操作(二)
0 评论
Mysql数据库的查询操作(三)
0 评论
Mysql数据库的查询操作(四)
0 评论
更多