目标主机操作系统识别技术

本文涉及的产品
云防火墙,500元 1000GB
简介:
普遍的入侵行为需要进行端口扫描,这是多数“黑客”的熟练技巧。大多数的端口扫描就是让我们能够达到这样的目的:
1、让我们能够大致判断目标是什么操作系统
2、目标到底在运行些什么服务
当然,要扫描得到这些东西还是最后为了让我们能够知道哪些可能拿来利用,可能存在的漏洞,对目标主机的操作系统类型识别,更能够方便地让我们去利用操作系统对应的漏洞实施攻击。很多工具提供的扫描也可能就直接得到什么操作系统了,或者相对应的端口使用的是什么程序,程序是什么版本的等等。不过,这些都是由那些工具自己做了,不讨论这个,我们应该去想想这些工具到底是怎么去实现的。

对目标主机操作系统识别的目的,正如Fyodor(nmap的作者)在他的
《Remote OS detection via TCP/IP Stack FingerPrinting》中讲解那样,进行主机识别有两个主要作用,第一,很多系统漏洞是同OS密切相关的,还有就是社会学(social engineering)问题,你能够在非常了解对方的系统之后,冒充软件提供商给目标发送“补丁”。按照我们上面提到的高级扫描方式,直接进行的端口扫描,能够赋予我们绕过防火墙的能力,而且可以尽可能地隐藏
自己等等,但是,我们能够得到的信息也是有限的,也许对是否开放一个端口并不是那么直接地感兴趣,比如一个21端口,我们真正感兴趣的是这个端口被用来作什么了,运行地什么版本的程序,而不是仅仅打开一个21端口就满意了。也就是说,我们对下面得到地这个东西更感兴趣(关系到IP的地方,我都用X代替了):

C:\>ftp XXX.XXX.XXX.XXX
Connected to XXX.XXX.XXX.XXX.
220 XXXXX X2 WS_FTP Server 1.0.5 (1327846197)
User (XXX.XXX.XXX.XXX:(none)):

其实,这就是一种最简单和最直接的判别方式,获得程序版本变相地也让我们能够估计到目标的操作系统类别。我们可以对每个打开的端口进行相应的连接,通常这些服务程序就会非常高兴地显示自己的“banner”,也就让我们能够直接得到他是什么版本了。甚至,我们能够得到更好的东西:

C:\>telnet XXX.XXX.XXX.XXX
Red Hat Linux release 7.1 (Seawolf)
Kernel 2.4.2-2 on an i686
login:

这让我们对操作系统版本一览无余了。正象这些只对80端口感兴趣的“黑客”一样,通过对80端口的连接,我们也能得到足够多的信息。

C:\>telnet XXX.XXX.XXX.XXX 80
HEAD / HTTP/1.1

HTTP/1.1 200 OK
Via: 1.1 ADSL2000
Content-Length: 97
Date: Thu, 24 Jan 2002 13:46:56 GMT
Content-Type: text/html
Server: Apache/1.3.20 (Unix) PHP/4.0.6
Last-Modified: Wed, 26 Dec 2001 09:22:54 GMT
ETag: "8715f-61-3c2996ee"
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=100

可以注意到:Server: Apache/1.3.20 (Unix) PHP/4.0.6,这里很明白地“贡献”出WEB服务器的软件版本。

这样直接的连接探测方式,对于这些banner开放的,简直是太容易了,当然,负责的管理员也会屏蔽或者修改掉这些BANNER。

还有一种粗劣而且简单的判别主机操作系统类型的办法就是通过Ping,然后分析得到的TTL值,当然,稍微准确点可以同时在配合Tracert来确定主机原始的TTL值,不过,这种办法很容易被欺骗,比如,在WINDOWS系统中,对注册表的修改:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 
Key: DefaultTTL 
通过对DefaultTTL的修改,比如:修改成为255,伪装成为一台UNIX主机,就能够造成探测者的错误判断。

对主机使用端口的分析,同样也能够进行操作系统识别,一些操作系统使用特殊的端口,比如:WINDOWS的137、139,WIN2K的445,而且一些网络设备比如入侵检测系统、防火墙等等也都有厂商自己的端口开放。

上面的这些识别方式也是那些负责管理员能够简单应付的方式,这里,我们可以看看高级的主机识别技术,这些技术主要分为两类:主动协议识别和被动协议识别,都是利用各种操作系统在网络协议通讯中使用不同的协议内容(各个厂商有自己的规定),然后对这些不同之处进行分析进行的识别。

Nmap这个强大的扫描工具在远程主机判断上也使用了很多技术,来实现更高级的主机系统检测。这主要是通过主动的TCP/IP协议辨识来实现的,每种操作系统在TCP交流中总是使用一些具有特性的标志,这些标志在TCP IP数据包的头中表现出来。比如window、ACK序号、TTL等等的不同反应,通过大量的数据分析,然后精确地判断主机系统。这些系统的协议特性包括(这只是一小部分):
FIN识别:发送一个只有FIN标志位的TCP数据包给一个打开的端口并等待回应。正确的RFC793行为是不响应,但有些系统,例如 MS Windows, BSDI, CISCO, HP/UX,MVS,和IRIX 发回一个RESET。

DF位识别:许多操作系统在送出的一些包中设置IP的DF(不分片)位。

WINDOW大小:检查返回包的窗口大小。特定操作系统反应的窗口大小基本是常数,例如,AIX 是唯一用0x3F25的),Microsoft 以及OpenBSD 与FreeBSD用的是0x402E。

ACK 序号识别:不同实现中ACK的值是不同的。例如,如果你送了一个FIN|PSH|URG 到一个关闭的TCP 端口。大多数实现会设置ACK 为你的初始序列数,而Windows 和一些傻打印机会送给你序列数加1。
在之后,Fyodor 和Ofir又分析和收集利用ICMP协议的操作系统特性来进行的主机系统判别,这种主动的识别方式都经过了大量的分析,原理和上面的TCP/IP协议识别相同,比如:用ICMP的地址掩码请求来探测SUN操作系统,对于ICMP地址掩码请求,只有少数操作系统会产生相应的应答,这些系统包括ULTRIX OpenVMS, Windows 95/98/98 SE/ME, 
NT below SP 4, 和 SUN Solaris机器。但SUN对分片ICMP地址掩码请求的应答同其他操作系统不相同,这样就可以来识别SUN主机操作系统。

和主动的协议识别原理相同,Lance Spitzner在《Passive Fingerprinting》中提出了被动的协议识别,同样用来判别主机系统。这种办法主要集中考虑:
1、TTL的设置
2、WINDOW SIZE:操作系统设置的窗口大小
3、DF:操作系统是否设置分片位
4、TOS:操作系统设置的服务类型

对于TTL,对于一个操作系统来说一般是固定的,比如LINUX Kernel 2.2.x & 2.4.x的 TTL 字段值为 64,
FreeBSD 4.1, 4.0, 3.4; Sun Solaris 2.5.1, 2.6, 2.7, 2.8;的 TTL为 255 Windows NT,Windows 2000 的为 128等,同时将配合其他需验证的内容,比如:LINUX的窗口值是0x7D78,Solaris2.6-2.7的窗口值有几种0x2328,0x2238等等。我们以WIN2000为例,它的TTL为“128”,窗口大小在“17000-18000”这个范围内,并且设置分片位,即DF为1,
而操作系统设置的服务类型TOS为“0”,如果我们对接收的原始数据分析得到这样的结果,那么我们可以判断这是一个WIN2000的操作系统。
当然被动协议识别操作系统也需要分析各个操作系统的不同反馈属性,然后根据得到的信息同收集的属性相比较。比如多数系统使用DF位设置,但是有些系统如SCO和OPENBSD不使用这个DF标志,这样就可以用来识别一些没有设置DF位的操作系统。被动协议识别也可以用来判断远程代理防火墙,因为代理防火墙重建对客户的连接,它有它自身的特征代码,也可以用这样的办法来分析。

主动协议识别和被动协议识别需要进行大量的统计分析,虽然比最开始介绍的那些简单识别方法准确些,但是也并不能保证一定能够识别得到准确的操作系统类型。同时这两种方法主要区别就在于一个是主动,而一个是被动的,主动识别方式需要主动发送数据包,因此相对于那些安全设备来说,也比较容易识别这些数据包,同被动识别比较起来,隐蔽性稍微差些。

Reference:
1、《X - Remote ICMP Based OS Fingerprinting Techniques》
2、Phrack #57《ICMP based remote OS TCP/IP stack fingerprinting techniques》
3、Fyodor《Remote OS detection via TCP/IP Stack FingerPrinting》

4、Lance Spitzner《Passive Fingerprinting》















本文转自starger51CTO博客,原文链接: http://blog.51cto.com/starger/19655,如需转载请自行联系原作者


相关文章
|
4月前
|
存储 安全 物联网
操作系统的心脏:深入理解现代操作系统架构与核心技术
本文旨在为读者提供一个关于现代操作系统(OS)架构和核心技术的全面概述。通过分析OS的主要组件、功能以及它们如何协同工作,本文揭示了操作系统在计算机系统中的核心地位及其复杂性。我们将探讨进程管理、内存管理、文件系统和输入/输出(I/O)等关键技术,并讨论它们对系统性能的影响。此外,本文还将涵盖一些最新的操作系统趋势和技术,如云计算、虚拟化和物联网(IoT)。通过阅读本文,读者将获得对操作系统内部运作方式的深刻理解,这对于软件开发人员、IT专业人士以及对计算机科学感兴趣的任何人来说都是宝贵的知识。
|
25天前
|
运维 Linux 测试技术
操作系统迁移技术
本次分享的主题是操作系统迁移方案,由阿里云路延文分享。 1. 迁移背景:CentOS停更危机 2. KeyarchOS迁移方案 3. 操作系统测试 4. 迁移评估
|
26天前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
2月前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
72 4
|
3月前
|
机器学习/深度学习 人工智能 Android开发
移动应用开发与操作系统的协同进化:探索现代技术融合之道###
随着移动互联网的迅猛发展,移动应用已成为人们日常生活中不可或缺的一部分。本文深入探讨了移动应用开发的最新趋势、关键技术以及移动操作系统的发展如何相互促进,共同推动移动互联网的创新与变革。通过分析当前市场动态和技术挑战,本文旨在为开发者提供有价值的见解和指导,帮助他们在竞争激烈的市场中脱颖而出。
|
3月前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
258 5
|
4月前
|
安全 Android开发 iOS开发
安卓vs iOS:探索两种操作系统的独特魅力与技术深度###
【10月更文挑战第16天】 本文旨在深入浅出地探讨安卓(Android)与iOS这两种主流移动操作系统的特色、优势及背后的技术理念。通过对比分析,揭示它们各自如何塑造了移动互联网的生态,并为用户提供丰富多彩的智能体验。无论您是科技爱好者还是普通用户,都能从这篇文章中感受到技术创新带来的无限可能。 ###
98 2
|
5月前
|
人工智能 Linux 云栖大会
看过来!2024 云栖大会操作系统技术 Workshop 怎么玩?
报名倒计时2天啦,欢迎大家来“操作系统技术Workshop”打卡。专家讲解原理、现场实战演练,AI、C++ 20专场任选。
看过来!2024 云栖大会操作系统技术 Workshop 怎么玩?
|
5月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
147 12
|
3月前
|
人工智能 Anolis 开发者