From ce769380eff2131df0a0a7c8eaffed09e572ccd9 Mon Sep 17 00:00:00 2001 From: Sleeyax Date: Wed, 9 Feb 2022 01:20:53 +0100 Subject: [PATCH] Add go binaries workflow, update README --- .github/workflows/release.yaml | 36 ++++++++++++++++++++++++++ .gitignore | 1 + README.md | 31 +++++++++++++++++----- docs/diagram.png | Bin 0 -> 11281 bytes src-go/server/README.md | 3 --- src/main/java/burp/ServerLibrary.java | 2 +- 6 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/release.yaml create mode 100644 docs/diagram.png delete mode 100644 src-go/server/README.md diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..6e1eea8 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,36 @@ +name: Build and release binaries + +on: + release: + types: [created] +jobs: + build: + name: Create native shared C libraries + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Execute CGO builds using XGO + uses: crazy-max/ghaction-xgo@v1 + # docs: https://github.com/marketplace/actions/golang-cgo-cross-compiler#inputs + with: + xgo_version: latest + go_version: 1.17 + dest: build + pkg: cmd + prefix: server + targets: windows/amd64,linux/386,linux/amd64,darwin/386,darwin/amd64 + # Prints the build commands as compilation progresses (default false) + x: true + ldflags: -w -s + buildmode: c-shared + working_dir: ./src-go/server + - name: Upload to GitHub releases + uses: xresloader/upload-to-github-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + file: "./src-go/server/build/*" + delete_file: "build/*.h" + tags: true + draft: false + update_latest_release: true \ No newline at end of file diff --git a/.gitignore b/.gitignore index a28ef4a..8b88776 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ *.h *.so *.dll +*.dylib diff --git a/README.md b/README.md index 6cf4d6d..aa0ef48 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,29 @@ # Awesome TLS -Fixes Burp Suite's horrible TLS stack. +This extension hijacks Burp's HTTP and TLS stack to make it more powerful and less prone to fingerprinting by all kinds of WAFs. +It does this without resorting to hacks, reflection or forked Burp Suite Community code. All Java code only utilises Burp's Extender API. -## Build Instructions -This extension was developed with JetBrains IntelliJ IDE. -These build instructions assume you're using it too. +## How it works +Unfortunately Burp's Extender API is very limited for more advanced use cases like this, so I had to play around with it to make this work. -1. Compile the go package within `./src-go/`. See [go-src/server](./src-go/server) for build instructions. +Once a request comes in, the extension intercepts it and forwards it to a local HTTPS server that started in the background once loaded/installed. +This server works like a proxy; it forwards the request to the destination, while persisting the original header order and applying a customizable TLS configuration. +Then, the local server forwards the response back to Burp. + +Configuration settings and other necessary information like the destination server address are sent to the local server per request by a magic header. +This magic header is stripped from the request before it's forwarded to the destination server, of course. + +![diagram](./docs/diagram.png) + +Another option would've been to code an upstream proxy server and connect burp to it, but I personally wanted an extension because it's customizable at runtime and more portable. + +## Manual build Instructions +This extension was developed with JetBrains IntelliJ (and GoLand) IDE. +The build instructions below assume you're using the same tools to build. +See [workflows](.github/workflows) for the target programming language versions. + +1. Compile the go package within `./src-go/`. Run `cd ./src-go/server && go build -o ../../src/main/resources/{OS}-{ARCH}/server.{EXT} -buildmode=c-shared ./cmd/main.go`, replacing `{OS}-{ARCH}` with your OS and CPU architecture and `{EXT}` with your platform's preferred extension for dynamic C libraries. For example: `linux-x86-64/server.so`. See the [JNA docs](https://github.com/java-native-access/jna/blob/master/www/GettingStarted.md) for more info about supported platforms. 2. Compile the GUI form `SettingsTab.form` into Java code via `Build > Build project`. -3. Build the jar with Gradle. +3. Build the fat jar with Gradle. + +You should now have on jar file, containing all dependencies. +If you'd rather separate the server binary from the jar, start over from step 1 but instead build the binary to the output directory of the jar. diff --git a/docs/diagram.png b/docs/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..d11a82dcd36e5d639975375c795a6f341abbf533 GIT binary patch literal 11281 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 EAE=e>WB>pF literal 0 HcmV?d00001 diff --git a/src-go/server/README.md b/src-go/server/README.md deleted file mode 100644 index ab70c03..0000000 --- a/src-go/server/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# server -## build -`go build -o ../../src/main/resources/linux-x86-64/server.so -buildmode=c-shared ./cmd/main.go` diff --git a/src/main/java/burp/ServerLibrary.java b/src/main/java/burp/ServerLibrary.java index 530b4e6..20e6925 100644 --- a/src/main/java/burp/ServerLibrary.java +++ b/src/main/java/burp/ServerLibrary.java @@ -5,7 +5,7 @@ import com.sun.jna.Platform; public interface ServerLibrary extends Library { - ServerLibrary INSTANCE = Native.load("server." + (Platform.isWindows() ? "dll" : "so"), ServerLibrary.class); + ServerLibrary INSTANCE = Native.load("server." + (Platform.isWindows() ? "dll" : Platform.isMac() ? "dylib" : "so"), ServerLibrary.class); String StartServer(String address); String StopServer();