前言
本文分析了一种远程控制木马。其众多恶意行为之一就是操作注册表,从而实现引导和自启动。在注册表中,程序将自己命名为Kris。
一、基本信息
样本类型:pe32可执行(GUI) intel80386,针对ms windows,upx压缩
1.1基本程序流程
恶意程序在国内知名沙箱系统中自动分析,实现过程总结如下:
图1:程序的执行流程
自动分析的结果是,该恶意程序具有以下行为:
1.连接域名jesso.3322.org(广东省广州市白云区59.42.71.178)
2.发布名为BJ.exe的可执行程序
3.创建一个进程,它将创建互斥体并连接动态域名
1.2外壳信息
PEiD显示病毒脱壳,upx可以用于脱壳。本文后面分析的是使用upx对原程序进行shell化后的PE文件。
图PEiD对恶意程序的检测
1.3注册表操作
恶意程序会创建HKEY _ local _ machine software Microsoft windows current version run Kris,键值为c: users vbccsb appdata local temp sample.exe。该文件将自身复制到原始程序的目录中,用于实现引导和自启动。
恶意程序还会检查注册表中是否有360safe,以确定主机中是否安装了防病毒软件。
二、网络行为
运行恶意程序,用wireshark抓取包,发现恶意程序会对jesso.3322.org发起DNS查询:
图3:恶意代码的网络行为
但是后续没有实质性的网络沟通。经调查,该IP地址仍然有效,但域名已过期:
图4:使用C2地址的网络通信
根据国内知名安全厂商的威胁情报,域名和IP地址都是恶意的。
图5:域名的威胁情报
图6:威胁情报6:IP地址
三、程序分析3.1主要功能分析
程序的主要功能位于0x0040D990。首先,BJ.exe文件将由sub_47866C函数创建,然后调用sub_40D950函数将该文件的执行延迟60秒。
图7:创建BJ.exe并延迟60秒执行
程序会通过注册表检查系统中是否安装了360安全软件,如果没有安装,会调用sub_40D630函数,用来实现引导自启动。
图8:通过注册表检查目标系统中的360保护软件
使用sub_40D630函数和注册表项“software Microsoft windows current version run”实现引导和自启动。
图9:通过注册表引导和自启动
主功能连接到远程网站jesso.3322.org,并通过子功能403300启动连接。
图10:连接域名jesso.3322.org
3.2开关功能分析
恶意代码中的函数sub_40A050通过开关结构实现恶意行为的不同分支,即根据得到的指令执行不同的操作。总结如下:
Sub_409C00:创建新用户并将其添加到管理员组
Sub_408070:提升进程权限
Sub_4073E0:窃取系统磁盘信息并将其发送到远程主机
Sub_4075A0:窃取桌面信息并发送到远程主机
Sub_407760:窃取音频设备信息并发送给远程主机
Sub_407920:击键记录器
Sub_409320:关闭防火墙
Sub_407F80:删除日志文件
3.2.1创建新用户并将其添加到管理员组
sub_409C00功能实现创建新用户并添加到管理员组的功能:
图11:切换分支以添加用户并将其添加到管理员组
通过调用NetUserAdd函数添加用户帐户,然后调用NetLocalGroupAddMember函数将新创建的用户添加到管理员组。
图12: Sub _ 409C00功能实现了添加用户并添加到管理员组的功能片段
3.2.2提高权威
Sub_408070实现提升进程权限的功能:
图13:实现提升权限的切换分支
通过OpenProcessToken获取进程的令牌句柄,然后通过LookupPrivilegeValue查询进程权限,最后使用AdjustTokenPrivileges函数增强权限。
图14:用于提高进程权限的sub _ 408070函数的函数片段
3.2.3获取驱动器和磁盘卷信息,并将其发送到远程主机
sub_4073E0函数用于获取磁盘和驱动器的信息,并发送给远程系统。最后通过sub_405AC0实现获取磁盘信息的功能,通过sub_403300实现连接远程主机和发送信息的功能。
图15:获取磁盘信息并将其发送到远程主机的交换机分支
sub_405AC0函数通过调用GetVolumeInformation获取磁盘卷信息,通过SHGetFileInfo函数获取文件系统对象信息。
图16: sub _ 405ac0函数用于获取磁盘信息
Sub_403300功能通过一系列套接字功能实现网络通信,并将窃取的信息发送给远程主机
图17: Sub _ 403300功能用于与远程主机通信
3.2.4获取桌面信息并发送到远程主机
Sub_4075A0通过调用sub_40F780函数实现截屏功能,发送给远程主机的功能仍然是通过sub_403300函数实现的,和3.2.3中的一样。
图18:获取桌面信息并将其发送到远程主机的交换分支
函数sub_40F780通过调用GetThreadDesktop获取桌面窗口的线程,然后调用GetUserObjectInformation获取特殊窗口站和桌面对象信息。
图19: Sub _ 40F780功能实现获取桌面信息的功能
3.2.5窃取音频设备信息并发送给远程主机
sub_407760功能通过sub_401760功能窃取音频设备信息,实现连接远程主机并通过sub_403300功能发送的功能,上面已经提到过。
图20:窃取音频设备信息的切换分支
通过调用波形设备获取就绪波形声音输入设备的数量:
图21: Sub _ 401760函数获取系统中波形声音输入设备的数量
3.2.6按键记录器
sub_407920函数调用sub_40A580函数实现按键记录功能,调用sub_403300函数向远程主机发送信息:
图22:实现击键记录器的切换分支
函数sub_40A580调用getkeystate、getasynckeystate、getkeystate实现击键记录功能。
图23: Sub _ 40a580功能实现按键记录功能
3.2.7关闭防火墙
Sub_409320功能通过sub_409240功能实现关闭防火墙的操作:
图24:关闭防火墙功能的切换分支
Sub_409240函数构造“cmd /c网停共享访问”指令,实现关闭互联网连接共享和防火墙服务的功能:
图25: Sub _ 409240功能实现关闭防火墙的功能
3.2.8删除日志文件
恶意代码可以通过sub_407F80函数删除日志文件:
图26:切换删除日志文件的分支
程序首先通过OpenEventLog函数打开日志文件,如果打开成功,调用ClearEventLog函数清除日志文件的内容,最后通过CloseEventLog函数关闭日志文件。
图27: Sub _ 407F80功能实现删除日志的功能
四.总结
此示例是一个简单的远程控制木马,它访问C2服务器获取指令,然后根据Switch分支操作执行危险操作,例如创建新用户并将其添加到管理员组、增加进程权限、窃取系统磁盘信息并将其发送到远程主机、窃取桌面信息并将其发送到远程主机、窃取音频设备信息并将其发送到远程主机、击键记录器、关闭防火墙、删除日志文件等。程序本身也会有复制自身、延迟执行、查询系统中是否安装了安全软件等操作,以保证自身的安全性,同时通过修改注册表实现引导自启动。
*作者:navyofficer,请注明是FreeBuf.COM人
1.《远程木马 Kris远控木马的简单分析》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《远程木马 Kris远控木马的简单分析》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/1028686.html