01阅读须知
此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧。
02基本介绍
本文内容部分节选自小报童《.NET 通过Fsharp执行命令绕过安全防护》我们会长期更新!
03编码实现
Fsi.exe 是一个包含在 Visual Studio 中的 Microsoft 签名的合法二进制文件,允许通过交互式命令行或脚本执行 .fsx 和 .fsscript 文件。由于自带微软的签名,可以用于绕过许多基于签名验证的安全防护软件,从而在目标环境中执行恶意代码。
3.1 Fsi基本介绍
fsi.exe 是 F# Interactive 的可执行文件,F# Interactive 是 F# 编程语言中的一个交互式环境,用于即时执行 F# 代码。可以逐行或逐段地运行 F# 代码。比如引用程序集,可以使用 #r 命令引用外部的 .NET 程序集,具体代码如下所示
#r "System.Xml.dll"
3.2 Fsi执行脚本
以下是一段通过 fsi.exe 执行命令行的示例代码。通过 PowerShell 运行空间创建和管理,执行命令 cmd.exe /c whoami /all 来显示当前用户的完整身份信息
let pipeline = runSpace.CreatePipeline()
let command = new Command("cmd.exe")
command.Parameters.Add("/c", "whoami /all")
pipeline.Commands.Add(command)
在这里通过 CreatePipeline() 创建了一个新的命令管道,并添加了要执行的 cmd.exe 命令。通过 Parameters.Add() 方法指定要传递的参数,例如 /c 和 whoami /all。下面fsccript代码中执行了whoami命令,返回如下图所示
综上,fsi.exe 利用了 F# 交互式编译器的合法性和签名信任机制,使得攻击者能够在不被检测的情况下执行恶意代码。结合其强大的脚本编写能力,尤其是在高级渗透测试和红队活动中,这个工具能有效地避开安全防护,执行任意代码,从而达到攻击目的。
04.NET 电子报刊
电子报刊《.NET 内网安全攻防》专栏,内容主要有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,可细分为以下8个方向。
1) .NET 安全防御绕过
2) .NET 本地权限提升
3) .NET 内网信息收集
4) .NET 内网代理通道
5) .NET 内网横向移动
6) .NET 目标权限维持
7) .NET 数据传输外发
8) .NET 目标痕迹清理