Code Monkey home page Code Monkey logo

aes-killer's Introduction

AES Killer (Burpsuite Plugin)

Open Source Love GitHub version Open Source Love

Burpsuite Plugin to decrypt AES Encrypted traffic on the fly

Requirements

  • Burpsuite

Tested on

  • Burpsuite 2021.4
  • Windows 10
  • Ubuntu & PopOS

What it does

  • The IProxyListener decrypt requests and encrypt responses, and an IHttpListener than encrypt requests and decrypt responses.
  • Burp sees the decrypted traffic, including Repeater, Intruder and Scanner, but the client/mobile app and server see the encrypted version.

NOTE: Currently support AES/CBC/PKCS5Padding && AES/ECB/PKCS5Padding encryption/decryption.

How it works

How to Build

$ git clone https://github.com/Ebryx/AES-Killer/
$ cd AES-Killer
$ ./gradlew clean build

Variants

AES_Killer-Parameters.java: Let's say if application enforcing encryption on few parameters in request and these parameters will change every time with respect to endpoint/request so all you need to do is as follow

- Add endpoints by adding this.endpoints.add("abc"); in registerExtenderCallbacks function
- Add parameters which will be encrypted in `String[][] parameters`
- Add rest of parameter in grant_type or make blank entry

and let the code do the magic for you.

  • AES_Killer_v3.0 a generic variant for alternate parameters on different endpoints with GET, POST (JSON, Form) support AES_Killer_v3.0.java

AES_Killer_v3.0.java: This variant is generic and can deal with any type of request format i-e GET, POST(Form, JSON) with alternate parameters on different endpoints

- Clone the project and replace the BurpExtender.java with AES_Killer_v3.0.java code
- Modify the endpoints and parameters of each request type in order as shown below
- Update SecretKey and IV parameters and other required methods
- Build the project and you are good to go

AES_Killer_v4.0.java: This variant is for Multi-Level encryption where application is encrypting few request parameters with one key and later on encrypting the whole request body with another key

- Clone the project and replace the BurpExtender.java with AES_Killer_v4.0.java code
- Modify the endpoints and parameters as shown below
- Update Secret Keys and other required methods
- Build the project and add jar file to your extender

NOTE: These variants will not work for you directly due to nature of your request so might need little tweaking.

How to Install

Download jar file from Release and add in burpsuite

Original Request/Response

Getting AES Encryption Key and IV

Decrypt Request and Response

  • Provide SecretSpecKey under Secret Key field
  • Provide IV under Initialize Vector field
  • Provide Host/URL to filter request and response for encryption and decryption
  • Select appropriate Request and Response options
  • Press Start AES Killer

AES Killer with Repeater, Intruder and Scanner

Once we start AES Killer, it takes control of Burp IHttpListener.processHttpMessage which is responsible for handling all outgoing and incoming traffic and AES Killer do the following

  • Before sending the final request to a server, ProcessHttpMessage encrypt the request
  • Upon receiving a response, ProcessHttpMessage decrypt the response first before showing it to us

So we'll only be getting the Plain Text Response and can play with Plain Text request.

Manual Encryption and Decryption

We can also manually encrypt and decrypt strings using AES Killer. Let's take an encrypted string from the request TYROd49FWJjYBfv02oiUzwRQgxWMWiw4W3oCqvNf8h3bnb7X0bobypFzMt797CYU and decrypt it using AES Killer. Similarly, we can perform the encryption too.

Download Demo App from here

aes-killer's People

Contributors

anon-exploiter avatar d3vilbug avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aes-killer's Issues

json requests do not parse correctly

When configured:

2021-07-29 20_12_37-Burp Suite Professional v2021 7 2-8935 (Early Adopter) - prueba - licensed to Co

It decrypts but does not parse correctly causing requests not to be processed.
Double quotation marks cause problems:

2021-07-29 19_59_38-Burp Suite Professional v2021 7 2-8935 (Early Adopter) - prueba - licensed to Co

If I modify with single quotes it works fine:

2021-07-29 20_09_45-Burp Suite Professional v2021 7 2-8935 (Early Adopter) - prueba - licensed to Co

Is there any way to make this pair up correctly?
I really appreciate the creation of the extension it's great.

device connect issue

D:\hooks>adb devices
List of devices attached
127.0.0.1:62001 device

D:\hooks>python frida-hook.py
Traceback (most recent call last):
File "D:\hooks\frida-hook.py", line 15, in
device = frida.get_usb_device()
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\SATYAM VERMA\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\frida_init_.py", line 137, in get_usb_device
return get_device_manager().get_usb_device(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\SATYAM VERMA\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\frida\core.py", line 1178, in get_usb_device
return self.get_device_matching(lambda d: d.type == "usb", timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\SATYAM VERMA\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\frida\core.py", line 86, in wrapper
return f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File "C:\Users\SATYAM VERMA\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\frida\core.py", line 1201, in get_device_matching
return Device(self._impl.get_device_matching(lambda d: predicate(Device(d)), raw_timeout))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
frida.InvalidArgumentError: device not found

D:\hooks>

Other situation

Can we add support for url encode, like data=P9%2bN0gB8z3do2u97LIO%2fJuo, it seems that it can't be decrypted, and support for original hexadecimal data after encryption (not base64),thanks!

AES ECB mode

I recently used aes killer to decrypt AES algorithm in ECB mode. How can i used its with AES Killer. Extension seem require IV field to working.

How to use it?

Can you write a instruction book for it ?I am a small white,can't understand how use it.
Thanks

SecretKeySpec changing

Hello

I notice the SecretKeySpec changing on every request while monitoring with Frida. Is there anyway for the extension to accommodate this ?

Base64 Support

Could you please consider implementing support for base64 encoded AES keys and content?

Automatically encrypt not working on the repeater

Hi,

I try to send a plaintext body request but aes killer doesn't automatically encrypt my request, but to decrypt, aes killer still work on the repeater.

Sent with encrypted request :

Burp Suite Professional_2022-10-24 23-35-35@2x

Sent with plaintext request :

Burp Suite Professional_2022-10-24 23-34-59@2x

And for my AES-Killer configuration like this :

Burp Suite Professional_2022-10-24 23-39-10@2x

Thanks.

Invalid AES key length

➜ echo UFlZUEBLRkBISEZa |base64
VUZsWlVFQkxSa0JJU0VaYQo=

do_decrypt :: Invalid AES key length: 17 bytes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.