* 本文原创作者:xysky,本文属FreeBuf原创奖励计划,未经许可禁止转载
这是一个真实的案例,发生在某大型企业内网中(以下简称M公司,M公司在全国及海外都有其分支机构),笔者有幸作为外部顾问全程参与整个事件的分析与处置过程,整理成文与大家分享,共同探讨。
2016.2.2号18:48分,M公司在海外的某分公司(以下简称X分公司)IPS在SOC上报了一笔事件,内容如下:
[IPS][001026]2 二月 2016 18:48:00 CST Src(30.80.21.172) Dst(30.80.3.31) BTP is low high risk attack. Name:BACKDOOR: Windows Command Shell Running .AgentName:McafeeNSMDB-20.80.31.1-bu-szdc-SC16
IPS相关同事邮件发给X分公司IT负责人跟进,这笔事件在IPS上看数据包返回了Microsoft Windows [Version 6.0.6002字样,命中command shell特征,确实比较可疑。
第二天即2016-02-03 12:02,类似的IPS报警再次触发,内容如下:
[IPS][001026]3 二月 2016 12:02:30 CST Src(30.80.21.172) Dst(30.80.3.10) BTP is low high risk attack. Name:BACKDOOR: Windows Command Shell Running .AgentName:McafeeNSMDB-20.80.31.1-bu-szdc-SC16
注意两次攻击的目标服务器不同,第二次30.80.3.10是域服务器。这台域服务器还触发了SEP告警,内容如下:
[SEP][032015]3 Feb 2016 12:22:20 CST Security risk found:C:/DELL/24.txt . Virus type: Hacktool.Mimikatz on HKDC2N(30.80.3.10)
随后还有大量的蜜灌事件,内容如下:
[HoneyPot][008001]3 Feb 2016 13:33:45 CST SrcIP(30.80.21.172) access to the honeypotIP(30.80.3.18) Port(445) [HoneyPot][008001]3 Feb 2016 16:18:26 CST SrcIP(30.80.3.31) access to the honeypotIP(30.80.3.18) Port(23) [HoneyPot][008001]3 Feb 2016 16:18:26 CST SrcIP(30.80.3.31) access to the honeypotIP(30.80.3.18) Port(3389) [HoneyPot][008001]3 Feb 2016 16:18:26 CST SrcIP(30.80.3.31) access to the honeypotIP(30.80.3.18) Port(80) [HoneyPot][008001]3 Feb 2016 16:18:26 CST SrcIP(30.80.3.31) access to the honeypotIP(30.80.3.18) Port(445)
基于以上事件,我们紧急联系X分公司,让其将源头机器30.80.21.172进行断网处理,并开始着手分析处理。
30.80.21.172这台机器使用人回忆最近收到一封奇怪的邮件并打开了附件,于是我们从邮件网关中将其取回来进行了一定的分析,如下图:
邮件特别之处在于:
1.是压缩并且加密的附件;
2.密码写在邮件中;
3.解压出来是个.cpl的文件
4.双击以上cpl文件会释放出一个doc文档并调用office程序打开。
花费较多时间在搭建适合的环境运行这个cpl文件,在office2003环境无法正常打开文件,在office2007打开了但未出现其它可疑进程或网络访问(中间出现几个IP后确认是微软本身的)。
我们提交给防病毒厂商Symantec进行分析,厂商第二天提供的报告说没有发现问题。
在上网行为上调取30.80.21.172相关的记录,主要有以下几点发现:
1. 机器上可能安装了sogou相关的东西,一直不断的向sogou服务器提交信息;
2. 用户浏览了一些与财经相关的网站,特别是搜狐财经网站,注意SEP也报了一个关于cookie的病毒,但是X分公司另一台机器;
3. 除此外就是大量请求两个无法解析的域名相关的网站,8bvcxyz.gov和kyz这两个可疑网站的443端口,但不知道具体的IP地址。
该机器是部署在X分公司的安全客户端后台服务器。在X分公司主要用途是审计U盘拷贝文件,未限制USB的员工暂未部署安全客户端,上面30.80.21.172就没有部署。
从前面IPS报的事件看,我们知道30.80.21.172访问了99.8.3.31这台机器的9443端口触发command shell警告,于是我们上来就看这个端口相关的信息如下:
C:/Users/hoadmin>netstat.exe -ano|findstr 9443 TCP 30.80.3.31:9443 30.80.21.172:62427 ESTABLISHED 10000 C:/Users/hoadmin>tasklist.exe |findstr 10000 sv.exe 10000 Services 0 1,716 K
进一步分析可以发现这个sv.exe是由psexec相关的服务起的,根据经验psexec需要账号密码来远程执行命令,我们在安全日志中找到了相关的记录:
Log Name: Security Source: Microsoft-Windows-Security-Auditing Date: 2/2/2016 5:23:51 PM Event ID: 4697 Task Category: Security System Extension Level: Information Keywords: Audit Success User: N/A hina.cn Description: A service was installed in the system. Subject: Security ID: XOFFICE/SUAdminhk_zxxyy Account Name: SUAdminhk_zxxyy Account Domain: XOFFICE Logon ID: 0x7330520 Service Information: Service Name: PSEXESVC Service File Name: %SystemRoot%/PSEXESVC.exe Service Type: 0x10 Service Start Type: 3 Service Account: LocalSystem
继续追查更多事件,可以知道,30.80.21.172一直在用SUAdminhk_zxxyy这个账号登录30.80.3.31并执行相关命令。
同时,在该机器上也发现了黑客留下的可疑文件,sv.exe以及运行所需的dllr.dll文件,还有一个netscan.exe,以及在用户目录留下一个netscan.exe扫描后产生结果的xml文件,这个文件的内容部分如下:
….更多忽略
该机器上发现的可疑可执行文件相关信息如下:
3bbc51cfc5c1c1d51a26f61f3c0182bf Admin/dllr.dll a85292ef9d40964f8d68cf56dd262b7b Admin/sv.exe edb1c480295250dd1a38f3aa1357deae netscan.exe
Netscan.exe这个就不多说了,一个扫描器,网上都能找到。我们在测试环境中运行这个sv.exe,有如下特别的发现:
exe刚启动的时候只加载很少的模块,同目录下的dllr.dll是不会加载的,即删除这个dll执行exe也能正常运行并且过一会自动退出,中间没有任何报错;
过了大约2分钟,才会加载这个dll文件以及其它模块,同时开始监听9443端口; 从远端机器telnet上去这个9443端口,会得到一个cmdshell,可以执行一些命令。
将进程sv.exe结束掉之后,已经从远端连接上来的连接是不会断的,依然可以执行命令,只是无法再新建连接而已。 只有当将sv.exe调用的cmd.exe结束后才能真正中断已有连接。
中间分析的详细数据如下:
2016-2-16 18:47:51 创建新进程 允许 进程: c:/windows/explorer.exe 目标: c:/documents and settings/administrator/桌面/hackfile/sv.exe 命令行: "C:/Documents and Settings/Administrator/桌面/hackfile/sv.exe" 规则: [应用程序]* 2016-2-16 18:53:05 从其他进程复制句柄 允许 进程: c:/windows/system32/svchost.exe 目标: c:/documents and settings/administrator/桌面/hackfile/sv.exe 句柄: (File) C:/WINDOWS/system32/cmd.exe 规则: [应用程序]c:/windows/system32/svchost.exe 2016-2-16 18:53:11 创建新进程 允许 进程: c:/documents and settings/administrator/桌面/hackfile/sv.exe 目标: c:/windows/system32/cmd.exe 命令行: cmd 规则: [应用程序]* 2016-2-16 18:53:13 访问网络 允许 进程: c:/windows/system32/cmd.exe 目标: TCP [本机 : 9443] <- [30.0.64.165 : 64792] 规则: [网络]任意协议 [本机 : 任意端口] <-> [任意地址 : 任意端口]
做了更多进一步的分析,暂未发现其它问题。出于安全考虑,已经进行了系统重装。
这是域服务器,前面的SEP已经告诉我们黑客尝试留下后门被删,于是我们到c:/DELL目录发现时间有变化,而且C:/DELL/AppAssure这个目录时间也有变化,进去就发现了同样的后门文件sv.exe及dllr.dll。 最后还发现黑客在C:/windows/目录下放了一个sys64.exe文件,很狡猾,这是我们发现的第二个后门。在该机器上发现的可疑可执行文件相关信息如下:
f2214577c920c2eb2fe455368a02dc5a C:/windows/sys64.exe 3bbc51cfc5c1c1d51a26f61f3c0182bf C:/DELL/AppAssure/dllr.dll a85292ef9d40964f8d68cf56dd262b7b C:/DELL/AppAssure/sv.exe
Sv.exe及dllr.dll前面分析过,重点分析sys64.exe,在测试环境运行后,我们发现其会尝试反弹连接一个德国的IP地址: 82.211.30.195 的443端口。于是我们又在上网行为中检查这个IP地址的请求,发现只有30.80.21.172访问过,而且其对应的域名就是前面发现的可疑请求 https:// kyz ,而且每隔5分钟一次。
分析安全事件,的确30.80.21.172一直在不断的用SUAdminhk_zxxyy登录而且都是成功的,而且也被psexec远程执行过命令(会在系统事件中留下痕迹)。
继续分析安全事件,发现SUAdminhk_zxxyy的账号除了在30.80.21.172、30.80.3.31上登录过之后,还在30.80.21.17上登录过,后与其确认是那天中午在该员工机器上卸载office并重装使用,正常。
暂未发现其它问题,但由于sys64.exe这个后门文件的功能还不是特别清楚,虽然没能成功连出,建议还是重装系统。
这个机器相对比上面一台机器更少受影响,从登录的次数与文件修改的情况就可以确认。C:/DELL目录下的sv.exe及dllr.dll文件,同样也被psexec远程执行过命令,这些都体现在系统事件中了,不再重复。
另外,发现除了前面已知的机器用SUAdminhk_zxxyy账号登录此域,还有30.80.4.5、30.80.31.1这两台机器,后面与赖敏文都确认是正常维护产生。该机器上的可疑可执行文件信息如下:
3bbc51cfc5c1c1d51a26f61f3c0182bf C:/DELL/dllr.dll a85292ef9d40964f8d68cf56dd262b7b C:/DELL/sv.exe
与前面的文件一样,就不再多说了。
在前面这些明显被黑的机器上,得到的信息无法反推出黑客到底怎么进来的?
念念不忘,必有回响。春节过后,我再次在虚拟机里进行分析这个文件,发现当双击这个cpl文件后,虽然office2003还是出现打不开显示乱码的画面,但是我们关掉office之后,rundll32.exe会去尝试访问网络( 经反复测试,出现乱码后要隔一段时间才会有网络访问请求触发 ),访问一个192.169.6.151的443端口,相关的测试数据如下:
可能我们在春节前分析的时候看到的 几个IP中把这个192.169的习惯性的选择了忽略 , 其实它是一个真实存在的美国IP地址。 回过头在上网行为中查,发现其就是 我们前面对应到的8bvcxyz.gov,而且只有这个IP访问过 。
后面在朋友的帮助下,对该cpl时行了逆向分析,得到如下结论:
木马文件的加载方式:
控制面板在执行的时候会加载System32目录下的所有*.CPL文件
注册表启动项中加入RunDll32 shell32.dll、Contorl_RunDll muma.cpl
该木马可疑行为:
Dllmain中没有功能逻辑
只有一个导出函数CPlApplet
导出函数被调用后,会释放资源数据并本地生成名称为ABOUT_US.doc的word文件,执行打开该文档文件后, 延后1617ms ,木马会对 192.169.6.151 地址发送网络请求。
至此,成功找到入侵的源头,来源于这封可恶的邮件!
春节后,收到X分公司提供的该机器的系统盘GHOST文件,用工具进行了一些文件提取,发现如下:
1. 在C盘intels、Temps目录留有大量的黑客工具而且全部免杀,其文件名和MD5值分别如下:
2c88a3f11bff94ae0f6a7b5d4da4035d Temps/svchst.exe 9653b90c8b5abe4277cf06ebcbe21021 Temps/32.dll 649647dbdf024f1c565f380777c0c65e intels/procdump.exe 9f31027bf7c3f9fa54eb2793d4d4377c intels/195/svchst.exe 2f3853d8c93bdad0846c5c4223c9f4d2 intels/195/32.dll d0df366711c8b296680002840336b6fd intels/psexec.exe 424872148d3e84ed99cedd5bfbb8740c intels/runas.exe f2214577c920c2eb2fe455368a02dc5a intels/sys64.exe db34ce686d2b911589667cbcae3a920c intels/64.exe fb28f92f24570c117f34b6917f405da0 intels/dllr.dll a85292ef9d40964f8d68cf56dd262b7b intels/sv.exe 2c88a3f11bff94ae0f6a7b5d4da4035d intels/svchst.exe 3bbc51cfc5c1c1d51a26f61f3c0182bf intels/c/dllr.dll a85292ef9d40964f8d68cf56dd262b7b intels/c/sv.exe 9653b90c8b5abe4277cf06ebcbe21021 intels/32.dll edb1c480295250dd1a38f3aa1357deae intels/netscan.exe 9b56ae417e5c4dd46342bff2a50d1186 intels/myfile 12613ac87e6e550057ab5eb770f98f35 intels/32.exe
所留的文件最多,前面服务器上发现的文件基本上这都已经包含了,这也印证其是攻击的源头所在。
我们分析Temps目录下这两个文件svchst.exe及32.dll,发现一些特别之处:
exe刚启动的时候是不会加载这个32.dll的,即把32.dll删除也能运行,不存在强制依赖关系;
exe刚运行时加载的模块很少, 过4分钟后才会加载这个32.dll以及其它模块,并会出现相关网络访问,还是访问美国那个IP地址, 详细数据如下:
2016-2-16 17:44:53 创建新进程 允许 进程: c:/windows/explorer.exe 目标: c:/documents and settings/administrator/桌面/temps/svchst.exe 命令行: "C:/Documents and Settings/Administrator/桌面/Temps/svchst.exe" 规则: [应用程序]* 2016-2-16 17:48:57 访问网络 允许 进程: c:/documents and settings/administrator/桌面/temps/svchst.exe 目标: TCP [本机 : 1117] -> [192.169.6.151 : 443 (https)] 规则: [网络]任意协议 [本机 : 任意端口] <-> [任意地址 : 任意端口]
与这两个文件md5值相同的文件就不再分析,但还有个文件名相同但md5值不同的文件即 intels/195/svchst.exe和intels/195/32.dll,其与上面的特征类似, 也是要过大约4分钟才会加载一些模块并请求访问网络,只是这回访问的网络IP地址变成了德国的IP地址 ,具体测试信息如下:
2016-2-16 19:24:22 创建新进程 允许 进程: c:/windows/explorer.exe 目标: c:/documents and settings/administrator/桌面/intels/195/svchst.exe 命令行: "C:/Documents and Settings/Administrator/桌面/intels/195/svchst.exe" 规则: [应用程序]* 2016-2-16 19:28:47 访问网络 允许 进程: c:/documents and settings/administrator/桌面/intels/195/svchst.exe 目标: TCP [本机 : 1149] -> [82.211.30.195 : 443 (https)] 规则: [网络]任意协议 [本机 : 任意端口] <-> [任意地址 : 任意端口]
注意,连德国IP的443的后门目前有两个版本,一个是启动即开始连接的sys64.exe不带dll文件,一个是这里发现的带dll并且延时访问的。
C:/intels/c目录下的sv.exe、dllr.dll文件,与前面发现的文件有些关联,exe是同一个文件,但dll不同是一个文件。经分析功能是一样的,也是延时加载dll并监听9443,提供一个cmdshell。
黑客上传的文件中,有几个是微软提供的,包括psexec、runas、procdump,procdump的本意是用来监控应用程序的CPU异常动向生成dump文件的,而黑客却可以利用它来抓密码。 用procdump获取lsass进程的内存dump,然后用mimikatz离线分析可以得到密码,这中间是不会触发防病毒告警的 。32.exe和64.exe分别是mimikatz alpha版本的32位和64位程序,注意是免杀的版本。
基于前面的分析结论,进行了快速止血操作:对X分公司全网段进行内网端口9443扫描,确认没有机器被感染;在X分公司上网行为上排查出现的两个恶意IP地址,只有30.80.21.172访问过,确认没有其它机器被控制;在总公司及所有分公司上网行为中将这两个恶意IP进行拦截并记录;对涉及到的几台机器进行重装处理;对涉及到的IT管理员账号密码进行了重置。
有了前面的分析,黑客的行动就大概知道了,我们按时间线来排列如下:
黑客通过其邮箱avion.com.hk@gmail.com给目标用户hkcorpsxxx@M.com发送了一个特殊的邮件,加密的压缩包,里面是个cpl文件(注意,黑客仅发送了一封邮件到我司邮件服务器);
目标用户打开了这个邮件,最终触发了机器上的rundll32.exe请求美国IP地址192.169.6.151的443端口;2016-02-01 17:40:17,svchst.exe及32.dll这两个文件下载到机器上的c:/Temps目录;2016-02-01 17:43:35又下载了一次这两文件到c:/intels目录;2016-02-01 18:21:37下载了同名但md5值不同的文件到c:/intels/195目录;
黑客执行了c:/intels/195下的反弹后门文件,与我们在上网行为上看到从2016-02-01 18:26:29开始持续访问德国IP地址82.211.30.195的443端口符合。这个德国IP经过简单测试发现是个Windows机器,反弹后门的主控端在上面运行。
后门程序都在正常工作,开始不断请求上面两个IP的443端口;
黑客下载了不少可执行文件到c:/intels目录,包括psexec.exe、sys64.exe、runas.exe、sv.exe、dllr.dll、procdump.exe,以及c:/intels/c目录下sv.exe、dllr.dll。黑客通过procdump抓到了包含账号登录信息的lsass.exe进程的内存dump,进而搞到了域管理员密码之后。有了这个密码之后,可以用runas切换用户执行,也可以psexec到远程域服务器上执行命令。至此,两台域服务器都被控制。
黑客想在域上抓更多密码上传了mimikatzu文件并改名为24.txt,但被SEP查杀了。运行sv.exe只是得到cmdshell方便操作,尝试安装sys64.exe后门,由于域服务器未能上网,未果。
7. 用psexec远程登录到99.8.3.31上执行更多操作,特别是在2016-02-03 16:21:12上传了netscan.exe进行局域网扫描,触发大量蜜灌告警。
我们将源头机断网后,所有相关的网络请求截止,黑客的活动也停止了。
仅发了一封邮件到我司的邮箱,即命中目标;所使用的工具基本上都是免杀的,而且是针对一些沙箱检测做过一些延时处理,攻击手法非常老道,请自行体会。
分析安全事件是件挺有趣的事件,很多信息会保留在系统中,需要认真调查。在这个过程中,可以发现我们现有的安全管控措施的确比以前进步很多,但也存在一些可以提升的地方,个人思考如下:
1. IPS此次发现cmdshell后门,似乎未发现psexec利用的情况?针对未加密的cmdshell、liunxshell需更多测试,特别是其特征能否支持中文版操作系统?
2. 蜜灌很有用,多部署还是能发现一些异常的(部署的位置?随机蜜灌?);
3. SEP杀毒中重点关注 Hacktool系列,入侵者常用的一些黑客工具可能会被防病毒查杀出来(误报?);
4. 上网行为结合沙盒桌面,针对443的访问,按道理是限制了域名的,此次X分公司似乎未严格执行(鞭长莫及?);
5. 安全客户端、SOC客户端在这个过程中起的作用有限,还可以做的更好。
6. 异常访问监测系统,如果X分公司被黑客控制进而想深入到总公司或其它分公司,可以发挥作用。
7. 所有管控覆盖,然后与SOC集成,然后做好日常SOC运营,运营还是很重要!
笔者曾经在乙方安全厂商、互联网公司都呆过,深知内网安全不仅是靠堆一些防火墙、终端管理软件、IPS设备就能解决的;下一代防火墙、APT检测设备(沙箱)、大数据、智能行为分析,这个行业不乏所谓的创(hu)新(you),最关键的还是在做好纵深防御的基础上,将现有安全防护体系持续运营下去,不断优化。
* 本文原创作者:xysky,本文属FreeBuf原创奖励计划,未经许可禁止转载