▲GN⁺ 2025-02-04 | parent | ★ favorite | on: Httptap - 모든 Linux 프로그램의 HTTP/HTTPS 요청 보기 가능(github.com/monasticacademy)Hacker News 의견 README의 "How it was made" 섹션이 도구 자체만큼 흥미로움 공동체 생활과 명상 수련을 통해 소프트웨어 개발을 진행함 격리된 네트워크 네임스페이스에서 프로세스를 실행하는 아이디어가 천재적임 HTTPS 부분에 관심이 있으며, 임시 디렉토리의 CA 번들을 사용하도록 프로그램을 지시하는 환경 변수를 설정함 http_proxy와 유사한 문제가 발생할 수 있으며, 프로그램이 변수를 무시할 수 있음 /etc/resolv.conf에 오버레이 파일 시스템을 마운트하며, 임시 CA 번들을 사용하여 /etc/ca-certificates 디렉토리를 마운트하는 것이 도움이 되는지 궁금함 httptap은 루트 권한 없이 실행할 수 있는 프로세스 범위의 HTTP 트레이서임 httptap <command>로 실행하여 HTTP/HTTPS 요청과 응답을 표준 출력으로 추적할 수 있음 격리된 네트워크 네임스페이스에서 명령을 실행하며, 자체 TCP/IP 스택을 사용함 HTTP 프록시가 아니며, 명령이 HTTP 프록시를 사용하도록 설정할 필요가 없음 TLS 트래픽을 실시간으로 CA를 생성하여 해독함 iptables 규칙을 설치하거나 시스템 전역 변경을 하지 않음 루트 권한 없이 네트워크 트래픽을 분석할 수 있는 또 다른 도구는 rootless Podman과 Pasta임 --network=pasta:--pcap,myfile.pcap 옵션을 추가하여 네트워크 트래픽을 PCAP 파일로 기록함 기록된 PCAP 파일을 tshark로 분석하는 간단한 예제를 작성함 TUN 장치를 사용하는 것이 멋진 아이디어이며, "How it was made" 섹션이 Github README 중 최고임 Subtrace라는 도구를 개발 중이며, 자동으로 들어오고 나가는 요청을 가로챌 수 있음 Seccomp BPF를 사용하여 소켓, 연결, 수신, 수락 등의 시스템 호출을 가로채고, 모든 TCP 연결을 Subtrace를 통해 프록시함 TCP 스트림에서 HTTP 요청을 파싱하여 사용자에게 Chrome DevTools Network 탭에서 보여줌 nginx 설정을 디버그하는 데 즉시 사용할 예정임 현재는 curl -v를 사용하여 수동으로 출력물을 확인하지만, 이 도구는 리디렉션 루프 등을 즉시 파악할 수 있게 해줌 최근 mitmproxy에 유사한 기능을 구축했지만, 다른 트레이드오프가 있음 루트 권한이 필요하며, 자동 인증서 설치는 아직 없음 전용 네임스페이스에서 앱을 실행할 필요가 없어 이미 실행 중인 프로세스를 캡처할 수 있음 LD_PRELOAD를 사용하는 다른 방법은 고정 링크된 ELF, 예를 들어 golang 바이너리에서 실패할 수 있음 gVisor 사용자 공간 TCP/IP 스택의 훌륭한 활용임 Mitmproxy v11.1도 유사한 기능을 수행할 수 있음
Hacker News 의견
README의 "How it was made" 섹션이 도구 자체만큼 흥미로움
http_proxy와 유사한 문제가 발생할 수 있으며, 프로그램이 변수를 무시할 수 있음/etc/resolv.conf에 오버레이 파일 시스템을 마운트하며, 임시 CA 번들을 사용하여/etc/ca-certificates디렉토리를 마운트하는 것이 도움이 되는지 궁금함httptap은 루트 권한 없이 실행할 수 있는 프로세스 범위의 HTTP 트레이서임
httptap <command>로 실행하여 HTTP/HTTPS 요청과 응답을 표준 출력으로 추적할 수 있음루트 권한 없이 네트워크 트래픽을 분석할 수 있는 또 다른 도구는 rootless Podman과 Pasta임
--network=pasta:--pcap,myfile.pcap옵션을 추가하여 네트워크 트래픽을 PCAP 파일로 기록함TUN 장치를 사용하는 것이 멋진 아이디어이며, "How it was made" 섹션이 Github README 중 최고임
nginx 설정을 디버그하는 데 즉시 사용할 예정임
최근 mitmproxy에 유사한 기능을 구축했지만, 다른 트레이드오프가 있음
LD_PRELOAD를 사용하는 다른 방법은 고정 링크된 ELF, 예를 들어 golang 바이너리에서 실패할 수 있음
gVisor 사용자 공간 TCP/IP 스택의 훌륭한 활용임
Mitmproxy v11.1도 유사한 기능을 수행할 수 있음