<li id="fw3su"></li>
  • <li id="fw3su"></li>
  • <div id="fw3su"><tr id="fw3su"></tr></div>
    <dl id="fw3su"></dl>
  • <div id="fw3su"><tr id="fw3su"></tr></div>
  • <sup id="fw3su"></sup>
    <progress id="fw3su"></progress><div id="fw3su"><tr id="fw3su"></tr></div><input id="fw3su"><ins id="fw3su"></ins></input>

    国外安全研究者爆料中国黑客组织针对越南政府的APT攻击样本

    近日,法国安全研究者兼BotConf和FastIR公司创始人Sebastien Larinier, 针对RTF文档相关的CVE-2017–11882漏洞利用专门制作了一条YARA规则,来捕获攻击线索。 经过海量数据比对,他发现了一个用来执行APT攻击的恶意RTF文档样本,其中的内容和越南岘港市海洲郡的建设项目相关,文档标题为《Ch??ng trình ho?t ??ng cnit 2018》。据Sebastien Larinier声称,按照该恶意文档表现出来的各项行为指标和特征值,他怀疑该APT攻击文档的幕后使用者为中国的黑客组织1937CN。

    本文中, Sebastien Larinier 着重描述了该恶意文档的感染攻击机制、网络攻击架构以及攻击者采用?#21335;?#20851;TTPs技术。

    感染攻击链

    Joe sandbox 在线沙盒分析网站对该文档?#21335;?#32454;感染行为给出了很好的描述:

    该恶意RTF文档利用漏洞会向目标操作系统中写入以下两个文件:

    一个名为 RasTls.dll 的dll文件

    一个名为dascgosrky.exe的可执行文件

    RTF文档分析

    在Python的RTF分析工具rtfobj帮助下,可以发现恶意RTF文档中的三个ole对象:一个类名为package的ole对象,以及另两个不良结构的ole对象。

    在名为package的ole对象中,存在一个8.t文件的加载路径:

    这种技术看似是用来执行 .sct 格式文件,以向网络下载一个可执行程序,植入到目标操作系统中。 McAfee安全实验?#20197;?#29992; .sct文件为样本对这种技术进行过分析。 这种技术由于简单?#34892;В?#24182;且支持Office相关文档,屡次被很多攻击者进行了在野利用。这以?#19979;?#24452;中,可以看到,RTF文档会从系统%TMP% 目录中加载一个 8.t 文件。经分析,8.t 文件为一个?#29992;?#25991;件:

    经检查,另两个不良结构的ole对象为涉及“Equation Native”流的ole公式对象,其中可以看到CVE-2017–11882漏洞利用的影子:

    ole对象末尾,能看到很多API接口的runPE技术调用,这样恶意程序会挂起一个系统进程,并在其中注入恶意执行代码。另外,还发现了对象开始处的有意思的字符串: 7e079a2524fa63a55fbcfe:

    该字符串曾在“响?#37319;摺盇PT攻击的ole公式对象中出现过,可能攻击者都使用了同一套恶意程序组装工具。现在有了加载文件8.t ,以及runPE技术的确定。接下来,需要来做更深入的shellcode分析。

    逆向ShellCode

    在分析伊始, Sebastien 认为 Winword.exe 会调用 CreateProcess 函数?#21019;?#24314;EQNEDT32.exe进程,所以他决定在CreateProcess 函数的调用处设置一个断点。

    但是,后来发现,EQNEDT32.exe 进程是由Winword.exe利用COM Object对象调用的,并不是由 CreateProcess 函数?#21019;?#24314;的,而且Winword.exe也不是EQNEDT32.exe的父进程。所以,只好在EQNEDT32.exe启动时附加?#31995;?#35797;器。为此,可以采用 映像劫持(Image File Execution Options,IFEO)方法 来进行分析。

    所谓的映像劫持(IFEO)就是Image File Execution Options,位于注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options 由于这个项主要是用来调试程序用的,对一般用户意义不大。默认是只有管理员和local system有权读写修改。通俗来说,就是比如我想运行a.exe,结果运行的却是b.exe,也就是说在这种情况下,a程序被b给劫持了,即你想运行的程序被另外一个程序代替了。

    先在Image File Execution Options的注册表荐中创建了一个名为EQNEDT32.exe的键值:

    然后,为它设置一个EQNEDT32.exe执行是启动调试器的变量串值,以此把调试器附加到EQNEDT32.exe进程中去。

    当打开恶意RTF文档后,Winword.exe和EQNEDT32.exe两个进程同时启动。

    在EQNEDT32.exe进程的入口点处,调试器被附加进入:

    现在,检查文件8.t是否在 %TMP% 目录中创建生成,果然8.t被drop到了 %TMP% 目录中:

    然后,在函数CreateFile处设置断点,查看漏洞利用的shellcode是否会读取文件8.t。在call eqnedt32.41E5EE处,函数CreateFile被调用。文件路径的参数在堆栈执行push dword ptr ss:[ebp-4]操作被压入堆栈,也即把内存ss:[ebp-4]处存放的双字压入堆栈。

    Shellcode使用函数CreateFile把文件8.t创建生成到%TMP% 目录下,现在,可以在调用函数处返回用户代码。

    深入分析之后,进入shellcode区域,其地址空间已经发生改变。以?#24405;?#20026;漏洞利用代码的shellcode段:

    在函数CreateFile调用之后, 函数GetFileSize被调用以获取文件大小:

    之后就是一个VirtualAlloc函数。VirtualAlloc是一个Windows API函数,该函数的功能是在调用进程的虚地址空间,预定或者提交一部分页,也可理解为申请内存空间。这里的VirtualAlloc函数在1FD0000 (eax value)处申请创建了一个内存页面,用它来加载文件8.t:

    VirtualAlloc函数之后,创建的内存页面由EAX操作指向:

    分配的内存页面:

    然后,用函数ReadFile去读取文件8.t:

    接着,文件8.t被读取加载到了分配的内存页面 1FD0000 处,以下为文件8.t在内存页面中的样式:

    在0066C82A内存处,shellcode会对文件8.t进行编码解密,解密循环是围绕解密密钥进行的一系列异或(XOR)操作,解密开始,解密密钥被设置到了7BF48E63中。以下为解密循环:

    之后,执行异或(XOR)操作,解密密钥被设置到了EAX寄存器中:

    如果检查异或(XOR)操作的目的地ds:[edx+ebx],可以发现,在01FD0000处发生了文件8.t加载行为,两步执行解密之后,终于可以在内存区开头看到神奇的字符串“MZ”了,MZ为window的PE文件标志。

    解密循环结束之后,我们会在内存01FD0000处得到一个PE程序,到此,文件8.t被解密了:

    接下来,shellcode使用VirtualAlloc函数在02070000处创建了一个内存页面:

    之前,在内存01FD0000处解密得到的PE程序被拷贝到了这个地址处:

    在EQNEDT32.exe运行过程中,shellcode调用GetModuleFileNameA函数来获取自身文件的完整路径。之后,shellcode将正常的EQNEDT32.exe进程进行分支,创建出另一个独立的EQNEDT32.exe进程,并把它执行挂起状态:

    然后在地址02070000处把该进程进行覆盖:

    以下为NTWriteVirtualMemory写入内存时涉及的堆栈:

    之后,shellcode会把挂起状态的进程重启,以此执行新注入的PE程序。所以,可以发现在OLE对象开头处存在所有的API调用,并且存在runPE方法来启动新注入的 EQNEDT32.exe 程序。

    EQNEDT32.exe独立进程的分支创建分析

    前面提过,被注入覆盖的新进程EQNEDT32.exe会在目标操作系统中写入以下两个文件:

    一个名为 RasTls.dll 的dll文件

    一个名为dascgosrky.exe的可执行文件

    如果把EQNEDT32.exe进程剥离出来,把它放到IDA中分析,可以发现该进程在sub_00401150处释放文件的方法函数,把它命名为dropFiles。

    在该方法开始,存在一个xor循环:

    之后,会调用压缩方法函数zlib:

    在sub_4012D0处,文件释放函数dropFiles会被两次调用。

    检查整个流程,可以发现,函数dropFiles只会被sub_4012D0进行调用,如下:

    由于EQNEDT32.exe?#30475;?#30340;执行,都会由函数CreateFile的onstaticcache.dat文件启动,所以,在函数CreateFile处设置了一个断点:

    然后,回到用户代码中,在函数dropFiles初次被调用的0040159A处再设置一个断点,以便进行静态分析:

    这样,就能分析第二遍解密循环了,先要来初始化解密函数:

    接着,可以发现xor异或和把结果储存在esi+eax中操作:

    解密循?#36820;?#19968;步中,结果被写入EQNEDT32.exe进程地址空间的411BC0:

    循环完成之后,可以得到zlib压缩对象的头信息:

    在内存页面021E0000中,会被分配存储dll文件:

    同时,在其中一个PE进程dascgosrky.exe会被解压缩:

    之后,RasTls.dll文件由以下路径被创建,并被储存在ebx寄存器中:

    L”C:\\Users\\IEUser\\AppData\\Roaming\\Microsoft\\Windows\\Network Shortcuts\\RasTls.dll”
    

    在此过程中,函数dropFiles被两次调用进行解密和PE文件的解压缩操作。EQNEDT32.exe进程的文件存储偏移位于00434EF8 ,而其PE解压缩程序dascgosrky.exe存储在025D0020处。如下图所示:

    之后,dascgosrky.exe释放到以下系统路径中,其基地址ebx为005DA228

    L”C:\\Users\\IEUser\\AppData\\Roaming\\Microsoft\\Windows\\Network Shortcuts\\dascgosrky.exe”
    

    由此,可以在网络行为中监测到以下两个文件释放到操作系统中:

    dll劫持

    表面来看,dascgosrky.exe程序是一个赛门铁克公司签发的合法可信文件:

    它为了加载RasTls.dll,会调用sub_401940处的 LoadLibrary 和 GetProcaddress 方法,来实?#21046;?#24694;意行为。以下为其加载的恶意行为:

    攻击者利用的网络架构

    攻击者利用的域名为wouderfulu.impresstravel.ga,解析对应IP地址为192.99.181.14:

    在该IP地址中,存在多个越南语相关的对应域名,这些域名还和IP地址176.223.165.122有关联:

    其中两个越语域名有点意思:

    halong.dulichculao.com 曾在对越某些机构发起的网络攻击中用过, Fortinet曾对这类攻击做过详细分析 ,并把其追溯为中国的黑客组织-1937CN。

    把这两次攻击的各项TTP指标进行对比,发现基本相似,攻击者都使用了RTF文档作为前期入侵,而用DLL劫持作为后期payload加载。

    此次攻击中的另外一个域名cat.toonganuh.com,是toonganuh.com的子域名,也曾被发现和中国黑客组织-1937CN注册过的邮箱[email protected]有关联。

    总结

    基于以上发现,Sebastien Larinier推断,中国黑客组织 1937CN 以同样的TTPs手法和更新过的工具组件,针对越南政府部门开展着?#20013;?#30340;网络攻击。 Sebastien 认为, 1937CN 创建RTF恶意文档的特性和“响?#37319;摺盇PT组织相似。Sebastien Larinier声称将会在后续的分析中给出更多证据。

    IOC

    域名:

    dn.dulichbiendao.org
    gateway.vietbaotinmoi.com
    web.thoitietvietnam.org
    hn.dulichbiendao.org
    halong.dulichculao.com
    cat.toonganuh.com
    new.sggpnews.com
    dulichculao.com
    coco.sodexoa.com.
    thoitiet.malware-sinkhole.net
    wouderfulu.impresstravel.ga
    toonganuh.com
    coco.sodexoa.com
    

    IP地址:

    192.99.181.14
    176.223.165.122
    

    RTFs:

    42162c495e835cdf28670661a53d47d12255d9c791c1c5653673b25fb587ffed
    

    8.t:

    2c60d4312e4416745e56048ee35e694a79e1bc77e7e4d0b5811e64c84a72d2d7
    

    PE:

    f9ebf6aeb3f0fb0c29bd8f3d652476cd1fe8bd9a0c11cb15c43de33bbce0bf68 (exe)
    9f5da7524817736cd85d87dae93fdbe478385baac1c0aa3102b6ad50d7e5e368 (dll)
    

    Update:

    The payload is PlugX. Thanks to Gabor Szappanos https://twitter.com/GaborSzappanos/status/1024622354582908928

    Update IOCs:

    597c0c6f397eefb06155abdf5aa9a7476c977c44ef8bd9575b01359e96273486 59.rtf
    11f38b6a69978dad95c9b1479db9a8729ca57329855998bd41befc364657d654 RasTls.dll
    f9ebf6aeb3f0fb0c29bd8f3d652476cd1fe8bd9a0c11cb15c43de33bbce0bf68 RasTls.exe
    b70069e1c8e829bfd7090ba3dfbf0e256fc7dfcefc6acafb3b53abcf2caa2253 b7.rtf
    77361b1ca09d6857d68cea052a0bb857e03d776d3e1943897315a80a19f20fc2 spoolsver.exe
    9fba998ab2c1b7fec39da9817b27768ba7892c0613c4be7c525989161981d2e2 vsodscpl.dll
    9d239ddd4c925d14e00b5a95827e9191bfda7d59858f141f6f5dcc52329838f0 9d.rtf
    087d8bee1db61273a7cd533d52b63265d3a8a8b897526d7849c48bcdba4b22ec RasTls.dll
    f9ebf6aeb3f0fb0c29bd8f3d652476cd1fe8bd9a0c11cb15c43de33bbce0bf68 RasTls.exe
    332aa26d719a20f3a26b2b00a9ca5d2e090b33f5070b057f4950d4f088201ab9 rtf
    93aa353320a8e27923880401a4a0f3760374b4d17dcd709d351e612d589b969d vsodscpl.dll
    77361b1ca09d6857d68cea052a0bb857e03d776d3e1943897315a80a19f20fc2 ScnCfg.exe
    

    *参考来源: medium ,clouds 编译,转载请注明来自 FreeBuf.COM

    我来评几句
    登录后评论

    已发表评论数()

    相关站点

    +订阅
    热门文章
    11选五 北京体彩胜平负 篮球部落 官方是什么意思 活跃气氛的70个小游戏 东方6十1最新开奖号码 广东好彩1历史开奖结果 35选7中一等奖多少钱 湖北快三今天开奖结果及分布图 澳洲幸运10开奖历史记录 今天青海快三走势图带连线 彩票网站logo 竞彩足球比分咋玩 福建快三走势图快 江西多乐彩开奖号码 江苏福彩东方6十1