• GhostMiner:无文件挖矿的新姿势——也是使用了ps脚本


    GhostMiner:无文件挖矿的新姿势 

    发布时间:2018-04-10 12:00:46

    译文声明

    本文是翻译文章,文章原作者,文章来源:blog.minerva-labs.com
    原文地址:https://blog.minerva-labs.com/ghostminer-cryptomining-malware-goes-fileless


    译文仅供参考,具体内容表达以及含义原文为准

    一.写在前面的话

    近年来,越来越多的犯罪分子正在利用恶意软件来谋求暴利。比如2017年底爆发的WaterMiner恶意挖矿软件,到了2018年,犯罪分子更是升级了技术并使用一些更加先进的工具包来逃避各种检测。虽然安全厂商对此很快做出反应,然而,网络犯罪分子仍然领先于防御者。比如这一次攻击者使用了一项无文件技术来逃避检测,本文将介绍Minerva团队如何剖析这次GhostMiner攻击,并深入研究了恶意挖矿软件是如何利用先进的无文件技术来挖掘Monero币并在全球范围内悄悄地传播,而且还意外发现这些恶意软件之间些不为人知的秘密,研究人员还通过分析恶意软件的脚本来删除其他恶意软件。是不是很有意思?我们来看看怎么做到的吧!

    二.解剖GhostMiner

    1.无文件框架的使用

    GhostMiner组件以一个恶意Windows可执行文件为核心。为了防止被杀软发现,可执行文件嵌套于PowerShell框架——Out-CompressedDllInvoke-ReflectivePEInjection之中。并采用无文件技术来隐藏恶意程序。


    其中每个组件都是从不同的PowerShell脚本启动的:
    ps1:负责传染新的受害者,
    ps1(或x64机器上的WMI64.ps1):挖掘Monero币

    这种方法可以非常有效的绕过安全工具的检测,我们使用杀软引擎扫描,发现许多安全软件并没有报毒,下面是扫描报告


    测试结果可以和这个可执行文件做对比,他们是同一个程序,但是没有使用无文件技术,扫描结果显而易见———41个安全扫描器都检测到恶意代码

    2.传播GhostMiner

    GhostMiner的传播是通过Neutrino.ps1部分来实现,它会不断寻找并攻击运行以下应用程序的服务器:
    1.Oracle的WebLogic服务器(使用CVE-2017-10271漏洞,FireEye 已报告类似案例)
    2.MSSQL
    3.phpMyAdmin

    虽然GhostMiner可以针对多个潜在的应用程序,但进过分析我们发现它只攻击WebLogic服务器。我们还发现恶意软件通过随机扫描IP并与IP创建大量TCP连接的方式,找到可攻击的目标。


    恶意软件为了避免被网络安全工具检测到,在攻击部分还通过Base64编码的HTTP请求来与其C2服务器通信。其中通信使用了一个简单的握手协议,然后客户端向C2请求执行各种任务,如感染其他服务器或截屏。一旦任务完成,客户端将向C2报告并请求另一项任务:

    我们可以看看下面的例子,出于保密原因,原始编码的消息我们经过一些特殊处。但不影响我们分析,其中这个请求(红色部分)包含了被感染服务器的标识符和新任务请求,响应(蓝色部分)命令恶意软件随机寻找可利用的WebLogic服务器:

    HTTP请求和响应示例,演示如何蔓延的威胁,例如,扫描任务、利用WebLogic服务器
    请特别注意请求头Referer是硬编码的:其中qq.com是最受欢迎的中文网站。这与我们发现的其他指标一样,表明攻击者费尽心思构造恶意的HTTP请求来隐藏数据。

    三.如何利用GhostMiner挖矿

    上面说过,挖矿组件本身利用框架直接从内存中启动。它是基于开源XMRig项目的微小定制版本,你可以在抓包的流量中发现这一点。


    有趣的是,我们在分析这个软件时发现这个程序已经悄悄运行了大约三周时间:


    截至本文发布,这个XMR钱包已经累计1.03XMR,相当于200美元。可惜的是,由于Monero的匿名功能,所以我们无法检测到钱包地址的所有者。

    四.‘矿工’之间的明争暗斗

    在恶意软件行业,恶意挖矿软件之间的竞争远比我们想像的激烈,毕竟只有消灭对手才能更好利用资源,在研究这些样本中,我们也发现许多以前没有报道的新技术:
    1.使用PowerShell的“Stop-Process -force”命令杀死正在运行的‘矿工’。
    2.停止并删除黑名单中‘矿工’名称的exe进程。
    3.停止运行可疑的exe进程。
    4.通过命令行参数停止和删除‘矿工’进程。
    5.通过查看已建立的TCP连接列表来停止并删除‘矿工’(查找与‘矿工’相关的端口)

    过去,Xavier Mertens(@xme)等恶意软件研究人员建议,维护者可以使用与我们在IOC列表(下面提供的)中“competitors killer”相似的脚本来检测系统上是否存在恶意‘矿工’。但现在我们有个更好的建议,使用“killer script”作为辅助工具。参考Minerva的研究团队的GitHub中他们提供的脚本。编写属于自己的PowerShell脚本来移除恶意的‘矿工’是一个更好的方法。其中脚本可以根据‘矿工’的某些特征或可疑的TCP连接,来结束进程,任务或服务。但也要注意的是,MinerKiller只是按照某些特征来判断,所以它可能会停止甚至删除一些重要的进程!

    五.后记

    有兴趣了解更多关于Minerva事情吗?我们将在RSA 2018的Moscone South的2329号展位演示,或者在4月15日旧金山BSides听到我们,我们会和联合Omri Moyal创始人谈论Coinminers的兴起。申请地址

    IOCs

    C2IP地址:
    123[.]59[.]68[.]172
    散列(SHA-256):
    Neutrino.ps1:
    4b9ce06c6dc82947e888e919c3b8108886f70e5d80a3b601cc6eb3752a1069a1
    9a326afeeb2ba80de356992ec72beeab28e4c11966b28a16356b43a397d132e8
    WMI.ps1:
    40a507a88ba03b9da3de235c9c0afdfcf7a0473c8704cbb26e16b1b782becd4d
    WMI64.ps1:
    8a2bdea733ef3482e8d8f335e6a4e75c690e599a218a392ebac6fcb7c8709b52
    Associated Monero address:
    43ZSpXdMerQGerimDrUviDN6qP3vkwnkZY1vvzTV22AbLW1oCCBDstNjXqrT3anyZ22j7DEE74GkbVcQFyH2nNiC3fchGfc
    “Killer” script:
    服务名称
    xWinWpdSrv
    SVSHost
    Microsoft Telemetry
    lsass
    Microsoft
    system
    Oracleupdate
    CLR
    sysmgt
    gm
    WmdnPnSN
    Sougoudl
    Nationaaal
    Natimmonal
    Nationaloll
    任务名称
    Mysa
    Mysa1
    Mysa2
    Mysa3
    ok
    Oracle Java
    Oracle Java Update
    Microsoft Telemetry
    Spooler SubSystem Service
    Oracle Products Reporter
    Update service for products
    gm
    ngm
    进程名称
    msinfo
    xmrig
    minerd
    MinerGate
    Carbon
    yamm1
    upgeade
    auto-upgeade
    svshost
    SystemIIS
    SystemIISSec
    WindowsUpdater
    WindowsDefender
    update
    carss
    service
    csrsc
    cara
    javaupd
    gxdrv
    lsmosee
    ‘矿工’相关服务器侧TCP端口
    1111
    2222
    3333
    4444
    5555
    6666
    7777
    8888
    9999
    14433
    14444
    45560
    65333
    55335
    ’矿工‘有关命令行参数
    cryptonight
    stratum+
    —donate-level
    —max-cpu-usage
    -p x
    pool.electroneum.hashvault
  • 相关阅读:
    Handling Errors and Exceptions
    Advanced Features of Delphi DLLs
    How to put a relative path for a DLL statically loaded?
    Delphi DLL制作和加载 Static, Dynamic, Delayed 以及 Shared-Memory Manager
    The useful App Paths registry key : HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths
    DLL Dynamic-Link Library Search Order
    Can a windows dll retrieve its own filename?
    Restrict form resize -- Delphi
    Programmer in Google Code
    How to open a web site with the default web browser in a NEW window
  • 原文地址:https://www.cnblogs.com/bonelee/p/15928526.html
Copyright © 2020-2023  润新知