.NET内网实战:通过调用系统的API接口模拟实现PowerShell

01阅读须知

此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。

02基本介绍

本文内容部分节选自小报童《.NET 通过调用API模拟实现PowerShell》,完整的文章内容请加入小报童后订阅查看。现在限时只需59元,永久买断!目前已有220+位朋友抢先预定,我们会长期更新!

图片

03原理分析

在红队内网渗透中,PowerShell 常常被用于执行各种任务,然而也常常受到安全工具的监控。因此,寻找和开发一个能够有效规避检测的 PowerShell 替代工具是非常有意义的。本文将介绍一种实现PowerShell进程的思路,能够在保持 PowerShell 强大功能的同时,规避检测工具的监控。

3.1 Invoke-Expression

Invoke-Expression 是 PowerShell 中的一个强大命令,用于执行一个字符串内容中包含的命令、表达式或脚本。通过 Invoke-Expression,可以将字符串参数中的内容当作实际的 PowerShell 命令来执行,具体语法如下所示。

Invoke-Expression [-Command] <String> [<CommonParameters>]

-Command: 表示需要执行的字符串内容,可以是一个完整的命令或脚本。比如,启动 Windows 自带的计算器,命令如下所示

Invoke-Expression "calc"

作用是将 "calc" 这一字符串视为实际命令并执行,相当于直接输入 calc。如下图所示。

图片

3.2 AddScript

PowerShell.AddScript 是 .NET API 提供的接口,用于将 PowerShell 脚本添加到一个 PowerShell 对象的脚本管道中,可以动态生成 PowerShell 脚本内容并在程序执行时运行,例如 Invoke-Expression,并通过 Invoke() 方法获取whoami执行的结果,具体代码如下所示。

powerShell.AddScript("Invoke-Expression 'whoami'");
Collection<PSObject> results = powerShell.Invoke();
foreach (PSObject result in results)
{
    Console.WriteLine(result.ToString());
}

上述代码中,首先通过 PowerShell.Create() 创建一个新的 PowerShell 对象,用于封装 PowerShell 脚本引擎,允许我们在.NET中执行 PowerShell 脚本。

图片

综上,可以利用PowerShell.AddScript 和 Invoke-Expression完成一个小型的PowerShell替代工具,因此能够有效规避一些安全防护软件对于 PowerShell.exe 进程的检测规则,便于黑客更加隐蔽的执行任务。

04.NET 电子报刊

.NET 内网安全攻防专栏,内容主要有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,可细分为以下8个方向。

1) .NET 安全防御绕过
2) .NET 本地权限提升
3) .NET 内网信息收集
4) .NET 内网代理通道
5) .NET 内网横向移动
6) .NET 目标权限维持
7) .NET 数据传输外发
8) .NET 目标痕迹清理

图片

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dot.Net安全矩阵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值