资源分享之无文件挖矿分析

资源分享,这篇文章是关于无文件挖矿分析,由吾爱破解论坛里面的大佬mai1zhi2分享出来的,我只是负责搬运一下~ 原贴子:https://www.52pojie.cn/thread-1346531-1-1.html

1 . 概述

该样本为无文件门罗币挖矿,传播行为通过ms17010和hash传递进行传播,相关脚本保存在WMI 对象中,挖矿程序通过开源的PowerSploit中Invoke-MemoryLoadLibrary进行调用,相关操作比较隐蔽,在分析时部分相关的服务器依然存活,若有错误的地方望大伙指出,谢谢。

2. 样本信息
样本名           1.ps1
样本大小         4239412 bytes
MD5            CDC34DDF78A16D4CF8A3B8E7CC361406
SHA1            01111C0FCC8CC75FF0EF84CF9C7C9628FB4EABCD
3. 实验环境

windows 7 x64 ip:192.168.202.139
4. 简要运行

设置powershell执行策略后,运行脚本。

5.具体分析

5.1简单去混淆
打开样本,样本经过混淆,开头有六个变量,先不管这六个变量:

看后面的字串,混淆思路比较简单,首先去除掉string中,w!~<mhl字符,然后逐个对字符toInt16,接着用.( $VeRbOSEpREfeReNcE.tOSTrInG()[1,3]+’X’-jOIN”)生成的iex调用;我们去掉iex,执行后即获得原本字符串:

5.2分析解混淆后的脚本:
ping两个域名update.7h4uk.cominfo.7h4uk.com和两个地址185.128.43.62, 192.74.245.97,判断是否能通信

两个域名DNS均失败:

Ip地址185.128.43.62失效

Ip地址192.74.245.97有回复:

再判断系统位数是否32位,否则下载64位的ps1脚本:

注册名为root\default:System_Anti_Virus_Core类,并把上面六个变量的数据保存到该类的属性中,其中版本ver=1.8

root\default:System_Anti_Virus_Core:

类中新增的六个属性:

如果保存属性失败,则执行以下操作:

设置标志位,运行cohernece.exe

$funs解码后为powershell脚本,其中内容文章后面有介绍。其中RunnDDOS 函数在$funs解密后的变量中,大意是如果$env:temp路径下没有cohernece.exe则请求http://$nic/logos.png、http://$nic/cohernece.txt,分别下载java-log-9527.logcohernece.exe,并执行cohernece.exe

Download_File函数具体实现如下:

若保存属性成功后,通过scan函数进行漏洞扫描,有ms17010漏洞的IP保存在$17属性,用eb7/eb8函数内网传播$sc变量解码出shellcode:

5.3安装WMI事件
安装WMI事件消费者,事件过滤名为Windows Event Filter,事件消费者名,Windows Events Consumer

事件过滤参数如下:

事件消费者参数如下:

创建WMI属性,当捕获到指定事件发生,则执行恶意代码EncodedScript

__EventFilter实例

CommandLineEventConsumer实例:

5.4其他设置查询其他团伙后门,并删除:

增加一条名为netbc的安全策略,组织主机139/445端口通信

增加名为WindowsLogTasksSystem Log Security Check任务计划,

设置从不休眠睡眠和电源使用方案:

查找进程名包含powershell或schtasks,该进程包含使用端口为80或14444的tcp网络连接,认为挖矿程序已经在执行中,则停止该进程

当没有触法到上面的catch分支则直接执行恶意代码脚本$script,否则解码并释放msvcp120.dll、msvcr120.dll,再反射调用mon挖矿程序:

5.5所执行的恶意代码EncodedScript分析:先判断服务器是否在线和延时时间:

访问‘update.7h4uk.com/ver.txt判断本地版本与服务端版本是否一致:

跟接着是一系列准备操作,获取开机时间,解密并执行$funs内容,判断$dirpath路径下是否有msvcr120.dll、msvcp120.dll

查找进程名包含powershell,该进程包含使用端口为80或14444的tcp网络连接,认为挖矿程序已经在执行中,不再继续执行之后的代码

运行DDOS并结束包含字符“System_Anti_Virus_Core“的进程

KillBot函数如下:

检查每个进程是否存在3333、5555、7777端口tcp链接,有则结束该进程:

获取WMI中的属性$mon、$funs,其中$mon解码后为门罗币的挖矿程序:

矿池和钱包如下:

解码$funs作为命令,$mon作为参数传入执行,使得可以Powershell进程中注入执行矿机

其中$RemoteScriptBlock就是反射调用的核心脚本,观察其主要的调用过程,发现主要调用了Invoke-MemoryLoadLibrary函数,其内容与https://github.com/PowerShellMafia/PowerSploit/blob/d943001a7defb5e0d1657085a77a0e78609be58f/CodeExecution/Invoke-ReflectivePEInjection.ps1一致:

继续跟进Invoke-MemoryLoadLibrary函数,该函数里使用CreateThread创建新线程调用挖矿进程,线程回调函数地址存放在$ExeMainPtr变量中:

接着解码得到$mimi属性的内容,其为mimikatz:

通过Get-creds函数反射调用mimikatz:

Get-cred函数详情如下:

其中$RemoteScriptBlock就是反射调用的核心脚本,跟进脚本看其实现,取得“powershell_reflective_mimikatz”函数地址转为委托并调用

下面看脚本中得传播行为,先获得分配到电脑的所有IP并解码出传播用的shellcode:

判断开机时间是否小于1.5小时,少于则不攻击;传播过程如下,先调用Test-Port 探测ip地址是否开启445端口,再调用test-ip函数实现WMIExec攻击,需要mimikatz提供$NTLM,再通过scan函数进行漏洞扫描,有ms17010漏洞的IP保存在$17,扫描完后条用eb7\eb8攻击,$sc为解密的shellcode

Test-Port函数实现如下:

test-ip函数主要调用如下,其中调用invoke-wmiexec函数用于hash传递攻击,该函数在$fun解码后的变量中

invoke-wmiexec函数详情如下,其内容与https://github.com/Kevin-Robertson/Invoke-TheHash/blob/master/Invoke-WMIExec.ps1一致:

最后把有密码的ip和有漏洞的ip重新写入属性

6清理:

删除名为netbc的本地策略:

删除WMI项:

完,谢谢大家观看。

 

这篇文章不适合小白~

还望各位看官,大佬多多关注小站。小弟会努力分享优质软件资源。

大家可以关注一下小弟的公众号:软件测测,

二维码放在下面了,感谢各位大佬!!

 

下载权限

查看
  • 免费下载
    评论并刷新后下载
    登录后下载

  • {{attr.name}}:
您当前的等级为
登陆后免费下载登录 小黑屋反思中,不准下载! 请先登陆登录 评论后刷新页面下载评论 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您有每天免费下载所有资源次的特权,今日剩余 已取得下载权限

人已赞赏
教程分享

使用Thor解锁VIP功能,免广告,免付费(前篇)

2021-1-5 16:40:53

资源分享

【每日话题】如果阿里和腾讯必被拆分!你觉得谁会先倒下?

2021-1-17 17:02:39

⚠️
App测测上的部份代码及教程来源于互联网,仅供网友学习交流,未经作者或上传书面授权,请勿作他用。
若您的权利被侵害,请联系站长 QQ: 43945001 或 点击右侧 私信:管理员反馈,我们将尽快处理。
个人中心
有新私信 私信列表
搜索