nmap软件常见用法有哪些

发布时间:2021-11-23 09:48:43 作者:小新
来源:亿速云 阅读:172

这篇文章主要介绍nmap软件常见用法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

二、常见用法

1、使用nslookup 解析出域名的IP地址

2、使用 nmap -sL 查询该IP网段中包含的ip地址(不检测存活状态,仅列表)

3、使用nmap -sn 查询网段中关注主机或者整个网段的IP存活状态

    nmap -sn

    nmap针对局域网和广域网(会根据源目的是否在同一网段进行判断)有两种不同的扫描方式

    当目标主机与源主机不在同一网段时:

    Nmap会发送四种不同类型的数据包来探测目标主机是否在线。

    1)  ICMP echo request

    2)  a TCP SYN packet to port 443

    3)  a TCP ACK packet to port 80

    4)  an ICMP timestamp request

    举例:以扫描某个公网IP为例

    nmap -sn IP

    nmap软件常见用法有哪些

    当目标主机与源主机在同一网段时

    

    nmap -sn 192.168.1.103

    Nmap 将通过发送arp请求,来检查ip是否在线

    nmap软件常见用法有哪些

4、扫描感兴趣主机的端口

    需要注意,nmap在端口扫描前,首先会自动对ip的存活状态扫描,如果发现目标ip不存活,将不再进行端口扫描。在进行ip存活扫描时(同-sn时的扫描,不过是nmap自动的),会发送2次扫描,以判断ip的存活。

    下面是对未存活ip的扫描抓包,使用的nmap -sS -p 80 [ip] 来扫描80端口,但实际nmap先进行了ip存活的扫描

nmap -sS -p 80 [ip]             #扫描TCP 80端口

nmap软件常见用法有哪些 

这是返回的结果,针对这种未存活的ip,nmap建议 使用 -Pn ,即不进行主机存活判断,直接扫描端口。

nmap软件常见用法有哪些

下图是使用-Pn 选项来扫描80端口

nmap -Pn -sS -p 80 113.11.*.*

nmap软件常见用法有哪些

nmap软件常见用法有哪些

从nmap的扫描结果看,该端口被过滤,即不确定是否存活,但该主机是存活的。

但从抓包来看,该主机没有任何回包,说明该端口被过滤或未开启,同时,也无该ip的其他回包信息,所以,判断nmap的主机存活结论是错误的(个人认为)。从抓包来看,nmap当未受到数据包时,默认都发送2次请求包。当未收到回复包时,说明发送过去的数据包被防火墙等设备过滤掉了,如果没有被过滤,应该回复rest包,nmap显示的端口则是关闭。

nmap端口扫描结果的说明:

Nmap通过探测将端口划分为6个状态:
open:                    端口是开放的。
closed:                  端口是关闭的。
filtered:                 端口被防火墙IDS/IPS屏蔽,无法确定其状态。
unfiltered:             端口没有被屏蔽,但是否开放需要进一步确定。
open|filtered:       端口是开放的或被屏蔽。
closed|filtered :    端口是关闭的或被屏蔽。

 nmap常见的端口扫描方式有以下几种:

    -P     指定端口号,如果不指定端口,默认是扫描1000个常用的tcp或udp端口(根据扫描项)
    -F     快速模式,当不指定端口时,仅扫描TOP 100的端口
    -sS    TCP端口扫描,使用SYN 方式扫描,不建立TCP连接
    -sT    TCP端口扫描,tcp connect 通过3次握手,建立tcp连接
    -sU   UDP端口扫描
  
    
   其他端口扫描方式:
   -sA/sW/sM:指定使用 ACK/Window/Maimon scans的方式来对目标主机进行扫描。

   -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。

  --scanflags <flags>: 定制TCP包的flags。

  -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)

  -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。

  -sO: 使用IP protocol 扫描确定目标机支持的协议类型。

  -b <FTP relay host>: 使用FTP bounce scan扫描方式

 

端口扫描原理

TCP SYN scanning

这是Nmap默认的扫描方式,通常被称作半开放扫描(Half-open scanning)。该方式发送SYN到目标端口,如果收到SYN/ACK回复,那么判断端口是开放的;如果收到RST包,说明该端口是关闭的。如果没有收到回复,那么判断该端口被屏蔽(Filtered)。因为该方式仅发送SYN包对目标主机的特定端口,但不建立的完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围广。

TCP SYN探测到端口关闭:

nmap软件常见用法有哪些

TCP SYN探测到端口开放:

nmap软件常见用法有哪些

TCP connect scanning

TCP connect方式使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标机上留下记录信息,不够隐蔽。所以,TCP connect是TCP SYN无法使用才考虑选择的方式。

TCP connect探测到端口关闭:

nmap软件常见用法有哪些

TCP connect探测到端口开放:

nmap软件常见用法有哪些

 TCP ACK scanning

向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。

TCP ACK探测到端口被屏蔽:

nmap软件常见用法有哪些

TCP ACK探测到端口未被屏蔽:

nmap软件常见用法有哪些

   TCP FIN/Xmas/NULL scanning

这三种扫描方式被称为秘密扫描(Stealthy Scan),因为相对比较隐蔽。FIN扫描向目标主机的端口发送的TCP FIN包或Xmas tree包/Null包,如果收到对方RST回复包,那么说明该端口是关闭的;没有收到RST包说明端口可能是开放的或被屏蔽的(open|filtered)。

其中Xmas tree包是指flags中FIN URG PUSH被置为1的TCP包;NULL包是指所有flags都为0的TCP包。

TCP FIN探测到主机端口是关闭的:

nmap软件常见用法有哪些

TCP FIN探测到主机端口是开放或屏蔽的:

 nmap软件常见用法有哪些

  UDP scanning

UDP扫描方式用于判断UDP端口的情况。向目标主机的UDP端口发送探测包,如果收到回复“ICMP port unreachable”就说明该端口是关闭的;如果没有收到回复,那说明UDP端口可能是开放的或屏蔽的。因此,通过反向排除法的方式来断定哪些UDP端口是可能出于开放状态。

UDP端口关闭:

nmap软件常见用法有哪些

UDP端口开放或被屏蔽:

nmap软件常见用法有哪些

隐藏自身IP的扫描

使用idle scan方式借助僵尸主机(zombie host,也被称为idle host,该主机处于空闲状态并且它的IPID方式为递增。详细实现原理参见:http://nmap.org/book/idlescan.html)来扫描目标在主机,达到隐蔽自己的目的;

或者使用FTP bounce scan,借助FTP允许的代理服务扫描其他的主机,同样达到隐藏自己的身份的目的。

5、版本侦测

版本侦测,用于确定目标主机开放端口上运行的具体的应用程序及版本信息。

5.1   版本侦测原理

简要的介绍版本的侦测原理。

版本侦测主要分为以下几个步骤:

  1. 首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。

  2. 如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。

  3. 如果通过“Welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。

  4. 如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。

  5. 如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。

  6. 如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。

5.2    版本侦测的用法

版本侦测方面的命令行选项比较简单

-sV: 指定让Nmap进行版本侦测

--version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。

--version-light: 指定使用轻量侦测方式 (intensity 2)

--version-all: 尝试使用所有的probes进行侦测 (intensity 9)

--version-trace: 显示出详细的版本侦测过程信息。

下面以扫描80端口的版本为例,显示snmp的扫描结果和抓包结果

snmp -sV -p 80 113.11.*.*        #指定扫描80端口

从抓包可以看出,在未指定 -Pn 参数时,默认限制性的ip存活性检测,只有当确认主机存活后才进行版本检测。

nmap软件常见用法有哪些

nmap软件常见用法有哪些

使用snmp -sV 113.11.*.* 时,默认检查存活状态,根据存活状态再扫描TCP常见的1000端口,根据端口状态再扫描版本(在http版本确认中,首先建立了tcp连接,然后关闭tcp连接,再建立连接3次握手,并发出get请求后进行4次挥手)

6、OS侦测

命令nmap -O 113.11.*.*

nmap首先检测主机存活状态,然后扫描常见的1000端口,最后判断OS系统,下图是运行后的结果。根据结果,里面的端口都能够扫描出是开启或是关闭,说明未架设防火墙等安全防护设备。

nmap软件常见用法有哪些

7、Nmap 高级用法

防火墙与IDS规避为用于绕开防火墙与IDS(***检测系统)的检测与屏蔽,以便能够更加详细地发现目标主机的状况。

Nmap提供了多种规避技巧,通常可以从两个方面考虑规避方式:数据包的变换(Packet Change)与时序变换(Timing Change)。

7.1 分片(Fragmentation)

将可疑的探测包进行分片处理(例如将TCP包拆分成多个IP包发送过去),某些简单的防火墙为了加快处理速度可能不会进行重组检查,以此避开其检查。

-f; --mtu <val>: 指定使用分片、指定数据包的MTU.
nmap -sn -f --mtu 16 113.11.*.*          #注意 mtu后的数值必须是8的倍数,如下图提示

nmap软件常见用法有哪些

下图中,首先是正常命令时的抓包,然后是采用分片后的抓包:

nmap -sn 113.11.*.*

nmap  -sn -f --mtu 16 113.11.*.*

nmap软件常见用法有哪些从抓包中,可以看出data的数据包为16byte,与分片设定的字节是一致的,同时抓包中也有提示分片包"Reassembled in #878"

7.2 IP诱骗(IP decoys)

在进行扫描时,将真实IP地址和其他主机的IP地址(其他主机需要在线,否则目标主机将回复大量数据包到不存在的主机,从而实质构成了拒绝服务***)混合使用,以此让目标主机的防火墙或IDS追踪检查大量的不同IP地址的数据包,降低其追查到自身的概率。注意,某些高级的IDS系统通过统计分析仍然可以追踪出扫描者真实IP地址。

-D <decoy1,decoy2[,ME],...>: 用一组IP地址掩盖真实地址,其中ME填入自己的IP地址。 

nmap -sn -D 1.1.1.1 113.11.*.*        #这里如果不添加[ME]自己的地址也会使用自己的地址,同时也会发送诱骗的地址,即2个地址都将作为源地址

nmap软件常见用法有哪些

下图是抓包截图,可以看出源地址有两个,一个是诱骗的地址,另一个是自己的真实地址,利用伪装地址可以发动反射形dos***

nmap软件常见用法有哪些这是源地址为内网地址,当源地址为公网地址时,不填写源地址是否可行,需要验证。

7.3 指定源端口

某些目标主机只允许来自特定端口的数据包通过防火墙。例如FTP服务器配置为:允许源端口为21号的TCP包通过防火墙与FTP服务端通信,但是源端口为其他端口的数据包被屏蔽。所以,在此类情况下,可以指定Nmap将发送的数据包的源端口都设置特定的端口。

-g/--source-port <portnum>: 使用指定源端口  

nmap -sn -g  11111 113.11.*.*        #指定源端口为11111,向外发送

nmap软件常见用法有哪些

下图是抓包,从中可以看出tcp的源端口都是51111,这个可以通过指定源端口来符合防火墙的ACL访问列表,从而躲避防火墙的检测。

nmap软件常见用法有哪些

7.4 扫描延时

某些防火墙针对发送过于频繁的数据包会进行严格的侦查,而且某些系统限制错误报文产生的频率(例如,Solaris 系统通常会限制每秒钟只能产生一个ICMP消息回复给UDP扫描),所以,定制该情况下发包的频率和发包延时可以降低目标主机的审查强度、节省网络带宽。

<待补实例>

7.5 IP伪装(IP Spoofing)

顾名思义,IP伪装即将自己发送的数据包中的IP地址伪装成其他主机的地址,从而目标机认为是其他主机在与之通信。需要注意,如果希望接收到目标主机的回复包,那么伪装的IP需要位于统一局域网内。另外,如果既希望隐蔽自己的IP地址,又希望收到目标主机的回复包,那么可以尝试使用idle scan或匿名代理(如TOR)等网络技术。

-S <IP_Address>: 伪装成其他IP地址 

nmap -sn -S 1.1.1.1 113.11.*.*        #当源地址伪装成其他ip时,目标机认为是其他主机在与之通信。

<实例不成功>,下面是未成功的抓图,如有知晓的同学,请指点nmap软件常见用法有哪些

提示如果是伪装的源ip地址,必须要使用-Pn 和 -e 选项

nmap软件常见用法有哪些

当使用了-Pn 和 -e 选项后,依然提示报错,不能够分配地址。

nmap -sn -Pn -e wlan0 -S 1.1.1.1 113.11.*.*

nmap -sn -Pn -e eth0 -S 1.1.1.1 113.11.*.*

nmap软件常见用法有哪些

7.6 其他技术

Nmap还提供多种规避技巧,比如指定使用某个网络接口来发送数据包、指定发送包的最小长度、指定发包的MTU、指定TTL、指定伪装的MAC地址、使用错误检查和(badchecksum)。

更多信息http://nmap.org/book/man-bypass-firewalls-ids.html

-f; --mtu <val>: 指定使用分片、指定数据包的MTU.

-D <decoy1,decoy2[,ME],...>: 用一组IP地址掩盖真实地址,其中ME填入自己的IP地址。

-S <IP_Address>: 伪装成其他IP地址

-e <iface>: 使用特定的网络接口

-g/--source-port <portnum>: 使用指定源端口

--data-length <num>: 填充随机数据让数据包长度达到Num。

--ip-options <options>: 使用指定的IP选项来发送数据包。

--ttl <val>: 设置time-to-live时间。

--spoof-mac <mac address/prefix/vendor name>: 伪装MAC地址

--badsum: 使用错误的checksum来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或IDS/IPS)。

8 NSE脚本引擎 

<待补充>

NSE脚本引擎(Nmap Scripting Engine)是Nmap最强大最灵活的功能之一,允许用户自己编写脚本来执行自动化的操作或者扩展Nmap的功能。

NSE使用Lua脚本语言,并且默认提供了丰富的脚本库,目前已经包含14个类别的350多个脚本。

NSE的设计初衷主要考虑以下几个方面:

以上是“nmap软件常见用法有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. NMAP 简单用法介绍
  2. 常见负载均衡软件有哪些?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nmap

上一篇:如何理解UML活动图

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》