品牌推广的作用,十堰seo公司,php做网站导购模板,官方网站下载zoomNmap是一款用于网络发现和安全审计的网络安全工具#xff0c;通常情况下#xff0c;Nmap用于#xff1a; 列举网络主机清单 管理服务升级调度 监控主机 服务运行状况
Nmap可以检测目标主机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类…Nmap是一款用于网络发现和安全审计的网络安全工具通常情况下Nmap用于 列举网络主机清单 管理服务升级调度 监控主机 服务运行状况
Nmap可以检测目标主机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。
系统管理员可以利用Nmap来探测工作环境中未经批准使用的服务器黑客通常会利用Nmap来搜集目标电脑的网络设定从而计划攻击的方法。
Nmap通常用在信息搜集阶段用于搜集目标机主机的基本状态信息。扫描结果可以作为漏洞扫描、漏洞利用和权限提升阶段的输入。
Nmap不仅可以用于扫描单个主机也可以适用于扫描大规模的计算机网络
Nmap是一个功能强大的网络扫描工具用于发现主机、服务和开放端口等信息。
Nmap的基本用法 扫描单个主机或主机范围 nmap target
nmap 192.168.1.1
nmap example.com
nmap 192.168.1.1-100 扫描整个子网 nmap 192.168.1.0/24 扫描多个目标 nmap target1 target2 target3 扫描特定端口 nmap -p port target
nmap -p 80,443 example.com 扫描常见端口 nmap -F target 指定扫描技术 nmap -sS target # TCP SYN 扫描
nmap -sT target # TCP 连接扫描
nmap -sU target # UDP 扫描 指定扫描范围 nmap -p1-100 target # 扫描端口范围
nmap -sS -p- target # 扫描所有65535个TCP端口 扫描速度和详细级别 nmap -T4 target # 设置扫描速度
nmap -v target # 详细输出 指定输出格式 nmap -oN output.txt target # 输出到文本文件
nmap -oX output.xml target # 输出到XML文件 禁用主机发现 nmap -Pn target # 禁用Ping扫描 指定脚本扫描 nmap --script scriptname target # 执行特定脚本 这些是Nmap的一些基本用法但Nmap具有更多高级功能和选项可以根据需要进行深入研究和学习。
详细介绍
在使用Nmap进行端口扫描时有三种基本的扫描类型。它们分别是
- TCP连接扫描 (-sT) - SYN 半开放扫描 (-sS) - UDP扫描 (-sU)
TCP连接扫描
要理解TCP连接扫描 最重要的是对 TCP三次握手熟悉。
三次握手包括三个阶段。首先连接的终端向目标服务器发送一个带有SYN标志的TCP请求。然后服务器用一个包含SYN标志和ACK标志的TCP响应确认此数据包。最后我们的终端通过发送一个带有ACK标志的TCP请求来完成握手。
TCP连接扫描通过依次与每个目标端口执行三次握手来工作。换句话说Nmap尝试连接到每个指定的TCP端口并通过接收到的响应确定服务是否开放。
SYN扫描
与TCP扫描类似SYN扫描用于扫描目标或目标的TCP端口范围然而这两种扫描类型的工作方式略有不同。SYN扫描有时被称为“半开放”扫描或“隐秘”扫描。
TCP扫描与目标执行完整的三次握手而SYN扫描在从服务器收到SYN/ACK后发送一个RST TCP数据包这可以防止服务器重复尝试请求。
这对我们有很多优势
- 它可以用来绕过旧版入侵检测系统因为它们正在寻找完整的三次握手。对于现代IDS解决方案来说情况通常不再是这样正是因为这个原因SYN扫描仍然经常被称为“隐秘”扫描。 - SYN扫描通常不会被打开端口上侦听的应用程序记录因为标准做法是在建立连接后记录连接。这再次体现了SYN扫描的隐蔽性。 - 由于不必为每个端口完成和断开三次握手SYN扫描比标准TCP连接扫描快得多。
然而SYN扫描也有一些缺点即
- 它们需要sudo权限才能在Linux中正确工作。这是因为SYN扫描需要创建原始数据包的能力与完整的TCP握手相反这是仅root用户默认拥有的特权。 - 不稳定的服务有时会被SYN扫描关闭如果客户端为测试提供了生产环境则可能会出现问题。
总的来说优点胜过缺点。
因此如果具有sudo权限运行则SYN扫描是Nmap使用的默认扫描。如果没有sudo权限运行则Nmap默认使用我们在前面任务中看到的TCP连接扫描。
在使用SYN扫描识别关闭和过滤端口时与使用TCP连接扫描相同的规则适用。
如果端口关闭则服务器将以RST TCP数据包做出响应。如果防火墙过滤了端口则TCP SYN数据包要么被丢弃要么被伪造成TCP重置。
UDP扫描
与TCP不同UDP连接是无状态的。这意味着UDP连接不是通过来回的“握手”来建立连接而是依靠将数据包发送到目标端口并希望它们能到达。这使得UDP非常适用于速度优先于质量的连接例如视频共享但是缺乏确认使得UDP扫描变得更加困难也更加缓慢。
当一个数据包发送到一个打开的UDP端口时不应该有响应。当这种情况发生时Nmap将端口标记为 open|filtered。换句话说它怀疑该端口是开放的但可能已经被防火墙过滤。如果它收到UDP响应这是非常不寻常的那么该端口将被标记为open。更常见的情况是没有响应此时请求会第二次发送以进行双重检查。如果仍然没有响应则端口将被标记为 *open|filtered*并且Nmap继续进行扫描。
当一个数据包发送到一个关闭的UDP端口时目标应该用包含端口不可达消息的ICMPping数据包做出响应。这清楚地标识了关闭的端口Nmap会将其标记为关闭并继续进行扫描。
由于很难确定UDP端口是否真正开放与各种TCP扫描相比UDP扫描往往非常缓慢在良好连接下扫描前1000个端口需要大约20分钟。因此通常最好使用启用了 --top-ports number 的Nmap扫描。例如
使用 nmap -sU --top-ports 20 target 进行扫描将扫描最常用的20个UDP端口从而获得更可接受的扫描时间。
在扫描UDP端口时Nmap通常发送完全空的请求 -- 仅仅是原始的UDP数据包。也就是说对于通常由众所周知的服务占用的端口它将发送一个特定于协议的有效载荷这更有可能引发响应并得出更准确的结果。
ICMP网络扫描
在黑盒分配中第一次连接到目标网络时我们想看看哪些IP地址包含活动主机哪些不包含。
其中一种方法是使用Nmap执行所谓的“ping扫描”。这正如其名字所示Nmap向指定网络的每个可能的IP地址发送一个ICMP数据包。当它收到响应时它将标记响应的IP地址为活动。
要执行ping扫描我们使用 -sn 开关与IP范围结合使用IP范围可以用连字符-或CIDR表示法指定。例如我们可以使用以下命令扫描192.168.0.x网络
- nmap -sn 192.168.0.1-254
或者
- nmap -sn 192.168.0.0/24
-sn 开关告诉Nmap不要扫描任何端口 -- 强制其主要依赖ICMP回显数据包或者在本地网络上运行时使用sudo或直接作为根用户的ARP请求来识别目标。
除了ICMP回显请求外-sn 开关还将导致nmap向目标的端口443发送TCP SYN数据包并向目标的端口80发送TCP ACK或如果未以根用户身份运行则发送TCP SYN数据包。
NSE脚本概述
Nmap脚本引擎NSE是Nmap的一个非常强大的补充它相当大地扩展了Nmap的功能。NSE脚本使用 Lua 编程语言编写可用于各种用途从扫描漏洞到自动化对其的利用。NSE特别适用于侦察但是值得注意的是脚本库有多么庞大。
有许多可用的类别。一些有用的类别包括
- safe不会影响目标 - intrusive不安全可能会影响目标 - vuln扫描漏洞 - exploit尝试利用漏洞 - auth尝试绕过运行服务的认证例如匿名登录FTP服务器 - brute尝试对运行服务的凭据进行暴力破解 - discovery尝试查询运行服务以获取有关网络的更多信息例如查询SNMP服务器。
使用NSE
要运行特定的脚本我们将使用 --scriptscript-name 例如 --scripthttp-fileupload-exploiter。
可以通过用逗号分隔它们来以这种方式同时运行多个脚本。例如--scriptsmb-enum-users,smb-enum-shares。
某些脚本需要参数例如如果它们正在利用经过身份验证的漏洞则需要凭据。这些参数可以使用 --script-args Nmap开关提供。例如http-put 脚本用于使用PUT方法上传文件就需要两个参数要上传文件的URL和磁盘上文件的位置。例如 nmap -p 80 --script http-put --script-args http-put.url/dav/shell.php,http-put.file./shell.php
注意参数由逗号分隔并且与相应的脚本用句点连接即 script-name.argument。
防火墙规避
Nmap提供了一个选项-Pn告诉Nmap在扫描之前不要费心ping主机。这意味着Nmap将始终将目标主机视为活动的有效地绕过ICMP阻塞但是它的代价是可能需要很长时间才能完成扫描如果主机确实死了那么Nmap仍将检查和重复检查每个指定的端口。