标签 Virus 下的文章

如果图片看不见可以先移步看雪论坛的帖子 https://bbs.pediy.com/thread-264660.htm

样本基本信息

MD5:ae986dd436082fb9a7fec397c8b6e717
SHA1:31a0168eb814b0d0753f88f6a766c04512b6ef03
SHA256:3110f00c1c48bbba24931042657a21c55e9a07d2ef315c2eae0a422234623194

image-20201224203049898

思维导图

image-20201225193828852

行为分析

image-20201224205008067图标和名字伪装成ESET的升级程序,打开火绒剑设置过滤信息后,双击后弹窗提示升级成功,查看火绒剑捕获的动作信息

image-20201224205055495

火绒剑自动高亮了一个行为,这个是把C:\Users\Administrator\AppData\Roaming\目录下的程序加到开机启动项,前面的几步就是把释放的程序放到这个目录下

image-20201224205220083

详细分析

查壳

image-20201224210607192image-20201224211030831

32位程序无壳,在Keygener中发现有Base64和CRC32怀疑程序内有一定的加密措施,拖到IDA中接着分析

导入表分析

通过分析导入表发现有网络连接和文件操作的相关函数,印证了前面火绒剑行为分析的结构,不过很奇怪为什么火绒剑没有监测到网络连接行为

image-20201224211536448
image-20201224211625625

函数分析

WinMain

image-20201224213432292

sub_4011E0(LoadFunc)

进入函数后有一堆加密过的字符串和一堆GetProcAddress函数调用,猜测是动态加载某些函数,具体加载什么函数需要配合动态调试查看

image-20201224213715202

通过在OD中的动态调试发现这个函数就是导入了三个DLL(WININET.dll, urlmon.dll, kernel32.dll)

image-20201224214155723image-20201224214423343

前两个DLL 获取了网络相关函数

image-20201224220903027

kernel32获取了CreateToolhelp32Snapshot和WinExec

sub_403600(CopyMyselfAndBox)

这个函数简单来说就是把自身复制到特定目录,然后设置注册表实现自启动,最后弹窗欺骗用户升级成功已被保护

image-20201225091948396

sub_401580(GetNeInfo)

通过GetAdaptersInfo获取网卡相关信息

image-20201225101029046

GetVolumeInformation获取c盘序列号

image-20201225101135528

如果序列号获取失败就根据时间设置随机数

image-20201225101210701

sub_401770(GetSysInfo)

获取操作系统的相关信息,然后标准Base64编码一下

image-20201225102348387

image-20201225102223806

sub_402790(SetDomain)

把C2服务器的域名信息放置到注册表项SOFTWARE\Microsoft\Windows\CurrentVersion\Screensavers\ScreenRibbonsDomain中

image-20201225121614624

子线程分析

image-20201225122705512

sub_402F30(HTTPRequest)

前半部分先构造HTTP请求包

image-20201225125659487

后面利用先前动态加载的网络链接函数进行HTTP请求

image-20201225125816007image-20201225125903826

因为C2服务器现在无法链接了我就手动修改执行流程让程序以为自己收到了返回包接着执行

image-20201225130107885

后续就是从C2服务器接受数据,然后Base64解码传输的数据,在进行多字节到宽字节的转换

image-20201225130722944

把传输过来的数据经过一系列的运算来到sub_401AA0函数

sub_401AA0

生成一个临时文件名

image-20201225190330663

下面对此前从C2服务器接收到的数据通过“|”分割,依靠动物名字来下达指令,这里就到了样本的核心功能了远程控制

image-20201225190630766

比如:指令名为tiger时执行cmd指令

image-20201225191249012

指令名为monkey时,创建进程执行下载的程序

image-20201225192525182

指令名为fox和cat时会比monkey多一些注册表操作

image-20201225193132219

由于现在C2服务器已经连接不上了,其他一些的指令操作就不在详细分析,功能和我们一般见到的远控都差不多。

总结

这次样本分析总体来说比较常规,难度不算很大只要抓住主要执行脉络都能比较清晰的理解整个程序

参考链接

威胁情报

Kimsuky APT组织利用假冒的ESET安全软件更新程序进行恶意活动

彩虹猫病毒(MEMZ)分析及思维导图

memz1

0x00 基本介绍

​ 彩虹猫病毒是一款MBR类型病毒,中招的用户MBR会被篡改重启后无法正常进入系统只会出现彩虹猫的动画。同时在中招之后用户的鼠标和键盘会间歇性失效,桌面不断出现弹窗并且出现负片效果,鼠标图标会被修改,发出错误提示的声音,诺通过任务管理器关闭MEMZ.exe进程桌面会出现大量弹窗,随后出现蓝屏。

​ 本文仅局限于逆向分析层面,如查壳,行为分析,运行效果分析等未在本文展开,文末会放上个人认为比较好的分析文章以供学习。

image-20201107104238650

0x01 环境及工具

应用程序名称:MEMZ.exe
MD5:19DBEC50735B5F2A72D4199C4E184960
SHA1: 6FED7732F7CB6F59743795B2AB154A3676F4C822
工具: IDA Pro 7.0 & OD&die
分析环境:VMware Workstation Pro 15 + Win7 x64

0x02 逆向分析

image-20201107110433438

程序中的函数很少我们只要把握大体执行流程,通过简单分析总共分为三大部分:

1. 初次运行执行流程

通过 GetCommandLineW 函数获取命令行参数,如果命令行无参数则为初次运行。

image-20201107105158378

弹出俩个弹窗对用户进行提醒,如果都选择确认病毒就正式运行

image-20201107105405242

创建了5个命令行参数为/watchdog的进程和一个命令行参数为/main的进程

image-20201107105907751

至此初次运行流程就已经结束了,接下来分析命令行参数为/watchdog的进程执行了什么

2. /watchdog

此模块创建了一个线程和名为“hax”的窗口,线程的回调函数稍后分析,先来看看windows窗口的消息处理函数

image-20201107110553380

我们发现消息处理函数只关注两个窗口关闭消息,如果捕获到了窗口关闭消息则触发 RandomBoxAndOverWindows 函数,那我们接下来就得分析该函数做了什么事情

image-20201107110820241

RandomBoxAndOverWindows

首先我们发现该函数创建了20个线程

image-20201107111312096

StartAddress

这个线程回调函数设置了消息钩子,对窗口创建进行挂钩让窗口出现的位置随机

image-20201107111409918
image-20201107111823503

弹窗的内容

image-20201107112051845

DestroyWindows

通过GetProcessAddress 获取 RtlAdjustPrivilege和NtRaiseHardError函数的地址,如果获取成功则先用RtlAdjustPrivilege函数提权如何使用NtRaiseHardError制造蓝屏;如果有一个获取失败则启动备用方案使用ExitWindowsEx 函数强制关机。

至此WndProcess消息回调函数就分析结束了,接下来回过头分析先前的线程回调函数

image-20201107113011378

ProtectSelf

循环创建进程快照,然后和自身路径进行比较,有相同的计数器就加1,假如有病毒进程被关闭了本次循环的计算器数值会小于上一次,就会进入RandomBoxAndOverWindows 函数,出现大量弹窗并引起蓝屏。

image-20201107113845506

3. /main

​ 接下来的操作就是本病毒最核心的部分了,对MBR的操作以及让电脑出现总总异常,这里放一个对MBR的介绍,简单的说就是早期系统的一个系统引导代码,从Win8开始以后的系统基本上都不在使用MBR分区做为系统引导了,都开始使用GPT分区了。

​ 将程序内的硬编码拷贝到申请的堆内存中去,然后再写入MBR区域,写入成功就弹出note.txt

image-20201107120243489

​ 然后就循环创建10个线程,线程函数都在405130处

image-20201107121218901
image-20201107121236491

​ 每个线程的功能都不相同,具体的功能都是由某个特定的API来实现的,相对来说是比较好分析的,这里就不具体展开了,就直接上思维导图里的图片了

image-20201107121529657

至此三大模块都分析完毕

0x03 总结

此病毒的分析还是比较顺利的,没有遇到什么反调试,对于病毒本身还是具有局限性的只能应用在使用MBR分区的操作系统中。在github上有人写出了源码,将在下面的参考文章中放出

0x04 参考文章

MEMZ源码参考

彩虹猫病毒的逆向

熊猫烧香病毒分析及思维导图

xmind.png

0x00 基本介绍

熊猫烧香是一个感染性的蠕虫病毒,它能感染系统中的 exe ,com ,pif,src,html,asp 等文件,它还能中止大量的反病毒软件进程并且会删除扩展名为 gho 的文件,该文件是一系统备份工具 GHOST 的备份文件,使用户的系统备份文件丢失,被感染的用户系统中所有的.exe可执行文件图标全部被改成熊猫烧香的图标。

分析一个病毒有许多的步骤,本文仅局限于逆向分析层面,如查壳,行为分析,运行效果分析等未在本文展开,文末会放上个人认为比较好的分析文章以供学习。

0x01 环境及工具

分析环境:VMware Workstation Pro 15 + Win7 x86

工具:IDA Pro 7.0 & OD

0x02 Delphi的特性

1.函数用寄存器传参

2.【字符串地址 - 0x04】为字符串长度

0x03 逆向分析

1. 字符串比较

以“xboy”和“whboy”为key 对字符串进行解密,并与程序内原有字符串进行比较,比较成功进入三大核心模块

image-20200913140029931

2. CreateAndRunPanda模块

2.1 删除Desktop_.ini文件

Desktop_.ini.png

2.2 对文件本体进行判断

image-20200913165912948

2.3 如果为原始程序,则继续执行

先判断进程内是否存在spcolsv.exe,存在就结束进程。

image-20200913170526411

把病毒源程序复制到C:\Windows\System32\drivers\spcolsv.exe,然后启动spcolsv.exe(伪装),关闭自身源程序。

伪装程序和原本的panda.exe 内容是一模一样的,唯一不同就是在此前判断是否为spcolsv.exe程序的地方。

image-20200913170603049

2.4 如果本体为spcolsv.exe(伪装程序) 则跳转至loc_4085BA,释放之前申请存放的病毒文件信息的内存。

image-20200913171855862

1end.png

2.5 被感染后的程序末尾有五个字节都是Whboy且末尾是数字,通过文件中感染标记来区分,目前运行的是病毒本体还是被感染的文件如果是被感染文件会跳转至loc_4085D3,判断spclosv.exe是否存在,如果不存在从被感染的文件分裂出病毒程序重新执行。

感染后.png

3. InfectOtherFile模块

3.1 调用三个功能函数,三个函数大致的功能是感染本地文件,创建autorun.inf和setup.exe,利用139和445端口局域网传播。

threefunc.png

3.2 创建新线程通过查找到的盘符,遍历盘符中的各种文件并进行感染,同时规避掉一些系核心目录

VirusThread.png

3.3 sub_4094A4函数判断了是否为文件程序,诺为程序则跳转至感染区块

Infect.png

感染区块先删除GHO文件,断了被感染者备份的路。

delgho.png

判断文件后缀,诺为 EXE,RCS,FIP,MOC文件则执行一般感染函数

InfectFile.png

诺文件后缀为html,asp等网页文件格式进行网页感染函数,网页感染函数只是在网页文件尾部写入“

WebInfect.png

3.4 诺为文件夹目录,则先规避掉系统核心目录,在目录下写入隐藏的Desktop_.ini文件,并判断

writeini.png

在c:\test.txt中写入感染信息

writetxt.png

3.5 感染完文件后,代码会执行到设置计时器函数,这里定时调用TimerFunc函数、在这个函数中,会生成自启动autorun.inf以及病毒复制体setup.exe,工作原理与此前分析的生成伪装体和生成Desktop_.ini类似。

TimeFunc.png

3.6 局域网传播函数,先是创建线程回调函数,进入sub_40BCC8->sub_40BAA0 函数,进入此函数就有点类似网络编程了,先初始化套接字,创建套接字,尝试连接,关闭套接字。

threadhuidiao.png

Socket.png

最后如果尝试连接端口成功则把病毒拷贝到网络文件夹

CopyNetFileWork.png

4. VirusProtectSelf模块

4.1 四个时钟回调函数

TimerFunc.jpg

4.2 第一个回调函数(sub_40CD30)

通过发送窗口关闭消息关闭反病毒软件和任务管理器,同时通过注册表设置开机自启动和文件隐藏。

1timer.png

4.3 第二个回调函数(sub_40CE8C)

定期从 http://wangma.9966.org/down.txt 读取源码并下载文件并执行

2timer.png

4.4 第三个回调函数(sub_40CE94)

创建俩个线程,第一个线程和第二个回调线程(sub_40CE8C)执行内容一致

3timer.png

第二个线程删除网络共享文件,并且设置用户文件隐藏共享。

3.2timer.png

4.5 第四个回调函数(sub_407540)

删除服务、删除安全软件相关启动项

!4timer.png

0x04 总结

1. 特征地址及特征字符

http://wangma.9966.org/down.txt

WhBoy, 武*汉*男*生*感*染*下*载*者*

2. 优秀文章

病毒分析学习之旅--熊猫烧香

熊猫烧香病毒逆向过程及其分析思路