【技术分享】使用Flare、Elastic Stack、IDS检测恶意软件通信的“beaconing”

http://p6.qhimg.com/t013f4fa3a7e547cf8d.jpg


译者myswsun

预估稿费:170RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

0x00 前言

在一些恶意软件的变种感染计算机之后,它会定期连接它的C&C服务器。这种行为称为“beaconing”。

http://p0.qhimg.com/t01e01ee1f614f3b806.png

http://p6.qhimg.com/t01b46be436e0527919.png

在Lockheed Martin Killchain(kali中自带有这款工具)中,Beaconing将发生于攻击者或APT对目标采取行动之前。

然而,这种行为很难检测到。Beaconing能在任何时间发生,且频繁改变。另外,网络通信没有完美的时间间隔,或者恶意软件可能添加干扰来阻止观察间隔。(例如每30秒)

有些定期通信是合法的,例如时间同步和软件更新。

Flare是一个免费开源的恶意分析框架,旨在尽可能简单的辨别恶意行为(例如网络中的C&C Beaconing)。


0x01 入门

在我们开始之前,你需要有下面的东西。

http://p5.qhimg.com/t01570753c779f38a54.png

本文假设你有一个网络监控系统,能输出到Elastic Stack(以前叫ELK)。如果你对网络监控感兴趣,可以参考我的博文“为企业、小办公室或家庭构建监控系统”。

我们将使用SELKS 4.0,但是Flare是模块化设计,可以和安全洋葱或者任何运行Snort, Bro, Suricata的系统一起协作。在Elastic Stack(ES)中的流数据是Flare用来确定Beacon的。

另外,你需要安装Flare。(gihub上有指导)


0x02 构建一个隧道

根据你的elasticsearch的配置,你可能需要构建SSH隧道来让你的计算机和你的elasticsearch节点通信。

例如,如果你的计算机IP地址是192.168.1.150,你的elasticsearch节点是192.168.1.2,你可以在你的本地计算机打开9200端口。

http://p5.qhimg.com/t01d8a14471305881d0.png

在终端运行以下命令验证你的连接:

http://p7.qhimg.com/t0189b6f9574a51b3f4.png

你将会收到elasticsearch的回应。

http://p0.qhimg.com/t017f38038eadc13ffe.png

一旦能连接,就可以运行Flare。


0x03 配置Flare

http://p0.qhimg.com/t01f7b22a3b0e00b198.png

在你安装Flare之后,在你的路径下应该有一个flare_beacon的二进制文件。这个文件是参数和配置文件。

在配置目录中,有一些.ini文件。包括selk4.ini,它是SELKS 4.0的预配置文件。一定要针对你环境的修改配置。

我增加了一些注释来解释每个字段。

http://p7.qhimg.com/t011f7b33d3515014c6.png

像min_occur, min_interval, and min_percent是可以调节的。值越大,结果输出越少。

更多信息参考flare_beacon –h。


0x04 发现Beacon

注意我们已经安装并配置好了flare,现在我们准备在我们的网络中寻找Beacon。

我使用下面命令每60秒生成了一个HTTP流量请求:

http://p6.qhimg.com/t0182bd5eff91f171a4.png

在这种场景中,我们认为我们被感染的终端发信号给C&C服务器。

被感染的IP:192.168.0.53——>C&C服务器:160.153.76.129

让我们在flare中发现它!

http://p2.qhimg.com/t018a479219a8ba43fb.png

如果一切就绪,你应该能看见下面类似的输出:

http://p9.qhimg.com/t01bf5b1a9d9bffef1e.png

注意:Flare使用你配置文件中指定的资源,如果没有正确的配置将是你的计算机卡死。计算机资源与你的网络大小成正比。网络越大,需要的计算资源越多。

下面是flare运行期间我的计算机资源的截图。

http://p0.qhimg.com/t012842c833cb7d4a71.png

我的家庭网络大约有100个节点,大约花一分钟处理24小时的Beacon。


0x05 理解配置选项

-group:将结果分组,让我们看起来更容易识别异常。

-whois:通过ASN查询的关于IP的更多WHOIS信息

-focus_outbound:从目的IP中过滤我们的组播,私有和广播地址

-c:使用flare的配置

-html:以html文件输出结果

-csv:以CSV文件输出结果(不会分组)


0x06 分析结果

现在是有趣的部分,你可以分析结果了。

如果你使用上面的选项,你的输出看起来如下:

http://p5.qhimg.com/t0120121114847538de.png

在其他的流量中,Flare确定了和C&C服务器的IP通信。你怎么才能区分这种行为呢?

首先理解输出字段是重要的。


0x07 输出字段

Bytes_toserver:从IP地址发送给服务器的所有的字节

Dest_degree:和相同目的地址通信的IP数量

Occurrences:被标识为Beaconing的次数

Percent:被标识为Beaconing的比例

Interval:Beacon的时间间隔(单位秒)

Flare的输出显示了192.168.0.53和160.153.76.129的80端口的通信,61秒的间隔。在节点之间的通信97%是定期的。结果还表明2个额外的内部节点交互到相同的目的IP(这种情况,是我测试了多台主机的连接)。

你也能看到相同的主机以相同的间隔通过google DNS查询DNS,这是因为我们的curl命令首先查找主机名,然后发出HTPP请求。

过滤知名的服务(如Google和Amazon)能缩小结果集合范围。然后你能寻找一个目的地单一但(请求)比例高的beaconing

更大的网络有更多的活动,因此你最好输出结果到CSV文件中,可以充分利用Excel的功能。

http://p9.qhimg.com/t018cde0e3b8b4b3fe2.png

0x08 调查结果

在你创建了要调查的流量的子集后,打开Kibana使你的结果可视化。

如果你使用SELKS,打开SN FLOW仪表盘,输入dest_ip作为过滤项。

http://p7.qhimg.com/t01a26c54de625dfe2c.png

根据时间序列,选择部分,Kibana将自动调整时间间隔。

http://p5.qhimg.com/t01d07f73fdab5dd361.png

现在,你能看到从我们的受感染的主机以60秒的间隔和C&C服务器通信。

http://p3.qhimg.com/t01d7a32c8de647f5aa.png

可以转向HTTP仪表得到更多详细信息。

在流仪表盘中使用相同的dest_ip过滤。

http://p1.qhimg.com/t018431da46ab9fdbab.png

http://p5.qhimg.com/t010e82c7e913c9d94c.png

http://p5.qhimg.com/t013890a4c5c62f9704.png

HTTP仪表盘提供了流量的上下文信息。现在我们知道了一个MAC OSX主机和一个www.huntoperator.com网站通信。

这时,我们转到EveBox,通过点击关联流来查看横跨多个索引的网络流量。

http://p2.qhimg.com/t0160f59f42071eb8a5.png

似乎我们的C&C beacon也触发了警告。

http://p2.qhimg.com/t01ca57cdb4944031e5.png

深入挖掘警告,使我们能看到触发警告的payload,并确认被感染的主机使用curl向C&C节点发出GET请求。

另外,我们可以挖掘目的IP来观察它的日常。

http://p6.qhimg.com/t010044c3ba6940cad3.png

EveBox能很好的帮助分析主机通信。


0x09 总结

使用Flare,你能在你的网络中确定定期的通信。在缩小结果范围后,你研究相互作用,并确定终端使用MAC OSX试图通过HTTP每60秒和huntoperator.com通信,在24小时内,发送了1.23MB流量并从位于Arizona 的Scottsdale的C&C服务器接收了12.70MB。

(完)