
Преобразуйте сырые HTTP-запросы/ответы в файлы PCAP для тестирования правил Snort IDS и анализа сетевой безопасности. Поддерживает развертывание Docker и использование командной строки.
Re2Pcap — это сокращение от Request2Pcap и Response2Pcap. Пользователи сообщества могут быстро создать PCAP-файл с помощью Re2Pcap и протестировать их против правил Snort.
Re2Pcap позволяет быстро создать PCAP-файл для сырого HTTP-запроса, показанного ниже
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
# 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 — это приложение на Python3 на базе Alpine Linux с веб-интерфейсом на Flask
Re2Pcap анализирует входные данные как сырой HTTP-запрос или ответ и фактически выполняет взаимодействие клиент/сервер, захватывая пакеты. После взаимодействия Re2Pcap предоставляет захваченные пакеты в виде PCAP-файла
Host: somedomain:5000, т.е. порт 5000, измените приложение Flask, чтобы оно работало на другом порту, изменив вызов app.run в Re2Pcap.Py; в противном случае PCAP будет содержать ответ приложения FlaskЕсли в сыром HTTP-запросе отсутствует заголовок Accept-Encoding:, в запрос добавляется Accept-Encoding: identity
That's really fairly terrible. Accept-Encoding: identity is always valid, the RFCs say so. It should be utterly harmless to send it along. Otherwise, removing this requires us to replace httplib. That's a substantial bit of work. =(
Ниже приведены исходный и целевой IP-адреса в PCAP-файлах из Re2Pcap
Используйте опцию tcprewrite -D для изменения целевого IP на что-то другое по вашему усмотрению. Вы также можете использовать tcpprep и tcprewrite для установки других IP-адресов в качестве конечных точек. Из-за нестабильных результатов tcprewrite я использовал альтернативный способ установки различных SRC/DST IP
Указание HTTP/1.1 302 FOUND в качестве ответа приведет к созданию PCAP с максимально возможным количеством попыток достижения ресурса, указанного в заголовке Location:. Пожалуйста, экспортируйте первый HTTP-поток с помощью wireshark при тестировании, если вам не нравится дополнительный шум других потоков
Надеюсь, Re2Pcap окажется для вас полезным. Если у вас возникнут проблемы с Re2Pcap, пожалуйста, создайте issue с вашими входными данными. Спасибо! :)
Наслаждайтесь 😊