在红队渗透测试中,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# 代码。这种交互式的编程方式非常适合于调试、实验和快速原型开发。
除了交互式执行代