
生のHTTPリクエスト/レスポンスをPCAPファイルに変換し、Snort IDSルールのテストやネットワークセキュリティ分析に使用します。Dockerデプロイメントとコマンドラインでの使用に対応しています。
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
Web ブラウザで localhost:5000 を開いて Re2Pcap にアクセスするか、Re2Pcap-cmd スクリプトを使用して Re2Pcap コンテナと対話し、現在の作業ディレクトリに PCAP を取得します。
FROM alpine
# Get required dependencies and setup for 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
# Run application at start of new container
CMD ["/usr/bin/python3", "Re2Pcap.py"]
上の画像に示すように、Re2Pcap は Alpine Linux ベースの Python3 アプリケーションで、Flask ベースの Web インターフェースを備えています。
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 を置き換える必要があります。それはかなりの作業量です。=(
以下のソースIPと宛先IPが Re2Pcap からの PCAP に使用されます。
必要に応じて tcprewrite -D オプションを使用して宛先IPを変更してください。tcpprep および tcprewrite を使用して他の IP をエンドポイントとして設定することもできます。tcprewrite の結果が一貫しないため、別の SRC/DST IP を設定する別の方法を使用しています。
レスポンスとして HTTP/1.1 302 FOUND を指定すると、Location: ヘッダーで指定されたリソースに到達するために最大限のリトライが行われた PCAP が生成されます。テストで追加ノイズが気になる場合は、Wireshark を使用して最初の HTTP ストリームをエクスポートしてください。
Re2Pcap がお役に立てば幸いです。問題が発生した場合は、入力を添えて Issue を作成してください。ありがとうございます! :)
お楽しみください 😊