Nmap学习9 - 服务版本、操作系统探测

服务版本、操作系统探测

把Nmap指向一个远程机器,它可能告诉您 端口25/tcp,80/tcp,和53/udp是开放的。使用包含大约2,200个著名的服务的 nmap-services数据库, Nmap可以报告那些端口可能分别对应于一个邮件服务器 (SMTP),web服务器(HTTP),和域名服务器(DNS)。 这种查询通常是正确的 – 事实上,绝大多数在TCP端口25监听的守护进程是邮件 服务器。然而,您不应该把赌注押在这上面! 人们完全可以在一些奇怪的端口上运行服务。

即使Nmap是对的,假设运行服务的确实是 SMTP,HTTP和DNS,那也不是特别多的信息。 当为您的公司或者客户作安全评估(或者甚至简单的网络明细清单)时, 您确实想知道正在运行什么邮件和域名服务器以及它们的版本。 有一个精确的版本号对了解服务器有什么漏洞有巨大帮助。 版本探测可以帮您获得该信息。

在用某种其它类型的扫描方法发现TCP 和/或者UDP端口后, 版本探测会询问这些端口,确定到底什么服务正在运行。 nmap-service-probes 数据库包含查询不同服务的探测报文 和解析识别响应的匹配表达式。 Nmap试图确定服务协议 (如 ftp,ssh,telnet,http),应用程序名(如ISC Bind,Apache httpd,Solaris telnetd),版本号, 主机名,设备类型(如 打印机,路由器),操作系统家族 (如Windows,Linux)以及其它的细节,如 如是否可以连接X server,SSH协议版本 ,或者KaZaA用户名)。当然,并非所有服务都提供所有这些信息。 如果Nmap被编译成支持OpenSSL, 它将连接到SSL服务器,推测什么服务在加密层后面监听。 当发现RPC服务时, Nmap RPC grinder (-sR)会自动被用于确定RPC程序和它的版本号。 如果在扫描某个UDP端口后仍然无法确定该端口是开放的还是被过滤的,那么该端口状态就 被标记为open|filtered。 版本探测将试图从这些端口引发一个响应(就像它对开放端口做的一样), 如果成功,就把状态改为开放。 open|filtered TCP端口用同样的方法对待。 注意Nmap -A选项在其它情况下打开版本探测。 有一篇关于版本探测的原理,使用和定制的文章在 http://www.insecure.org/nmap/vscan/。

当Nmap从某个服务收到响应,但不能在数据库中找到匹配时, 它就打印一个特殊的fingerprint和一个URL给您提交,如果您确实知道什么服务运行在端口。 请花两分钟提交您的发现,让每个人受益。由于这些提交, Nmap有350种以上协议如smtp,ftp,http等的大约3,000条模式匹配。

-sV 服务版本探测

>nmap -sV -p22 --version-trace 192.168.31.142
wpcap.dll present, library version: Npcap version 1.55, based on libpcap version 1.10.2-PRE-GIT
Starting Nmap 7.91 ( https://nmap.org ) at 2022-02-11 16:56 ?D1ú±ê×?ê±??
--------------- Timing report ---------------
  hostgroups: min 1, max 100000
  rtt-timeouts: init 1000, min 100, max 10000
  max-scan-delay: TCP 1000, UDP 1000, SCTP 1000
  parallelism: min 0, max 0
  max-retries: 10, host-timeout: 0
  min-rate: 0, max-rate: 0
---------------------------------------------
NSE: Using Lua 5.3.
NSE: Arguments from CLI:
NSE: Loaded 45 scripts for scanning.
Packet capture filter (device eth5): arp and arp[18:4] = 0x005056C0 and arp[22:2] = 0x0008
Overall sending rates: 9.52 packets / s, 400.00 bytes / s.
mass_rdns: Using DNS server 198.18.0.1
mass_rdns: Using DNS server 198.18.0.1
mass_rdns: Using DNS server 198.18.0.1
mass_rdns: Using DNS server 198.18.0.1
mass_rdns: Using DNS server 114.114.114.114
mass_rdns: 0.07s 0/1 [#: 5, OK: 0, NX: 0, DR: 0, SF: 0, TR: 1]
DNS resolution of 1 IPs took 0.07s. Mode: Async [#: 5, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
Packet capture filter (device eth5): dst host 192.168.31.1 and (icmp or icmp6 or ((tcp or udp or sctp) and (src host 192.168.31.142)))
Overall sending rates: 500.00 packets / s, 22000.00 bytes / s.
NSOCK INFO [1.0020s] nsock_iod_new2(): nsock_iod_new (IOD #1)
NSOCK INFO [1.0020s] nsock_connect_tcp(): TCP connection requested to 192.168.31.142:22 (IOD #1) EID 8
NSOCK INFO [1.0040s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 8 [192.168.31.142:22]
Service scan sending probe NULL to 192.168.31.142:22 (tcp)
NSOCK INFO [1.0110s] nsock_read(): Read request from IOD #1 [192.168.31.142:22] (timeout: 6000ms) EID 18
NSOCK INFO [1.0120s] nsock_trace_handler_callback(): Callback: READ SUCCESS for EID 18 [192.168.31.142:22] (21 bytes): SSH-2.0-OpenSSH_7.4..
Service scan match (Probe NULL matched with NULL line 3565): 192.168.31.142:22 is ssh.  Version: |OpenSSH|7.4|protocol 2.0|
NSOCK INFO [1.0120s] nsock_iod_delete(): nsock_iod_delete (IOD #1)
NSE: Script scanning 192.168.31.142.
NSE: Starting runlevel 1 (of 2) scan.
NSE: Starting runlevel 2 (of 2) scan.
Nmap scan report for 192.168.31.142
Host is up (0.0010s latency).
Scanned at 2022-02-11 16:56:30 ?D1ú±ê×?ê±?? for 1s

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.4 (protocol 2.0)
MAC Address: 00:0C:29:83:79:73 (VMware)
Final times for host: srtt: 1000 rttvar: 3750  to: 100000

Read from C:\Program Files (x86)\Nmap: nmap-mac-prefixes nmap-payloads nmap-service-probes nmap-services.
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.05 seconds

–version-trace (跟踪版本扫描活动)
这导致Nmap打印出详细的关于正在进行的扫描的调试信息。 它是您用–packet-trace所得到的信息的子集。

–allports (不为版本探测排除任何端口)
默认情况下,Nmap版本探测会跳过9100 TCP端口,因为一些打印机简单地打印送到该端口的 任何数据,这回导致数十页HTTP get请求,二进制 SSL会话请求等等被打印出来。这一行为可以通过修改或删除nmap-service-probes 中的Exclude指示符改变, 您也可以不理会任何Exclude指示符,指定–allports扫描所有端口

–version-intensity (设置 版本扫描强度)
当进行版本扫描(-sV)时,nmap发送一系列探测报文 ,每个报文都被赋予一个1到9之间的值。 被赋予较低值的探测报文对大范围的常见服务有效,而被赋予较高值的报文 一般没什么用。强度水平说明了应该使用哪些探测报文。数值越高, 服务越有可能被正确识别。 然而,高强度扫描花更多时间。强度值必须在0和9之间。 默认是7。当探测报文通过nmap-service-probes ports指示符 注册到目标端口时,无论什么强度水平,探测报文都会被尝试。这保证了DNS 探测将永远在任何开放的53端口尝试, SSL探测将在443端口尝试,等等。

–version-light (打开轻量级模式)
这是 --version-intensity 2的方便的别名。轻量级模式使 版本扫描快许多,但它识别服务的可能性也略微小一点。

–version-all (尝试每个探测)
–version-intensity 9的别名, 保证对每个端口尝试每个探测报文。

–version-trace (跟踪版本扫描活动)

-sO 操作系统探测

Nmap最著名的功能之一是用TCP/IP协议栈fingerprinting进行远程操作系统探测。 Nmap发送一系列TCP和UDP报文到远程主机,检查响应中的每一个比特。 在进行一打测试如TCP ISN采样,TCP选项支持和排序,IPID采样,和初始窗口大小检查之后, Nmap把结果和数据库nmap-os-fingerprints中超过 1500个已知的操作系统的fingerprints进行比较,如果有匹配,就打印出操作系统的详细信息。 每个fingerprint包括一个自由格式的关于OS的描述文本, 和一个分类信息,它提供供应商名称(如Sun),下面的操作系统(如Solaris),OS版本(如10), 和设备类型(通用设备,路由器,switch,游戏控制台, 等)。

如果Nmap不能猜出操作系统,并且有些好的已知条件(如 至少发现了一个开放端口和一个关闭端口),Nmap会提供一个 URL,如果您确知运行的操作系统,您可以把fingerprint提交到那个URL。 这样您就扩大了Nmap的操作系统知识库,从而让每个Nmap用户都受益。

操作系统检测可以进行其它一些测试,这些测试可以利用处理 过程中收集到的信息。例如运行时间检测,使用TCP时间戳选项(RFC 1323) 来估计主机上次重启的时间,这仅适用于提供这类信息的主机。另一种 是TCP序列号预测分类,用于测试针对远程主机建立一个伪造的TCP连接 的可能难度。这对于利用基于源IP地址的可信关系(rlogin,防火墙过滤等) 或者隐含源地址的攻击非常重要。这一类哄骗攻击现在很少见,但一些 主机仍然存在这方面的漏洞。实际的难度值基于统计采样,因此可能会有 一些波动。通常采用英国的分类较好,如“worthy challenge”或者 “trivial joke”。在详细模式(-v)下只以 普通的方式输出,如果同时使用-O,还报告IPID序列产生号。 很多主机的序列号是“增加”类别,即在每个发送包的IP头中 增加ID域值, 这对一些先进的信息收集和哄骗攻击来说是个漏洞。

http://nmap.org/book/osdetect.html 文档使用多种语言描述了版本检测的方式、使用和定制。

>nmap -sO  --version-trace 192.168.31.142
wpcap.dll present, library version: Npcap version 1.55, based on libpcap version 1.10.2-PRE-GIT
Starting Nmap 7.91 ( https://nmap.org ) at 2022-02-11 17:06 ?D1ú±ê×?ê±??
--------------- Timing report ---------------
  hostgroups: min 1, max 100000
  rtt-timeouts: init 1000, min 100, max 10000
  max-scan-delay: TCP 1000, UDP 1000, SCTP 1000
  parallelism: min 0, max 0
  max-retries: 10, host-timeout: 0
  min-rate: 0, max-rate: 0
---------------------------------------------
Packet capture filter (device eth5): arp and arp[18:4] = 0x005056C0 and arp[22:2] = 0x0008
Overall sending rates: 10.10 packets / s, 424.24 bytes / s.
mass_rdns: Using DNS server 198.18.0.1
mass_rdns: Using DNS server 198.18.0.1
mass_rdns: Using DNS server 198.18.0.1
mass_rdns: Using DNS server 198.18.0.1
mass_rdns: Using DNS server 114.114.114.114
mass_rdns: 0.07s 0/1 [#: 5, OK: 0, NX: 0, DR: 0, SF: 0, TR: 1]
DNS resolution of 1 IPs took 0.07s. Mode: Async [#: 5, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
Packet capture filter (device eth5): dst host 192.168.31.1 and (icmp or icmp6 or (src host 192.168.31.142))
Increased max_successful_tryno for 192.168.31.142 to 1 (packet drop)
Increased max_successful_tryno for 192.168.31.142 to 2 (packet drop)
Increased max_successful_tryno for 192.168.31.142 to 3 (packet drop)
Increased max_successful_tryno for 192.168.31.142 to 4 (packet drop)
Increased max_successful_tryno for 192.168.31.142 to 5 (packet drop)
Increased max_successful_tryno for 192.168.31.142 to 6 (packet drop)
Increased max_successful_tryno for 192.168.31.142 to 7 (packet drop)
Increased max_successful_tryno for 192.168.31.142 to 8 (packet drop)
Increased max_successful_tryno for 192.168.31.142 to 9 (packet drop)
Increased max_successful_tryno for 192.168.31.142 to 10 (packet drop)
Warning: 192.168.31.142 giving up on port because retransmission cap hit (10).
^C
(base) D:\nmap>nmap -sO  192.168.31.142
Starting Nmap 7.91 ( https://nmap.org ) at 2022-02-11 17:09 ?D1ú±ê×?ê±??
Warning: 192.168.31.142 giving up on port because retransmission cap hit (10).
Nmap scan report for 192.168.31.142
Host is up (0.00068s latency).
Not shown: 249 closed protocols
PROTOCOL STATE         SERVICE
1        open          icmp
2        open|filtered igmp
6        open          tcp
17       open          udp
21       open|filtered prm
103      open|filtered pim
136      open|filtered udplite
MAC Address: 00:0C:29:83:79:73 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 300.78 seconds
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值