decrypto-org / Rupture
Labels
Rupture
Rupture is a framework for easily conducting BREACH and other compression-based attacks.
Authors
Rupture is developed by:
- Dimitris Karakostas [email protected]
- Dionysis Zindros [email protected]
- Eva Sarafianou [email protected]
- Dimitris Grigoriou [email protected]
This research is being conducted at the Cryptography & Security lab at the University of Athens and the National Technical University of Athens.
License
Rupture is licensed under MIT. See LICENSE for more information.
Installation
You can install the whole framework as follows:
- Install rupture.
rupture/ $ ./install all
or you can also install each module separately, as below.
Javascript
Rupture uses Javascript for communication between the client code and the realtime server. Client code is compiled using babel and server code is run on Node.js.
Injection
- Install injection.
rupture$ ./install injection
Client
- Install client.
rupture$ ./install client
Python
Rupture uses Python for the Command & Control server. Communication between js realtime server and Python backend is performed with a Django API endpoint.
Backend
- Install backend.
rupture/ $ ./install backend
Sniffer
- Install sniffer.
rupture/ $ ./install sniffer
Execution
Backend
- Edit following configuration scripts:
- rupture/backend/target_config.yml
- rupture/backend/victim_config.yml
- Setup backend.
rupture $ ./rupture -s
- Deploy backend.
rupture $ ./rupture --backend
Realtime
- Deploy realtime.
rupture $ ./rupture --realtime
Sniffer
- Deploy sniffer.
rupture $ ./rupture --sniffer
Attack
- You can also deploy backend, realtime and sniffer modules all together:
rupture/ $ sudo ./rupture --attack
Note: Sniffer deployment - either standalone or all together with 'attack' - may need elevated privileges, since it requires access to network interface.
Client
-
Client code is in following directory:
- ~/.rupture/client/client_
where is the victim's id in the backend database.
-
Open the following test HTML page in browser:
- ~/.rupture/client/client_/test.html
or inject client code in HTTP responses:
~/.rupture/client/client_<id> $ ./inject.sh