网络安全防护之ASA防火墙攻击代码分析

         随着大数据时代的到来,各种网络安全事件令人震惊,网络安全问题逐渐引起网友的关注。虽然防火墙设备在计算机网络内外网之间建立了防护门,但防火墙设备本身的脆弱性严重影响了网络环境的安全。ASA防火墙代码分析实验部分主要分为两个步骤:1。实现提取的固件代码,结合IDAPro工具进行静态分析;2。利用上述构建的实验环境,实现ASA设备固件的动态分析。以asa842-k8.bin固件为例,分析漏洞的具体原因和原理。一个被称为ShadowBrokers的黑客组织发布了防火墙设备的攻击代码,指出漏洞基于Cisco防火墙SNMP协议模块的缓冲区溢出。防火墙设备应配备SNMP协议,并了解SNMP通信码。如果漏洞执行成功,防火墙设备的Telnet/SSH认证可以关闭,进而允许攻击者进行未经授权的操作。

outputo-20211123-092152-967-oxth.png

EXTRABACON.txt,ShadowBrokers组织提供的代码文件,从ShadowBrokers组织提供的声明文件中得出结论,该漏洞存在于ASA的lina过程中,因此使用IDAPro对lina程序进行静态代码分析。在Binwalk工具解析目录下/asa/bin/lina加载到IDA进行静态分析,结合黑客组织shadowbrokers提供的POC,得出关键代码函数在sub_89F4750函数中,该函数调用sub_90A32A0函数。sub_90A32A0函数的关键代码,sub_89F4750函数调用sub_90A32A0函数。sub_90A32A0将第二个参数指向的源地址数据转换到第一个参数指向的目的地址,第三个参数的大小影响转换数据的长度。用F5按钮跟进sub_90A32A0函数,查看具体的伪代码。

在这个代码中,for循环实际上实现了内存的copy操作,从源地址读取四个字节的数据并写入目的地址。每个循环将实现copy64字节长度的数据。根据之前的分析,第三个参数是指影响copy长度的变量,其中a3。for循环开始时,将4并赋值给i,变量i起到控制循环次数的作用。sub_89F4750函数通过调用sub_90A32A0函数实现内存的copy,将sub_90A32A0函数中地址指针a6指向的源地址的数据copy转移到本地局部变量v32,其copy长度也由sub_90A32A0函数的参数决定。这导致了危险函数的产生:上层函数sub_90A32A0传入的参数很容易超过当地局部变量v32内存的长度,从而产生缓冲区溢出的漏洞风险。

分享: