在红队渗透测试中,Sharp4fsi.exe是一款基于F#的交互式编译器执行攻击负载的工具,通过封装或修改原始编译器,能够执行包含恶意代码的F#脚本文件。由于F#的交互式编译器本身带有微软的签名,因此Sharp4fsi.exe也继承了这一特性,使得在执行时能够绕过一些基于签名验证的安全防护软件。
01. FSharp 科普介绍
FSharp 是一种功能强大、功能式编程为主的编程语言,FSharp 是 .NET 平台的一部分,能够与 C# 和 Visual Basic 等 .NET 语言无缝集成,允许开发者使用函数式编程的优点,同时也可以使用面向对象和命令式编程。
FSharp 支持多种脚本格式,除了 .fsscript 之外,常见的格式包括 .fsx,这是 F# 脚本和 .fs 扩展名,这是 F# 源文件。其中 .fsx 是最常用于脚本化的文件扩展名,适合快速执行脚本,例如下面代码所示。
open System
let currentTime = DateTime.Now
printfn "Current time: %A" currentTime
代码中,open System 导入了 .NET System 命名空间,用于访问时间相关的 API。通过Fsi.exe 运行后如下图所示。
图上的 fsi.exe 白名单文件是 F# Interactive 的可执行文件,F# Interactive 是 F# 编程语言中的一个交互式环境,用于即时执行 F# 代码。可以在不编译整个项目的情况下,逐行或逐段地运行 F# 代码。这种交互式的编程方式非常适合于调试、实验和快速原型开发。
除了交互式执行代码,fsi.exe 还可以用来执行 .fsx 和 .fsscript 文件(F# 脚本文件),并且与.NET框架深度捆绑集成,可以在 F# Interactive 中调用 .NET API,甚至与 C# 和其他 .NET 语言无缝集成。
比如引用程序集,可以使用 #r 命令引用外部的 .NET 程序集,具体代码如下所示。
#r "System.Xml.dll"
#load "script.fsx"
加载并执行脚本,可以使用 #load 命令加载 .fsx 或 .fsscript 文件。
02. 工具实战用法
Sharp4fsi 就是一款专门基于此技术实现的红队工具,只需在命令行中指定要执行的F#脚本文件即可。
以下是一个基本的命令示例:
Sharp4fsi.exe Fsharp4Process.fsscript
在这个demo中,Fsharp4Process.fsscript是包含F#代码的脚本文件,工具将负责执行该文件中的代码。下面fsccript代码中执行了whoami命令,返回如下图所示。
综上,Sharp4fsi.exe作为一款利用F#编译器执行攻击负载的工具,由于本身带有微软的签名,使得它在执行时能够绕过一些基于签名验证的安全防护软件。对现有的安全防护策略构成了挑战。
03.星球学习资源
我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。
.NET 免杀WebShell
.NET 反序列化漏洞
.NET 安全防御绕过
.NET 内网信息收集
.NET 本地权限提升
.NET 内网横向移动
.NET 目标权限维持
.NET 数据外发传输
这些阶段所涉及的工具集不仅代表了当前.NET安全领域的最前沿技术,更是每一位网络安全爱好者不可或缺的实战利器。
文章涉及的工具已打包,请加/入/后下/载:https://wx.zsxq.com/group/51121224455454