*本文作者:arr0w1,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
前言
流量分析需要我们有扎实的网络知识为基础,同时需要具备实际操作的能力和经验。通过写本篇文章,记录下练习流量分析的过程。以便提高从流量上确定感染情况,以及分析溯源等能力。
wireshark及其插件
WireShark是一款强大的网络协议分析开源软件,它提供了灵活的插件机制,使用户可以方便地扩展wireshark的功能。插件的功能包括但不限于:协议解析器。
可以使用Lua或C语言来编写Wireshark插件。 使用Lua写插件,优势是:相对简单好上手,代码量少,部署在插件目录,不用和主程序一起编译。
配置与安装
我在Mac OS系统下亲测安装wireshark插件,踩了一些坑,最终安装成功。整个过程如下:
安装lua
curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz
tar zxf lua-5.2.3.tar.gz
cd lua-5.2.3
make macosx
make test
sudo make install
输入lua
看到Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio
表示已经安装好了。
安装wireshark插件的通用过程
在Mac OS系统下,先进入wireshark目录。 cd /Applications/WireShark.app/Contents/Resources/share/wireshark
将lua脚本(可以自己写)复制到该目录中。
然后编辑文件init.lua,将其中的disable_lua = true
改为disable_lua = false
,并在文件最后一行处写下你打算加载的插件dofile("xxx.lua")
,并保存该文件。
以安装patoolkit插件集合为例
PA Toolkit是一系列专注于安全性的流量分析插件的集合。
PA Toolkit的插件有以下几种,大概说下功能: WiFi(WiFi网络概览,检测beacon,deauth floods洪水攻击等) HTTP(列出所有访问过的http网站,通过http协议下载的文件) HTTPS(列出以HTTPS协议访问的所有网站的域名) ARP(MAC-IP表,检测MAC地址欺骗和ARP投毒) DNS(列出使用的DNS服务器和DNS解析,检测DNS Tunnels)
开始安装,把该项目下载到本地,进入该项目中的plugin
目录,看到如下的文件结构:
├── arp
│ └── arp_table.lua
├── dhcp
│ └── dhcp_table.lua
├── dns
│ └── dns_table.lua
├── ssh
│ └── ssh_info.lua
├── util.lua
├── web
│ ├── downloded_files.lua
│ ├── get_requests.lua
│ ├── post_requests.lua
│ ├── tor_detection.lua
│ └── website_lists.lua
└── wifi
├── beacon_flood_detection.lua
├── check_wpa_bruteforce_possiblity.lua
├── deauth_flood_detection.lua
├── security.lua
└── wifi_overview.lua
进入wireshark目录cd /Applications/WireShark.app/Contents/Resources/share/wireshark
, 将plugin文件夹中的所有lua脚本复制到该目录中。
然后编辑文件init.lua,在最后一行写需要加载的插件,即:
dofile(DATA_DIR.."util.lua")
dofile(DATA_DIR.."arp/arp_table.lua")
dofile(DATA_DIR.."dhcp/dhcp_table.lua")
dofile(DATA_DIR.."dns/dns_table.lua")
dofile(DATA_DIR.."ssh/ssh_info.lua")
dofile(DATA_DIR.."web/downloded_files.lua")
dofile(DATA_DIR.."web/get_requests.lua")
dofile(DATA_DIR.."web/post_requests.lua")
dofile(DATA_DIR.."web/website_lists.lua")
dofile(DATA_DIR.."web/tor_detection.lua")
dofile(DATA_DIR.."wifi/beacon_flood_detection.lua")
dofile(DATA_DIR.."wifi/check_wpa_bruteforce_possiblity.lua")
dofile(DATA_DIR.."wifi/deauth_flood_detection.lua")
dofile(DATA_DIR.."wifi/security.lua")
dofile(DATA_DIR.."wifi/wifi_overview.lua")
启动wireshark,如果提示错误"/usr/local/lib/lua/5.2目录中没有xx.lua文件”,只需要将util.lua和security.lua复制到该目录就行。
启动后无报错且能看到插件菜单,如下图,说明插件安装成功,可以用插件辅助,更快地进行流量分析了。
其它补充
windows下的安装,大同小异,在图片中的路径中,编辑文件即可,其它步骤相同,参考以上安装过程。
实例:对“以银行为目标的恶意软件”的流量分析
如果企业内网受到这种类型的恶意软件感染,从流量上应该如何分析感染过程?确定内网中的感染情况?
已知自身的网络环境
局域网范围 172.17.8.0/24 (即172.17.8.0到172.17.8.255)
局域网网关 172.17.8.1
局域网广播地址 172.17.8.255
域 timbershade.info
域控制器 172.17.8.2 - Timbershade-DC
需要解决的问题
被感染的Windows主机的IP地址是什么?
被感染的Windows主机的MAC地址是什么?
被感染的Windows主机的计算机名是什么?
被感染的Windows主机的用户的帐户名是什么?
发送到被感染的Windows主机的可执行文件的SHA256文件hash是什么?
参考IDS警报,这是什么类型的感染?
步骤1 确定分析目标的ip
使用Statistics菜单选项,如下图所示。
已经知道局域网的ip范围是172.17.8.0/24(即172.17.8.0到172.17.8.255),如图,Conversations中看到只有一个IP地址172.17.8.109既不是域控制器(172.17.8.2)也不是广播地址(172.17.8.255)。另外,IDS警报文件只显示了172.17.8.109这个ip的警报。
步骤2 查找IP地址与MAC地址和计算机名关联关系
方法一:通过DHCP协议查看
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
可以通过查看DHCP流量(过滤语法:bootp)将IP地址、MAC地址和计算机名,三者关联起来,如下图所示。
黄色是:计算机名 Dunn-Windows-PC
蓝色是:ip 172.17.8.109
红色是:Mac地址 14:fe:b5:d4:15:ca (Dell_d4:15:ca)
方法二:通过NetBIOS协议查看
根据NetBIOS / NBNS - Wireshark Wiki,NetBIOS名字服务 即 NetBIOS Name Service (NBNS)是NetBIOS-over-TCP协议套件的一部分,此服务通常在Windows系统上称为WINS (Windows Internet Name Service) 。 传输协议:通常NBNS使用UDP作为其传输协议。众所周知的NBNS流量UDP端口是137。(NBNS也可以使用TCP作为其某些操作的传输协议,尽管在实践中可能永远不会这样做,TCP端口是137)。 WINS (Windows Internet Name Service):名字服务,功能包括名字注册和名字解析,简单的说这里的名字解析功能,NBNS(windows下称为WINS)将“NetBIOS名字”转换为ip地址。 WINS提供了一个分布式的动态更新的数据库,能在路由网络的环境中动态地对IP地址和NETBios名的映射进行注册与查询。 WINS用来注册“NetBIOS计算机名”,并在需要时将它解析成为IP地址。(其实这个功能比较像DNS协议,它们都是将人类可读的名称转换为IP地址)
在此处也可以通过查看 NBNS流量(过滤语法:NBNS)一样能得到“IP地址与MAC地址和计算机名关联关系”,如下图所示。
黄色是:计算机名 DUNN-WINDOWS-PC<00> (Workstation/Redirector)
蓝色是:ip 172.17.8.109
红色是:Mac地址 14:fe:b5:d4:15:ca (Dell_d4:15:ca)
步骤3 查找Windows用户的帐户名
使用以下Wireshark过滤语法: kerberos.CNameString and !(kerberos.CNameString contains $)
看到kerberos.CNameString为margaret.dunn,得到了Windows用户的帐户名:margaret.dunn。
为什么kerberos协议的流量中有Windows用户的帐户名?
原理:
因为Kerberos认证过程中,客户机用户以明文方式发送AS-REQ(认证请求)到密钥分发中心KDC(Key Distribution Center)以向AS( Authentication Server)认证服务进行认证,要求得到某服务器的证书。
AS-REQ(认证请求)中包含Windows用户的帐户名,所以可以从流量中的AS-REQ(认证请求)中找到Windows用户的帐户名。
步骤4 确定威胁类型
使用 EmergingThreats (ET) 规则集,从 IDS(Security Onion的Sguil)发现的这些警报(如下图):
根据IDS警报,可以看到警报列表中最下面的警报为: ET TROJAN ABUSE.CH SSL Blacklist Malicious SSL certificate detected (Dridex)
Dridex的ssl证书被IDS黑名单规则匹配到,所以应该是Dridex感染。
可以看到在IDS警报列表最下面这些“dridex证书警报”之前,有个“可执行文件下载”的警报,可得出Windows EXE或DLL文件是从91.121.30.169的TCP端口8000下载的,需要从流量中提取这个样本文件。
步骤5 提取样本文件
在wireshark中菜单 File → Export Objects → HTTP ,可以找到一些对分析有意义的文件,如压缩文件、文本文件、音频文件、图片等。
在导出这些文件之前,怎么判断哪个是Windows可执行文件呢? Follow 这个HTTP请求的TCP流,可以从3处发现特征可以确定Windows可执行文件(exe或dll),如下图所示。
从pcap提取到了恶意样本文件。
现在可以自己计算hash,也可以顺手提交给VirusTotal获得更多有关它的信息、IoC等。
(当然也可以通过插件的功能快速查看下载的文件,便于分析和理解恶意软件的逻辑)
问题的答案
被感染的Windows主机的IP地址是什么?
172.17.8.109
被感染的Windows主机的MAC地址是什么?
14:fe:b5:d4:15:ca (Dell_d4:15:ca)
被感染的Windows主机的计算机名是什么?
Dunn-Windows-PC
被感染的Windows主机的用户的帐户名是什么?
margaret.dunn
发送到被感染的Windows主机的可执行文件的SHA256文件hash是?
9f6e3e65aedca997c6445329663bd1d279392a34cfda7d1b56461eb41641fa08
根据IDS警报,这是什么类型的感染?
Dridex
简介:Dridex是一种专门针对银行的恶意软件,它利用Microsoft Office中的宏来感染系统。一旦计算机被感染,Dridex攻击者就可以窃取系统上的银行凭据和其他个人信息,以访问用户的财务记录。
总结
流量分析作为企业网络安全防御体系的重要的一部分,与日志分析等相结合,尽可能完整还原恶意软件攻击过程,这样才有可能将恶意软件从企业网络中彻底清理,同时对流量特征进行分析,可得到并整理出IoC、相关样本文件、甚至是写出一份完整的分析报告,分享这些成果,可供其他企业和安全人员参考、学习,提高其自身防御水平。这样其实为推动安全行业的发展做出了贡献,也有助于企业及安全人员的综合能力的提高。
*本文作者:arr0w1,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。