欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Vidar窃密木马分析(下)

来源:本站整理 作者:佚名 时间:2019-01-26 TAG: 我要投稿

接着上文,继续对Vidar窃密木马进行介绍。
 
硬件
通过注册表项的值来获取硬件名称:
HKEY_LOCAL_MACHINE  HARDWARE  DESCRIPTION  SYSTEM  CentralProcessor  ProcessorNameString

 
网络
网络部分的实现很简单,通过将从ip-api.com/line/获取的数据进行转换,然后放入相应的日志中即可。

 
进程
当Vidar运行后,将结合多个函数,来对正在运行的进程进行快照。

当然,实现的步骤不难理解:
先调用CreateToolhelp32Snapshot来获取所有已执行进程的完整快照,再使用Process32First在循环中读取每个进程。

然后检查该进程是父进程还是子进程,并获取PROCESSENTRY32 对象的以下2个值:
th32ProcessID: PID
szExeFile: The name of the PE

 
软件
通过注册表项的值来获取系统已安装的软件:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall
它将对系统软件的以下2个值进行检索:
DisplayName
DisplayVersion

 
结果
如果你想看最终执行结果,可以参考下面在沙箱中运行后生成的 information.txt(此处为Vidar 4.2版本)
Vidar Version: 4.2
Date: Thu Dec 13 14:39:05 2018
MachineID: 90059c37-1320-41a4-b58d-2b75a9850d2f
GUID: {e29ac6c0-7037-11de-816d-806e6f6e6963}
Path: C:UsersadminAppDataLocalTemptoto.exe
Work Dir: C:ProgramDataLDGQ3MM434V3HGAR2ZUK
Windows: Windows 7 Professional [x86]
Computer Name: USER-PC
User Name: admin
Display Resolution: 1280x720
Display Language: en-US
Keyboard Languages: English (United States)
Local Time: 13/12/2018 14:39:5
TimeZone: UTC-0
[Hardware]
Processor: Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz
CPU Count: 4
RAM: 3583 MB
VideoCard: Standard VGA Graphics Adapter
[Network]
IP: 185.230.125.140
Country: Switzerland (CH)
City: Zurich (Zurich)
ZIP: 8010
Coordinates: 47.3769,8.54169
ISP: M247 Ltd (M247 Ltd)
[Processes]
- System [4]
---------- smss.exe [264]
- csrss.exe [344]
[Software]
Adobe Flash Player 26 ActiveX [26.0.0.131]
Adobe Flash Player 26 NPAPI [26.0.0.131]
Adobe Flash Player 26 PPAPI [26.0.0.131]
 
Loader模块
这个模块在代码实现上比较简单,但完成功能绰绰有余。
1.为即将下载的payload生成随机名称
2.下载payload
3.执行payload

当从C2下载完二进制文件时,将使用具有特定参数的CreateFileA函数:
edi:从C2下载的数据
80h:文件没有设置其他属性(此属性仅在单独使用时才有效)
2:若文件名已存在,此选项将强制覆盖
edi:???
1*:在接下里的操作中,访问设备或文件,需要读权限。除此之外,进程无法访问需要读权限的文件或设备
40000000h:写入权限(GENERIC_WRITE)
ebp + lpFileName:生成的文件名
完成后,只需要将内容写入文件(WriteFile),然后关闭相应句柄 (CloseHandle)即可。

到目前为止,文件已经被下载并保存在硬盘中,只需要用ShellExecuteA进行启动。所以不要犹豫,就在此时对API函数下断点来捕捉payload,不然错过最佳时机。
 
Killing 模块
当窃密软件完成所有任务和清理工作后,会进行自我清除。首先它会调用GetCurrentProcessId来查询自己的PID。

然后进入“func_GetProcessIdName”,尝试用OpenProcess打开自己的进程句柄,如果失败,将继续检索。这里最重要的环节是调用GetModuleBaseNameA,它可以通过之前获取的PID来检索出其对应进程的进程名。

在.rdata中将一些字符串进行硬编码,以备将来调用。

[1] [2] [3] [4] [5] [6]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载