病毒行为:

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文件夹下.

一个通过GINA拦截 盗窃登陆口令的病毒分析的更多相关文章

  1. 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能

    在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...

  2. 开源一个Java Class实现Openfire登陆、推出、消息发送,方便其他系统集成IM功能了

    开源一个Java Class实现Openfire登陆.推出.消息发送 N年前写的,希望对Openfire开发新手有帮助哦 import java.util.*; import java.io.*;   ...

  3. ssh框架从页面传中文发生乱码时怎么解决,就是添加一个字符编码拦截器。用springframework自带的便可

    ssh框架从页面传中文发生乱码时怎么解决,就是添加一个字符编码拦截器.用springframework自带的便可

  4. firebug登陆之数据包分析

    登陆之数据包分析 工具: python-urllib2   |  firefox+firebug或者chrome,用浏览器打开登陆页面之后,按F12键会默认打开开发者工具或者启动firebug,点击n ...

  5. PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...

  6. 一个std::sort 自定义比较排序函数 crash的分析过程

    两年未写总结博客,今天先来练练手,总结最近遇到的一个crash case. 注意:以下的分析都基于GCC4.4.6 一.解决crash 我们有一个复杂的排序,涉及到很多个因子,使用自定义排序函数的st ...

  7. 【病毒分析】对一个vbs脚本病毒的分析

    [病毒分析]对一个vbs脚本病毒的分析 本文来源:i春秋社区-分享你的技术,为安全加点温度 一.前言 病毒课老师丢给我们一份加密过的vbs脚本病毒的代码去尝试分析,这里把分析过程发出来,供大家参考,如 ...

  8. 一个团队和他们的调查表-----("调查表与调查结果分析"心得体会)

    注:这篇blog主要是描述六小灵童团队在从接到调查表任务到分析调查数据最后完成本次任务的过程,以及过程中的点滴和心德体会.---蔡何 1.制表历程 随着课程的推进,我们逐步进入了软件项目中比较重要的需 ...

  9. (转)一个MySQL 5.7 分区表性能下降的案例分析

    一个MySQL 5.7 分区表性能下降的案例分析 原文:http://www.talkwithtrend.com/Article/216803 前言 希望通过本文,使MySQL5.7.18的使用者知晓 ...

随机推荐

  1. Qt QGraphicsItem要点 积累

    1.在创建QGraphicsItem子类的时候,想要实现自己绘图,一般是重新实现boundingRect()和paint()函数,如果不重新实现shape(),基类的实现将会退而使用 bounding ...

  2. springMVC注解总结

    由于BookController类加了value="/book"的@RequestMapping的注解,所以相关路径都要加上"/book",即请求的url分别为 ...

  3. 0x14哈希之兔子兔子

    参考链接:https://www.cnblogs.com/wyboooo/p/9813428.html 题目链接:https://www.acwing.com/problem/content/140/ ...

  4. MAVEN项目中include引入静态文件时报错找不到文件

    1. 出现的问题 Fragment "/common/jsp/resource.jsp" was not found at expected path /src/main/weba ...

  5. Linux 最小系统制作

    Linux 最小系统制作 一.制作工具Busybox 在制作文件系统的时候,我们需要使用“Busybox 工具”,即为附件压缩包“busybox-1.21.1.tar.bz2”.“BusyBox 工具 ...

  6. 蒙德里安的梦想【状压DP】

    求把N*M的棋盘分割成若干个1*2的的长方形,有多少种方案. 例如当N=2,M=4时,共有5种方案.当N=2,M=3时,共有3种方案. 如下图所示: 输入格式 输入包含多组测试用例. 每组测试用例占一 ...

  7. 关于php下的ajax赋值传值的调试

    在tp中, 在js中也可以使用 模板变量替换(比如__PUBLIC__)和 模板函数调用(比如: {:U('..')}) 等. 但是 只有直接放在 相应的 模板文件中, 只有放在index.html之 ...

  8. Lintcode470-Tweaked Identical Binary Tree-Easy

    470. Tweaked Identical Binary Tree Check two given binary trees are identical or not. Assuming any n ...

  9. css浮动与清除浮动

    css浮动 首先,我们要知道,css中块级元素在页面中是独占一行的,自上而下排列,也就是我们所说的流,通常称为标准流. 以div为例,div是块级元素,如下: 可以清楚地看到,div是独占一行的,di ...

  10. CocosCreator 小知识

    最近在自学creator,有些小坑和解决方案,想记录下来: 1. 防止点击穿透 场景:在游戏界面有功能按钮,上层弹出layer之后,加入了遮罩,但是游戏界面的功能按钮还可以点击,穿透了! 方案1:遮罩 ...