25数证杯预选赛 — 服务器取证 详细解题过程
一、服务器环境概览
| 别名 |
hostname |
外网IP (ens36) |
内网IP (ens33) |
角色 |
| server1 |
master |
192.168.100.119 |
192.168.50.80 |
K8s Master 控制平面 |
| server2 |
node1 |
192.168.100.138 |
192.168.50.81 |
K8s Worker 节点 |
| server3 |
node2 |
192.168.100.140 |
192.168.50.82 |
K8s Worker 节点 |
| server4 |
localhost.localdomain |
192.168.100.234 |
192.168.50.83 |
NFS 文件服务器 |
SSH配置: 端口22, 账号root, 密码123456
架构说明:
- Kubernetes v1.28.15 集群 + NFS 存储
- server1: K8s Master (apiserver, etcd, controller-manager, scheduler)
- server2/3: K8s Worker 节点
- server4: NFS 共享
/data/k8s_data *(rw,no_root_squash)
- 所有节点均双网卡:ens33=内网集群通信, ens36=外网管理
K8s 配置关键信息:
- API Server:
https://192.168.50.80:6443
- Pod CIDR:
10.224.0.0/16
- Service CIDR:
10.96.0.0/12
- CNI: Calico v3.25.0
- 镜像仓库:
registry.aliyuncs.com/google_containers
二、详细答题记录
Q1. node1节点的磁盘设备SHA256值前六位?(字母全大写)
答案: FC9A34
解题思路:
- node1 = server2 (hostname: node1)
- 磁盘设备为
/dev/sda (40G 物理磁盘)
- 对磁盘设备计算 SHA256 哈希取前6位大写
重点命令:
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT # 确认磁盘设备为 /dev/sda
sha256sum /dev/sda # 输出 fc9a34... → FC9A34
Q2. 集群配置了多少个node节点?
答案: 2
解题思路:
- server1 (master) = 控制平面节点
- server2 (node1) = worker 节点
- server3 (node2) = worker 节点
- 共 2 个 worker node
重点命令:
hostname # 确认各节点角色
ls /etc/kubernetes/manifests/ # master: apiserver, etcd, controller, scheduler
systemctl status kubelet # 所有节点均有 kubelet
Q3. 嫌疑人于什么时间修改master节点的root密码?(格式: 00:00:00)
答案: 09:35:59
解题思路:
- master = server1 (hostname: master)
- 审计日志
/var/log/audit/audit.log 记录 USER_CHAUTHTOK 事件
- 时间戳 1758245759 → 本地时间 09:35:59 CST
- bash_history 中也有
passwd 命令记录
重点命令:
grep 'chauthtok' /var/log/audit/audit.log
# type=USER_CHAUTHTOK msg=audit(1758245759.679:190):
# acct="root" exe="/usr/bin/passwd" terminal=tty1 res=success
date -d @1758245759 "+%H:%M:%S" # 输出 09:35:59
cat /root/.bash_history | grep passwd # 确认执行了 passwd
Q4. Docker的安装日期是?(格式: 01月01日)
答案: 04月08日
解题思路:
重点命令:
rpm -qi docker-ce | grep 'Install Date'
# Install Date: 2025年04月08日 星期二 20时24分20秒
Q5. Docker通过配置守护进程以使用全局代理,该代理地址的端口是?
答案: 4780
解题思路:
- Docker 全局代理配置在 systemd 服务文件中
/usr/lib/systemd/system/docker.service 定义了 HTTP_PROXY/HTTPS_PROXY 环境变量
重点命令:
cat /usr/lib/systemd/system/docker.service | grep -iE 'proxy|http'
# Environment="HTTP_PROXY=192.168.0.99:4780"
# Environment="HTTPS_PROXY=192.168.0.99:4780"
# 代理端口: 4780
Q6. MySQL数据库对外访问的端口是?
答案: 30627
解题思路:
- 通过独角数卡
.env 配置可知 DB_PORT=30627
- kubectl get svc mysql 确认 NodePort 为 30627,容器端口 3306 映射到宿主机 30627
重点命令:
kubectl get svc mysql
# NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
# mysql NodePort 10.96.x.x <none> 3306:30627/TCP ...
Q7. 发卡网站部署的镜像名称是?
答案: webdevops/php-nginx:7.4
解题思路:
- 查看 php-nginx Deployment 的 YAML 配置,或通过 kubectl 查询 deployment 详情
重点命令:
kubectl get deployment php-nginx -o yaml | grep image
# 或查看 server1 /root/php-nginx-deployment.yaml
cat /root/php-nginx-deployment.yaml | grep image
# image: webdevops/php-nginx:7.4
Q8. Telegram群管机器人容器ID前六位?
答案: 8fadf5
解题思路:
- 关键点: K8s Pod重启/重调度后容器ID会变化,运行时查询
docker ps 不可靠
- 必须通过静态分析磁盘镜像取证:加载检材03磁盘镜像,解析Docker/containerd数据获取案发时的容器ID
- 从磁盘镜像中找到 captcha-bot 对应的容器ID
重点命令:
# 静态分析方式(加载检材03磁盘镜像后)
# 解析 Docker 容器元数据或 containerd 快照数据
# 找到 captcha-bot 容器的原始ID,取前6位: 8fadf5
Q9. 发卡网站使用的缓存数据库是?
答案: redis
解题思路:
- 独角数卡
.env 配置中 REDIS_HOST=192.168.50.80, REDIS_PORT=31678
- Laravel 应用使用 Redis 作为缓存后端,后台系统设置也缓存到 Redis
重点命令:
cat /data/k8s_data/default/dujiaoka/.env | grep REDIS
# REDIS_HOST=192.168.50.80
# REDIS_PORT=31678
Q10. 发卡网站代码的物理目录是?
答案: /data/k8s_data/default/dujiaoka
解题思路:
- php-nginx Deployment 挂载 PVC
dujiaoka 到容器内 /app
- PVC dujiaoka 使用 NFS storageClass,映射到 NFS 服务器
/data/k8s_data/default/dujiaoka/
- 该目录为 Laravel 项目(独角数卡)源码
重点命令:
# 查看PVC配置
kubectl get pvc dujiaoka -o yaml
# storageClassName: nfs-client
# NFS服务器上的实际路径
ls /data/k8s_data/default/dujiaoka/
# Laravel项目目录结构
Q11. Telegram API代理域名是?
答案: kk.xilika.cc
解题思路:
- captcha-bot 的配置文件
config.toml 中设置了 Telegram API 代理
- 该文件位于 captcha-bot PVC 挂载目录或 ConfigMap 中
重点命令:
# 查看 captcha-bot 配置
grep api_proxy /data/k8s_data/default/captchaBot/config.toml
# api_proxy = "http://kk.xilika.cc"
# 代理域名: kk.xilika.cc
Q12. Telegram群名称?
答案: 西门庆交流群
解题思路:
- captcha-bot 验证码机器人记录在 MySQL captchabot 库的 user_captcha_record 表中
- 该表有 telegram_chat_name 字段,存储了Telegram群名称
重点命令:
kubectl exec mysql80-5fc9f7b6f7-kjgs2 -- mysql -u root -pLKKD23mjakl213dmmm --default-character-set=utf8mb4
USE captchabot;
SHOW TABLES; # advertise, user_captcha_record
DESCRIBE user_captcha_record; # 有 telegram_chat_name 字段
SELECT DISTINCT telegram_chat_name FROM user_captcha_record;
# → 西门庆交流群
Q13. 统计嫌疑人在Telegram上创建的群中2025年6月之后成功入群的人数