
Konvertieren Sie rohe HTTP-Anfragen/-Antworten in PCAP-Dateien zum Testen von Snort-IDS-Regeln und zur Netzwerksicherheitsanalyse. Unterstützt Docker-Bereitstellung und Befehlszeilennutzung.
Re2Pcap ist eine Abkürzung für Request2Pcap und Response2Pcap. Community-Nutzer können schnell PCAP-Dateien mit Re2Pcap erstellen und sie gegen Snort-Regeln testen.
Re2Pcap ermöglicht es Ihnen, schnell PCAP-Dateien für die unten gezeigte rohe HTTP-Anfrage zu erstellen
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
OR
docker run --rm --cap-add NET_ADMIN -p 5000:5000 --name re2pcap amitraut/re2pcap
Öffnen Sie localhost:5000 in Ihrem Webbrowser, um auf Re2Pcap zuzugreifen, oder verwenden Sie das Skript Re2Pcap-cmd, um mit dem Re2Pcap-Container zu interagieren und PCAP im aktuellen Arbeitsverzeichnis zu erhalten
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"]
Wie im obigen Bild gezeigt, ist Re2Pcap eine auf Alpine Linux basierende Python3-Anwendung mit einer Flask-basierten Weboberfläche
Re2Pcap analysiert die Eingabedaten als rohe HTTP-Anfrage oder -Antwort und führt tatsächlich eine Client/Server-Interaktion durch, während Pakete aufgezeichnet werden. Nach der Interaktion präsentiert Re2Pcap die aufgezeichneten Pakete als PCAP-Datei
Host: somedomain:5000 (d.h. Port 5000) erstellen, ändern Sie bitte die Flask-Anwendung so, dass sie auf einem anderen Port läuft, indem Sie den app.run-Aufruf in Re2Pcap.Py ändern, andernfalls enthält die PCAP die Antwort der Flask-AnwendungWenn die rohe HTTP-Anfrage keinen Accept-Encoding:-Header enthält, wird Accept-Encoding: identity zur Anfrage hinzugefügt
Das ist wirklich ziemlich schrecklich. Accept-Encoding: identity ist immer gültig, so steht es in den RFCs. Es sollte völlig harmlos sein, es mitzusenden. Andernfalls müssten wir httplib ersetzen, um dies zu entfernen. Das wäre eine ziemliche Menge Arbeit. =(
Die folgenden sind Quell- und Ziel-IPs in PCAPs von Re2Pcap:
Bitte verwenden Sie die Option tcprewrite -D, um die Ziel-IP nach Bedarf zu ändern. Sie können auch tcpprep und tcprewrite verwenden, um andere IPs als Endpunkte festzulegen. Aufgrund inkonsistenter Ergebnisse von tcprewrite habe ich einen alternativen Weg verwendet, um andere SRC/DST-IPs zu setzen.
Die Angabe von HTTP/1.1 302 FOUND als Antwort erzeugt eine PCAP mit maximal möglichen Wiederholungsversuchen, um die im Location:-Header angegebene Ressource zu erreichen. Bitte exportieren Sie beim Testen den ersten HTTP-Stream mit Wireshark, wenn Sie das zusätzliche Rauschen der anderen Streams nicht mögen.
Ich hoffe, Re2Pcap ist hilfreich für Sie. Wenn Sie Probleme mit Re2Pcap haben, erstellen Sie bitte ein Issue mit Ihren Eingaben. Vielen Dank! :)
Viel Spaß 😊