在靶场中带你了解无文件落地攻击
发布网友
发布时间:2024-09-30 13:52
我来回答
共1个回答
热心网友
时间:2024-10-08 02:20
在靶场中,我们基于"火天网演攻防演训靶场"环境搭建,通过火天网演中的环境构建模块,可以灵活地设计和配置目标网络,快速搭建和复现验证场景。了解无文件落地攻击,即"Fileless"攻击,是一种非常有影响力的威胁。攻击者在实施此类攻击时不向目标主机磁盘写入任何恶意文件,因此得名"无文件攻击"。现今,挖矿病毒与勒索病毒多采用无文件攻击方式,以规避传统防毒软件的防护。
当取得shell时,无文件落地上线成为更高明的选择。测试均在靶场中进行,仅作为攻防技术研究,对现实无影响,场景已录入场景库。
利用PowerShell进行无文件攻击,因为它作为微软Windows系统自带的软件包,功能强大,越来越多的攻击者选用之。PowerShell的主要作用是从远程位置下载恶意文件至受害者主机,通过命令如`Start-Porcess`、`Invoke-Item`或`Invoke-Expression (-IEX)`执行恶意文件。PowerShell还能直接将远程文件下载至受害者主机内存中,从内存执行。
PowerShell内存加载EXE程序的实现是生成对应格式的shellcode(如exe、dll、c),使用Cobalt Strike生成,然后以Python开启HTTP服务。将二进制文件转换为字符串的PowerShell脚本(如`Convert-BinaryToString.ps1`)或Python脚本(如`Convert-BinaryToString.py`)进行操作。使用Python3运行脚本,将文件转换为base64字符串(`python3 Convert-BinaryToString.py artifact.exe > artifact.exe.txt`)。
通过修改`Invoke-ReflectivePEInjection.ps1`脚本,在末尾添加执行命令,将文件加载至其他机器上,允许PowerShell脚本运行。若利用不成功,可使用MSF,先生成exe,然后使用转换脚本将exe转换为base64字符串,替换运行脚本中的CS字符串,随后在目标机器上允许脚本执行。
内存加载DLL操作与加载EXE类似,只是将DLL转换为base64字符串,修改运行脚本以执行命令。加载并运行DLL后,结果与加载EXE相似,MSF生成的DLL可正常上线,而CS生成的DLL不可。
远程加载并执行DLL,通过修改`Invoke-ReflectivePEInjection.ps1`脚本中PEUrl参数,将DLL的URL替换为exe的URL。加载并执行DLL后,MSF成功上线,CS生成的DLL则不可。
进程注入shellcode的脚本(如`Invoke-Shellcode.ps1`)同样提供了无文件攻击的实现。将shell.c和artifact.c转换为16进制格式,复制脚本至其他机器上并重命名,添加执行命令。CS和MSF均能正常上线,Win7与Win10均能成功。
CS生成PowerShell上线脚本,使用CS自带的web功能,Win7与Win10均可正常上线。MSF生成PowerShell上线脚本,使用MSFvenom生成,Python开启HTTP服务,结果Win7与Win10均可正常上线。
使用CS或MSF生成Python无文件攻击脚本,Win10与Win7可以正常上线,且发现Defender无反应,可能开启了一种免杀新思路。Python无文件攻击受限于exec关键字,仅Python2可正常执行,或许Python3有执行方法值得研究。
使用MSFvenom生成HTA文件,Python开启HTTP服务,执行后,Win7与Win10均可正常上线,但会被Defender识别并阻止。使用MSF生成HTA,执行结果与上述相同。
总结,PowerShell无文件落地攻击方法多样,均依赖反射注入。反射型DLL注入与常规注入不同,它直接在内存中展开,无需.dll文件存在。通过反射执行DLL,ProcessExplorer等工具无法检测到,更易于免杀。Python无文件落地攻击虽然有限制,但利用某些特性可能绕过防毒软件,开启了免杀新思路。MSFvenom生成的HTA是一种稳定的无文件攻击方法,但其高效稳定也使其容易被防毒软件识别。