病毒行为:

1\将资源中的DLL释放到当前目录下

2\设置注册表,将GINA DLL设置为上一步中释放的DLL

DLL行为:

1\在DLL被进程装载时, 装载正常的msgina.dll, 并保存句柄,用于后续调用,保证系统正常运行

2\在hook WlxLoggedOutSAS时, 将第七个参数中的敏感信息保存到文件中. 

以下是详细分析:

在资源段中发现一个PE文件.

用IDA查看代码:

此程序先获取了本身的模块句柄,之后传入sub_401080进行操作:

sub_401080中:

将资源段的资源拷贝到了VirtualAlloc申请出来的空间中,并写入到当前目录,文件名为"Msgina32.dll"

返回上一层函数后:

先得到模块全路径文件名并传给Filename,在FileName字符串中查找'\'字符,并将该位置写为NULL,然后将Filename(此时不包括后面的文件名)跟"\msgina32.dll"连接起来,形成完整地路径.

之后将此路径+文件名传入sub_401000:

打开注册表'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'将"GinaDLL"的值改为上面构造的文件路径.

这样,以后使用的ginadll就都是这个恶意软件的ginadll了.

 

接下来查看这个恶意的DLL:

在DLL入口函数中:

这里用LoadLibrary装载了系统目录下正常的msgina.dll, 并将句柄保存在全局函数hLibModule中, 这样可以让自身完成正常的msgina功能.

接下来查看其它DLL的导出函数:

以上函数均为:

将数字3改为1~28,就是分别对应的函数,此函数gina_x()的作用是返回正常msgina.dll的导出序号为x的函数地址.

sub_10001000如下:

用于得到指定函数地址.

这里的大部分函数,均调用了一下正常msgina.dll里的对应功能函数即返回. 除了

WlxLoggedOutSAS

如果v8获得了WlxLoggedOutSAS的函数地址,之后调用此函数,返回值为v9

如果v9==1,说明函数调用成功,此时v7是一个结构体的指针:

所以之后的sub_10001570的参数其实相当于

将这结构体里的4个字符串指针传入了, 在sub_10001570中:

这里得到了日期时间,以及上面说到的4个值,用户名,域名,用户密码,旧的用户密码,都写入到一个名为msutil32.sys的文件中, 另外这文件是在winlogon进程中的,所以创建的文件应该在system32文件夹下.

posted on 2017-03-25 17:32  fuckitup123  阅读(387)  评论(0编辑  收藏  举报