LNK是Microsoft Windows用于指向可执行文件或应用程序的快捷方式文件的文件扩展名,用于提升用户交互体验,能够点击快捷方式来快速打开应用。LNK文件通常用于创建开始菜单和桌面快捷方式。但是LNK文件也可以被恶意代码的利用,常用于网络鱼叉的载荷投递。
查看LNK文件的基本属性,关注的地方主要是快捷方式的目标位置,运行方式,图标等,如下图所示:
选取一个恶意的快捷方式查看其文件结构,如下图:
通过010编辑器打开
可以关注的几个字段COMMAND_LINE_ARGUMENTS、ICON_LOCATION、WORKING_DIR,通过修改这几个字段可以提升恶意快捷方式的欺骗性,提升点击的成功率。
首先我们可以通过powershell命令来快速生成快捷方式,如下图的命令:
WScript.Shell组件属性含义如下图:
并且我们通过修改IconLocation字段,可以自动化配合后续要投放网络鱼叉中的真实文件名后缀来实现指定文件的图标。例如要生成word诱导文件,只需将IconLocation字段写成“1.docx”即可,自动生成效果如下图:
鼠标右键创建快捷方式,可以在目标中输入执行的命令,但是字符串最长为260字节,即“目标”窗口长度为260字节。我们通过修改快捷方式设定值并在目标插入大量空格字符串,使其超出该长度之后窗口便不再显示,将恶意指令藏在260字节之后,在一定程度上隐藏自身。
测试powershell代码:
往test.txt文件写入调用计算器 /c start calc.exe
生成的快捷方式从图形窗口上看不到COMMAND_LINE_ARGUMENTS字段,执行效果如下图:
只通过单个LNK执行恶意代码,有两种方式,第一种是直接将恶意代码写入到LNK文件;第二种需要LNK执行远程下载并执行的动作。
首先来看一下第一种恶意代码如何绑定LNK文件实现单文件执行恶意代码。通过构建一个加载器,加载器的主要功能将exe附加写入LNK文件末尾,然后通过LNK定位exe在LNK文件的偏移位置,异或解密exe文件,释放到temp目录并执行exe。
完整的LNK绑定的powershell命令如下图:
第二种方式可以通过远程下载并执行,如下图下载命令:
接着再执行命令来实现下载文件执行,如下图:
通过多文件来执行恶意代码,只需要保证LNK指向木马的情况就能完成简易的网络鱼叉制作。将LNK文件和木马置于同一个压缩包,同时将木马设置成系统属性,在不勾选显示系统文件和隐藏文件的时候,木马默认是不可见的。实现效果如下:
勾选显示隐藏文件和显示系统文件之后:
并且能够搭配释放出迷惑性的正常文档文件来让用户点击后无感知,降低被取证分析的概率。
大多数杀软针对LNK绑定了危险的命令会直接拦截,例如cmd或者powershell。所以单文件以及多文件想要绕过杀软的话,此处需要引入一个“LOLBINS”,即Living-Off-the-Land Binaries,是在目标操作系统上运行受信任的合法进程来执行恶意活动,例如横向移动、权限提升和远程控制等。换句话说即大家所熟知的“白名单”免杀技术。比如常见的Powershell.exe、Certutil.exe和Mshta.exe等程序,属于微软自带的白名单程序。
那么我们所选取的白名单程序通常需要具备“执行”的动作,再者高级一点就是还具备远程“下载”的动作。可以参考“LOLBAS”,站点上面罗列了windows操作系统上自带的白程序,并且标注了具备怎样的功能,是具备”执行“还是”下载“以及”拷贝“的功能。当然杀软也注意到这个层面,具体的免杀白程序还需要读者自己尝试。
多文件一般情况之下,如果LNK指向的木马文件免杀,那么快捷方式一般不会别拦截,但是LNK如果只是执行木马的话而没有其他效果的话会显得比较突兀,可能会引起用户怀疑,此处我们选取一个例子作为说明,示范一下多文件的情况之下如何提高隐蔽性。
通过FTP执行文件中的命令。文件命令完成执行木马,修改释放诱导性文件属性并打开诱导性文件,如下图:
当然这里也并非一定要用可执行文件,也可以搭配侧加载(白加黑),或者直接rundll32直接执行黑dll,甚至进程注入等,并且还能搭配自删除的bat文件来控制进程注入后母体样本的删除,已确保文件母体功能不容易被取证分析。需要多种手段搭配使用才能实现更好的效果。
3.通过使用 URL 信誉工具进行分析,以确认 LNK 文件打开了恶意链接。如下图所示:
4.查看快捷方式的文件大小,大于 4 KB 的文件应被视为可疑文件,通过快捷方式属性查看是否指向可疑的可执行文件或者绑定了可疑的命令执行参数。
https://www.x86matthew.com/view_post?id=embed_exe_lnk
https://lolbas-project.github.io/
Scan to Follow