U盘感染病毒分析
- u盘感染病毒的行为分析。
1、程序获取注册表值(部分获取命令以及修改注册表流程如下)
获取TSAppCompat 目的是识别在应用程序模式下运行服务的服务器。
在开机自启动时获取服务器以及微软为防止DLL 劫持漏洞的产生所设置的
SafeDllSearchMode 的值。
transparentEnable,获取服务器组关于NAT 功能的设置
DisableMetaFiles,用来禁用原文件处理(为1 时有效)
AppInit_Dlls,任何使用user32.dll 的文件都会读取这个地方
TSUserEnabled,是否允许远程使用
修改的注册表项设置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\msfsa 的值可以实现指定exe 文件自启动(=”GHD.EXE”)
设置原文件不能被修改
2、文件操作:
可以观察到系统截获avb.exe,向其写入了数据并修改了数据,自此猜测avb.exe 才是实时感染的程序。
截获:
修改avb数据
同时也修改了 javasc
- IDA分析函数
1、加壳检查
利用 PEID进行壳检查
检测结果如下:
说明为 Delphi 语言编写,无壳。
2、IDA分析函数
使用IDA打开,发现调用了 5 个函数
从IDA给出的函数名可知,第一个函数是初始化exe文件,第四个函数为系统运行 Run 函数,第四个函数是退出程序 Halt0函数。第二和第三个函数从名称还不能看出来什么。
在IDA中使用快捷键alt+t,查找字符串“avb.exe”:
根据查找到的位置,定位到_TForm1_FormCreate函数:
e
接下来分析该函数的功能。
此函数内部调用了 ParamStr(int)函数获取进程名称等信息,再调用 ExtraFileName()函数提取出文件名称,统一转成大写之后,与“javasc.exe”进行字符串比较。
e
如果进程名不是 javasc.exe,如果不是则转到:
此模块会复制进程并重新命名为 sdafdf.exe 文件存储在 C:\\windows 下。结束后调用shellexecute 函数运行此程序。
如果进程是 javasc.exe 那么,跳转模块如下:
此模块首先会获取文件所在路径,获取文件名称后,将当前路径与文件名称进程拼接得到完整的路径信息,比较当前目录下存在javasc.exe 文件(DirectoryExists),如果存在:
最终会调用 ShellExecute 对文件夹进行展开。
接下来就是判断 avb.exe 是否存在,如果不存在:
其中,sub_44F3A0函数的功能是修改注册表:
之后复制 javasc.exe 文件以及 avb.exe 文件,在注册表中注册服务并向注册表中写入信息。
接下来仍是判断进程名称是否为 avb.exe 如果是,那么复制 mscb.exe 文件,调用并执行后正常退出函数。如果不是则直接退出 _TForm1_FormCreate函数。
总结:此函数主要目的是将文件复制到系统目录下执行并修改注册表值
三、分析响应过程(IDA分析)
在IDA 中左边栏搜索关键字“timer”,获得四个响应过程
-
应_TForm1_Timer1Timer
1.1进入函数sub_44EF94()分析函数功能
1.2进入函数sub_44E9FC(&v12,a1)分析函数功能
如下图的while循环中可以看到此函数的作用是遍历目录文件
1.3进入函数sub_44EEBC(v11)分析函数功能
1.4进入函数sub_44EAA4(v10,(int)&v11)分析函数功能
如下图先通过FindFirst找到第一个无效文件,并记录其创建时间FatTime,然后根据创建时间找到所有此创建时间下的文件。
1.5进入函数sub_44EC88((int)v12, v9)分析函数功能
此函数在循环中通过CopyFileA函数拷贝病毒文件
则第一个响应过程是先通过遍历目录下文件,然后找到无效文件,并复制病毒。
2. 响应_TForm1_Timer2Timer
v15为获取的系统时间的day,判断若系统时间大于2009,且日期为1、10、21、29则触发感染事件。
3. 响应_TForm1_Timer3Timer
进入函数sub_44F3A0(v2,v3,v4)分析函数功能
如下图,可以看到其主要功能为修改注册表
4. 响应_TForm1_Timer3Timer
如下图,步骤1中找到内存中exefile文件并free掉,然后通过ShellExecuteA调用 nasm.exe程序。
四、杀毒流程
首先删除生成的对应文件。
这里是GHO生成了javasc和avb。都需要删除。由于程序对部分文件做了隐藏我们还需要先行修改注册表的值。
删除自启动劫持注册表项。
RunOnce在每次启动的时候都会运行,所以可以做到自启动。
删除这个注册表项。
杀毒完成。