一款勒索软件的分析-未完待续

文件信息 SHA1:1d03f92b8f824bb065552f0d9e6ddddb

NSIS脚本分析

使用7zip解压,可以看到其中一个文件是乱码,可能是加密的shellcode。

图片说明

下图是nsis的脚本,前面有很多都是无用的代码,一般都是首先看.oninit回调函数。

我们可以看到它通过wsprintf来拼接字符串,使用nsis的system.dll来调用外部dll。 将加密的shellcode映射到内存,

图片说明

另外system::call相关语法可以在http://nsis.sourceforge.net/Docs/System/System.html 找到。

最终通过

    System::Call "$5p r13, i 66576)

进入shellcode执行代码,shellcode入口点地址是r12,即$R1 + 73991。R1等于r11,也就是调用readFile函数时返回得文件buffer.

r13为加密PE文件,大小为66576,地址为0x83c0e69($R1 + 3689);

加密文件分析

解密shellcode

载入OD,直接在System.dll!Int640p函数下断,

图片说明

文件被映射到0x83c0000,因此shellcode的入口点在0x83d2107。

来到0x83d2107处,

图片说明

查找内存值为0xDEADBEEF的内存地址,0xDEADBEEF为加密标志,表示后面的内容是加密的。

        mov ecx,0xDEADBEEF
        call 083D216C  
        mov dword ptr ss:[esp],eax ;esp=0x83d2118
        mov ebx,dword ptr ss:[esp]
        inc ebx
        cmp dword ptr ds:[ebx],ecx
        jnz X083D211E

0xDEADBEEF后面有2个比较重要的数据。

struct stc_encode
{
    DWORD flag; //0xDEDBEEF
    DWORD codeSize;
    DWORD originCode_head; //未加密代码头四个字节
    char  encode_code[codeSize];
}

从下面这段汇编代码可以看出,它没有把xor key硬编码到程序中,而是通过暴破的方式获取xor key。这个样本最后查找到的xor key为

0x6b891276

        mov edx,dword ptr ss:[esp+0xC] ;[esp+0xc] 异或后的函数头部
        mov edx,dword ptr ds:[edx]
        xor edx,ebx
        cmp edx,dword ptr ss:[esp+0x8] ;[esp+0x8] 原始函数头部
        je X083D214B
        inc ebx       ;从0开始递增xor key,
        jmp X083D213A

找到key,随后就是解密异或后的代码。

        mov dword ptr ss:[esp+0x10],ebx;xor key
        nop
        nop
        nop
        mov edx,dword ptr ss:[esp+0xC]
        xor ecx,ecx
        xor dword ptr ds:[edx+ecx],ebx
        cmp ecx,dword ptr ss:[esp+0x4]
        jge X083D2166
        add ecx,0x4
        jmp X083D2158
        mov esp,ebp
        pop ebp
        pop ebx
        jmp edx ;跳到解密后的函数执行

这里jmp edx跳转到解密后的shellcode执行。继续以同样的方式解密3次,且每次的xor key都不一样。

解密PE文件

图片说明

通过 find_api_address找到所需要的函数并拷贝到堆栈。调用这些函数时使用 call [ebp-xx]调用。

图片说明

decrypt_pe有三个参数:被加密PE文件buffer、文件大小和密钥。该函数通过使用Crypt API来解密,返回解密后的PE文件地址。

图片说明

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. NSIS脚本分析
  2. 2. 加密文件分析
    1. 2.1. 解密shellcode
    2. 2.2. 解密PE文件
,