IdsFree: Launch hacking tests in cloud providers securely, isolated and without raise security alerts in the provider
Project site | https://github.com/bbva/idsfree |
Issues | https://github.com/bbva/idsfree/issues/ |
Documentation | https://idsfree.readthedocs.io/ |
Authors | Daniel Garcia (cr0hn) |
Latest Version | 1.0.0-alpha |
Python versions | 3.5 or above |
IdsFree allow you to perform hacking testing without raise alerts at IDS mechanism.
There're many organizations and companies (an users too) that only have Cloud provides as an infrastructure for their own products, developments and any other thing that they will need.
But, what happen with active part of security? Of course we're talking about ethical hacking and penetration testing. The major part of cloud providers doesn't allow to perform hacking tasks in their platform (or very limited), even if you only attack your own services!
IdsFree allow you to do:
- Hacking tasks without raise alert into Cloud Provider.
- Create a secure and isolated network to perform your hacking tests.
- Automate your hacking tasks following the concept of previous point.
To perform the above tasks, IdsFree follow these steps:
- IdsFree uses a SSH connection a virtual machine in your cloud provider.
- Once connected, idsFree will create a private and cyphered network on this virtual machine using Docker Swarm.
- Get your application (and their environment requisites) as a Docker image and run it attaching it to the previously created network.
- Attach to the network hacking tools as docker containers and launch selected attacks through the cyphered and isolated network.
- Take the results of tools and export them in a usable format: JSON or JUnit format (very useful for integrating with Jenkins).
- Clean up the container and network from the virtual machine.
The next image illustrates how the environment are deployed in the cloud provider:
> python3.5 -m pip install idsfree
IdsFree allow to check if a remote system has all the necessary conditions to run. An examples of usage are:
Check remote system by passing the password in command line
> idsfree -v -H 192.168.111.129 -d -U root -P MY_PASSWORD prepare
[ * ] Starting preparation of remote host...
[ * ] Checking remote machine for minimum requisites
[ * ] Initialization Swarm at IP: 192.168.111.129
[ * ] Creating new encrypted network: DgJXoXmeYhASHjmSV
Check remote system and tell to idsFree ask for the password
> idsfree -v -H 192.168.111.129 -d -U root -A prepare
[ * ] Starting preparation of remote host...
[ * ] Checking remote machine for minimum requisites
[ * ] Initialization Swarm at IP: 192.168.111.129
[ * ] Creating new encrypted network: DgJXoXmeYhASHjmSV
Currently, idsFree can launch two type of attacks: net | web, and try to choice the best tools to perform the attacks.
Also, idsFree can report in two formats: JSON and JUnit.
Launch attack and report in JUnit
> idsfree -v -H 192.168.111.129 -d -U root -P MY_PASSWORD run_attacks -p 6379 -t net -s redis redis -o results.xml -e junit
[ * ] Starting attacks of remote host...
[ * ] Checking remote machine for minimum requisites
[ * ] Creating temporal encrypted network: lEvXBfPNVmoCZyFmKJsnPSADJjrUoxmxjFst
[ * ] Removing temporal encrypted network: lEvXBfPNVmoCZyFmKJsnPSADJjrUoxmxjFst
[ * ] Generating results as 'JUnit' format, in file: 'results.xml'
Launch attack, report in JSON and ask for password
> idsfree -v -H 192.168.111.129 -d -U root -A run_attacks -p 6379 -t net -s redis redis -o results.json -e json
[ * ] Starting attacks of remote host...
[ * ] Checking remote machine for minimum requisites
[ * ] Creating temporal encrypted network: lEvXBfPNVmoCZyFmKJsnPSADJjrUoxmxjFst
[ * ] Removing temporal encrypted network: lEvXBfPNVmoCZyFmKJsnPSADJjrUoxmxjFst
[ * ] Generating results as 'json' format, in file: 'results.json'
(Still pending!)
Go to documentation site: https://idsfree.readthedocs.io/
Contributors are welcome. You can find a list ot TODO tasks in the TODO.md at the project file.
All contributors will be added to the CONTRIBUTORS.md file.
Thanks in advance if you're planning to contribute to the project! :)
IDSFree uses the Python library: "(python-libnmap)" by Ronald Bister, available under a Creative Common "Attribution" license (CC-BY) v3.
This project is distributed under Apache 2 license