.NET 通过Windows系统计划任务维权

01阅读须知

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

02基本介绍

本文内容部分节选自小报童《.NET 通过Windows系统计划实现权限维持》,完整的文章内容请加入小报童后订阅查看。现在限时只需49元,永久买断!目前已有100+位朋友抢先预定,我们会长期更新,对.NET内网安全的朋友们请尽快订阅该报刊!

图片

03编码实现

在渗透测试或恶意软件开发中,攻击者经常需要在目标系统上维持持久的访问权限,Windows计划任务是实现这一目标的有效工具之一,因为它允许攻击者在特定时间或事件触发时执行预定义的命令或脚本。下面,我们将详细介绍如何通过Windows计划任务来维持权限。

3.1 连接任务管理器

Windows 任务计划程序 (Task Scheduler) 的 CLSID标识符是 0F87369F-A4E5-4CFC-BD3E-73E6154572DD,这串CLSID可以在taskschd.h文件中找到,如下图所示。

图片

在.NET中使用 new Guid("0F87369F-A4E5-4CFC-BD3E-73E6154572DD") 创建该 CLSID 的 GUID 对象,接着通过 Activator.CreateInstance 方法创建该 Type 的对象,具体代码如下所示。

TaskScheduler taskScheduler = (TaskScheduler)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("0F87369F-A4E5-4CFC-BD3E-73E6154572DD")));
try
{
    taskScheduler.Connect(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}

然后尝试通过 taskScheduler.Connect 方法连接Windows系统任务调度管理器。

3.2 配置系统计划任务

首先调用taskScheduler.NewTask 方法创建一个新的计划任务定义接口 ITaskDefinition,代码如下所示。

ITaskDefinition taskDefinition = taskScheduler.NewTask(0U);
taskDefinition.RegistrationInfo.Author = author;
taskDefinition.RegistrationInfo.Description = description;
taskDefinition.Settings.RunOnlyIfIdle = false;

高级部分涉及配置计划任务触发器、任务执行等,触发器是任务计划的重要组成部分,决定了任务在什么时间和条件下被触发,比如定义每小时触发器 (hourly),具体如下所示

if (triggertype.ToLower() == "hourly")
{
    string interval = string.Format("PT{0}H", rep);
    ITimeTrigger timeTrigger = (ITimeTrigger)taskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
    timeTrigger.Id = "TimeTrigger";
    timeTrigger.Repetition.Interval = interval;
    timeTrigger.StartBoundary = startBoundary;
}

3.3 执行系统计划任务

计划任务被触发后会执行一系列动作,这也是任务计划中的关键部分,通过 ITaskDefinition.Actions 属性的Create方法创建一个指定的动作类型,execAction.Path 设置要执行的.exe文件完整路径,Arguments 设置传递给程序的命令行参数。最后通过 folder.RegisterTaskDefinition 完成自定义计划任务在Windows系统的注册,核心代码如下所示。

IExecAction execAction = (IExecAction)taskDefinition.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
execAction.Id = "ExecAction";
execAction.Path = path;
execAction.Arguments = arguments;

利用Windows计划任务是一种常见且有效的方法。通过创建和配置计划任务,攻击者可以在特定时间或事件触发时自动执行预定义的命令或脚本,从而实现持久化。

04.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、付费专栏及课程。

余额充值