
원시 HTTP 요청/응답을 Snort IDS 규칙 및 네트워크 보안 분석 테스트를 위해 PCAP 파일로 변환합니다. 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
OR
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은 Flask 기반 웹 인터페이스를 갖춘 Alpine Linux 기반 Python3 애플리케이션입니다.
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의 일관성 없는 결과로 인해 다른 SRC/DST IP를 설정하는 대체 방법을 사용했습니다.
응답으로 HTTP/1.1 302 FOUND를 지정하면 Location: 헤더에 지정된 리소스에 도달하기 위해 가능한 최대 재시도 횟수로 PCAP이 생성됩니다. 다른 스트림의 추가 노이즈가 마음에 들지 않으면 테스트에서 Wireshark를 사용하여 첫 번째 HTTP 스트림을 내보내십시오.
Re2Pcap이 도움이 되길 바랍니다. Re2Pcap에 문제가 발생하면 입력 내용과 함께 이슈를 생성해 주세요. 감사합니다! :)
즐기세요 😊