thehackerlabs-ElTopoDNS-writeup 的文章封面
返回文章列表
Neuroblue writing

thehackerlabs-ElTopoDNS-writeup

防御性安全,linux,日志分析,dns, ftp

image-20260610094801609

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 登录到服务器

image-20260610095207994

任务一

_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 的数据外带,这里要的部分就是后面的主域名,去除外带的数据字段

刚才手工看已经有了结果

image-20260610101711500

故数据域为 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

image-20260610103552935