
SSL/TLS 연결을 종료하고, 실시간으로 인증서를 위조하며, 네트워크 포렌식 및 침투 테스트를 위해 복호화된 트래픽을 기록하는 투명한 중간자 프록시입니다.
SSLsplit은 SSL/TLS로 암호화된 네트워크 연결에 대한 중간자 공격 도구입니다. 네트워크 포렌식, 애플리케이션 보안 분석 및 침투 테스트에 유용하게 사용될 수 있습니다.
SSLsplit은 네트워크 주소 변환 엔진을 사용하여 리디렉션된 연결을 투명하게 종료하도록 설계되었습니다. 그런 다음 SSLsplit은 SSL/TLS를 종료하고 원래 대상 주소로 새 SSL/TLS 연결을 시작하며 전송된 모든 데이터를 로깅합니다. NAT 기반 작동 외에도 SSLsplit은 정적 대상을 지원하고 SNI로 표시된 서버 이름을 업스트림 대상으로 사용합니다. SSLsplit은 순수하게 투명 프록시이며 브라우저에서 구성된 HTTP 또는 SOCKS 프록시로 작동할 수 없습니다.
SSLsplit은 IPv4 및 IPv6 모두에서 일반 TCP, 일반 SSL, HTTP 및 HTTPS 연결을 지원합니다. 또한 SMTP STARTTLS 및 유사한 업그레이드 메커니즘을 일반적으로 지원하기 위해 일반 TCP를 SSL로 동적으로 업그레이드할 수 있습니다. SSLsplit은 SNI(서버 이름 표시)를 완전히 지원하며 RSA, DSA 및 ECDSA 키와 DHE 및 ECDHE 암호 제품군과 함께 작동할 수 있습니다. 연결된 OpenSSL 버전에 따라 SSLsplit은 SSL 3.0, TLS 1.0, TLS 1.1 및 TLS 1.2를 지원하며 선택적으로 SSL 2.0도 지원합니다.
SSL 및 HTTPS 연결의 경우 SSLsplit은 원본 서버 인증서의 주체 DN, subjectAltName 확장 및 기타 특성을 모방하여 위조된 X509v3 인증서를 즉시 생성 및 서명합니다. SSLsplit은 위조된 인증서를 생성하는 대신 개인 키를 사용할 수 있는 기존 인증서를 사용할 수 있습니다. SSLsplit은 NULL 접두사 CN 인증서를 지원하지만 그 외에는 SSL/TLS 스택의 특정 인증서 검증 취약점에 대한 익스플로잇을 구현하지 않습니다.
SSLsplit은 일반적으로 MitM 공격을 방지하거나 더 어렵게 만드는 메커니즘에 대한 여러 방어 기능을 구현합니다. SSLsplit은 OCSP 요청을 일반적인 방식으로 거부할 수 있습니다. HTTP 및 HTTPS 연결의 경우 SSLsplit은 헤더를 변조하여 서버가 지시하는 공개 키 고정(HPKP)을 방지하고, 엄격한 전송 보안 제한(HSTS)을 피하며, 인증서 투명성 적용(Expect-CT)을 피하고, QUIC/SPDY, HTTP/2 또는 WebSockets(Upgrade, Alternate Protocols)로의 전환을 방지합니다. 로그를 더 읽기 쉽게 만들기 위해 HTTP 압축, 인코딩 및 keep-alive가 비활성화됩니다.
로깅 옵션에는 기존 SSLsplit 연결 및 콘텐츠 로그 파일뿐만 아니라 PCAP 파일 및 암호 해독된 트래픽을 네트워크 인터페이스로 미러링하는 것이 포함됩니다. 또한 인증서, 마스터 시크릿 및 로컬 프로세스 정보를 로깅할 수 있습니다.
SSLsplit 사용 및 다양한 NAT 엔진 설정에 대한 자세한 내용은 매뉴얼 페이지 sslsplit(1)을 참조하십시오.
SSLsplit은 기본적으로 OpenSSL, libevent 2.x, libpcap 및 libnet 1.1.x 라이브러리에 의존합니다. 미러링 기능을 생략하면 libpcap과 libnet이 필요하지 않습니다.
빌드는 GNU make와 PATH에 POSIX.2 환경이 필요합니다.
가능한 경우 pkg-config를 사용하여 종속성을 찾고 구성합니다.
선택적 단위 테스트는 check 라이브러리에 의존합니다.
SSLsplit은 현재 다음 운영 체제 및 NAT 메커니즘을 지원합니다:
로컬 프로세스 정보(-i) 지원은 현재 Mac OS X 및 FreeBSD에서 사용할 수 있습니다.
SSL/TLS 기능 및 호환성은 연결된 OpenSSL 버전에 크게 의존합니다. 최적의 결과를 위해 최신 OpenSSL 또는 LibreSSL 릴리스를 사용하십시오.
위의 요구 사항이 충족되면 다음을 실행합니다:
make
make test # 선택적 단위 테스트
make sudotest # 권한이 필요한 선택적 단위 테스트
make install # 선택적 설치
종속성은 pkg-config를 사용하여 자동 구성됩니다. 종속성이 인식되지 않고 PKG_CONFIG_PATH를 수정해도 도움이 되지 않으면 OPENSSL_BASE, LIBEVENT_BASE, LIBPCAP_BASE, LIBNET_BASE 및/또는 CHECK_BASE를 각각의 접두사로 설정하여 해당 위치를 수동으로 지정할 수 있습니다.
기본 설치 접두사(/usr/local)는 PREFIX를 설정하여 재정의할 수 있습니다. 더 많은 빌드 옵션 및 빌드 시간 기본값은 GNUmakefile 및 defaults.h를 참조하십시오.
사용자 문서는 매뉴얼 페이지 sslsplit(1) 및 sslsplit.conf(5)를 참조하십시오. 릴리스 간 주요 변경 사항을 나열한 릴리스 노트는 NEWS.md를, 보안 취약점 공개에 대한 정보는 SECURITY.md를 참조하십시오.
SSLsplit은 2-clause BSD 라이선스로 제공됩니다. SSLsplit에는 MIT 및 APSL 라이선스에 따라 라이선스가 부여된 구성 요소가 포함되어 있습니다. 자세한 내용은 LICENSE, LICENSE.contrib 및 LICENSE.third와 각 소스 파일 헤더를 참조하십시오.
기여자 목록은 AUTHORS.md를 참조하십시오.
SSLsplit은 Claes M. Nyberg의 mitm-ssl과 Moxie Marlinspike의 sslsniff에서 영감을 받았지만 소스 코드를 공유하지 않습니다.