Network Traffic Analysis
拿到流量包后,第一件事就是可以先 strings | grep flag{ 一下,说不定 flag 就直接出了
当然也可以使用@凤二西师傅的 破空_flag查找工具3.5.exe 来搜索 flag
wireshark 基础
常见过滤
http.request.method == "POST"
http.request.full_uri == “XXX”
# 包含什么内容的帧
frame contains "XXX"
tshark使用教程
导出流量包中所有POST数据包的data数据
tshark -r 1.pcapng -Y "http.request.method == POST" -T fields -e data.data > data.txt
# -r:指定了需要读取的文件
# -Y:使用过滤器
# -T:表示仅仅输出所选字段
# -e:指定提取的字段
# uinq:去除重复行
# sed '/^\s*$/d':在sed中使用正则表达式过滤掉所有空行(其中 ^\s*$ 匹配空行,d 表示删除)
python 处理
import json
import subprocess
output = ""
file_path = "" # 流量包的路径
command = [
"tshark", # tshark的路径,如果在环境变量里这里就不用改
'-r', file_path, # 读取指定的 pcapng 文件
'-Y', 'http', # 过滤出 HTTP 数据包
'-T', 'json', # 输出为 JSON 格式
'-e', 'http.request.method', # 请求方法
'-e', 'http.host', # 请求主机
'-e', 'http.request.uri', # 请求 URI
'-e', 'http.user_agent', # 用户代理
'-e', 'http.file_data', # 请求中的文件数据(POST 请求的内容)
'-e', 'http.response.code', # 响应代码
'-e', 'http.response.phrase', # 响应短语
'-e', 'http.content_type' # 响应内容类型
]
result = subprocess.run(
command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
json_output = json.loads(result.stdout)
# print(json.dumps(json_output, indent=4)) # 这个输出是用来调试的,可以移除
# 遍历 JSON 数据并提取字段
for packet in json_output:
layers = packet.get('_source', {}).get('layers', {})
request_method = layers.get('http.request.method', ['None'])[0]
request_host = layers.get('http.host', ['None'])[0]
request_uri = layers.get('http.request.uri', ['None'])[0]
user_agent = layers.get('http.user_agent', ['None'])[0]
file_data = layers.get('http.file_data', ['None'])[0]
response_code = layers.get('http.response.code', ['None'])[0]
response_phrase = layers.get('http.response.phrase', ['None'])[0]
content_type = layers.get('http.content_type', ['None'])[0]
流量分析基础考点
1. 直接用wireshark导出为pcap文件然后用networkminer分析
2. 拉入kali用tcpxtract提取文件:tcpxtract -f +文件名.pcap
3. 直接追踪流提取16进制,根据文件头尾提取出文件
USB 流量分析
流量包中数据存储的字段有两种:usb.capdata 和 usbhid.data
tshark -r example.pcapng -T fields -e usb.capdata | sed '/^\s*$/d' > data.txt
tshark -r example.pcapng -T fields -e usbhid.data | sed '/^\s*$/d' > data.txt
tshark -r example.pcapng -Y 'usb.src == "2.3.1"' -T fields -e usbhid.data | sed '/^\s*$/d' > data.txt
# -r:指定了需要读取的文件
# -Y:使用过滤器
# -T:表示仅仅输出所选字段
# -e:指定提取的字段
# sed '/^\s*$/d':在sed中使用正则表达式过滤掉所有空行(其中 ^\s*$ 匹配空行,d 表示删除)