理解nmap指纹

当Nmap在内存中存储指纹时,Nmap使用数据结构中的属性和值的树,用户甚至不需要知道。但是还有一个特殊的ASCII编码版本,当机器被识别时,Nmap可以为用户打印。每次从nmap-os-db数据库运行Nmap(启用OS检测)时,也会读回数千个这些序列化指纹指纹格式是人类理解和简洁之间的折衷。格式非常简洁,看起来像许多没有经验的用户的线路噪音,但阅读此文档的人应该能够轻松解读指纹。实际上有两种类型的指纹,尽管它们具有相同的一般结构。Nmap读入的已知操作系统的指纹称为参考指纹reference fingerprints,而在扫描系统后显示的指纹Nmap是受试者指纹subject fingerprint。参考指纹要复杂一点,因为它们可以通过增加(或省略)不太可靠的测试的余地,同时只允许其他测试有一个可能的值,来适应一整类操作系统。参考指纹也有操作系统细节和分类。由于受试者测试更简单,我们首先描述它们。

1.Decoding the Subject Fingerprint Format
如果Nmap在主机上执行操作系统指纹识别,并且尽管有希望的条件(例如找到目标上可访问的打开和关闭端口),但没有获得完美的OS匹配,Nmap会打印一个受试者指纹,显示Nmap认为的所有测试结果 ,然后要求用户将数据提交给Nmap.Org。当Nmap没有有用的结果时,例如未收到相关的探测响应时,不会显示测试。名为SCAN的特殊行提供了有关扫描的额外详细信息(例如Nmap版本号),这些详细信息为将指纹提交集成到nmap-os-db中提供了有用的上下文。 典型的受试者指纹显示在例8.3中。

在这里插入图片描述
现在您可以查看此指纹并立即了解一切意味着什么。许多人可能认为某种缓冲区溢出或未终止的字符串错误导致Nmap向它们发送垃圾数据。本节帮助您解码信息,以便您可以立即判断针对此计算机的盲目TCP序列预测攻击是中等难度的,但它可能会成为一个良好的空闲扫描(-sI)僵尸。理解此指纹的第一步是修复换行。测试都被挤压在一起,每行有71个字符。 然后OS:被添加到每一行,将长度增加到74个字符。 这使得指纹易于剪切并粘贴到Nmap指纹提交表单中。 删除前缀并修复自动换行(每行应以右括号结尾)后如图所示:
在这里插入图片描述
虽然这仍然不是世界上最直观的格式(我们必须保持简短),但格式现在更加清晰。 每一行都是一个类别,例如SEQ用于序列生成测试,T3用于特定TCP探测的结果,IE用于与两个ICMP echo探测相关的测试。
在每个测试名称后面是一对括号,其中包含单个测试的结果。测试采用格式 = 。 所有可能的类别,测试和值都在“Nmap支持的TCP / IP指纹识别方法”一节中描述。 每对测试用百分比符号(%)分隔。 测试值可以为空,从而导致紧跟在等号后面的百分比符号或类别终止右括号。在我们的示例的T4中,字符串“O =%RD = 0%Q =)”显示了这些空测试中的两个。空白测试值必须与另一个空白值匹配,因此该空TCP错误Q值与Q设置为RU的指纹不匹配。

在某些情况下,缺少整个测试而不仅仅是其值。 例如,我们的样本指纹的T2没有W(TCP窗口),S(序列号),A(确认号),T(TTL)或TG(TTL猜测)测试。这是因为它所包含的一个测试和值R = N意味着没有为T2探测器返回响应。 因此,包含窗口值或序列号将毫无意义。 同样,运行Nmap的系统不支持的测试也会被跳过。 一个例子是RID(ICMP数据包中返回的IP ID字段)测试,它在Solaris上不能很好地工作,因为该系统会破坏Nmap发出的ID字段。不确定的测试(如未能检测到TI,CI,II的IP ID)也将被忽略
1.1
Decoding the SCAN line of a subject fingerprint
SCAN行是受试者指纹中的特殊情况。这些测试不是描述目标系统,而是描述扫描的各种条件。这些帮助我们整合提交给Nmap.Org的指纹。这一行的测试是:
Nmap版本号(V)。
扫描日期(D),以月/日的形式显示。
用于扫描(OT和CT)的开放的和关闭的TCP端口(在目标机器上)。 与大多数测试不同,它们以十进制格式打印。如果Nmap无法找到打开或关闭的端口,则测试将包含空值(即使Nmap猜测可能已关闭的端口并在其中发送探测)。
关闭的UDP端口(CU)。这与CT相同,但这是对于UDP而言的。 由于大多数扫描不包括UDP,因此该测试的值通常为空。
如果目标位于10.0.0.0 / 8,172.16.0.0 / 12或192.168.0.0/16专用网络(RFC 1918)上,则专用IP空间(PV)为Y. 否则它是N.
网络距离(DS)是距目标的网络跳跃距离。如果目标是localhost,则为0;如果在以太网网络上直接连接,则为1,如果由Nmap发现,则为准确距离。如果距离未知,则省略该测试。
距离计算方法(DC)表示如何计算网络距离(DS)。 它可以采用以下值:L表示localhost(DS = 0); D表示直接子网连接(DS = 1); I表示对U1 OS检测探针的ICMP响应进行TTL计算; 和T表示traceroute跳数。存在此测试是因为当中间机器更改TTL时,ICMP TTL计算可能不正确; 它区分了真正直接连接的主机和可能只是错误计算的主机。
如果条件和结果似乎足以将此指纹提交给Nmap.Org,则结果良好(G)为Y. 否则就是N. 除非您通过启用调试(-d)或极端详细程度(-vv)强制它们,否则Nmap不会打印G = N指纹。
目标MAC前缀(M)是目标MAC地址的前六个十六进制数字,对应于供应商名称。 不包括前导零。除非目标位于同一以太网网络(DS = 1)上,否则将省略此字段。
OS扫描时间(TM)以Unix time_t格式(十六进制)提供。
编译的平台Nmap在P字段中给出。
1.2Decoding the Reference Fingerprint Format
当Nmap扫描目标以创建受试者指纹时,它会尝试将该数据与nmap-os-db数据库中的数千个参考指纹进行匹配。 参考指纹最初由一个或多个受试者指纹形成,因此具有很多共同点。 它们确实有一些额外的信息来促进匹配,当然还有描述它们所代表的操作系统。例如,我们刚刚查看的受试者指纹可能构成例8.5中参考指纹的基础
在这里插入图片描述
一些差异显而易见。换行没有完成,因为这对提交过程很重要。 SCAN行也被删除,因为该信息描述了特定的扫描实例而不是一般的目标OS特性。
您可能还注意到了新的行,指纹,类和CPE,它们是此参考指纹的新功能。一个更微妙的变化是,一些单独的测试结果已被删除,而其他测试结果已通过逻辑表达式得到增强。

1.3
Free-form OS description (Fingerprint line)
Fingerprint行首先用作token,Nmap由此知道开始加载新指纹。每个指纹只有一条这样的行。 在fingerprint token(和空格)之后立即出现由该指纹表示的操作系统的文本描述。 这些是自由形式的英文文本,专为人类解释而不是机器解析器而设计。然而,Nmap尝试坚持使用一致的格式,包括供应商,产品名称和版本号。 可以在此字段中找到先前讨论的版本号范围和逗号分隔的备选方案。 这里有些例子:
在这里插入图片描述
在理想的世界中,每个不同的操作系统都只对应一个唯一的指纹。 不幸的是,操作系统供应商并没有让我们的生活如此轻松。 相同的操作系统版本可能会根据正在使用的网络驱动程序,用户可配置选项,补丁级别,处理器体系结构,可用RAM量,防火墙设置等进行不同的指纹识别。 有时候指纹会因为没有明显的原因而有所不同。 虽然参考指纹格式具有用于处理轻微变化的表达语法,但是当发现主要差异时,通常优选地为同一OS创建多个指纹。

正如一个操作系统经常需要多个指纹一样,有时单个指纹会描述多个系统。如果两个系统为每个测试提供完全相同的结果,Nmap别无选择,只能提供两种可能性。 这通常由于几个原因而发生。 一个是供应商可能会发布他们的操作系统的新版本,而不会对他们的IP堆栈进行任何重大更改。 也许他们在系统的其他地方做了重大改变,或者他们做的很少,但想要赚一大笔钱来销售“升级”。 在这些情况下,Nmap通常会打印Apple Mac OS X 10.4.8 - 10.4.11或Sun Solaris 9或10等范围。

指纹重复的另一个原因是共享公共OS的嵌入式设备。 例如,来自一个供应商的打印机和来自另一个供应商的以太网交换机实际上可以共享来自第三个供应商的嵌入式OS。 在许多情况下,设备之间的细微差别仍然可以区分它们。 但有时Nmap必须简单列出一组可能性,例如Cisco 1200系列WAP,HP ProCurve 2650交换机或Xerox Phaser 7400N或8550DT打印机。

还有一些情况下,许多供应商使用自己的品牌名称和型号标记完全相同的OEM设备。 同样,Nmap必须简单列出可能性。 但区分这些并不重要,因为它们基本上都是相同的设备。

1.4
Device and OS classification (Class lines)
虽然指纹描述对于直接读取Nmap输出的分析师非常有用,但许多人从其他脚本和应用程序运行Nmap。 这些应用程序可能会使用操作系统信息来检查特定于操作系统的漏洞,或者仅创建漂亮的图形或报告。

出于这些目的,存在更结构化的OS分类系统。 当有多个匹配时,它也很有用。 如果您只获得部分指纹(可能没有在目标上找到开放端口,那么必须跳过许多测试),它可能会匹配nmap-os-db数据库中的许多不同指纹。 打印所有这些指纹的细节将是一团糟。 但是由于操作系统分类,Nmap可以找到共性。如果所有匹配都归类为Linux,Nmap将只打印目标是Linux。

每个指纹都有一个或多个Class行。每个包含四个明确定义的字段:供应商,OS系列,OS世代和设备类型。字段由管道符号(|)分隔。

供应商是制造OS或设备的公司。 例如Apple,Cisco,Microsoft和Linksys。 对于没有控制供应商的社区项目(如OpenBSD和Linux),将为供应商列重复OS系列名称。

OS系列包括Windows,Linux,IOS(适用于Cisco路由器),Solaris和OpenBSD等产品。 还有数百种设备,如交换机,宽带路由器和打印机,它们使用未公开的操作系统。 当底层操作系统不清楚时,使用嵌入式操作系统。

操作系统世代是对操作系统的更细粒度的描述。 Linux的世代包括2.4.X和2.6.X,而Windows世代包括95,98,Me,2000,XP和Vista。FreeBSD使用4.X和5.X等代。 对于我们没有细分为几代的模糊操作系统(或者只是将OS简单地列为嵌入式),该字段留空。

设备类型是一个广泛的分类,如路由器,打印机或游戏机,本章前面已讨论过。可以用于几乎任何东西的通用操作系统(例如Linux和Windows)被归类为通用。

每个字段可能只包含一个值。 当指纹表示这四个字段的多个可能组合时,使用多个class行。 例8.6提供了一些示例指纹线,后面是它们相应的分类。

在这里插入图片描述
1.5
CPE name (CPE lines)
CPE行给出了class行的Common Platform Enumeration等价物。 每个class可以跟随几个CPE行(CPE行总是“属于”紧接在它们之前的class行)。 一般一个CPE名称用于描述操作系统,另一个用于描述硬件平台。
在这里插入图片描述
跟随某些CPE名称的auto标志不是CPE的一部分; 它仅在维护脚本内部使用,表示CPE名称是从其他信息自动生成的,而不是手动插入的

1.6
Test expressions
测试表达式不必在受试者指纹和参考指纹之间进行更改,但它们几乎总是如此。参考指纹通常需要一点点推广以匹配特定操作系统的所有实例,而不仅仅是您正在扫描的机器。例如,某些Windows XP计算机将窗口大小F424返回到T1探测器,而其他计算机返回FAF0。 这可能是由于使用了特定的以太网设备驱动程序,或者可能有多少内存而影响。 无论如何,无论使用哪种窗口大小,我们都希望检测Windows XP。

概括一种指纹的一种方法是简单地删除产生不一致结果的测试。从参考指纹中删除所有窗口大小测试,无论使用何种大小,系统都将匹配该打印。缺点是通过这种方式丢失很多重要信息。如果特定系统发送的唯一窗口大小是F424和FAF0,那么您实际上只想允许这两个值,而不是全部65,536种可能性。

虽然在某些情况下删除测试是过度的,但在其他情况下它是有用的。 R = Y测试值,意味着存在响应,通常在将它们添加到nmap-os-db之前从U1和IE测试中删除。 这些探测器经常被防火墙阻止,因此缺少响应不应该与OS匹配进行计数。

当不希望删除测试时,Nmap提供了一种表达式语法,允许测试匹配多个值。 例如,W = F424 | FAF0将允许这两个Windows XP窗口值而不允许任何其他值。 表8.8显示了测试值中允许的运算符。

在这里插入图片描述
表达式可以组合运算符,如GCD = 1-6 | 64 | 256 |> 1024,如果GCD在1到6之间,恰好是64,正好是256或大于1024,则匹配。

1.7
IPv6 fingerprints
由于IPv6分类引擎的工作方式不同,因此它具有不同的指纹。没有参考指纹; 相反,一组先前识别的训练样例通过训练算法运行,该训练算法输出大的系数矩阵,每个特征和OS类一个。受试者指纹使用与IPv4相同的ASCII装甲格式,如例8.8“IPv6指纹”所示。
在这里插入图片描述
例8.9“清理的IPv6指纹”显示了这个指纹看起来像没编码的内容。 大多数探针都被省略,因为它们都具有相同的格式。
在这里插入图片描述
SCAN行与IPv4指纹中的含义相同。 伪测试E = 6表示这是IPv6指纹。
然后,每个探测器都有一行接收到响应。其中每个都有三个键:

P
数据包的内容,十六进制和行程编码。 只要两个数字后跟一个大括号中的数字,就意味着重复该字节给定的次数。 例如,00 {4}是00000000的缩写。字符XX代替源和目标地址,这些地址是私有的,无论如何对训练分类器没有用。

ST
发送数据包的时间(以秒为单位),相对于OS检测开始的时间。

RT
收到数据包的时间。
EXTRA行存储任何其他无法完全根据数据包内容确定的信息。FL键存储扫描期间发送的流标签。除了某些操作系统不允许设置流标签并始终发送00000,这将始终为12345。

当处理上述指纹时,它将转换为内部表示,如下所示。每个值都是传递给分类器的特征向量的一个元素。
在这里插入图片描述
UNKNOWN值通常意味着没有收到相关探测的响应。UNKNOWN值在分类之前映射到-1。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IPv6资产发现是指使用nmap工具来扫描IPv6网络,以发现并收集关于这些网络中的IPv6主机的信息。在nmap中,有几种不同的扫描选项可以用于IPv6资产发现。 第一种是使用-v选项进行简单扫描。这将使用ICMPv6 echo请求(ping6)来检测主机的可达性,并返回主机的基本信息,如IP地址和MAC地址等。这可以通过以下命令实现:nmap -6 -sn <目标IPv6地址范围> 第二种是使用-Pn选项进行非ping扫描。这将禁用ping请求,并直接进行端口扫描。这对于那些已禁用ping响应的主机非常有用。命令示例:nmap -6 -Pn <目标IPv6地址> 第三种是使用-A选项进行强化扫描。这将执行更深入的扫描,包括版本检测、脚本扫描和操作系统识别等。命令示例:nmap -6 -A <目标IPv6地址> 此外,还可以结合使用这些选项,根据需要进行更精确的扫描,以获得更详细的资产信息。需要注意的是,在进行IPv6资产发现时,需要使用IPv6地址范围来指定目标网络。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [v6disc:IPv6自动发现工具](https://download.csdn.net/download/weixin_42116734/18564665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Windows下nmap命令及Zenmap工具的使用方法](https://blog.csdn.net/wkl_venus/article/details/109491200)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [理解nmap指纹](https://blog.csdn.net/yalecaltech/article/details/90199535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值