https://www.roe.ch/sslsplit
SSLSPLIT는 SSL/TLS 암호화 네트워크 연결에 대한 중간 공격을위한 도구입니다. 네트워크 법의학, 응용 프로그램 보안 분석 및 침투 테스트에 유용합니다.
SSLSPLIT는 네트워크 주소 변환 엔진을 사용하여 리디렉션되는 연결을 투명하게 종료하도록 설계되었습니다. SSLSPLIT는 SSL/TLS를 종료하고 원래 대상 주소에 대한 새로운 SSL/TLS 연결을 시작하는 동안 전송 된 모든 데이터를 기록합니다. NAT 기반 작업 외에도 SSLSPlit은 정적 대상을 지원하고 SNI가 표시 한 서버 이름을 업스트림 대상으로 사용합니다. SSLSPLIT는 순전히 투명한 프록시이며 브라우저에서 구성된 HTTP 또는 양말 프록시 역할을 할 수 없습니다.
SSLSPLIT는 IPv4 및 IPv6 모두에서 일반 TCP, 일반 SSL, HTTP 및 HTTPS 연결을 지원합니다. 또한 SMTP StartTL 및 유사한 업그레이드 메커니즘을 일반적으로 지원하기 위해 일반 TCP를 SSL로 동적으로 업그레이드 할 수 있습니다. SSLSPLIT는 SNI (Server Name Indication)를 완벽하게 지원하며 RSA, DSA 및 ECDSA 키 및 DHE 및 ECDHE Cipher Suites에서 작업 할 수 있습니다. SSLSPlit은 OpenSSL 버전에 따라 SSL 3.0, TLS 1.0, TLS 1.1 및 TLS 1.2 및 선택적으로 SSL 2.0을 지원합니다.
SSL 및 HTTPS 연결의 경우 SSLSPlit은 원래의 X509V3 인증서를 생성하고 표시하여 원래 서버 인증서의 제목 DN, SubcilName Extension 및 기타 특성을 모방합니다. SSLSPLIT에는 위조 된 것들을 생성하는 대신 개인 키를 사용할 수있는 기존 인증서를 사용할 수 있습니다. SSLSPLIT는 NULL-PREFIX CN 인증서를 지원하지만 SSL/TLS 스택의 특정 인증서 확인 취약점에 대한 익스플로잇을 구현하지 않습니다.
SSLSPLIT는 일반적으로 MITM 공격을 방지하거나 더 어렵게 만드는 메커니즘에 대한 여러 방어를 구현합니다. SSLSPlit은 일반적인 방식으로 OCSP 요청을 거부 할 수 있습니다. HTTP 및 HTTPS 연결의 경우 SSLSPlit 헤더는 서버로 인한 공개 키 고정 (HST)을 방지하고 엄격한 전송 보안 제한 (HST)을 피하고 인증서 투명성 시행 (예상 CT)을 피하고 quic/spdy, http/2 또는 websockets로 전환하는 것을 방지합니다 (업그레이드, 대체 프로토콜). HTTP 압축, 인코딩 및 유지 경화가 비활성화되어 로그를보다 읽기 쉽게 만들 수 있습니다.
로깅 옵션에는 기존 SSLSPLIT 연결 및 컨텐츠 로그 파일뿐만 아니라 PCAP 파일 및 해독 된 트래픽을 네트워크 인터페이스로 반영합니다. 또한 인증서, 마스터 비밀 및 지역 프로세스 정보를 기록 할 수 있습니다.
SSLSPLIT 사용 및 다양한 NAT 엔진 설정에 대한 자세한 내용은 수동 페이지 SSLSPLIT (1)를 참조하십시오.
sslsplit은 기본적으로 OpenSSL, Libevent 2.x, LibpCap 및 Libnet 1.1.x 라이브러리에 따라 다릅니다. 미러링 기능을 생략하면 LibpCap 및 Libnet이 필요하지 않습니다. 빌드는 GNU Make 및 Posix.2 PATH 의 환경에 따라 다릅니다. 사용 가능한 경우 PKG-Config는 종속성을 찾아 구성하는 데 사용됩니다. 선택적 단위 테스트는 점검 라이브러리에 따라 다릅니다.
SSLSPlit은 현재 다음 운영 체제 및 NAT 메커니즘을 지원합니다.
로컬 프로세스 정보 ( -i )에 대한 지원은 현재 Mac OS X 및 FreeBSD에서 사용할 수 있습니다.
SSL/TLS 기능 및 호환성은 링크 된 OpenSSL 버전에 크게 의존합니다. 최적의 결과를 얻으려면 최근 OpenSSL 또는 Libressl의 릴리스를 사용하십시오.
위의 요구 사항을 사용하여 실행하십시오.
make
make test # optional unit tests
make sudotest # optional unit tests requiring privileges
make install # optional install
종속성은 PKG-Config를 사용하여 자동 구성됩니다. 종속성을 선택하지 않고 PKG_CONFIG_PATH 수정하면 도움이되지 않으면 OPENSSL_BASE , LIBEVENT_BASE , LIBPCAP_BASE , LIBNET_BASE 및/또는 CHECK_BASE 설정하여 해당 위치를 수동으로 지정할 수 있습니다.
PREFIX 설정하여 기본 설치 접두사 ( /usr/local )를 무시할 수 있습니다. 더 많은 빌드 옵션 및 빌드 타임 기본값은 GNUmakefile 및 defaults.h 참조하십시오.
사용자 문서는 수동 페이지 sslsplit(1) 및 sslsplit.conf(5) 참조하십시오. 보안 취약성 공개에 대한 정보는 릴리스와 SECURITY.md 간의 중요한 변경 사항을 나열하는 릴리스 노트에 대해서는 NEWS.md 참조하십시오.
SSLSPLIT는 2- 클라스 BSD 라이센스에 따라 제공됩니다. SSLSPlit에는 MIT 및 APSL 라이센스에 따라 라이센스가 부여 된 구성 요소가 포함되어 있습니다. 자세한 내용은 LICENSE , LICENSE.contrib 및 LICENSE.third 과 각 소스 파일 헤더를 참조하십시오.
기고자 목록은 AUTHORS.md 참조하십시오.
SSLSPLIT는 Moxie Marlinspike의 Claes M. Nyberg와 sslsniff 의 mitm-ssl 에서 영감을 받았지만 소스 코드는 공유하지 않았습니다.