资讯专栏INFORMATION COLUMN

【2018-10-31】经典远控马完整分析

imtianx / 3462人阅读

摘要:样本下载样本原文件链接我的分析过程包括提取的文件以及等链接提示请勿实体机分析样本信息文件名称样本一,解压后有两个快捷方式显示隐藏文件后,总共有个文件依次查看这几个文件,就是一张空白图,是自写的一个动态库,中包含一堆数据,中内容是创建目录

样本下载

样本原文件 链接
我的分析过程包括提取的文件以及idb等 链接
提示:请勿实体机分析

样本信息

文件名称:样本一.zip,解压后有两个快捷方式

显示隐藏文件后,总共有6个文件

依次查看这几个文件,bbs.bmp就是一张空白图,nvwsrds.dll是自写的一个动态库,temp中包含一堆数据,png.bat中内容是

(1). mkdir "%programfiles%"-创建目录
(2). rundll32.exe nvwsrds.dll,avmode -fn wmmmnbjhgigh-使用nvwsrds.dll中的avmode函数,并且传入参数wmmmnbjhgigh

IDA加载nvwsrd.dll,定位到avmode函数,静态分析不友好,因为程序包含大量花指令,并且字符串时动态解密的

释放文件

nvwimg.dll
创建目录 C:UserspyAppDataRoamingavmode,然后创建文件
C:UserspyAppDataRoamingavmode vwimg.dll,最后将nvwseds.dll中的内容拷贝到nvwimg.dll中

temp
创建文件 C:UserspyAppDataRoamingavmode emp,将原目录下的Temp文件内容复制到C:UserspyAppDataRoamingavmode emp

decrypt
当拷贝nvwimg.dll函数之后程序会加载C:....avmode vwimg.dll,并且退出当前的
nvwsrds.dll,进入nvwimg.dll之后程序会运行到解密temp的区域,首先读取temp文件到内存,然后将数据以异或再相加的方式解密,解密之后程序直接跳转到解密区域继续执行

avmode.inf
之后程序调用解密后PE程序的Run函数,在Run函数中,创建文件
C:UserspyAppDataRoamingavmodeavmode.inf,并且写入数据

具体写入的数据为:

[Version]
Signature="$CHICAGO$"
Provider=t@t.com, 2002
[DefaultInstall]
; DelReg=run_DelReg
AddReg=run_AddReg
[run_DelReg]
[run_AddReg]
hkcu,"SoftwareMicrosoftWindowsCurrentVersionRun","Update",,"rundll32.exe ""C:UserspyAppDataRoamingavmodeBitavmode.dll"",avmode"
[Strings]
网络特征

获取IP地址(1)
使用InternetOpenA初始化WinINet,InternetOpenUrlA连接到ip查询网站ip38.com

获取IP地址(2)
使用InternetOpenUrlA访问http://t.qq.com/xiaokanrenshe...,然后InternetReadFile读取返回的页面代码,strtok以”IP=”为分割字符分割源码字符串,从而得到IP地址

建立套接字并通信
和上面得到的IP地址建立套接字连接与之通信,并建立线程后台接收数据

注册表变化

HKCUSoftwareMicrosoftWindowsCurrentVersionRun
快捷方式2会调用LaunchINFSectionEx函数读取avmode.inf添加注册表键值

还有很多写注册表的操作,但是需要服务端发送命令再执行相应的操作,详见功能描述

其它行为

创建互斥体
使用CreateMutex创建互斥体

多次调用ShellExcute
在nvwsrds.dll中调用两次ShellExcute函数来运行rundll32.exe,第一次传入打开图片的函数来打开bbs.bmp,具体参数为:”rundll32.exe shimgvw.dll,ImageView_Fullscreen c:userspydesktop图片bs.bmp”,第二次运行加载C盘nvwimg.dll中的avmode函数

在Run函数中调用一次ShellExcute来打开pdf.bmp

开启线程对抗杀软
枚举系统进程,通过字符串比较,判断是否含有杀毒进程

开启线程发送本机系统信息
在线程中会获取主机名,操作系统版本信息,套接字信息,当前系统信息,磁盘类型信息,磁盘大小容量,本地时间等等,某些信息或通过查询注册表项获得,然后发送给服务端

远控功能描述

本地程序会根据服务端传来的数据,执行相应的操作

获取系统信息
使用GetVolumeInformation,GetLogicalDriveStrings,GetDiskFreeSpaceEx,GetDriveTypeA等API获取磁盘相关信息

截屏
使用GetDesktopWindow,GetDC获取设备上下文,GetSystemMetrics获取主屏宽高,CreateCompatibleDC,CreateDIBSection,SelectObject创建位图,SetRect,BitBlt重写位图实现截屏功能

开启摄像头
创建线程并使用capGetDriverDescription,capCreateCaptureWindow获取摄像头信息,之后使用IsWindow,SendMessage实现摄像头监控,使用ICSendMessage,
ICSeqCompressFrameStart压缩捕获的视频数据,后续发送给服务端

监控键盘输入
先写了一个完整的窗口程序包括注册窗口类,创建窗口,刷新窗口以及窗口回调函数,在窗口回调函数中,使用GetForegroundWindow监控最前端的窗口并获取窗口输入框文本,使用GetKeyState获取按键状态,最后将获取的输入数据写入C:Windowswininfo.dat

之后会有个线程读取wininfo.dat并发送给服务端

录音
建立线程,在线程中使用waveInGetNumDevs,waveInPrepareHeader,waveInOpen,
waveInStart打开录音设备,录音后保存在文件中并发送到服务端

远程调用cmd
使用CreatePipe创建匿名管道,然后创建cmd.exe的进程,用管道完成进程间的通信(因为远控端只能控制这个进程需要管道与本进程外的进程通信)

远程关机
设置shutdown的权限后,调用ExitWindowsEx实现远程关机

下载程序并执行
调用火狐或者IE之类的浏览器,打开特定的网页(网址由参数给定),然后InternetOpenUrlA下载,InternetReadFile读取下载数据,使用WriteFile写入文件,最后CreateProcess创建进程运行下载文件

清空系统日志
使用OpenEventLogA,ClearEventLogA清理系统日志

开启IE浏览器
打开注册表” HKEY_CLASSES_ROOTApplicationsiexplore.exeshellopencommand”获取value,即得到IE的完整路径,然后CreateProcess创建进程运行

获取所有进程ID
CreateToolhelp32Snapshot创建进程快照,Process32First,Process32Next遍历进程然后获取进程信息包括进程名进程ID发送给服务端

获取输入框文字
使用EnumWindows配合WindowText枚举所有窗口并获得编辑框文字,然后直接发送给服务端

开启服务
使用OpenSCManagerA,OpenServiceA,StartServiceA以及CloseServiceHandle开启任意服务

写注册表
写注册表:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTermService
Value:Start=2
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon
Value:Keeprasconnect=1
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server
Value:Fdenytsconnect=0
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminalServerLicensing Core
Value:Enableconcurre=1
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTermServiceParameters
Value:Servicedll=%SystemRoot%system32termsrvhack.dll

弹窗
使用MessageBox弹窗

控制执行Userinit.exe
枚举系统进程,当不存在explorer.exe是,调用cmd执行Userinit.exe

远程关闭资源管理器
枚举系统进程关闭explorer.exe资源管理器

总结

该样本是一个远控木马,两个快捷方式是为了释放文件到C盘并且添加注册表启动,核心的木马功能代码隐藏得很深,需要加载nvwsrds.dll释放运行nvwimg.dll,然后在nvwimg.dll中加载temp数据解密到内存然后跳转到解密后的代码区域。在核心木马代码中首先非常隐蔽的获取了远控端的IP地址然后与之建立套接字,再开启线程接收远控端发来的指令从而执行对应的操作,最后还开线程清理系统常见的杀毒软件进程从而实现长久驻留!

该木马实现的功能有:获取本机系统信息(包括磁盘类型,磁盘容量,文件属性,系统版本,本地时间等),截取当前屏幕,开启摄像头,监控键盘输入,录音,遍历本地可执行文件的所有模块(module),远程调用cmd,远程关机,远程下载任意文件到本机,清空系统日志,打开IE浏览器,写注册表关键位置,创建可执行文件并运行,发送本机所有进程名及进程ID,枚举所有窗口程序的输入框获取输入文字,开启任意服务,获取特定进程的空闲时间,弹窗,远程执行Userinit.exe,远程关闭资源管理器explorer.exe

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11411.html

相关文章

  • 【openQPA】教你DIY进程流量捕获工具

    摘要:开源项目起因最近做病毒分析的时候遇到远控马,需要记录连接的远程地址用火绒剑或者可以看到一部分,但是我想要更全面的信息,于是捣鼓了和。使用比较简单,但是只能看到的流量,虽然能捕获所有流量,但没法过滤特定进程的包,而且过滤规则对我来说太复杂了。 开源项目QPA 起因最近做病毒分析的时候遇到远控马,需要记录连接的远程地址!用火绒剑或者ProcessMonitr可以看到一部分,但是我想要更全面...

    SimonMa 评论0 收藏0
  • AVPass技术分析:银行劫持类病毒鼻祖BankBot再度来袭,如何绕过谷歌play的杀毒引擎?

    摘要:经钱盾反诈实验室研究发现,该批恶意应用属于新型。可信应用商店绕过杀毒引擎,这样病毒自然能轻松入侵用户手机。安全建议建议用户安装钱盾等手机安全软件,定期进行病毒扫描。 背景近期,一批伪装成flashlight、vides和game的应用,发布在google play官方应用商店。经钱盾反诈实验室研究发现,该批恶意应用属于新型BankBot。Bankbot家族算得上是银行劫持类病毒鼻祖,在...

    William_Sang 评论0 收藏0
  • js 日期对象 31 号 setMonth 的锅

    摘要:微信公众号分享前端后端开发等相关的技术文章,热点资源,全栈程序员的成长之路。福利详情请点击免费资源分享 showImg(https://segmentfault.com/img/remote/1460000016873908); 前言 需求:获取当前日期的前一个月份 当月有 31 天时,JS 日期对象 setMonth 问题 1. 一般做法 当前日期如果不是 31 号, 是没问题的,是...

    jlanglang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<