WireShark黑客发现之旅(6)—“Lpk.dll劫持+ 飞客蠕虫”病毒


作者:Mr.Right、Evancss

申明:文中提到的攻击方式仅为曝光、打击恶意网络攻击行为,切勿模仿,否则后果自负。

0x01 发现问题


在对客户网络内网进行流量监控时发现,一台主机172.25.112.96不断对172.25.112.1/24网段进行TCP445端口扫描,这个行为目的在于探测内网中哪些机器开启了SMB服务,这种行为多为木马的通信特征。

过滤这个主机IP的全部数据,发现存在大量ARP协议,且主机172.25.112.96也不断对内网网段进行ARP扫描。

发现问题后,我们就开启对这台主机的深入分析了。

0x02 Lpk.dll劫持病毒


第一步,DNS协议分析。过滤这台主机的DNS协议数据,从域名、IP、通信时间间隔综合判断,初步找出可疑域名。如域名yuyun168.3322.org,对应IP为61.160.213.189。

过滤IP为61.160.213.189的全部数据可以看到主机172.25.112.96不断向IP地址61.160.213.189发起TCP7000端口的请求,并无实际通信数据,时间间隔基本为24秒。初步判断为木马回联通信。

再发现可疑域名gcnna456.com,对应IP为115.29.244.159。

过滤IP为115.29.244.159的全部数据可以看到主机172.25.112.96不断向IP地址115.29.244.159发起TCP3699端口的请求,并无实际通信数据,时间间隔也基本为24秒。初步判断也为木马通信数据。

把这两个域名请求的DNS信息都提取出来(当然,这里仅用WireShark实现就比较困难了,可以开发一些工具或利用设备),部分入库后可看见:

时间客户端服务器域名
2015/8/3 19:408.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:40172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:418.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:41172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:418.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:41172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:418.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:41172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:428.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:42172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:428.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:42172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:438.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:43172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:438.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:438.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:43172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:43172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:438.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:43172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:448.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:448.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:44172.25.112.968.8.8.8yuyun168.3322.org
2015/8/3 19:448.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:448.8.8.8172.25.112.96yuyun168.3322.org
2015/8/3 19:44172.25.112.968.8.8.8yuyun168.3322.org
时间客户端服务器域名
2015/8/3 19:418.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:41172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:418.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:41172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:418.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:41172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:428.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:42172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:428.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:42172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:428.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:42172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:438.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:43172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:438.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:43172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:448.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:44172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:448.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:44172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:448.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:44172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:458.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:45172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:458.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:45172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:468.8.8.8172.25.112.96gcnna456.com
2015/8/3 19:46172.25.112.968.8.8.8gcnna456.com
2015/8/3 19:468.8.8.8172.25.112.96gcnna456.com

从统计可以看出,这两个域名的请求一直在持续,且时间间隔固定。

为探明事实真相,我们对这台电脑进程进行监控,发现了两个可疑进程,名称都是hrl7D7.tmp,从通信IP和端口发现与前面分析完全吻合。也就是说,域名yuyun168.3322.org和gcnna456.com的DNS请求数据和回联数据都是进程hrl7D7.tmp产生的。

进一步查询资料和分析确认,这个恶意进程为Lpk.dll劫持病毒。

0x03 飞客(Conficker)蠕虫


当然,完全依靠域名(DNS)的安全分析是不够的,一是异常通信很难从域名解析判断完整,二是部分恶意连接不通过域名请求直接与IP进行通信。在对这台机器的Http通信数据进行分析时,又发现了异常:HTTP协议的头部请求中存在不少的“GET /search?q=1”的头部信息。

如IP为95.211.230.75的请求如下:

Follow TCPStream提取请求信息如下,请求完整Url地址为:95.211.230.75/search?q=1,返回HTTP404,无法找到页面。

通过请求特征“/search?q=1”继续分析,如IP地址221.8.69.25,请求时间不固定,大约在20秒至1分钟。

再如IP地址38.102.150.27,请求时间也不是很固定。

再如IP地址216.66.15.109,请求时间也不是很固定。

把含此特征的请求IP、域名以及HTTP返回状态码进行统计,如下表:

时间客户端服务器请求URL状态
19:03172.25.112.96221.8.69.25http://221.8.69.25/search?q=1200
19:03172.25.112.9638.102.150.27http://38.102.150.27/search?q=1404
19:04172.25.112.96216.66.15.109http://216.66.15.109/search?q=1404
19:14172.25.112.9695.211.230.75http://95.211.230.75/search?q=1404
19:29172.25.112.9646.101.184.102http://46.101.184.102/search?q=1200
3:17172.25.112.9654.148.180.204http://54.148.180.204/search?q=1404

可以发现,一共请求了6个IP地址,请求URL地址都为http://IP地址/searh?q=1,有4个IP请求网页不存在,有两个请求网页成功。

过滤DNS协议,通过搜索找到6个IP对应的域名:

221.8.69.25nntnlbaiqq.cn
38.102.150.27boqeynxs.ws
216.66.15.109odmwdf.biz
95.211.230.75ehipldpmdgw.info
46.101.184.102eqkopeepjla.info
54.148.180.204rduhvg.net

可以看出6个域名名称都很像随机生成的。对DNS进一步分析时还发现大量无法找到地址的域名请求,如图:

将此错误请求进行统计,仅在监控期间就请求过148个错误的域名。通过这些域名名称可以初步判断,该病毒请求采用了DGA算法随机生成的C&C域名(详细了解可移步:[http://drops.wooyun.org/tips/6220][用机器学习识别随机生成的C&C域名])。大量随机生成的域名不存在或控制端服务器已注销关机,导致大量请求失败。

时间客户端服务器查询状态
2015/8/3 22:31172.25.112.968.8.8.8nlasowhlhj.org失败
2015/8/3 22:31172.25.112.968.8.8.8diadcgtj.com失败
2015/8/3 22:31172.25.112.968.8.8.8idwcjhvd.com失败
2015/8/3 22:31172.25.112.968.8.8.8cacbwanw.net失败
2015/8/3 22:31172.25.112.968.8.8.8pqepudpjcnc.org失败
2015/8/3 22:31172.25.112.968.8.8.8lqxlx.cc失败
2015/8/3 22:31172.25.112.968.8.8.8qmnqag.info失败
2015/8/3 22:31172.25.112.968.8.8.8tivet.org失败
2015/8/3 22:32172.25.112.968.8.8.8zvzpzgtiz.com失败
2015/8/3 22:32172.25.112.968.8.8.8whfgzs.cc失败
2015/8/3 22:32172.25.112.968.8.8.8uqowfosm.com失败
2015/8/3 22:32172.25.112.968.8.8.8pxidlhtlhqz.org失败
2015/8/3 22:32172.25.112.968.8.8.8hzxloguigf.org失败
2015/8/3 22:33172.25.112.968.8.8.8yaovrr.com失败
2015/8/3 22:33172.25.112.968.8.8.8iazabdcwf.net失败
2015/8/3 22:33172.25.112.968.8.8.8qbzzehgnadn.net失败
2015/8/3 22:33172.25.112.968.8.8.8xvmtjcehe.net失败
2015/8/3 22:33172.25.112.968.8.8.8pvugavxsx.org失败
2015/8/3 22:33172.25.112.968.8.8.8lgxvyyzs.info失败
2015/8/3 22:34172.25.112.968.8.8.8rspgnhx.com失败
2015/8/3 22:34172.25.112.968.8.8.8pbwgoe.com失败
2015/8/3 22:34172.25.112.968.8.8.8wtexobkv.net失败
2015/8/3 22:34172.25.112.968.8.8.8jjvyyyexxk.cc失败
2015/8/3 22:35172.25.112.968.8.8.8uvxklheapu.net失败
2015/8/3 22:35172.25.112.968.8.8.8wdbsw.org失败
2015/8/3 22:35172.25.112.968.8.8.8wsflkzxud.net失败
2015/8/3 22:35172.25.112.968.8.8.8zmbfcf.org失败
2015/8/3 22:35172.25.112.968.8.8.8uzerepiq.net失败
2015/8/3 22:35172.25.112.968.8.8.8vszcgubl.info失败
2015/8/3 22:36172.25.112.968.8.8.8aqerqeiigme.info失败
2015/8/3 22:36172.25.112.968.8.8.8zrpavmfitq.cc失败
2015/8/3 22:36172.25.112.968.8.8.8ugoxslfxazt.net失败
2015/8/3 22:36172.25.112.968.8.8.8tzorilkpyg.com失败
2015/8/3 22:36172.25.112.968.8.8.8oqhwvgpvsjw.info失败
2015/8/3 22:37172.25.112.968.8.8.8icsqhpnr.org失败
2015/8/3 22:37172.25.112.968.8.8.8bpvuftucv.org失败
2015/8/3 22:37172.25.112.968.8.8.8kmdgcblyibz.cc失败
2015/8/3 22:38172.25.112.968.8.8.8xilpn.cc失败
2015/8/3 22:38172.25.112.968.8.8.8iumygnris.org失败
2015/8/3 22:38172.25.112.968.8.8.8tmypuykvfzj.com失败
2015/8/3 22:38172.25.112.968.8.8.8jhiozaveoi.net失败
2015/8/3 22:39172.25.112.968.8.8.8gvjrenffp.net失败
2015/8/3 22:39172.25.112.968.8.8.8geiradmz.info失败

过滤IP为221.8.69.25的HTTP成功请求数据,提取文本内容可以看到请求成功的网页显示内容:

<html><body><h1>Conficker Sinkhole By CNCERT/CC!</h1>
</body></html>

通过HTTP响应可以推断,该机器可能感染了飞客(Conficker)蠕虫病毒,进一步我们推断国家互联网应急中心(CNCERT/CC)已得知此域名被飞客病毒所用,并将该域名放入飞客病毒域名污水池(Sinkhole)以缓解该病毒带来的风险。

至此基本确定该主机已感染飞客病毒,后续我们使用飞客病毒专杀工具进行杀毒,并对操作系统进行补丁修复后,该主机网络通讯恢复正常。

0x04 总结


  1. 关于Lpk.dll、Confiker病毒的逆向分析,网上有很多资料,本文就不继续分析;
  2. 无论是木马还是恶意病毒,一旦感染就会与外界通信,就可以通过流量监测发现;
  3. 木马病毒的内网渗透行为可基于局域网监测分析技术进行监控;木马病毒的回联通信行为分析可结合域名请求、心跳数据特征检测进行分析。

评论

M

myhalo 2015-09-28 11:23:55

无论是木马还是恶意病毒,一旦感染就会与外界通信,就可以通过流量监测发现.

L

leveryd 2015-09-29 10:29:47

这能算应急响应吗?

聚锋实验室 2015-09-29 14:12:13

@一天到晚吃
就是针对用户的常规安全监控。

R

Rainism 2015-09-30 02:09:31

@爱好者 求科普

聚锋实验室 2015-09-30 10:28:38

@爱好者
科来硬件、软件一直在用。各有优势。
要说协议分析能力,相信WireShark是无敌的,个人观点。

K

K0r4dji 2015-10-03 21:51:51

带队低调路过.....

随机分类

无线安全 文章:27 篇
运维安全 文章:62 篇
逆向安全 文章:70 篇
SQL注入 文章:39 篇
业务安全 文章:29 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Yukong

🐮皮

H

HHHeey

好的,谢谢师傅的解答

Article_kelp

a类中的变量secret_class_var = "secret"是在merge

H

HHHeey

secret_var = 1 def test(): pass

H

hgsmonkey

tql!!!

目录