译者:myswsun
预估稿费:170RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
0x00 前言
在一些恶意软件的变种感染计算机之后,它会定期连接它的C&C服务器。这种行为称为“beaconing”。
在Lockheed Martin Killchain(kali中自带有这款工具)中,Beaconing将发生于攻击者或APT对目标采取行动之前。
然而,这种行为很难检测到。Beaconing能在任何时间发生,且频繁改变。另外,网络通信没有完美的时间间隔,或者恶意软件可能添加干扰来阻止观察间隔。(例如每30秒)
有些定期通信是合法的,例如时间同步和软件更新。
Flare是一个免费开源的恶意分析框架,旨在尽可能简单的辨别恶意行为(例如网络中的C&C Beaconing)。
0x01 入门
在我们开始之前,你需要有下面的东西。
本文假设你有一个网络监控系统,能输出到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端口。
在终端运行以下命令验证你的连接:
你将会收到elasticsearch的回应。
一旦能连接,就可以运行Flare。
0x03 配置Flare
在你安装Flare之后,在你的路径下应该有一个flare_beacon的二进制文件。这个文件是参数和配置文件。
在配置目录中,有一些.ini文件。包括selk4.ini,它是SELKS 4.0的预配置文件。一定要针对你环境的修改配置。
我增加了一些注释来解释每个字段。
像min_occur, min_interval, and min_percent是可以调节的。值越大,结果输出越少。
更多信息参考flare_beacon –h。
0x04 发现Beacon
注意我们已经安装并配置好了flare,现在我们准备在我们的网络中寻找Beacon。
我使用下面命令每60秒生成了一个HTTP流量请求:
在这种场景中,我们认为我们被感染的终端发信号给C&C服务器。
被感染的IP:192.168.0.53——>C&C服务器:160.153.76.129
让我们在flare中发现它!
如果一切就绪,你应该能看见下面类似的输出:
注意:Flare使用你配置文件中指定的资源,如果没有正确的配置将是你的计算机卡死。计算机资源与你的网络大小成正比。网络越大,需要的计算资源越多。
下面是flare运行期间我的计算机资源的截图。
我的家庭网络大约有100个节点,大约花一分钟处理24小时的Beacon。
0x05 理解配置选项
-group:将结果分组,让我们看起来更容易识别异常。
-whois:通过ASN查询的关于IP的更多WHOIS信息
-focus_outbound:从目的IP中过滤我们的组播,私有和广播地址
-c:使用flare的配置
-html:以html文件输出结果
-csv:以CSV文件输出结果(不会分组)
0x06 分析结果
现在是有趣的部分,你可以分析结果了。
如果你使用上面的选项,你的输出看起来如下:
在其他的流量中,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的功能。
0x08 调查结果
在你创建了要调查的流量的子集后,打开Kibana使你的结果可视化。
如果你使用SELKS,打开SN FLOW仪表盘,输入dest_ip作为过滤项。
根据时间序列,选择部分,Kibana将自动调整时间间隔。
现在,你能看到从我们的受感染的主机以60秒的间隔和C&C服务器通信。
可以转向HTTP仪表得到更多详细信息。
在流仪表盘中使用相同的dest_ip过滤。
HTTP仪表盘提供了流量的上下文信息。现在我们知道了一个MAC OSX主机和一个www.huntoperator.com网站通信。
这时,我们转到EveBox,通过点击关联流来查看横跨多个索引的网络流量。
似乎我们的C&C beacon也触发了警告。
深入挖掘警告,使我们能看到触发警告的payload,并确认被感染的主机使用curl向C&C节点发出GET请求。
另外,我们可以挖掘目的IP来观察它的日常。
EveBox能很好的帮助分析主机通信。
0x09 总结
使用Flare,你能在你的网络中确定定期的通信。在缩小结果范围后,你研究相互作用,并确定终端使用MAC OSX试图通过HTTP每60秒和huntoperator.com通信,在24小时内,发送了1.23MB流量并从位于Arizona 的Scottsdale的C&C服务器接收了12.70MB。