Re2Pcap 是 Request2Pcap 和 Response2Pcap 的缩写。社区用户可以使用 Re2Pcap 快速创建 PCAP 文件,并针对 Snort 规则进行测试。
Re2Pcap 允许你快速为如下所示的原始HTTP请求创建 PCAP 文件:
POST /admin/tools/iplogging.cgi HTTP/1.1
Host: 192.168.13.31:80
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/plain, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.13.31:80/admin/tools/iplogging.html
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 63
Cookie: token=1e9c07e135a15e40b3290c320245ca9a
Connection: close
tcpdumpParams=tcpdump -z reboot -G 2 -i eth0&stateRequest=start
git clone https://github.com/Cisco-Talos/Re2Pcap.git
cd Re2Pcap/
./re2pcap.sh
或者
docker run --rm --cap-add NET_ADMIN -p 5000:5000 --name re2pcap amitraut/re2pcap
在浏览器中打开 localhost:5000 访问 Re2Pcap,或使用 Re2Pcap-cmd 脚本与 Re2Pcap 容器交互,在当前工作目录获取 PCAP 文件。
FROM alpine
# 获取所需依赖并为 Re2Pcap 进行设置
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk update && apk add python3 tcpdump tcpreplay
RUN pip3 install --upgrade pip
RUN pip3 install pexpect flask requests httpretty requests-toolbelt
COPY Re2Pcap/ /Re2Pcap
RUN cd Re2Pcap && chmod +x Re2Pcap.py
WORKDIR /Re2Pcap
EXPOSE 5000/tcp
# 新容器启动时运行应用
CMD ["/usr/bin/python3", "Re2Pcap.py"]
如上图所示,Re2Pcap 是基于 Alpine Linux 的 Python3 应用程序,带有 Flask 网页界面。
Re2Pcap 将输入数据解析为原始 HTTP 请求或响应,并在捕获数据包的同时实际执行客户端/服务器交互。交互结束后,Re2Pcap 将捕获的数据包呈现为 PCAP 文件。
Host: somedomain:5000(即端口 5000)创建 PCAP,请修改 Re2Pcap.py 中的 app.run 调用,将 Flask 应用程序运行在其他端口上,否则 PCAP 会包含 Flask 应用程序的响应。如果原始 HTTP 请求没有 Accept-Encoding: 头部,则会在请求中添加 Accept-Encoding: identity。
这确实相当糟糕。Accept-Encoding: identity 始终是有效的,RFC 如此规定。发送它应该是完全无害的。否则,移除这个就需要我们替换 httplib。这是一项相当多的工作。=(
Re2Pcap 生成的 PCAP 中的源和目标 IP 如下:
请使用 tcprewrite -D 选项根据需要将目标 IP 修改为其他地址。你也可以使用 tcpprep 和 tcprewrite 设置其他端点 IP。由于 tcprewrite 的结果不一致,我使用了另一种方法来设置不同的源/目标 IP。
如果指定 HTTP/1.1 302 FOUND 作为响应,生成的 PCAP 会尝试尽可能多的重试以访问 Location: 头部指定的资源。如果不需要这些额外的干扰流,请在测试中使用 Wireshark 导出第一个 HTTP 流。
希望你觉得 Re2Pcap 有用。如果遇到问题,请提供你的输入并创建一个 issue。谢谢!:)
享受吧 😊