APP下载

基于虚假响应的主机指纹隐藏方法

2021-07-13李炳彰高小涵

无线电通信技术 2021年4期
关键词:攻击者数据包端口

贾 哲,李炳彰,高小涵

(1.通信网信息传输与分发技术重点实验室,河北 石家庄 050081;2.中国电子科技集团公司第五十四研究所,河北 石家庄 050081)

0 引言

自2012年我国提出首批国家级智慧城市试点建设以来,已经有超过700多座城市在规划或正在建设智慧城市,百姓的衣食住行、政府的管理、社会的治理、城市的运转,以及关键基础设施的运行架构都在网络之上。随着物联网、云计算等信息技术的发展,物联网与智慧城市的发展模式呈现多系统协同、跨层级控制、纵横多点级联等特点,关键信息基础设施的复杂度指数级上升,安全脆弱性和安全威胁面临多样化、隐蔽化等巨大挑战。为了解决现有信息系统外部“静态、同质、确定”的特点而导致易被探测、攻易守难等问题,欺骗防御、拟态防御等主动防御技术受到关注,通过使用骗局或假动作来阻挠或者推翻攻击者的认知过程,扰乱攻击者的自动化工具,延迟或阻断攻击者的活动,通过使用虚假的响应、有意的混淆,以及假动作、误导等伪造信息达到“欺骗”的目的。

本文提出了一种操作系统指纹隐藏的欺骗防御方法。通过扰乱攻击者对目标主机进行指纹扫描和探测的攻击过程,采用混淆的方法隐藏系统的外部特征,使系统展现给攻击者的是一个有限甚至完全隐蔽或者错误的攻击面,降低暴露给攻击者的攻击面,减少可被攻击者利用的资源,使得攻击复杂度和攻击者代价增长,达到主动防御的目的。

1 相关工作

近年来,网络攻击的数量和复杂性都在迅速增加[1-2],攻击者能够利用多种攻击载体渗透到其目标系统中。针对上述问题,研究人员提出了许多办法来增强网络和信息系统的安全防护能力,典型的解决方案包括入侵防护[3]、系统加固[4]以及高级攻击检测和缓解等[5]。尽管这些传统的安全措施在任何安全防护手段中都必不可少,但它们大多是被动响应攻击者的行为,缺乏在网络杀伤链的早期步骤中就与攻击者进行交互的手段,导致防御方始终处于被动地位。

20世纪80年代末,斯托尔[6]首次讨论了如何利用欺骗技术来跟踪入侵者,以确保计算机安全,并在此基础上形成了蜜罐的概念。近年来,出现了不少利用欺骗技术[7-9]来迷惑或误导攻击者的技术手段。网络欺骗防御技术可用于保护易受攻击的业务系统,并因其自身的优势而受到安全防御人员的关注。

针对网络层的欺骗防御技术,对于攻击早期阶段的网络指纹探测行为,开展了网络指纹隐藏的欺骗防御关键技术研究。在攻击杀伤链的侦察阶段,攻击者通过指纹探测和扫描获得网络拓扑结构和可用资产的信息。通过干扰侦察阶段即可混淆侦察结果,例如通过错误响应扫描查询来误导攻击者,Le Malecot介绍了一种通过随机连接跳转和流量伪造来随机化指纹探测的技术,即通过改变目标网络的拓扑结构,达到迷惑攻击者的目的[10]。Trassare通过不断暴露错误的网络拓扑结构来误导攻击者,从而击败traceroute探测类型的扫描[11]。Sushil等人提出通过提供真假混合的应答来响应攻击者的扫描[12]。

在防范操作系统指纹探测的欺骗防御技术方面,和本文内容类似的研究有文献[13-14],通过模拟操作系统的多种行为特征误导潜在攻击者,达到迷惑攻击者并延迟其进展的目标。本文针对关键基础设施业务主机指纹隐藏技术开展研究,结合SDN、虚拟化等新技术的应用,构建更加灵活高效的网络系统特征隐藏机制,达到对攻击者“隐真示假”、避免重要资产暴露的目的。

2 主机指纹探测攻击过程

由于攻击者在进行攻击之前,首先要对目标主机进行扫描,并试图找出目标主机操作系统的类型和服务软件名称版本,从而实施相应的攻击,比如主机指纹探测操作系统为Windows XP sp3、服务器平台为IIS 4.0。本文针对操作系统指纹探测、服务软件指纹探测两种攻击过程进行分析。

2.1 操作系统指纹探测方法

操作系统指纹探测是确定远程主机操作系统身份的过程,主要是通过主动将数据包发送到远程主机并分析响应来完成的。操作系统指纹探测的工具主要有Nmap和Xprobe2等,通过获取响应,根据已知操作系统的签名数据库查询该指纹获取操作系统信息。对于攻击者而言,了解远程主机上正在运行哪种操作系统非常有价值,因为基于漏洞的攻击方法通常依赖于操作系统版本。确定主机操作系统的方法主要有以下三种:

① 横幅抓取[15]:在计算机网络环境中,默认的横幅通常包括关于一个服务的信息,例如版本号。当使用Telnet和专有程序有意收集这些信息时,通常称为横幅抓取。攻击者在寻找易受攻击的主机时,通过与主机建立连接,然后查询端口以查找易受攻击的服务。

② 基于堆栈查询的技术:主动将数据包发送到远程主机上的网络堆栈,通过主机对不同请求的响应来探测系统。堆栈查询的主要方法是针对TCP/IP堆栈,向远程主机的开放(未开放)端口发送标准和非标准的TCP请求,接收远程主机响应的有用信息并进行分析,能够得到一些关于类型和版本之类的信息;另一种方法被称为初始序列号(ISN)分析[16],通过获取TCP堆栈中随机数生成器的差异来确定远程主机的操作系统。

③ ICMP响应分析方法[17]:该方法是在IP层实现的指纹探测,通过向远程主机发送ICMP消息并分析响应来识别操作系统。

2.2 服务软件指纹探测方法

服务软件信息探测一般为横幅抓取,即连接到远程应用程序并观察输出。攻击者确定了远程主机正在运行服务的制造商和版本,可以启动漏洞研究过程。该项技术的工作原理是使用telnet、FTP和一个专有程序与远程计算机建立连接,导致易受攻击的主机响应横幅消息,其中可能包含攻击者用来危害系统的信息。此类探测软件中具有代表性的是Nmap,Nmap内置标语采集器,它连接到开放的TCP端口并在5 s内打印出侦听服务发送的所有内容,获取远程主机某个端口上运行服务软件的名称及版本。

2.3 操作系统和服务软件指纹库

在众多远程主机操作系统识别和服务软件信息探测软件如Nmap和Xprobe2等,都内置了丰富的操作系统指纹库,其中Nmap还内置了众多服务软件的指纹库,例如FTP、TELNET、HTTP、SSH等服务软件,基于指纹库就能够进行操作系统和服务的指纹识别。下面分析Nmap定义的操作系统指纹,如图1所示。

图1 Nmap实施操作系统指纹探测结果示例Fig.1 Operating system fingerprint detection result of nmap

其中,第1行指示了这条指纹对应的操作系统与版本为Solaris 9,运行平台为SPARC。

第2行表示TCP序列性测试的结果,确定TCP初始序列号、IP标识号和TCP时间戳号的生成模式。

第3行代表Nmap中T1测试的结果,即将启用了SYN和ECN Echo标志的TCP数据包发送到一个打开的TCP端口,获得的结果中DF=Y表示已启用IP标头中的Don’t fragment标志,W=C0B7 | 807A表示TCP头中的窗口大小为十六进制的0xC0B7(49335)或0x807A(32890)等信息。

第4行和第5行表示T2和T3测试的结果,Resp = N表示远程主机没有对测试2和测试3发送的数据包进行回应。

第6行到第9行表示T4、T5、T6、T7测试的结果,即分别发送启用ACK标志的TCP包到一个打开的TCP端口;启用SYN标志的TCP包发送到一个关闭的TCP端口;启用ACK标志的TCP包到一个关闭的TCP端口;启用URG、PSH和FIN标志的TCP包到一个关闭的TCP端口等,并对获得的响应信息进行分析。

第10行是对端口不可达测试的响应结果,其中,DF = Y表示已启用IP标头中的“不分段”标志;TOS = 0表示IP标头中的服务类型(TOS)为0;IPLEN = 70表示IP标头中的总长度为十六进制的0x0070或112;RIPTL = 148表示IP中给定的总长度发送回报头是十六进制的0x0148或328等。

Nmap通过模式匹配算法,基于上述指纹库信息,来识别应用程序名称、版本号和其他信息。

3 主机指纹隐藏系统设计

3.1 部署方式

通过对指纹探测攻击的过程进行分析,设计主机指纹隐藏设备,作为面向攻击者的第一道门,在内部网络和外部网络连接的边界位置进行串接部署,对攻击者的探测攻击数据进行直接防护。基于Nmap探测数据包的测试过程和规则匹配方式,实现响应信息的修改。该系统能通过返回修改后的响应信息使攻击者获取错误响应,达到迷惑攻击者的目的。部署方式如图2所示。

图2 主机指纹隐藏设备部署方式Fig.2 Host fingerprint hiding device deployment

3.2 操作系统指纹伪装流程

对操作系统探测进行伪装欺骗过程如下。

步骤1:指纹隐藏设备运行指纹隐藏程序,控制端设备下发隐藏策略,包括受保护主机的ip地址和将要伪装的操作系统类型。

步骤2:当攻击者对内部网络某台主机进行操作系统探测时,其发出的探测数据包会经过指纹隐藏设备,指纹隐藏设备进行数据包的识别与记录工作,内容如下:

① 若该包为ICMP包,则记录源IP、目的IP、ICMP序列号和ICMP代码。

② 数据包类型:识别当前数据包是否为NMAP探测包。若为NMAP探测包,记录其探针名;若为TCP包,记录源IP、目的IP、TCP源端口号、TCP序列号、TCP确认号。若该包为ICMP包,记录源IP、目的IP、ICMP序列号和ICMP代码。

步骤3:探测主机发出的数据包经过指纹隐藏设备后到达内部网络的主机。

步骤4:内部网络主机对外部网络发来的数据包进行回复。

步骤5:指纹隐藏设备捕捉到从内部网络发往外部网络的数据包后,首先会检测该数据包的源IP是否在受保护主机名单内,并对受保护主机名单内的数据包进行处理,过程如下:若该包是ICMP包,则根据当前ICMP数据包的类型、伪装操作系统指纹库以及步骤2中所记录的数据对数据包相关字段进行值修改;若该包是TCP包,则判断该包是否为步骤2中记录的数据包的响应,若是则将根据伪装操作系统指纹库和步骤2中所记录的数据对数据包相关字段进行值修改。

步骤6:指纹隐藏设备将经过检测后的数据包转发到外部网络。

对于操作系统伪装,可以在控制端进行设置;此后,指纹隐藏设备将对所有受保护的主机定时修改伪装操作系统类型。本实验设置的是伪装操作系统类型每隔30 s变化一次,即每隔30 s,攻击者探测同一台受保护主机,返回给攻击者的操作系统类型不相同,达到伪装混淆的目的。

3.3 服务软件伪装流程

服务软件伪装包括对攻击者的FTP、TELNET、HTTP服务软件信息探测的伪装欺骗。攻击者用NMAP扫描受保护主机的这三种服务将返回虚假的服务软件名版本。

指纹隐藏设备进行服务伪装处理过程如下:

步骤1:指纹隐藏设备捕捉发往外部网络的数据包。

步骤2:若该包为TCP包,则进行源端口号判断,端口21为FTP服务端口,23为TELNET服务端口,80为HTTP服务端口。之后判断源IP是否在保护名单内,把非名单内的数据包直接放行,在名单内的数据做进一步处理:

① 当该包为FTP数据包时,指纹隐藏程序分析TCP PAYLOAD数据部分,当前三个字符为“220”,则根据隐藏策略中的FTP伪装类型以及FTP指纹库对PAYLOAD数据部分进行修改,修改完成后转发给外部网络。

② 当该包为TELNET数据包时,指纹隐藏程序判断该包是否为双方第一个TELNET数据包(不包括三次握手),若是第一个则根据隐藏策略中的TELNET伪装类型以及TELNET指纹库对PAYLOAD数据部分行修改,修改完成后转发给外部网络。

③ 若该包为HTTP数据包时,指纹隐藏设备根据隐藏策略中的HTTP伪装类型以及HTTP指纹库对HTTP数据包中头部server字段进行修改,修改完成后转发给外部网络。

4 试验过程及结果

(1) 使用Nmap探测Windows 7和CentOS 7服务器

在未启用指纹隐藏功能时,探测能够显示操作系统结果,如图3所示,正确显示了操作系统类型以及系统开放端口等信息。

图3 未开启指纹隐藏模块时的探测结果Fig.3 Detection results when fingerprint hiding module is not enabled

(2) 配置文件设置,运行指纹隐藏程序

通过启用指纹隐藏设备,并配置文件:将IP地址为20.20.0.123的主机Linux操作系统模拟成Windows系统。

(3) 再次进行探测过程

攻击者再次发送探测消息,获得的结果如图4所示,可以看出:通过指纹隐藏设备,将Linux操作系统主机识别为WindowsXP,成功隐藏了服务器的真实指纹信息。

图4 开启指纹隐藏模块后的探测结果Fig.4 Detection results after opening the fingerprint hiding module

5 结论

为了应对关键基础设施面临的高强度探测攻击,本文提出了一种针对关键业务系统主机所运行操作系统、服务软件等外显特征指纹隐藏方法。试验结果表明,通过设置策略、修改探测报文的响应信息,能够扰乱攻击者的主机探测攻击结果,达到不依赖攻击检测特征库的主动防御效果。未来的工作包括智能化指纹隐藏策略的研究,实现更加逼真、隐蔽性更高的隐藏能力。

猜你喜欢

攻击者数据包端口
二维隐蔽时间信道构建的研究*
机动能力受限的目标-攻击-防御定性微分对策
一种端口故障的解决方案
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
硬件解耦三端口变换器的软开关分析与仿真
SmartSniff
交换机生成树安全
正面迎接批判
有限次重复博弈下的网络攻击行为研究
卫星三端口DC-DC变换器技术综述