freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Kris远控木马的简单分析
2018-10-23 06:00:50
所属地 北京

前言

本文分析一个远程控制木马,它的众多恶意行为之一是操作注册表,实现开机自启动,在注册表中程序为自己命名为Kris。

一、基本情况

样本类型:PE32 executable (GUI) Intel 80386, for MS Windows, UPX compressed

1.1 程序基本流程

在国内某款知名沙箱系统中对恶意程序做自动分析,归纳出的执行流程如下:

图1:程序的执行流程

图1:程序的执行流程

自动分析的结果,归纳出此恶意程序有如下行为:

1.连接域名jesso.3322.org(59.42.71.178,广东省广州市白云区)

2.释放名为BJ.exe的可执行程序

3.创建进程,此进程会创建互斥体,并且连接动态域名

1.2 加壳信息

通过PEiD检查出该病毒被加壳,可以使用upx脱壳。本文后面分析的是利用upx对原程序脱壳后的PE文件。

图2:通过PEiD检测恶意程序的加壳情况

图2:通过PEiD检测恶意程序的加壳情况

1.3 注册表操作

恶意程序会创建HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Kris,键值为C:\Users\vbccsb\AppData\Local\Temp\sample.exe,此文件为原程序将自身拷贝到这个目录下,用于来实现开机自启动。

恶意程序还会检查注册表中是否有360safe,来判断宿主机器中是否安装了杀毒软件。

二、网络行为

运行恶意程序,并用wireshark抓包,发现恶意程序会发起针对jesso.3322.org的DNS查询:

图3:恶意代码的网络行为

图3:恶意代码的网络行为

但是后续没有实质性的网络通信,经查,此IP地址仍旧存活但是域名已经失效:

图4:与C2地址的网络通信

图4:与C2地址的网络通信

根据国内知名安全厂商的威胁情报显示,域名和IP地址都是恶意的。

图5:域名的威胁情报

图5:域名的威胁情报

图6:IP地址的威胁情报

图6:IP地址的威胁情报

三、程序分析

3.1 Main函数分析

程序的Main函数位于0x0040D990,首先会通过sub_47866C函数创建BJ.exe文件,随后调用sub_40D950函数延时60秒执行此文件。

图7:创建BJ.exe并延时60s执行

图7:创建BJ.exe并延时60s执行

程序会通过注册表查看系统中是否安装了360安全软件,如果没有安装,那么就调用sub_40D630函数,此函数用于实现开机自启动。

图8:通过注册表检查目标系统中的360防护软件

图8:通过注册表检查目标系统中的360防护软件

通过sub_40D630函数通过注册表项“SOFTWARE\Microsoft\Windows\CurrentVersion\Run”实现开机自启动。

图9:通过注册表实现开机自启动

图9:通过注册表实现开机自启动

Main函数会连接远程网址jesso.3322.org,通过sub_403300函数发起连接。

图10:连接域名jesso.3322.org

图10:连接域名jesso.3322.org

3.2 Switch函数分析

恶意代码中的函数sub_40A050通过switch结构,实现了不同的恶意行为分支,即根据得到的指令,执行不同的操作。概述如下:

sub_409C00:创建新用户并添加到管理员组

sub_408070:提升进程权限

sub_4073E0:窃取系统磁盘信息并发送给远程主机

sub_4075A0:窃取桌面信息并发送给远程主机

sub_407760:窃取音频设备信息并发送给远程主机

sub_407920:击键记录器

sub_409320:关闭防火墙

sub_407F80:删除日志文件

3.2.1 创建新用户并添加到管理员组

sub_409C00函数实现创建新用户并添加到管理员组的功能:

图11:用于添加用户并添加到管理员组的switch分支

图11:用于添加用户并添加到管理员组的switch分支

通过调用函数NetUserAdd添加用户账户,随后调用NetLocalGroupAddMember函数,将新建的用户添加到管理员组。

图12:sub_409C00函数实现添加用户并添加到管理员组的功能片段

图12:sub_409C00函数实现添加用户并添加到管理员组的功能片段

3.2.2 提升权限

sub_408070实现提升进程权限的功能:

图13:用于实现提升权限的switch分支

图13:用于实现提升权限的switch分支

通过OpenProcessToken得到进程的令牌句柄,随后使用LookupPrivilegeValue查询进程权限,最后用AdjustTokenPrivileges函数提升权限。

图14:sub_408070函数用于提升进程权限的功能片段

图14:sub_408070函数用于提升进程权限的功能片段

3.2.3 获取驱动器和磁盘卷信息并发送给远端主机

sub_4073E0函数用于获取磁盘以及驱动器的信息并发送给远端系统。它最终通过sub_405AC0来实现获取磁盘信息的功能,通过sub_403300用来实现连接远程主机并发送信息的功能。

图15:用于实现获取磁盘信息并发送给远程主机的switch分支

图15:用于实现获取磁盘信息并发送给远程主机的switch分支

sub_405AC0函数通过调用GetVolumeInformation获取磁盘卷信息,同时通过SHGetFileInfo函数获取文件系统对象的信息。

图16:sub_405AC0函数用来获得磁盘信息

图16:sub_405AC0函数用来获得磁盘信息

sub_403300函数通过一系列套接字函数实现网络通信,将窃取的信息发送给远程主机

图17:sub_403300函数用来与远程主机通信

图17:sub_403300函数用来与远程主机通信

3.2.4 获取桌面信息并发送给远端主机

sub_4075A0通过调用sub_40F780函数实现截屏功能,发送给远端主机的功能仍然是通过sub_403300函数实现的,与3.2.3中相同。

图18:用于实现获取桌面信息并发送给远端主机功能的switch分支

图18:用于实现获取桌面信息并发送给远端主机功能的switch分支

sub_40F780函数通过调用GetThreadDesktop得到桌面窗口所在线程,然后调用GetUserObjectInformation获取特殊的窗口站和桌面对象信息。

图19:sub_40F780函数实现获取桌面信息的功能

图19:sub_40F780函数实现获取桌面信息的功能

3.2.5 窃取音频设备信息并发送给远端主机

sub_407760函数通过sub_401760函数窃取音频设备信息并通过sub_403300函数来实现连接远程主机并发送的功能,sub_403300在上面已经提到了。

图20:用于实现窃取音频设备信息的switch分支

图20:用于实现窃取音频设备信息的switch分支

通过调用waveInGetNumDevs获得就绪的波形声音输入设备的数量:

图21:sub_401760函数获得系统中波形声音输入设备的数量

图21:sub_401760函数获得系统中波形声音输入设备的数量

3.2.6 击键记录器

sub_407920函数会调用sub_40A580函数实现击键记录功能,并且调用sub_403300函数向远程主机发送信息:

图22:用于实现击键记录器的switch分支

图22:用于实现击键记录器的switch分支

sub_40A580函数调用GetKeyState, GetAsyncKeyState, GetKeyState三个函数实现击键记录的功能。

图23:sub_40A580函数实现击键记录功能

图23:sub_40A580函数实现击键记录功能

3.2.7 关闭防火墙

sub_409320函数通过sub_409240函数实现关闭防火墙的操作:

图24:用于实现关闭防火墙功能的switch分支

图24:用于实现关闭防火墙功能的switch分支

sub_409240函数构造"cmd /c net stop sharedaccess"指令,实现关闭Internet连接共享和防火墙服务的功能:

图25:sub_409240函数实现关闭防火墙的功能

图25:sub_409240函数实现关闭防火墙的功能

3.2.8 删除日志文件

恶意代码通过sub_407F80函数实现删除日志文件的功能:

图26:用于实现删除日志文件功能的switch分支

图26:用于实现删除日志文件功能的switch分支

程序首先通过OpenEventLog函数打开日志文件,如果成功打开,就调用ClearEventLog函数清除日志文件中的内容,最后通过CloseEventLog函数关闭日志文件。

图27:sub_407F80函数实现删除日志的功能

图27:sub_407F80函数实现删除日志的功能

四、总结

此样本是一个简单的远控木马,通过访问C2服务器获取指令,然后根据Switch分支操作执行诸如: 创建新用户并添加到管理员组、 提升进程权限、 窃取系统磁盘信息并发送给远程主机、 窃取桌面信息并发送给远程主机、 窃取音频设备信息并发送给远程主机、 击键记录器、 关闭防火墙、 删除日志文件等危险的操作。程序本身还会有拷贝自身、延时执行、查询系统中是否安装安全软件的操作,并以此来确保自身的安全,同时还会通过修改注册表实现开机自启动。

*本文作者:navyofficer,转载请注明来自FreeBuf.COM

# 远控木马 # Kris
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者