服务器取证

上篇文章已经讲过怎么仿真e01软件,不会的同学去公众号看一下。

image-20251106172147775

服务器2可以看到网络位50的网,把nat网先改一下,不然一会连同不一会好使。改成仅主也可以,都一样。这边也可以看到shadow密码,比赛的时候如果一分钟跑不出来,直接放弃,救援模式改密码即可。

image-20251106181200752

开机按e

rw single init=/bin/bash passwd 密码 密码

7.执行touch /.autorelabel
8.退出exec /sbin/init

image-20251107095551298

就可以登录上来了。

删除的只是 旧的、已经退出的 k8s_POD pause 容器

docker ps -a | grep k8s_POD | grep Exited | awk '{print $1}' | xargs docker rm -f

docker ps -a | grep -E 'kube-apiserver|etcd|kube-scheduler|kube-controller-manager' | grep Exited | awk '{print $1}' | xargs docker rm -f

k8s一开始自己起不来 需要先将docker起来 ,然后会有一些镜像冲突,我们执行上面 两条命令即可。

image-20251111140802759

还需要将四台机器的防火墙都关掉,然后,整个集群是有两个业务的,一个captcha-bot,和一个发卡平台,也就是独角数卡发卡平台,用的是php-nginx镜像,在集群31669挂着。还有一个就是captcha-bot,两个公用一个mysql。然后就是 需要将master中的php-nginx-deployment-nginx.tar镜像传到node1和node2,因为k8s集群中,本机yaml文件指定跑在哪个node中,所以都要scp一份,并且load。把dujiao*.yaml都apply一下即可启动

请根据服务器检材,回答以下问题:
1、
node1节点的磁盘设备SHA256值前六位是?(字母全大写,答案格式:AAAAAA)( )
考生答案:
已保存
2、
集群配置了多少个node节点?(答案格式:1)( )
考生答案:
请输入答案
image-20251111140813233
3、
嫌疑人于什么时间修改master节点的root密码?(使用双位数格式,答案格式:00:00:00)( )
考生答案:
请输入答案
这里history可以看到命令 但是看不到时间,所以需要查日志

1
2
3
4
5
6
# 对于 RHEL/CentOS 系统
grep "passwd" /var/log/secure

# 对于 Ubuntu/Debian 系统
grep "passwd" /var/log/auth.log

image-20251111141834460

可以看到改了密码,20251111是因为会有日志备份,一共俩日期都看看。

4、
Docker的安装日期是?(使用双位数格式,答案格式:01月01日)( )
考生答案:
请输入答案
[root@master log]# rpm -qi docker-ce | grep “Install Date”
Install Date: 2025年04月08日 星期二 20时24分20秒
[root@master log]#

image-202511111421405185、
Docker通过配置守护进程以使用全局代理,该代理地址的端口是?(答案格式:1)( )
考生答案:
请输入答案
网上教的创建docker代理的文件都在,/etc/systemd/system/docker.service.d/http-proxy.conf,但是查看机器没有这文件,于是看history,image-20251111142851092

image-202511111429024666、
发卡网站使用的Mysql数据库对外访问端口是?(答案格式:1)( )
考生答案:
请输入答案
image-20251111145611180

这里就是 mysql的映射端口, type: NodePort时k8s将随机分配一个端口 在 30000到38000之间,kubectl get svc mysql -n default -o yaml

image-20251111145740015

就可以看到映射端口了 ,kubectl get services -Aimage-20251111145826213

7、
发卡网站部署使用的镜像名称是?(答案格式:root/root)( )
考生答案:
请输入答案

image-20251111152154163

可以看到所有pod中,这个pod比较可疑,并且挂掉了。在default中

kubectl describe pod captcha-bot-6b4d85b765-25xq6 -n default可以查看相关日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
[root@master ~]# kubectl describe pod captcha-bot-6b4d85b765-25xq6 -n default
Name: captcha-bot-6b4d85b765-25xq6
Namespace: default
Priority: 0
Service Account: default
Node: node2/192.168.50.82
Start Time: Wed, 17 Sep 2025 22:48:21 +0800
Labels: app=captcha-bot
pod-template-hash=6b4d85b765
Annotations: cni.projectcalico.org/containerID: 40716ec4ba113d25bf7c2890324d0b7634554681947b3599aedd59a08d30b1ab
cni.projectcalico.org/podIP: 10.224.104.21/32
cni.projectcalico.org/podIPs: 10.224.104.21/32
Status: Running
IP:
IPs: <none>
Controlled By: ReplicaSet/captcha-bot-6b4d85b765
Containers:
captcha-bot:
Container ID: docker://8fadf590e1a8404ee09bb866f09547d699bbddd825b1a8dff5722aaef720994d
Image: alpine:latest
Image ID: docker://sha256:9234e8fb04c47cfe0f49931e4ac7eb76fa904e33b7f8576aec0501c085f02516
Port: <none>
Host Port: <none>
Command:
./captcha-bot
State: Terminated
Reason: Error
Exit Code: 255
Started: Thu, 18 Sep 2025 16:44:30 +0800
Finished: Fri, 19 Sep 2025 09:34:09 +0800
Ready: False
Restart Count: 2
Environment: <none>
Mounts:
/app from captcha-bot-pv-storage (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-z278h (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
captcha-bot-pv-storage:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: captcha-bot
ReadOnly: false
kube-api-access-z278h:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedMount 2m18s (x20 over 66m) kubelet MountVolume.SetUp failed for volume "pvc-14ad3a73-9c46-4d85-88f6-6610dd06acf2" : mount failed: exit status 32
Mounting command: mount
Mounting arguments: -t nfs 192.168.50.83:/data/k8s_data/default/captchaBot /var/lib/kubelet/pods/2305463f-1ffb-45cd-ae2d-4997694ea3e9/volumes/kubernetes.io~nfs/pvc-14ad3a73-9c46-4d85-88f6-6610dd06acf2
Output: mount.nfs: No route to host

8、
当前Telegram群管机器人使用的容器ID的前六位是?(答案格式:123abc)( )
考生答案:
请输入答案
未保存
9、
发卡网站使用的缓存数据库是?(答案格式:mysql)( )
考生答案:
请输入答案

数据服务器四种有,/data/k8s_data/default/dujiaoka有一个.env里面包含了image-20251117111059396
10、
集群中配置的发卡网站代码运行所在的物理目录是?(答案格式:/root/root)( )
考生答案:
请输入答案
/data/k8s_data/上面的信息报错中,可以看到data/k8s_data/default/captchaBot ,我们看到相关文件在,/data/k8s_data/default/dujiaoka

image-2025111711135041311、
Telegram群管机器人配置的API代理域名是?(答案格式:www.xxx.com)(
考生答案:
请输入答案相关目录下可以查看到
image-20251117111507954
12、
嫌疑人在Telegram上创建的群名称是?(答案格式:比武群)( )
考生答案:
请输入答案访问即可
image-20251111182644686
13、
统计嫌疑人在Telegram上创建的群中2025年6月之后成功入群的人数为?(答案格式:1)( )
考生答案:
请输入答案,SELECT COUNT(*) AS join_count
FROM user_captcha_record
WHERE telegram_chat_name = ‘西门庆交流群’
AND captcha_status = 1
AND captcha_success_time >= ‘2025-06-01 00:00:00’;
image-20251117113123384

14、
据嫌疑人交代曾在发卡网上删除过一条订单数据,请找出该删除订单的订单号是?(答案格式:请按实际值填写)( )
考生答案:
请输入答案
这一步需要在没有搭建好k8s集群时,就要看这个文件,如果你已经创建好了集群,发现data目录下时03和04文件,那我建议你删除挂起的文件,从新挂起就能看到默认的文件,

image-20251117144946123

image-20251117145611432

也就是01 和02文件,image-20251117145644469

我们通过连接数据库得知,这里是8.0.43的mysql,所以解文件的时候需要8.0.43的mysqlbinlog,https://downloads.mysql.com/archives/community/,此处直接下载即可,.\mysqlbinlog.exe --no-defaults -vv --base64-output=DECODE-ROWS .\binlog.000002 >b.sqlimage-20251117145822903一个一个恢复mysql文件,image-20251117145906743

在20:58:54,有一条且仅有一条删除记录,答案为,4V8XNK8Q02MD5D2R

15、
发卡网站上2025年6月之后订单交易成功的总金额是?忽略被删除的数据(答案格式:1)( )
考生答案:
请输入答案,gpt一下
image-20251117144308389
16、
发卡网站的后台访问路径是?(答案格式:/root)( )
考生答案:
请输入答案,可以看到为/admin
image-20251117111059396
17、
计算出用户密码算法中Salt的值,并进行Base64编码,结果是?(答案格式:请按实际值填写)( )
考生答案:
请输入答案
find ./ -type f -mtime -150 递归五个月内修改过的文件 ,将里面的getsalt抠出来运行即可。

image-20251117152921332

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php 

function getSalt(){
$a = 'sdahjklhl212jkljass';
$b = hash('sha256', $a, true);
$c = substr($b, 0, 16);
$d = base64_decode('xPfGJQaE1zE5d+8=');
$e = '';
for($i=0;$i<strlen($d);$i++) {
$e .= chr(ord($d[$i]) ^ ord($c[$i]));
}
return $e;
}
echo getSalt();echo "\n";
echo base64_encode(getSalt());
?>
KCyFm
lAID2ktDeRlGbcg=

lAID2ktDeRlGbcg=

18、
发卡网站配置的邮件发送人地址是?(答案格式:abc@abc.com)( )
考生答案:
请输入答案
mysql里面找不到地址,那么应该在 redis中,image-20251117154639754

没有密码,端口在31678,image-20251117154718820

19、
当前发卡网站首页仪表盘中显示的发卡网站版本为?(答案格式:1.1.1)( )
考生答案:
请输入答案
由于刚刚看到是加盐的密码,所以用这个文件进行生成一个密码,数据库中给到admin,猜不到密码。

image-20251117161931268

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

require 'vendor/autoload.php'; // Composer 自动加载

use Illuminate\Hashing\BcryptHasher;

$hasher = new BcryptHasher();
$password = '123456';
$hash = $hasher->make($password);

echo "密码: $password\n";
echo "Bcrypt 哈希: $hash\n";
密码: 123456
Bcrypt 哈希: $2y$10$e/5C5/ks/asVw3AJeOZ0AeJDM7kpIipHJhsfyBiDY1HwiwvyRBDOq

同目录即可,直接登录image-20251117162000224

20、
当前发卡网站中绑定的订单推送Telegram用户id为(答案格式:请按实际值填写)( )
考生答案:
请输入答案,后台,邮件
image-20251117162505146

致谢

最后感谢您读到现在,这篇文章匆忙构成肯定有不周到或描述不正确的地方,期待业界师傅们用各种方式指正勘误。如果您感觉文章写的不错,给公众号点点关注,先谢谢大家了。

参考

1
2
3
4
5
https://yagami.vip/archives/2025-nian-shu-zheng-bei-chu-sai-fu-wu-qi-ti-jie-xi
https://mp.weixin.qq.com/s/-MZFKRd9K8rRfvik5BELYQ
https://mp.weixin.qq.com/s/APyP-mcd40kGCn2U1RKrZA
https://mp.weixin.qq.com/s/3krSu81iOGABqk9TNC6Sjw
https://blog.csdn.net/m0_37867238/article/details/154353116

emmm 太菜了
一直在路上