aboutsummaryrefslogtreecommitdiff

go-fakessl

go-fakessl is a pentesting tool designed to clone SSL/TLS certificates from a target server and create a new, self-signed look-alike certificate using its public key. This tool can be used for testing SSL/TLS security and inspecting server certificates. It also allows you to run a local HTTPS server with the cloned certificate for testing purposes.

WARNING: This tool is for authorized security testing only. Unauthorized use may violate laws and regulations. The author and contributors are not responsible for misuse. Always obtain explicit permission before testing any system.

Features

  • Clone SSL Certificates: Clone SSL/TLS certificates from target servers by specifying their URL.
  • Generate New Certificate and Key: Create a new certificate using the cloned public key and a freshly generated RSA private key.
  • Run HTTPS Server: Start an HTTPS server locally using the cloned certificate for testing.
  • Inspect Certificates: Use openssl commands to inspect the original and cloned certificates.

Installation

Prerequisites

  • Go: Version 1.18 or later.
  • OpenSSL: For inspecting and comparing certificates.

Steps

  • Clone the repository:
$ git clone https://cgit.heqnx.com/go-fakessl
$ cd go-fakessl
  • Install dependencies:
$ go mod tidy
  • Build for all platforms:
$ make all
  • Binaries will be generated in the build/ directory for Linux, Windows, and macOS; alternatively, build for a specific platform:
$ make linux-amd64
$ make windows-amd64
$ make darwin-arm64
  • (Optional) Run directly with Go:
$ go run main.go [-cert <cert> -key <key> -port <port] -url <url>

Usage

Command-Line Flags

Usage of ./go-fakessl-<platform>-<arch>:
  -cert string
        path to certificate file to use for a test https server
  -key string
        path to key file to use for a test https server
  -port string
        port to use for a test https server (default "8000")
  -url string
        target https url to clone certificate from (e.g. https://google.com)

Examples

Clone the SSL certificate of google.com

$ ./go-fakessl-linux-amd64 -url https://google.com
url             cloned cert             private key
google.com:443  google.com_clone.pem    google.com_clone.key

[inf] start an https server to test cloned certificate with:
$ ./go-fakessl-linux-amd64 -cert google.com_clone.pem -key google.com_clone.key -port 8000

[inf] manually inspect and diff the original certificate and cloned certificate with:
$ openssl s_client -connect google.com:443 </dev/null 2>/dev/null | openssl x509 -noout -text > google.com_original.txt
$ openssl x509 -in google.com_clone.pem -noout -text > google.com_clone.pem_clone.txt
$ diff *.txt

License

This project is licensed under the GNU GENERAL PUBLIC LICENSE. See the LICENSE file for details.

Disclaimer

go-fakessl is provided "as is" without warranty. The author and contributors are not liable for any damages or legal consequences arising from its use. Use responsibly and only in authorized environments.