
Principiante 新手向
背景
题目传送门 El Topo DNS
我们的监控系统(SIEM/IDS)提示,有一个来自公共 Web 服务器(192.168.1.10)的异常网络行为。这种行为非常可疑,需要我们立即处理。初步的遥测数据表明,这并非一次简单的攻击行为,而是一个隐蔽的攻击行动。主要推测是服务器已被入侵,攻击者正在利用 DNS 隧道来传输控制指令,同时可能还存在数据泄露的情况。
自蓝色团队成立以来,他一直被任命为此次事件的首席分析师。你的任务是从最初的入侵开始,一直到最终的结果,完整重建整个攻击链。
你需要分析所提供的各种证据,以找出其中的“隐藏线索”。袭击者将他的行为隐藏在成千上万条合法的交通记录中。
你的研究应该能够回答 CTF 平台上的关键问题。
服务器IP 192.168.43.71
账户 auditor:auditor
任务
_stager_程序为p.sh提供了哪条外部 IP 地址来连接 Web 服务器呢?
最初,那个最可能被用于发起攻击的 PHP 文件是什么?只是文件名而已。
在 dns.log 里,C2 回连时第一次出现的 beacon 域名是哪一个完整域名?
用于提取 shadow 文件的数据域是什么?只是数据域本身,不包括子数据域。
攻击者使用了哪种网络服务(协议)来攻击内部服务器 10.0.0.50?
在内部服务器上进行身份验证时,使用了什么用户名?
成功进行横向移动时使用了什么密码?
攻击者从内部服务器中盗取的确切文件名称是什么?
实施
首先使用 auditor:auditor 登录到服务器

任务一
_stager_程序为p.sh提供了哪条外部 IP 地址来连接 Web 服务器呢?
auditor@debian:~/dfir_eltopo$ cat access.log | grep "p.sh"
192.168.1.10 - - [10/nov/2025:09:10:13 +0100] "GET http://162.248.1.100/p.sh HTTP/1.1" 200 1024
p.sh 可在服务器 162.248.1.100 被访问下载
服务器IP为 162.248.1.100
任务二
最初,那个最可能被用于发起攻击的 PHP 文件是什么?只是文件名而已。
现在要找发起攻击的php文件,不难想到去定位 POST 请求,并以 php 后缀作过滤 (access.log) 文件
access.log 结构
auditor@debian:~/dfir_eltopo$ head -n 5 access.log
10.1.1.241 - - [10/nov/2025:09:10:09 +0100] "GET /images/logo.png HTTP/1.1" 200 2477
10.1.1.233 - - [10/nov/2025:09:10:09 +0100] "GET /images/logo.png HTTP/1.1" 200 5048
10.1.1.153 - - [10/nov/2025:09:10:12 +0100] "GET /images/logo.png HTTP/1.1" 200 3229
10.1.1.158 - - [10/nov/2025:09:10:11 +0100] "GET /about.html HTTP/1.1" 200 5118
10.1.1.188 - - [10/nov/2025:09:10:09 +0100] "GET /index.html HTTP/1.1" 200 4150
IP - - [时间 时区] “方法 路径 协议” 状态码 响应大小
10.1.1.188 - - [10/nov/2025:09:10:09 +0100] “GET /index.html HTTP/1.1” 200 4150
最简 grep 查询
grep 'POST' access.log | grep '\.php'
->
auditor@debian:~/dfir_eltopo$ grep 'POST' access.log | grep '\.php'
1.2.3.4 - - [10/nov/2025:09:10:13 +0100] "POST /upload.php HTTP/1.1" 200 150
文件名为 upload.php
任务三
在日志中观察到的 C2 的第一次_beaconing查询的 FQDN 是什么?
这句话的意思是:
- C2:Command and Control,攻击者的控制端
- beaconing:木马/后门定时“报到”或“打点”回连 C2
- FQDN:Fully Qualified Domain Name,完整域名
即:
“在日志里,受害主机第一次向攻击者控制端发起心跳/报到时,请求的完整域名是什么?”
先简单看一下 dns.log
auditor@debian:~/dfir_eltopo$ head -n 5 dns.log
[2025-11-10T09:10:13] 192.168.1.10 -> DNS_SERVER Query: A? www.cdn.example.com
[2025-11-10T09:10:13] 192.168.1.10 -> DNS_SERVER Query: A? www.updates.ubuntu.com
[2025-11-10T09:10:12] 192.168.1.10 -> DNS_SERVER Query: A? www.cdn.example.com
[2025-11-10T09:10:12] 192.168.1.10 -> DNS_SERVER Query: A? www.cdn.example.com
[2025-11-10T09:10:13] 192.168.1.10 -> DNS_SERVER Query: A? www.google.com
dns.log 结构
[时间戳] 源IP -> 目标(DNS服务器) Query: 记录类型? 查询域名
[2025-11-10T09:10:13] 192.168.1.10 -> DNS_SERVER Query: A? www.google.com
即
在 2025-11-10 09:10:13,主机 192.168.1.10 向 DNS 服务器发起了一次 A 记录查询,查询的域名是 www.google.com。
可以先统计一下行数
auditor@debian:~/dfir_eltopo$ wc -l dns.log
1008 dns.log
1008 条,不算太多
手动看一遍,目标是找可疑的恶意域名
more dns.log
或者直接查询
grep -n "beacon" dns.log
->
auditor@debian:~/dfir_eltopo$ grep -n "beacon" dns.log
65:[2025-11-10T09:10:13] 192.168.1.10 -> DNS_SERVER Query: A? 1.beacon.c2.eltopo.thl
623:[2025-11-10T09:10:13] 192.168.1.10 -> DNS_SERVER Query: A? 2.beacon.c2.eltopo.thl
690:[2025-11-10T09:10:13] 192.168.1.10 -> DNS_SERVER Query: A? 3.beacon.c2.eltopo.thl
第一次就是 1.beacon.c2.eltopo.thl
任务四
用于提取 shadow 文件的数据域是什么?只是数据域本身,不包括子数据域。
即“攻击者在通过 DNS 把 /etc/shadow 的内容往外传时,使用的主数据域名是什么?只要主域名。”
拆开看:
- 影子文件:就是 Linux 的 /etc/shadow
- 数据域:承载外传数据的域名
- 不包括子数据域:不要写前面那段 Base64 数据,只写后面的固定主域
用过 dns.log 就知道这里类似于 dnslog 的数据外带,这里要的部分就是后面的主域名,去除外带的数据字段
刚才手工看已经有了结果

故数据域为 data.eltopo.thl
任务五
攻击者使用了哪种网络服务(协议)来攻击内部服务器 10.0.0.50?
“攻击者在去连接内网主机 10.0.0.50 并实施后续操作时,用的是什么网络服务/通信协议?”
即
- FTP
- SSH
- SMB
- HTTP
服务器给了 ftp.log,并且只有 10 条记录,直接看
auditor@debian:~/dfir_eltopo$ cat ftp.log
[09:10:13] 192.168.1.10 -> 10.0.0.50 FTP 220 (vsFTPd 3.0.3)
[09:10:13] 192.168.1.10 -> 10.0.0.50 FTP USER devuser
[09:10:13] 10.0.0.50 -> 192.168.1.10 FTP 331 Please specify the password.
[09:10:13] 192.168.1.10 -> 10.0.0.50 FTP PASS developer123
[09:10:13] 10.0.0.50 -> 192.168.1.10 FTP 230 Login successful.
[09:10:13] 192.168.1.10 -> 10.0.0.50 FTP LIST
[09:10:13] 10.0.0.50 -> 192.168.1.10 FTP 226 Directory send OK.
[09:10:13] 192.168.1.10 -> 10.0.0.50 FTP GET client_database_backup.zip
[09:10:13] 10.0.0.50 -> 192.168.1.10 FTP 150 Opening BINARY mode data connection.
[09:10:13] 10.0.0.50 -> 192.168.1.10 FTP 226 Transfer complete.
那么很明显,攻击者通过 FTP 进入内部服务器
其他问题的答案也很明显了(使用过ftp的很容易看出里面的记录信息)
->
在内部服务器上进行身份验证时,使用了什么用户名?:devuser
成功进行横向移动时使用了什么密码?:developer123
攻击者从内部服务器中盗取的确切文件名称是什么?:client_database_backup.zip
AI的表现
总耗时 8min10s
