吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6903|回复: 37
收起左侧

[PC样本分析] Rapid勒索病毒变种分析

  [复制链接]
暴龙兽 发表于 2020-12-3 16:02
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 暴龙兽 于 2020-12-3 16:08 编辑

Rapid勒索病毒变种分析

运行过程:

  • 1 解密shellcode,跳转至shellcode
  • 2 shellcode解密勒索病毒主体,将主体各个section覆写原始进程的section.
  • 3 加密文件,显示勒索信息.
md5: 40C5113E35DD653CA1FC1524D51DA408
sha1: C43028B0A2287D7E64199500D48CE7C5F864DC54
FileVersion: 1.0.0.1
InternalName: sgahfghjfghj.exe
LegalCopyright: Copyright (C) 2017, masesrziro

解密shellcode

1 样本最初会调用一些无关API,混淆视听.

irrelevant

irrelevant

2 分配0x401b8 byte内存空间,修改相应的内存属性,解密shellcode至分配的内存空间中.

# 解密脚本
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import struct
from ctypes import *

# first 0x40 byte of shellcode, for example
shellcode = b"\x7c\x98\x39\x52\x45\x84\x52\x73\xA9\xEB\xDB\x07\x5F\xEC\x20\x1D" \
            b"\xD2\xE1\xE3x22\x02\x92\x36\xE8\x8C\x6C\x76\x2E\x11\x55\x42\xD3"\
            b"\x1F\x1A\x03\x94\xD8\xFF\x88\xD0\x90\x81\x72\xFB\xF0\x2F\x42\x14"\
            b"\x82\xC9\x8F\xBD\xD8\xE2\xDD\x3C\xBA\x62\xBB\x9B\x5D\x72\x09\xE5"

def decrypt(enc_one, enc_two):
    key0 = c_uint32(0xc6ef3720)
    # four parts of one group
    key1 = c_uint32(0x5aabd3f6)
    key2 = c_uint32(0xf770d8de)
    key3 = c_uint32(0x9ad9a390)
    key4 = c_uint32(0x5a454ee9)
    tmp_one = c_uint32(0)
    times = 0x20
    value_one = c_uint32(int.from_bytes(enc_one, byteorder='little'))
    value_two = c_uint32(int.from_bytes(enc_two, byteorder='little'))
    while times > 0:
        # 由于加法或程序有可能大于0x100000000, 所以需要与0xffffffff.
        value_two.value = value_two.value - ((key0.value + value_one.value)\
                    ^ ((key3.value + (value_one.value << 4) & 0xffffffff) & 0xffffffff)\
                    ^ (key4.value + (value_one.value >> 5) & 0xffffffff) & 0xffffffff)
        tmp_one.value = (key0.value + value_two.value)\
                    ^ ((key1.value + (value_two.value << 4) & 0xffffffff) & 0xffffffff)\
                    ^ ((key2.value + (value_two.value >> 5) & 0xffffffff) & 0xffffffff)
        key0.value += 0x61c88647
        value_one.value -= tmp_one.value
        times -= 1

    result = struct.pack('I', value_one.value)
    result += struct.pack('I', value_two.value)
    return result

if __name__ == "__main__":
    plain = bytes()
    for i in range(0, len(shellcode), 8):
        args_one = shellcode[i : i+4]
        args_two = shellcode[i+4 : i+8]
        plain += decrypt(args_one, args_two)

    print("decrypt over")

shellcode

shellcode

释放勒索病毒本体

  • 1 获取LoadLibraryA、GetProcAddress和ImageBase的地址

    GetProcAddress

    GetProcAddress

  • 2 获取一些必要函数地址

    HMODULE kernel32 = LoadLibraryA("kernel32.dll")
    GetProcAddress(kernel32, "VirtualAlloc");
    GetProcAddress(kernel32, "VirtualProtect");
    GetProcAddress(kernel32, "VirtualFree");
    GetProcAddress(kernel32, "GetVersionEx");
    GetProcAddress(kernel32, "TerminateProcess");

necessary_function

necessary_function

  • 3 分配内存,解密勒索病毒,将其各个节区覆写原进程的section
    #解密脚本
    #挺复杂的,有时间再补上吧
    #可以执行之后,将PE文件dump出来.

decrypt_ransomware

decrypt_ransomware

mapping_section

mapping_section

  • 4 填充导入表地址
    // 伪代码
    while ImportDescriptor.Name != 0:
    LoadLibrary(ImportDescriptor.Name);
    GetProcAddress;
    ImportDescriptor += 0x14

up

up

dwon

dwon

  • 5 判断是否需要重定位

    重定位基本思想:假设原加载地址为A,现加载地址为B,需要重定位的地址为C, 重定位后的地址为D = C - A + B, 最后将这个地址覆写原地址C.

  • 6 跳转至勒索病毒OEP
jmp eax

jmpoep

jmpoep

勒索病毒执行

由于已经有该部分的详细分析报告,此部分省略。报告链接

附件

附件中包含:原始样本和对应的IDB文件、提取的shellcode和对应的IDB 和 最终的勒索病毒.

virus.7z

1.53 MB, 下载次数: 86, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 11威望 +1 吾爱币 +28 热心值 +8 收起 理由
小小的石头13 + 1 + 1 我很赞同!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
asd_dsa + 1 我很赞同!
ALTERER + 1 我很赞同!
I_amagoodboy + 1 我很赞同!
linden007x + 1 用心讨论,共获提升!
passcard + 1 + 1 热心回复!
Maxzby + 1 + 1 谢谢@Thanks!
fengbolee + 1 + 1 用心讨论,共获提升!
uer + 1 + 1 我很赞同!
香蕉的小黄人 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 暴龙兽 发表于 2020-12-4 15:40
blaze_et 发表于 2020-12-4 09:29
好厉害啊,前几天我们一台服务器中了.Globeimposter-Alpha865qqz勒索病毒,在查询日志的时候发现黑客留下的 ...

应该没啥关系的,和Process Hack2程序安装后文件夹中的内容几乎一样,都是合法的程序。
blaze_et 发表于 2020-12-4 09:29
好厉害啊,前几天我们一台服务器中了.Globeimposter-Alpha865qqz勒索病毒,在查询日志的时候发现黑客留下的一个程序,好多DLL和一个SYS,还有两个EXE,不知道和勒索病毒有关没,然后在虚拟机里打开也看不出来什么。
 楼主| 暴龙兽 发表于 2020-12-3 16:11
099o2vk5bm92 发表于 2020-12-3 16:20
很厉害学习了
小伟网络 发表于 2020-12-3 16:55
路过,支持一下
ZRB2010 发表于 2020-12-3 17:19
大佬牛皮,在仔细看看先,能不能放解密文件出来啊?
 楼主| 暴龙兽 发表于 2020-12-3 17:25
ZRB2010 发表于 2020-12-3 17:19
大佬牛皮,在仔细看看先,能不能放解密文件出来啊?

附件里面有的
awt1230 发表于 2020-12-3 17:57
路过,支持一下
hs14266 发表于 2020-12-3 19:18
需要JAVA才能看懂吗
z695946656 发表于 2020-12-3 19:24
谢谢,好东西
npfjcg 发表于 2020-12-3 19:28
加密套加密,好奇怪的处理方式
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表