当前位置: 首页 > news >正文

临城网站网站开发项目经验和教训

临城网站,网站开发项目经验和教训,做任务免费得晋江币网站,seo站内站怎么做在Windows操作系统中,Services服务以后台进程的形式运行的,通常具备非常高的权限启动和运行服务。因此红队往往利用.NET框架通过创建和管理Windows服务来实现权限维持。本文将详细介绍如何通过.NET创建Windows服务,以实现权限维持的基本原理和…

在Windows操作系统中,Services服务以后台进程的形式运行的,通常具备非常高的权限启动和运行服务。因此红队往往利用.NET框架通过创建和管理Windows服务来实现权限维持。本文将详细介绍如何通过.NET创建Windows服务,以实现权限维持的基本原理和步骤。

0x01 OpenSCManager

在创建Windows服务之前,首先需要打开SCM服务控制管理数据库。服务控制管理器是Windows用来管理所有系统服务的组件。通过调用OpenSCManager函数,可以打开该数据库并获取其句柄。函数原型如下所示。

[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr OpenSCManager(string machineName, string databaseName, uint dwAccess);

只有成功打开了服务控制管理器数据库,才能继续创建服务。比如通过.NET进行调用,如下代码所示。

IntPtr intPtr = Program.OpenSCManager(null, null, 2U);
if (intPtr == IntPtr.Zero)
{throw new Exception("Failed to open service control manager.");
}

上述代码中,指定访问权限为2U,代表SC_MANAGER_CREATE_SERVICE,表示允许创建系统服务。

0x02 CreateService

在成功获取服务控制管理器数据库的句柄后,可以调用CreateService函数来创建一个新的系统服务。函数在.NET中的调用如下所示。

[DllImport("Advapi32.dll")]
public static extern IntPtr CreateService(IntPtr serviceControlManagerHandle, string lpSvcName, string lpDisplayName, Program.SERVICE_ACCESS dwDesiredAccess, uint dwServiceType, uint dwStartType, uint dwErrorControl, string lpPathName, string lpLoadOrderGroup, IntPtr lpdwTagId, string lpDependencies, string lpServiceStartName, string lpPassword);string serviceName = "MyService";
string serviceDisplayName = "My Custom Service";
string binPath = @"C:\Path\To\YourService.exe";
IntPtr intPtr2 = Program.CreateService(intPtr, serviceName, serviceDisplayName , SERVICE_ACCESS.SERVICE_ALL_ACCESS, 16U, 2U, 1U, binPath, null, IntPtr.Zero, null, null, null);
if (intPtr2 == IntPtr.Zero)
{throw new Exception("Failed to a handle to service");
}

该函数需要提供一系列参数来定义服务的属性和行为,包括服务名称、描述、启动类型、可执行文件路径等。

0x03 StartService

服务创建成功后,可以通过调用StartService函数来启动该服务。启动服务后,服务将按照指定的行为在后台运行。

[DllImport("advapi32.dll")]
private static extern int StartService(IntPtr serviceHandle, int dwNumServiceArgs, string lpServiceArgVectors);bool result = StartService(intPtr2, 0, null);
if (!result)
{throw new Exception("Failed to start service.");
}

上述代码中,我们使用StartService函数启动服务,并检查启动结果是否成功。

通过打开服务控制管理器数据库、创建系统服务以及启动服务等这些步骤,可以在Windows系统中使用.NET创建和管理服务,实现目标权限维持。

http://www.dtcms.com/a/475251.html

相关文章:

  • Android上电执行顺序
  • GRPO与GSPO算法训练对比
  • 如何制作网站板块php 企业网站模板
  • 佛山网站制作好处wordpress 扣积分
  • linux重定向中 >file 2>1,>>file 2>1 , >>file是什莫意思
  • 网站引导插件做网站最好的软件是
  • C++ 泛型
  • 网站网站建设公司企业为什么要增资
  • 第9章:两条道路的风景:技术与管理的真实世界(3)
  • Python 基础教程 | 菜鸟教程
  • 建设网站需求劳务公司简介模板
  • 解决 Vue 3 + TypeScript 中 v-for 循环类型推断问题
  • 外贸网站建站注意事项及价格宣传片拍摄脚本范本
  • Linux碎碎念:网络抓包利器:tcpdump 使用与分析入门
  • 十堰网站建设是什么塔罗牌手机网站制作
  • 北京网站制作费用wampserver安装wordpress
  • c可以做网站么公司网站域名无法解析
  • 做php网站教程视频住建部网站统计城乡建设统计信息系统登录
  • 风铃网站具体是做那方面的网站后台演示地址
  • 网站 建设 内容网站后台登录界面下载
  • 园林效果图网站兰州网站排名优化服务
  • Starting again-03
  • 探秘编译器背后的语言密码:从底层实现到技术演进的全景图
  • iis 里没有网站吗深圳的网站建设公司三把火
  • 肇庆企业建站程序evernote wordpress
  • JavaWeb学习-web开发什么是web开发
  • 专业开发网站企业net网站开发net网站开发
  • 最专业的企业营销型网站建设5分钟建站wordpress
  • JavaEE--Spring MVC
  • 建设网站简单的需要多少天网站开发技术要学什么软件