
Converta solicitações/respostas HTTP brutas em arquivos PCAP para testar regras Snort IDS e análise de segurança de rede. Suporta implantação Docker e uso por linha de comando.
Re2Pcap é a abreviação de Request2Pcap e Response2Pcap. Usuários da comunidade podem criar rapidamente arquivos PCAP usando Re2Pcap e testá-los contra regras do Snort.
Re2Pcap permite que você crie rapidamente um arquivo PCAP para uma requisição HTTP bruta como mostrado abaixo:
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
OU
docker run --rm --cap-add NET_ADMIN -p 5000:5000 --name re2pcap amitraut/re2pcap
Abra localhost:5000 no seu navegador web para acessar Re2Pcap ou use o script Re2Pcap-cmd para interagir com o container Re2Pcap e obter o PCAP no diretório de trabalho atual.
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"]
Conforme mostrado na imagem acima, Re2Pcap é uma aplicação Python3 baseada em Alpine Linux com interface web Flask.
Re2Pcap analisa os dados de entrada como requisição ou resposta HTTP bruta e, de fato, realiza a interação cliente/servidor enquanto captura pacotes. Após a interação, Re2Pcap apresenta os pacotes capturados como um arquivo PCAP.
Host: somedomain:5000, ou seja, porta 5000, altere a aplicação Flask para executar em outra porta modificando a chamada app.run no Re2Pcap.py, caso contrário o PCAP conterá a resposta da aplicação Flask.Se a requisição HTTP bruta não tiver o cabeçalho Accept-Encoding:, o cabeçalho Accept-Encoding: identity será adicionado à requisição.
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. =(
Os seguintes são os IPs de origem e destino nos PCAPs gerados pelo Re2Pcap:
Use a opção tcprewrite -D para modificar o IP de destino para outro, conforme sua necessidade. Você também pode usar tcpprep e tcprewrite para definir outros IPs como endpoints. Devido a resultados inconsistentes do tcprewrite, usei uma maneira alternativa para definir diferentes IPs de ORIGEM/DESTINO.
Especificar HTTP/1.1 302 FOUND como resposta gerará um PCAP com o máximo de tentativas para alcançar o recurso especificado no cabeçalho Location:. Exporte o primeiro fluxo HTTP usando o Wireshark nos testes, se você não quiser o ruído adicional de outros fluxos.
Espero que Re2Pcap seja útil. Se você enfrentar problemas com Re2Pcap, por favor, crie uma issue com seus dados de entrada. Obrigado! :)
Divirta-se 😊