- Notifications
You must be signed in to change notification settings - Fork124
Burp Plugin to decrypt AES encrypted traffic on the fly
License
Ebryx/AES-Killer
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Burpsuite Plugin to decrypt AES Encrypted traffic on the fly
- Burpsuite
- Burpsuite 2021.4
- Windows 10
- Ubuntu & PopOS
- 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 supportAES/CBC/PKCS5Padding
&&AES/ECB/PKCS5Padding
encryption/decryption.
- RequireSecret Key andInitialize Vector which can be obtained by usingaes-hook.js andfrida-hook.py or by reversing the application (For iOS please useFrida iOS Hook to get AES Secret Key and IV)
- A detailed usage guide can be found atAES Killer - Usage Guide
- This article will help you inDecrypting Mobile App Traffic using AES Killer and Frida
$ git clone https://github.com/Ebryx/AES-Killer/$ cd AES-Killer$ ./gradlew clean build
- AES_Killer for JSON requestAES_Killer-JSON.java
- AES_Killer for random/alternate Parameters on different endpointsAES_Killer-Parameters.java
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 addingthis.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) supportAES_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 for multi-level encryption on request(Support Form, JSON and XML formats)
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.
Download jar file fromRelease and add in burpsuite
- First setup frida server onIOS andAndroid device.
- Launch Application on mobile device.
- Runaes-hook.js andfrida-hook.py on your host machine to get AES Encryption Key and IV as shown inthis post.
- 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
Once we start AES Killer, it takes control of BurpIHttpListener.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.
We can also manually encrypt and decrypt strings using AES Killer. Let's take an encrypted string from the requestTYROd49FWJjYBfv02oiUzwRQgxWMWiw4W3oCqvNf8h3bnb7X0bobypFzMt797CYU
and decrypt it using AES Killer. Similarly, we can perform the encryption too.
Download Demo App fromhere
About
Burp Plugin to decrypt AES encrypted traffic on the fly