从admin到system
在渗透测试中,某些情况下需要用到system权限,例如操作注册表
HKEY_LOCAL_MACHINE\SAM\SAM
,或者本地测试时需要system权限
前提
已经获得系统的管理员权限(administrator)
参考链接:
目录
- 通过创建服务获得System权限的方法
- 利用MSIExec获得System权限的方法
- 利用token复制获得System权限的方法
- 利用Capcom.sys获得System权限的方法
创建服务的方法
SC
sc create testServ binPath= "cmd /c start" type= own type= interact
sc start testServ
- 适用于XP
- win7、win8不好用
计划任务
- at (高版本被弃用)
at 11:06 /interactive calc
- schtasks
# 创建服务
schtasks /Create /TN testServ /SC DAILY /ST 11:10 /TR calc.exe /RU SYSTEM
# 查看服务状态
schtasks /Query /TN testServ
# 删除服务:
schtasks /Delete /TN testServ /F
利用工具 psExec
下载地址 https://docs.microsoft.com/en-gb/sysinternals/downloads/psexec
使用psexec会创建 PSEXESVC
服务(测试的时候没找到这个服务),产生日志Event 4697、Event 7045、Event 4624和Event 4652
以system权限启动:
psexec.exe -accepteula -s -d notepad.exe
默认情况下,system权限的进程不会在用户桌面显示,如果需要显示进程界面,可以加/i参数,命令如下:
psexec.exe -accepteula -s -i -d notepad.exe
参数解释
-accepteula
隐藏psexec第一次运行时弹出的提示是否许可执行的窗口-s
system权限运行-i
交互式-d
执行命令后返回,不等待命令结束
其他的
cat的一个缺陷
说明
cat有一个缺陷,如果内容中存在
\r
回车符,那么在cat
直接查看的时候会首先输出\r
后的内容,如果\r
后的内容长度小于\r
前的内容长度,那么就会输出\r
后的内容在加上\r
前的长度差的后几位。利用这个可以隐藏在一些脚本里面,比如
crontab
, 直接cat file
的查看方式会让运维不能发现问题。但是可以通过vim
less
查看到。
举例
看了上面的说明,可能还是不是很清楚,举个例子说明一下就很明白了。
# 示例代码
with open("result.sh", "w") as f:
hiding_content = "1234567"
output = hiding_content + "\r11111"
f.write(output)
会先输出 \r
后的 11111
,由于 len(""1234567"") - len("11111)" = 2
,所有最后会输出 1234567
的最后两位
实操
因为 cat
输出空文件和输出空格,肉眼看起来是一样的,所以可以利用空格来隐藏我们要执行的命令
1. 直接隐藏
with open("result.sh", "w") as f:
hiding_content = "echo I am hidden content"
output = hiding_content + "\r" + " " * len(hiding_content)
f.write(output)
2. 隐藏在正常的脚本里面
original_content = "echo I am normal content"
with open("result.sh", "w") as f:
hiding_content = "echo I am hidden content;"
output = hiding_content + "\r" + original_content + " " * len(hiding_content)
f.write(output)
总结
只要是可能会用cat看的地方,都可以做一下手脚,结合权限维持还不错。
有些说得不太准确的地方,望大佬们指正。