Nmap源码分析(操作系统扫描)

本文详细介绍了Nmap源码中的操作系统扫描功能,包括扫描原理、命令行选项和实现框架。扫描原理主要通过TCP/IP协议栈指纹识别操作系统,利用Nmap内部的系统指纹数据库进行比对。Nmap的操作系统侦测主要涉及OSScan、OsScanInfo、HostOsScanInfo等核心类,以及探测包管理类OFProbe。代码流程主要包括IPv4和IPv6的扫描过程,以及针对未匹配主机的最接近指纹匹配。
摘要由CSDN通过智能技术生成

Nmap源码分析(操作系统扫描)

2012年9月1日

 

  Nmap第四个核心功能是操作系统侦测,包括识别出操作系统类型、版本号、目标机硬件平台类型及附加信息(如TCP序号产生方式、IPID产生方式、启动时间等)。目前Nmap 拥有丰富的系统指纹数据库 (nmap-os-db),能够识别出2600多种操作系统与设备类型。


  如上图对网关进行操作系统扫描,可以看到探测出的结果:由MAC地址推断网关是TP-LINK公司产品,设备类型是WAP(无线接入点,即无线路由器)或打印机,运行的是Wind River公司的VxWorks操作系统,OS CPE描述为cpe:/o:windriver:vxworks,网络距离是一跳(1 hop)。

 

1   简单引入

  下面从OS扫描原理、命令行选项角度进行简单回顾。


1.1  扫描原理

  Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,由此不同的TCP/IP方案中可能都有自己的特殊的处理方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。

具体实现方式如下:

  • Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。
  • 分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。
  • 将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。


1.2  命令行选项

  OS侦测的用法简单,Nmap提供的命令比较少。

  -O: 指定Nmap进行OS侦测。
  --osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。
  --osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。

2   实现框架

  下面主要从文件组织、核心类、代码流程的角度来分析操作系统侦测的实现框架。

 

2.1  文件组织

2.1.1流程文件

  操作系统侦测功能主要在os_scan2.h/os_scan2.cc文件中实现(os_scan.h/ os_scan.cc是第一代操作系统侦测的代码,目前默认不使用其流程);IPv6的操作系统探测过程主要FPengine.h/FPengine.cc文件中实现。

2.1.2数据库文件

  Nmap操作系统指纹数据库文件nmap-os-db,里面包含了2600多种操作系统与设备的指纹。所谓的指纹,即由特定的回复包提取出的数据特征。

  下面摘取其中片段,简单了解其结构。

#Windows 7 Professional Version 6.1 Build 7600

Fingerprint MicrosoftWindows 7 Professional

ClassMicrosoft | Windows | 7 | general purpose

CPEcpe:/o:microsoft:windows_7::professional

SEQ(SP=FC-106%GCD=1-6%ISR=108-112%TI=I%II=I%SS=S%TS=7)

OPS(O1=M5B4NW8ST11%O2=M5B4NW8ST11%O3=M5B4NW8NNT11%O4=M5B4NW8ST11%O5=M5B4NW8ST11%O6=M5B4ST11)

WIN(W1=2000%W2=2000%W3=2000%W4=2000%W5=2000%W6=2000)

ECN(R=Y%DF=Y%T=7B-85%TG=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值