概述:CrossRAT具备跨平台的特点,针对不同的系统平台进行不同的部署感染,使得病毒具备较强的平台感染性,具有较大的潜在感染能力,感染目标系统后会进一步部署持续性感染策略,使得目标主机在不经意间便沦为攻击者的“肉鸡”,该程序实现了较多的远程执行命令,具备了基本的远程控制能力,包含了文件上传下载,拷贝移动文件,远程截屏监控等,且能够利用自己实现的Run指令对目标主机进行进一步的攻击,使得感染主机进一步沦陷。
该间谍程序的跨平台能力基于Java运行环境,针对不同系统平台进行了不同的感染策略部署,能够在Windows,Mac和Linux这三大主流平台上进行持续性的感染策略部署,具备较强的隐藏性,且能够接受较多的远程执行命令,感染后的主机能够执行远程文件类命令操作,截屏监控操作,以及执行任意程序的操作,通过该病毒攻击者可以基本控制感染主机,且有能力进行进一步的攻击策略。
样本详细分析报告:
恶意程序启动后会检查当前操作系统种类,根据不同操作系统(Windows,macOS和Linux)将自身拷贝到不同的文件目录下。例如在Windows平台,程序将拷贝自身到%temp%\\目录下。
图1 程序启动后的拷贝自身到指定目录下
拷贝自身到指定目录后便再次根据系统版本实现不同的持续性感染,使得该病毒在不同系统版本实现开机自启动的持续性攻击能力。
图2 判断系统版本并设置开机启动
在Windows版本中通过将拷贝后的病毒文件目录写入开机自启动注册表中实现开机自启动功能。
图3 针对Windows系统的开机启动设置
在Mac系统版本中病毒会在当前用户的home目录下新建一个/Library/LaunchAgents/.plist文件并将启动病毒文件的配置写入该文件实现病毒的开机启动功能。
图4 针对Mac系统的开机启动设置
在不支持外接输入设备的Linux系统中(大部分为服务器)通过在当前用户的home目录下新建目录/.config/autostart/并在该目录下新建病毒启动的配置文件.desktop写入病毒启动的配置信息实现病毒的开启自动启功能。
图5 针对Linux系统的开机启动设置
恶意软件完成开机启动配置后便会尝试连接远程C&C服务器(flexberry.com:2223),并检查服务器发送过来的命令。
图6 远程C&C服务器信息以明文保存
当病毒从远程C&C服务器获取到操作指令之后便会将本机的信息(例如系统名称,操作系统版本,用户名等信息)发送到远程服务器。
图7 发送至远程C&C服务器的用户信息
之后每隔5s便进行一次获取远程C&C服务器响应的操作,本次主机接收到操作码后便会执行后续指定的恶意行为。
图8 每隔5s进行一次通讯操作
该病毒的发送的命令格式为“受害者感染主机的UID +“$#@” + 指令序列(如@0009)+ “$#@” + 感染主机IP地址 +“$#@” + 感染主机系统名 + “$#@” + 感染主机系统版本” + “$#@” + 感染主机主机用户名 +“$#@” + 感染病毒的版本号(如0.1)+ “$#@” + 感染病毒的组别(如GROUP2)+ “$#@” + ”&&&”(结束符) ”,该病毒所实现的远程命令如下:
图9-1 间谍程序实现的远程命令
图9-2 接收到的命令后执行对应的函数
该病毒的Rundll指令(@0009),该指令对应于反编译变量k.v,其中接收到该指令后,便会启动攻击者指定的可执行文件,其中在Windows平台利用rundll32 url.dll,FileProtocolHandler指令来执行后续给定的.exe文件,从而执行攻击者给定路径的任意exe文件。而在其他平台(Mac和Linux)则利用Desktop.getDesktop().open(localFile)来执行指定的文件。
图10-1 rundll32 url.dll,FileProtocolHandler命令示例
图10-2 根据不同平台执行指定的程序
该病毒的截屏指令(@0008),该命令对应于反编译的变量k.u,具体代码位于反编译的j.class文件中,通过java.awt.Robot().createScreenCapture方法来实现屏幕截图,然后将截图保存为.jpg文件并后续发送给远程服务器。
图11 截屏监控功能
该病毒的网络数据心跳回应指令(@0007),该命令对应于反编译的变量k.t,代码位于反编译文件的g.class,该指令用于立刻向服务器端发送指定格式的数据包以验证主机是否在线,发送数据包格式“感染主机UID +“$#@” + “@0001” + “$#@” + “&&&””。
图12 发送心跳数据包功能
该病毒的读文件指令 (@0006),该命令对应于反编译的变量k.s,代码位于反编译文件的d.class文件中,通过localDataInputStream.read()读取本地文件。
图13 读指定文件功能
该病毒的写文件指令(@0005),该命令对应于反编译的变量k.r,通过localDataOutputStream.write()方法将指定的内容写入文件中。
图14 写指定文件功能
该病毒的移动文件指令(@0004),该命令对应于反编译的变量k.q,代码位于反编译文件中的h.class文件中,在h.class文件中实际又调用了b.class文件中的方法,实现了文件的移动功能。
图15 移动文件功能
该病毒的拷贝文件指令(@0003),该命令对应于反编译的变量k.p,代码位于反编译文件b.class中,通过一系列的文件和目录判别后拷贝指定文件到指定目录下。
图16 拷贝文件指令
该病毒的创建目录指令(@0002),该命令对应于反编译的变量k.o,位于反编译文件的a.class中,通过localFile.mkdir()实现创建文件目录的功能。
图17 创建目录功能
该病毒的遍历磁盘文件指令(@0001),该命令对应于反编译的变量k.n,位于反编译文件的c.class文件中,遍历磁盘驱动器的所有文件和文件目录。
图18 遍历磁盘文件功能
该病毒的遍历系统/root/目录文件指令(@0002),该命令对应于反编译的变量k.m,位于反编译文件的e.class和f.class文件中,通过listRoots遍历系统/root/目录下的所有文件和目录。
图19 遍历系统root目录文件功能
该间谍软件由于其出众的跨平台能力使其具备较大的利用价值,通过针对主流的三大系统进行感染部署,利用该1.0版本的功能,基本能够控制远程主机完成一定程度的入侵任务,且该间谍软件实现了远程执行等命令,具备进一步部署攻击者武器的能力,感染主机可能会因此遭受更加巨大的损失。
如何检测系统是否已经被感染
Windows:查看启动注册表项(HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\)是否有名为mediamgrs的表项,若存在则证明主机已被感染。
Mac:在~/Library中是否有mediamgrs.jar文件,且检测~/Library/LaunchAgents/mediamgrs.plist文件是否存在。
Linux:在/usr/var/中检查是否有mediamgrs.jar文件,且检测~/.config/autostart/mediamgrs.desktop文件是否存在。
如何防治此类攻击
安装杀毒类软件,江民杀毒能够有效准确检测此类程序,防止用户遭受此类间谍程序入侵。
来源:freebuf.com 2018-02-01 14:03:50 by: 江民安全实验室
请登录后发表评论
注册