-
-
[原创]病毒分析日志2_EPROCESS断链隐藏进程
-
发表于:
2020-10-31 17:33
5872
-
[原创]病毒分析日志2_EPROCESS断链隐藏进程
[toc]
#运行效果
##查壳
### 静态分析
####基础动态分析
##### 动态分析
运行效果
拿到了样本,在虚拟机中运行了一下,结果如下
每隔一段时间就会启动浏览器,访问一个固定的网址。访问的是wormvirous这个网址,推测可能是个加载器或者后门,我们打开任务管理器发现找不到进程,恢复快照到虚拟机感染病毒之前的状态,下面开始来分析
查壳
无壳
静态分析
strings查看字符串
这里看到了sleep函数,源程序应该调用了sleep函数睡眠一个定长时间然后唤醒,这也是为什么网页间隔一段时间弹出来的原因,DeviceIoControl可以通过设备句柄向内核驱动发送数据,CreateFileA表明创建了一个文件,CloseServiceHandle StartServiceA CreateServiceA OpenSCManagerA 告诉我们这个程序创建并启动了一个服务,OleUninitialize与OleInitialize表明可能调用了COM库,CoCreateInstance表明可能创建与指定的CLSID关联的类的单个未初始化对象。GetOEMCP返回操作系统的当前原始设备制造商的代码页标识符。
在C:\Windows\System32\目录下创建了virousal.sys文件,下面分析该驱动
IoGetCurrentProcess调用表明这个驱动可能修改正在运行的程序,或者需要该进程的信息。
这里我们看到了网址和驱动安装的目录
dependencewalker可以看到导入函数,我们用strings工具已经分析过了,这里可以验证一下
驱动程序
基础动态分析
打开processexplorer运行程序,发现列表中没有forge进程,和任务浏览器一样,只有浏览器进程,说明用了进程隐藏技术,
processname过滤forge.exe,procmon一片空白
动态分析
因为程序没有在WInDBG和OllyDbg的进程列表中显示,所以我们也不能附加一个调试器到进程。
将可执行文件载入IDA
这里,从OpenSCManagerA到DeviceIoControl之间一系列的函数调用,主要是加载和发送请求到内核驱动函数,程序创建了一个叫做Process Helper的服务,它负责加载内核驱动 C:\Windows\System32\virousal.sys,然后启动了Process Helper服务,加载virousal.sys到内核并且打开了句柄\\.\ProcHelper,打开了一个由ProcHelper驱动创建的内核设备句柄继续往下看
这里是一个COM对象的使用,在分析strings的返回结果的时候我们就猜测到了,这里验证了我们的猜想,除此之外,还有一个对ecx+0x2c的调用,
DeviceIoControl将控制代码直接发送到指定的设备驱动程序,使相应的设备执行相应的操作,这里参数LpOutBuffer和LpInBuffer都为0,意思是这个请求没有发送任何信息到内核驱动,而且内核驱动也没有反馈任何信息,这个DeviceIoControl干嘛了呢
下面初始化了COM,调用OleInitialize和CoCreateInstance获得一个COM对象,返回的COM对象被保存在栈上的一个变量中,IDA将它标识为ppv,查看CLSID以及IID判断这个程序使用了COM的什么功能
判断会调用哪个程序,在注册表中查找这个CLSID,这个IID是IWebBrowser2,这个CLSID对应Internet Explorer
40110f处eax被解引用ecx指向这个COM对象的基地址,40111e处,对象中偏移0x2c处的函数被调用,IWebBrowser2接口的偏移0x2c处是Navigate函数,这个函数将Internet Explorer的网址导航到wormvirous这个网址,之后会睡眠一段时间,然后循环。
将内核文件加载入IDA
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)