You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Go to file
Daniel Roethlisberger 47abb0030d Update clean target for newer clang build artefacts 10 years ago
extra Fix glob to be compatible with /bin/dash 11 years ago
xnu Remove WGET_FLAGS from developer targets 10 years ago
.gitattributes Add .gitattributes and cleanup .gitignore 11 years ago
.gitignore Add .gitattributes and cleanup .gitignore 11 years ago
.travis.yml Enable unit tests on Travis CI 11 years ago
BSDmakefile Initial import of sslsplit-0.4.2 12 years ago
GNUmakefile Update clean target for newer clang build artefacts 10 years ago
LICENSE Update copyright notices to 2014 11 years ago
NEWS.md Add local process lookup on FreeBSD using sysctl() API 10 years ago
README.md Add local process lookup on FreeBSD using sysctl() API 10 years ago
attrib.h Update copyright notices to 2014 11 years ago
base64.c Lint fix: define some variables in smaller scope 11 years ago
base64.h Always explicitly name the non-null arguments 11 years ago
base64.t.c Update copyright notices to 2014 11 years ago
cache.c Lint fix: define some variables in smaller scope 11 years ago
cache.h Always explicitly name the non-null arguments 11 years ago
cachedsess.c Avoid casting !NULL to ptr types to silence clang 10 years ago
cachedsess.h Always explicitly name the non-null arguments 11 years ago
cachedsess.t.c Update copyright notices to 2014 11 years ago
cachefkcrt.c Avoid casting !NULL to ptr types to silence clang 10 years ago
cachefkcrt.h Always explicitly name the non-null arguments 11 years ago
cachefkcrt.t.c Update copyright notices to 2014 11 years ago
cachemgr.c Don't rely on OpenSSL to pull in string.h 10 years ago
cachemgr.h Update copyright notices to 2014 11 years ago
cachemgr.t.c Update copyright notices to 2014 11 years ago
cachessess.c Avoid casting !NULL to ptr types to silence clang 10 years ago
cachessess.h Always explicitly name the non-null arguments 11 years ago
cachessess.t.c Update copyright notices to 2014 11 years ago
cachetgcrt.c Avoid casting !NULL to ptr types to silence clang 10 years ago
cachetgcrt.h Always explicitly name the non-null arguments 11 years ago
cachetgcrt.t.c Update copyright notices to 2014 11 years ago
cert.c Update copyright notices to 2014 11 years ago
cert.h Always explicitly name the non-null arguments 11 years ago
cert.t.c Update copyright notices to 2014 11 years ago
dynbuf.c Update copyright notices to 2014 11 years ago
dynbuf.h Always explicitly name the non-null arguments 11 years ago
dynbuf.t.c Update copyright notices to 2014 11 years ago
khash.h Update khash.h to latest klib master 10 years ago
log.c Improve error handling on logging calls 10 years ago
log.h Improve error handling on logging calls 10 years ago
logbuf.c Move open() and mkdir() to logger thread 10 years ago
logbuf.h Move open() and mkdir() to logger thread 10 years ago
logger.c Move open() and mkdir() to logger thread 10 years ago
logger.h Improve error handling on logging calls 10 years ago
main.c Fix version output on local procinfo availability 10 years ago
main.t.c Detect when libevent cannot parse resolv.conf 11 years ago
nat.c Remove spurious space in netfilter output 10 years ago
nat.h Refactor process lookup out of NAT engine code 10 years ago
opts.c Refactor SSL/TLS debug code 10 years ago
opts.h Rename flags for clarity 10 years ago
opts.t.c Update copyright notices to 2014 11 years ago
proc.c Add local process lookup on FreeBSD using sysctl() API 10 years ago
proc.h Fix version output on local procinfo availability 10 years ago
proxy.c Detect when libevent cannot parse resolv.conf 11 years ago
proxy.h Always explicitly name the non-null arguments 11 years ago
pxyconn.c Improve error handling on logging calls 10 years ago
pxyconn.h Always explicitly name the non-null arguments 11 years ago
pxysslshut.c Print status of free'd SSL structs in debug mode 11 years ago
pxysslshut.h Print status of free'd SSL structs in debug mode 11 years ago
pxythrmgr.c Zero allocated elements before initializing them 10 years ago
pxythrmgr.h Update copyright notices to 2014 11 years ago
pxythrmgr.t.c Add libevent2 test for the weirdness that is issue #17 11 years ago
ssl.c Use SSL_get_certificate() hack for OpenSSL 0.9.8y 10 years ago
ssl.h Fix SSL_METHOD* const mismatch on OpenSSL < 1.0.0 10 years ago
ssl.t.c Add unit tests for ssl_x509_subject() and ssl_x509_subject_cn() 10 years ago
sslsplit.1 Minor updates to manual page 10 years ago
sys.c Fixing error-case memory leaks in uid/gid lookups 10 years ago
sys.h Unify asprintf error handling 10 years ago
sys.t.c Fix compiler warning on type conversion 10 years ago
thrqueue.c Check return values of pthread_mutex_init and friends 10 years ago
thrqueue.h Always explicitly name the non-null arguments 11 years ago
url.c Update copyright notices to 2014 11 years ago
url.h Always explicitly name the non-null arguments 11 years ago
url.t.c Update copyright notices to 2014 11 years ago
util.c Update copyright notices to 2014 11 years ago
util.h Always explicitly name the non-null arguments 11 years ago
util.t.c Update copyright notices to 2014 11 years ago
version.c Rewrite Mac OS X support to use proper XNU headers 10 years ago
version.h Rewrite Mac OS X support to use proper XNU headers 10 years ago

README.md

SSLsplit - transparent and scalable SSL/TLS interception Build Status

Copyright (C) 2009-2014, Daniel Roethlisberger.
http://www.roe.ch/SSLsplit

Overview

SSLsplit is a tool for man-in-the-middle attacks against SSL/TLS encrypted network connections. Connections are transparently intercepted through a network address translation engine and redirected to SSLsplit. SSLsplit terminates SSL/TLS and initiates a new SSL/TLS connection to the original destination address, while logging all data transmitted. SSLsplit is intended to be useful for network forensics and penetration testing.

SSLsplit supports plain TCP, plain SSL, HTTP and HTTPS connections over both IPv4 and IPv6. For SSL and HTTPS connections, SSLsplit generates and signs forged X509v3 certificates on-the-fly, based on the original server certificate subject DN and subjectAltName extension. SSLsplit fully supports Server Name Indication (SNI) and is able to work with RSA, DSA and ECDSA keys and DHE and ECDHE cipher suites. Depending on the version of OpenSSL, SSLsplit supports SSL 3.0, TLS 1.0, TLS 1.1 and TLS 1.2, and optionally SSL 2.0 as well. SSLsplit can also use existing certificates of which the private key is available, instead of generating forged ones. SSLsplit supports NULL-prefix CN certificates and can deny OCSP requests in a generic way. For HTTP and HTTPS connections, SSLsplit removes response headers for HPKP in order to prevent public key pinning, for HSTS to allow the user to accept untrusted certificates, and Alternate Protocols to prevent switching to QUIC/SPDY.

See the manual page sslsplit(1) for details on using SSLsplit and setting up the various NAT engines.

Requirements

SSLsplit depends on the OpenSSL and libevent 2.x libraries. The build depends on GNU make and a POSIX.2 environment in PATH. The optional unit tests depend on the check library.

SSLsplit currently supports the following operating systems and NAT mechanisms:

  • FreeBSD: pf rdr and divert-to, ipfw fwd, ipfilter rdr
  • OpenBSD: pf rdr-to and divert-to
  • Linux: netfilter REDIRECT and TPROXY
  • Mac OS X: pf rdr and ipfw fwd

Installation

make
make test       # optional unit tests
make install    # optional install

Dependencies are autoconfigured using pkg-config. If dependencies are not picked up and fixing PKG_CONFIG_PATH does not help, you can specify their respective locations manually by setting OPENSSL_BASE, LIBEVENT_BASE and/or CHECK_BASE to the respective prefixes.

You can override the default install prefix (/usr/local) by setting PREFIX. For more build options see GNUmakefile.

Development

SSLsplit is being developed on Github. For bug reports, please use the Github issue tracker. For patch submissions, please send me pull requests.

https://github.com/droe/sslsplit

License

SSLsplit is provided under the simplified BSD license. SSLsplit contains components licensed under the MIT and APSL licenses. See the respective source file headers for details.

Credits

SSLsplit was inspired by mitm-ssl by Claes M. Nyberg and sslsniff by Moxie Marlinspike, but shares no source code with them.

SSLsplit includes khash.h by Attractive Chaos.

Contributors

The following individuals have contributed to the SSLsplit codebase by submitting patches or pull requests, in chronological order of first contribution:

  • Daniel Roethlisberger (@droe), main author
  • Steve Wills (@swills)
  • Landon Fuller (@landonf)
  • Wayne Jensen (@wjjensen)

See NEWS.md and git log for details.