设为首页 收藏本站
查看: 590|回复: 0

[经验分享] nmap软件使用思路及常见用法

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-12 10:02:53 | 显示全部楼层 |阅读模式
一、扫描思路


二、常见用法
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为例


1
    nmap -sn IP



    wKiom1SyTPDi0qFgAAEj-hp6hYA982.jpg
    当目标主机与源主机在同一网段时

1
    nmap -sn 192.168.1.103



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

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

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

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

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



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

下图是使用-Pn 选项来扫描80端口
1
nmap -Pn -sS -p 80 113.11.*.*



wKiom1SyVuDxjN-9AAE39qn6sys024.jpg
wKioL1SyV9LyURtSAABfkcm4D2U042.jpg
从nmap的扫描结果看,该端口被过滤,即不确定是否存活,但该主机是存活的。
但从抓包来看,该主机没有任何回包,说明该端口被过滤或未开启,同时,也无该ip的其他回包信息,所以,判断nmap的主机存活结论是错误的(个人认为)。从抓包来看,nmap当未受到数据包时,默认都发送2次请求包。


nmap端口扫描结果的说明:

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





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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    -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 : 定制TCP包的flags。

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

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

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

  -b : 使用FTP bounce scan扫描方式




端口扫描原理

TCP SYN scanning

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

TCP SYN探测到端口关闭:

wKiom1SyamXSR0VCAAHlPHpC2ZU724.jpg

TCP SYN探测到端口开放:

wKioL1Syau-RSckpAAS2NVWHrO4984.jpg

TCP connect scanning

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

TCP connect探测到端口关闭:


TCP connect探测到端口开放:


TCP ACK scanning

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

TCP ACK探测到端口被屏蔽:


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


   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探测到主机端口是关闭的:


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

  UDP scanning

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

UDP端口关闭:


UDP端口开放或被屏蔽:

隐藏自身IP的扫描
使用idle scan方式借助僵尸主机(zombie host,也被称为idle host,该主机处于空闲状态并且它的IPID方式为递增。详细实现原理参见:http://nmap.org/book/idlescan.html)来扫描目标在主机,达到隐蔽自己的目的;
或者使用FTP bounce scan,借助FTP允许的代理服务扫描其他的主机,同样达到隐藏自己的身份的目的。

5、版本侦测

版本侦测,用于确定目标主机开放端口上运行的具体的应用程序及版本信息。
  • Nmap提供的版本侦测具有如下的优点:
  • 高速。并行地进行套接字操作,实现一组高效的探测匹配定义语法。
  • 尽可能地确定应用名字与版本名字。
  • 支持TCP/UDP协议,支持文本格式与二进制格式。
  • 支持多种平台服务的侦测,包括Linux/Windows/Mac OS/FreeBSD等系统。
  • 如果检测到SSL,会调用openSSL继续侦测运行在SSL上的具体协议(如HTTPS/POP3S/IMAPS)。
  • 如果检测到SunRPC服务,那么会调用brute-force RPC grinder进一步确定RPC程序编号、名字、版本号。
  • 支持完整的IPv6功能,包括TCP/UDP,基于TCP的SSL。
  • 通用平台枚举功能(CPE)
  • 广泛的应用程序数据库(nmap-services-probes)。目前Nmap可以识别几千种服务的签名,包含了180多种不同的协议。

5.1   版本侦测原理

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

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

  • 首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
  • 如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。
  • 如果通过“Welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
  • 如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。
  • 如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
  • 如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。

5.2    版本侦测的用法

版本侦测方面的命令行选项比较简单
1
2
3
4
5
6
7
8
9
-sV: 指定让Nmap进行版本侦测

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

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

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

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




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

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



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




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




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-40581-1-1.html 上篇帖子: Linux Netfilter conntrack对zone的支持 下篇帖子: openSSL加密解密 软件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表