第九章-NOP Team dmz-C
1、攻击者通过攻击DMZ-B机器发现有密钥可以免密登录到DMZ-C机器里,,然后攻击者上传了一个挖矿程序,请将该挖矿程序的名称提交,
我们使用DMZ-B下载的私钥进行登录
查看当前pytho版本
启用交互式shell 伪终端
python -c 'import pty; pty.spawn("/bin/bash")'
如果有挖矿程序,可以先看一下当前服务器上的可疑连接 netstat -ano
tcp 0 356 10.0.10.7:22 223.160.221.152:54492 ESTABLISHED on (0.19/0/0)
tcp 0 0 10.0.10.7:22 220.250.58.102:36376 ESTABLISHED keepalive (6033.76/0/0)
第一条:
- 本地地址:
10.0.10.7:22
(你的 Kali 主机) - 外部地址:
223.160.221.152:54492
(某个外部客户端) - 状态:
ESTABLISHED
→ 当前活跃的 SSH 会话 - 发送队列有 356 字节未确认数据 → 可能是你刚输入命令还没回显完
第二条:
- 来自
220.250.58.102
的另一个 SSH 连接,保持长连接(keepalive)
我们去到 根目录 使用grep -r "keepalive"
是一个在 Linux 中用于递归搜索文件内容的命令,它的作用是:
在当前目录及其所有子目录下的文件中,查找包含
"keepalive"
这个字符串的内容
这里的 keepalive
是 TCP Keep-Alive 机制的表现,表示这个 SSH 连接正在使用保活机制防止断开。
执行 grep -r "keepalive"
目的:
- 查看系统哪些配置启用了 keepalive?
- 是否有后门程序设置了长连接保活?
- 挖矿程序是否通过 keepalive 维持 C2 通信?
在这里发现了. Binary file opt/xmrig matches
opt/xmrig
是一个二进制可执行文件(不是文本脚本)grep
发现这个二进制文件的内容中包含字符串"keepalive"
- 虽然你看不到具体内容(因为是编译后的程序),但能匹配到关键词
opt/config.json: "keepalive": false,
- 表示在路径
opt/config.json
的配置文件中,有一行设置了"keepalive": false
- 这个文件很可能是
xmrig
挖矿程序的配置文件
我们来看这段配置的含义:
"keepalive": false
JSON
参数 | 含义 |
---|---|
keepalive |
控制是否在连接矿池时启用 TCP 保活机制 |
false |
不启用 keepalive(但仍可能通过其他方式维持连接) |
lag{xmrig}
2、攻击者通过攻击DMZ-B机器发现有密钥可以免密登录到DMZ-C机器里,然后攻击者上传了一个挖矿程序,请将该挖矿的地址提交,格式 <flag{xxxxxx}>
cat opt/config.json
查看这个文件
可以看到url
flag{xmrs1.pool.cn.com:55503}
3、攻击者通过攻击DMZ-B机器发现有密钥可以免密登录到DMZ-C机器里,然后攻击者上传了一个挖矿程序,但由于DMZ-C机器是不出网的,所以攻击者通过了一种方式将流量转发了出去,请将转发的目标端口提交,格式 <flag{xxxxxx}>
我们继续翻阅这条信息 在下面看到
这使用了socks5是常见的内网穿透/反向代理客户端(agent)配置,目的就是把被控主机的内网流量经由远端服务器转发(建立隐蔽代理隧道)。
什么是 SOCKS5,什么是内网穿透(隧道)
- SOCKS5:一种通用代理协议(支持 TCP/UDP、可带认证),客户端把流量发给 SOCKS5 代理,代理代为访问目标主机。常见本地端口是
1080
,程序如ssh -D
、danted
、microsocks
、3proxy
等可以提供 SOCKS5。 - 内网穿透 / 反向隧道:把内网主机的 TCP/端口通过一个长期的反向连接转发到公网服务器或直接建立隧道(比如 frp、nps、ngrok、gost 等)。用途是把被控主机的服务(或任意流量)暴露给攻击者或中继服务器。
flag{1080}
4、攻击者通过攻击DMZ-B机器发现有密钥可以免密登录到DMZ-C机器里,然后攻击者上传了一个挖矿程序,但由于DMZ-C机器是不出网的,所以攻击者通过了一种方式将流量转发了出去,请将用来做转发的工具的名称提交,格式 <flag{xxxxxx}>
在opt目录下面还有其他几个文件
/opt/
├── client/ → frp 客户端目录
├── client.tar.gz → frp 客户端压缩包(备份或原始文件)
├── config.json → xmrig 挖矿程序配置文件
└── xmrig → 挖矿主程序
进入 /opt/client
后:
frpc → frp 客户端可执行程序(用于连接中继服务器)
frpc.ini → 主配置文件(精简版)
frpc_full.ini → 完整配置模板(可能包含更多功能)
rpc.ini
配置详解
你查看的内容是:
[common]
server_addr = 10.0.1.147
server_port = 7000[csocks5]
type = tcp
plugin = socks5
remote_port = 1080
[common]
全局配置
server_addr = 10.0.1.147
→ FRP 服务端地址(即“中继服务器”或“跳板机”),位于内网server_port = 7000
→ FRP 服务端监听端口(默认为 7000)
📌 这意味着:这台被入侵主机(10.0.10.7
)会主动连接 10.0.1.147:7000
,建立一条反向隧道。
flag{frpc}
整个流量转发过程详解(结合 DMZ-C 不出网)
你提到:
“DMZ-C 机器是不出网的”
这意味着:
- 这台主机无法直接访问外网(比如不能 curl google.com)
- 但可以通过某些方式与内网其他机器通信
攻击者利用的就是这个突破 攻击链还原:
[公网矿池] ←→ ↑
[内网跳板机 10.0.1.147] ←—(监听 1080 Socks5)↑
[受害机 10.0.10.7 (DMZ-C)] ——→ 运行 frpc↓主动连接 10.0.1.147:7000(允许的内网通信)↓建立反向隧道(frp 隧道)↓
xmrig 使用本地配置 → socks5=10.0.1.147:1080 → 实际经由 frpc 转发
Plain text
数据流路径:
xmrig → 访问 socks5://10.0.1.147:1080 → 被 frpc 接管 → 经由 frp 隧道 → 到达矿池
5、攻击者最后通过某配置文件配置错误,从而直接可以拥有root用户权限,请将错误配置的那一行等于号后面的内容(不含空格)提交,格式 <flag{xxxxxxx}>
这里是攻击者通过提权的方式拿到了root权限一般来说常见的 提权提权就是 SUID滥用 、sudo -I、计划任务劫持
这里看到使用 sudo -l后现所有的都不需要密码就可以使用管理员的权限
flag{(ALL:ALL)NOPASSWD:ALL}