玄机靶场-第五届红明谷-异常行为溯源 WP
这道题挺有意思的,背景是说攻击者把服务器上的访问日志给删了,但是因为他们之前通过网络传过这些日志,正好被流量监控设备抓了个正着。所以题目给了个 PCAP 包,让我们从里面把日志还原出来,然后找出攻击者的真实 IP。
1. 流量包初探
拿到capture.pcap,第一反应肯定是先扔进 Wireshark 里跑一遍。不过考虑到这题只有 600 分,而且提示说“传输过日志数据”,我决定先用最简单粗暴的方法——直接提取字符串。
在 Linux 下直接敲命令:
strings capture.pcap>extracted.txt这招虽然土,但很多时候对付明文传输或者简单编码的数据特别好用。
2. 数据解码与日志还原
打开extracted.txt扫一眼,发现里面混了一大堆看着像 Base64 编码的字符串(全都是大小写字母、数字,还有结尾的等号)。这说明攻击者在传日志的时候,大概率是做了层 Base64 编码来混淆视听。
写个小脚本,或者直接用命令行把这些符合 Base64 特征的串给捞出来解一下:
catextracted.txt|grep-E"^[A-Za-z0-9+/=]+$"|base64-d>decoded_1.txt解完之后看了一眼decoded_1.txt,发现里面还是有些乱码或者结构化的 JSON 数据,里面有个msg字段特别显眼。顺着这个线索,写个正则把所有msg字段里的内容提出来,再做一次 Base64 解码。
这一步做完,终于看到庐山真面目了——全是标准的Nginx 访问日志格式。
3. 定位攻击者 IP
日志还原出来了,接下来的活儿就变成了纯粹的日志分析。
题目里有个很关键的提示:“攻击者在开始时曾尝试低密度的攻击,发现未被相关安全人员及时发现后进行了连续多日的攻击。”
这话翻译过来就是:在咱们还原出来的这段日志里,这个攻击者的 IP 肯定出现了不止一次,而且行为特征会比较明显(比如频繁请求不存在的路径、扫后台之类的)。
最快的排查方法,就是统计一下日志里各个 IP 的出现频次。直接上命令行三板斧:
grep-oE"\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"decoded_nginx.log|sort|uniq-c|sort-nr跑完结果一目了然,排在最前面、出现次数最多(4次)的 IP 是35.127.46.111。再去翻一下具体的日志记录,确认这个 IP 的确在做一些扫描探测的动作,基本就能实锤这就是我们要找的攻击者了。
4. 拿 Flag
题目要求提交的是这个 IP 的 MD5 值。
直接算一下:
echo-n"35.127.46.111"|md5sum结果是475ed6d7f74f586fb265f52eb42039b6。
套上格式,最终的 Flag 就是:flag{475ed6d7f74f586fb265f52eb42039b6}
5. 碎碎念
这题其实不难,主要考的就是基本功:从流量包里抠数据、Base64 解码、正则提取、以及简单的日志分析。
在真实的应急响应场景里,攻击者删日志是常规操作,但只要他们往外传数据,流量设备就能抓到。所以,除了做好本地日志审计,部署个好用的全流量分析设备(NDR)真的能省很多事儿。