8P by neo 25일전 | ★ favorite | 댓글 2개
  • httptap은 리눅스 프로그램이 수행하는 HTTP 및 HTTPS 요청을 쉽게 볼 수 있게 해주는 도구
    • httptap -- 를 사용하여 특정 명령어의 네트워크 요청을 추적할 수 있음
  • 예를 들어, curl 명령어를 사용하여 특정 URL에 요청을 보내면, httptap은 해당 요청과 응답을 출력
    • httptap은 루트 권한이 필요하지 않으며, 시스템 전반에 영향을 미치지 않음
    • 현재 리눅스에서만 작동하며, 다른 운영 체제로 포팅하기는 어려움
  • 설치 방법
  • 빠른 시작
    • curl 명령어를 사용하여 HTTP 요청을 보내고, httptap으로 요청과 응답을 확인할 수 있음
    • -L 옵션을 사용하여 리다이렉트를 따르는 경우, 추가적인 HTTP 요청이 발생함
  • Google Cloud 및 kubectl 사용 예시
    • gcloud compute instances list 명령어를 사용하여 Google Cloud의 컴퓨트 인스턴스를 나열할 때 발생하는 HTTP 요청을 추적할 수 있음
    • kubectl get all 명령어를 사용하여 Kubernetes 클러스터의 리소스를 나열할 때 발생하는 HTTP 요청을 추적할 수 있음
  • DNS-over-HTTP
    • curl--doh-url 옵션을 사용하여 DNS-over-HTTP 요청을 수행할 수 있음.
    • httptap을 사용하여 DNS 요청과 응답을 확인할 수 있음.
  • HAR 출력
    • HTTP 요청과 응답을 HAR 파일로 덤프할 수 있음.
    • HAR 파일은 다양한 뷰어를 통해 시각화할 수 있음.
  • 작동 원리
    • httptap은 네트워크 네임스페이스를 사용하여 명령어를 격리된 환경에서 실행
    • TUN 디바이스를 생성하여 네트워크 트래픽을 추적하고, HTTPS 트래픽을 해독하기 위해 임시 인증 기관을 생성
  • 주의 사항
    • 프로세스는 들어오는 네트워크 연결을 수신할 수 없음.
    • /dev/net/tun에 대한 접근 권한이 필요함.
    • 모든 ICMP 에코 요청은 실제 네트워크로 ICMP 패킷을 보내지 않고 에코됨

it was developed at the Monastic Academy in Vermont in the US. We believe that a monastic schedule, and the practice of the Buddhist spiritual path more generally, provide ideal conditions for technological development.

테스트하면서 깃헙을 보니. 수도원 수련? 하시는 분들이 영적 성취의 일환으로 만들었나 싶기도 합니다.

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도 유사한 기능을 수행할 수 있음