通过逆向分析防御挖矿病毒「建议收藏」

通过逆向分析防御挖矿病毒「建议收藏」转载于:https://www.freebuf.com/articles/network/163233.html前言:因为这次是从应急响应引出的,所以我将侧重点放在分析病毒本身的存储方式和传播途径,靠逆向分析出防护策略用于帮助后续的应急响应/系统加固/运维。情况概述:最近接到用户的应急响应请求,用户的描述是服务器从前2天开始不定时重启。抵达现场初看没发现什么端倪,杀毒软件没有报毒,…

大家好,又见面了,我是你们的朋友全栈君。

转载于:https://www.freebuf.com/articles/network/163233.html

前言:

因为这次是从应急响应引出的,所以我将侧重点放在分析病毒本身的存储方式和传播途径,靠逆向分析出防护策略用于帮助后续的应急响应/系统加固/运维。

情况概述:

最近接到用户的应急响应请求,用户的描述是服务器从前2天开始不定时重启。抵达现场初看没发现什么端倪,杀毒软件没有报毒,CPU占用率维持在60%。因为杀毒软件没有报毒,同时用户的业务还正常,所以一开始没往病毒上想,认为是风扇损坏/机房环境造成CPU温度过高导致重启。经过抓包分析后发现机器在访问很多公网IP的445端口,推测是有问题的。登录这台机器后开始详细排查进程,任务管理器上先查看CPU占用率最高的一个进程是Powershell,且命令行参数超长。推测有问题。

先期处理:

首先通过工具将超长的命令行参数导出。

wmic process where caption="powershell.exe" get commandline

导出内容

导出的命令行参数

推测JABzAHQAaQBtAGUAPQBbAEUAbgB2AGkAc[省略…]是Base64,于是解析得到

启动脚本

将其中的关键字放到搜索引擎里搜索,发现下面4篇文章

主要看下面3篇文章清除病毒

https://community.spiceworks.com/topic/2080003-malicious-powershell-script-causing-100-cpu-load-solved

 

https://forum.eset.com/topic/14143-powershell-script-100-cpu-load-malicious-attack/

 

https://forum.eset.com/topic/13651-powershell-script-possible-malicious-attack/

ESET的帖子中有提到下面金山文章的链接,所以他们应该是同一个样本。

金山毒霸安全实验室写的病毒分析

http://www.freebuf.com/column/149286.html

通过文章得知,病毒无落地文件,持久化在WMI属性中,启动靠WMI事件侦听器。

看帖子中的排查流程照葫芦画瓢,下载WMILister.vbs后按帖子中命令行执行,导出DumpedScrpts.txt

清除步骤

DumpedScrpts

发现原帖中是”SCM Event Log Filter”,和我这边的不一样。没法照抄帖子中的清除命令,摸索以后将命令修改成这样,将清除命令修改成如下的样子。

命令执行结果

分析:

先期处理就到此为止了。因为杀毒软件没有报警,所以我后来对这个样本做了分析。结构上还是和金山文章中差不多。

着重说下和之前金山文章中不同点。

1、挖矿程序清除了DOS MZ头,增加了-B参数用于在后台执行。

2、WMI远程执行已修复。

test-ip

3、远程执行时不再释放y1.bat,现在已经直接修改为命令。更加隐蔽。

WMI执行的命令

4、修改了WMI事件名称。

SCM…变成DSM…

 

对于挖矿程序几个特征的分析

1、挖矿程序编译日期为2017年10月1日,时间晚于金山文章,推测是之前的改进版。

编译日期

2、挖矿程序的参数列表。后台执行、矿池地址

参数列表

3、–max-cpu-usage参数设定在75。

--max-cpu-usage参数

不知道之前的版本有没有做这个限制,看了xmrig的代码,这个参数只调整运行的线程数,就是说在大于等于4核的机器上只运行3个线程,对于低负载服务器不会影响业务。低负载的服务器在企业用户中有很多,例如我这次的用户之前一直以为不是中毒了(杀毒软件没有报),如果不是因为MS17-010导致服务器不断重启,可能到现在也不会发现中毒。

https://github.com/xmrig/xmrig/issues/132

github

https://github.com/xmrig/xmrig/blob/master/src/Cpu.cpp

14.PNG

 

病毒在启动后会使用2种逻辑来寻找被攻击的机器。

1、同网段内网机器+使用netstat -anop tcp搜索和本机建立链接的机器。使用WMI和MS17-010

寻找攻击机器内网

2、如果能ping通9.9.9.9,随机攻击某些地址。使用MS17-010

寻找攻击机器外网

 

通过WMI远程执行需要目标机器的登陆凭据,在病毒中查找获取凭据的代码。通过mimikaz获取明文密码和NTLM Hash。

获取凭据

因为很多管理员都习惯直接使用administrator用户,并将服务器设置成一个密码,所以我针对执行途径做了下测试,发现在全新安装的Windows Server 2008 R2服务器系统上,防火器打开状态是允许Administrator用户远程调用WMI。所以在服务器区的传播是很广的。

5.PNG

防御措施:

MS17-010漏洞

1、可以打补丁的机器安装补丁。

2、不能安装的机器直接禁用SMBv1协议。(禁用后XP/2003无法使用共享,Win7开始使用SMBv2)

WMI远程调用

1、组件服务控制台中禁用administrators的远程权限

杜绝minikaz获取Windows明文密码(Windows 8.1(含)以上默认即无法获取)

1、  安装KB2871997补丁,其中微软将一些新系统的安全特性向后移植到了Win7和2008R2中。

2、  修改注册表,将HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest下UseLogonCredential设置为0,禁止保存明文密码在内存中。

 

后记:

 

如果这次杀毒软件能查杀,可能也不会有这篇文章了。客户系统中本身安装了金山毒霸企业版TimeOn,一线工程师也尝试过其它杀毒软件,360杀毒和火绒,但都没有报毒。我自己在虚拟机中测试时,直接在Powershell内执行启动挖矿脚本,火绒才弹出“隐蔽执行”的提示框。将病毒上传至VirusTotal也能看到大部分杀毒软件无法查杀。看来这类无落地文件病毒的查杀确实是个难点。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134631.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu 搭建opengrok 流程

    Ubuntu 搭建opengrok 流程opengrok平台搭建流程软件下载链接:https://pan.baidu.com/s/1kCeXNlj2l3FujyMza3rM0w提取码:iniy搭建前的准备电脑系统电脑系统推荐使用ubuntu16,这版系统较为稳定。细节未更新python环境推荐使用python2.7及以上版本,这一版本相对稳定,python安装细节未更新java环境推荐使用JDK1.8及以上版本,具体安装细节未更新通过java-version和javac-version可以查看版本。Ope

    2022年5月27日
    80
  • react mock_vue mock数据

    react mock_vue mock数据前言在开发项目时,前端需要和后端对接数据,但有时后端并没有写好数据,前端还需要继续往下开发,这时候就需要mock数据了。如何mock数据?如下代码,在input获得焦点时调用getList()方法。constmapDispathToProps=(dispatch)=>{return{handleInputFocus(){…

    2025年7月3日
    3
  • 使用zlib/gzip压缩和解压缩?(Flash和GALGAME使用的压缩格式)[通俗易懂]

    使用zlib/gzip压缩和解压缩?(Flash和GALGAME使用的压缩格式)[通俗易懂]c#下怎么使用zlib? zlib是开源的压缩格式 源代码和DLL可以去http://www.zlib.net/  bzip2是建立在libbzip2 激活成功教程GALGAME时候很多人发现许多游戏系统都采用这种压缩格式 甚至Flash格式版本6以后,增加了可压缩选项,用的是ZLib压缩(wxd:jrj.com.cn金融界flash数据就是这样,减少传输量) 我今天看过金山词霸2009毫无疑问的使用ZLib和bzip2 那么编写解压缩或者压缩程序显得很重要 对于C++程序员来说,很简单,把DLL导入

    2022年7月16日
    16
  • jQuery each方法中结束本次循环和退出循环

    jQuery each方法中结束本次循环和退出循环

    2022年3月13日
    44
  • 彻底禁止win10更新的锅「建议收藏」

    彻底禁止win10更新的锅「建议收藏」背景:tonight,和往常一样,就在打开vmware的一瞬间……突然弹出下面这个令人懵逼致死的图:百度搜索一通,众说纷纭,发现竟然还是win10系统的锅。下面开始解决问题,直接上图:这1903版本不支持vmware14,需要更新vm为15版本,商业套路,NM真够了,果断拒绝,还是另想办法吧;想着把1903更新卸载了,但是没有卵用,重启之后,出现下图,反应老半天…

    2022年6月17日
    23
  • 敏捷软件开发 原则_敏捷方法论

    敏捷软件开发 原则_敏捷方法论《敏捷软件开发》读书分享由于书是由英文书籍翻译,读起来会难免拗口,本次分享是由《敏捷软件开发》结合网上相关资料总结而成。传统的瀑布式开发瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致…

    2025年6月28日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号