
Automated NTLM relay attack tool combining Responder poisoning with Impacket relay and secretsdump for credential capture, hash relaying, and lateral movement.
As the name suggests, it's poison. Cyanide is essentially a tracker for correlating various poisoning techniques (currently only Responder is used) in conjuction with relaying the captured hashes via Impackets ntlmrelayx.py. On startup it will start Responder without SMB, HTTP, or DNS servers & Ntlmrelayx with SMB and HTTP servers by default. The output will inform you of:
A mandatory file for ntlmrelayx targets is required. If you only want to capture hashes, simply put smb://127.0.0.1, otherwise supply a list of targets as you normally would (e.g. smb://10.0.0.8\n mssql://10.0.0.9)
There is a couple ways it can be used.
The recommended method. This method will utilize hashes captured via SMB/HTTP and relay them to targets specified in the targets file. Upon successful relay, a secretsdump will be ran and SAM will (hopefully) get dumped.
For a successful login the target endpoint will need to have smb signing disabled.
This method will continue to poison hosts via Responder, but will not relay. In order to continue to capture SMB / HTTP, you will need to specify a host of smb://127.0.0.1 in the required ntlmrelayx targets file.
python3 -m venv venv
. venv/bin/activate
git clone https://github.com/horizon3ai/cyanide.git
cd cyanide
pip install -r requirements.txt
sudo -i (must be ran under root account)
python cyanide.py -iface <eth0> --watch --stdout-only --responder -ntf ntlmrelayx_targets.txt
NOTE: --watch/-w will allow you to edit the targets file while the program is running and add/delete targets. Impacket will automatically detect changes and update.
python cyanide.py -iface <eth0> --stdout-only --responder -ntf ntlmrelayx_targets.txt --no-relay
Cyanide utilizes sqlite databases to store information of hosts that are poisoned (poisoner_cache.db), relays that happen (poisoner_relay.db) and (if you do not specify --stdout-only) final messages containing poisoner source, relay events, secretsdump data will be placed in the production database (poisoner_prod.db). The poisoner_prod.db will be dumped to a specified output file every 30 seconds. NOTE: This means that the results will be overwritten every 30 seconds.
python cyanide.py -iface <eth0> --watch --responder -ntf ntlmrelayx_targets.txt
python cyanide.py -iface <eth0> --responder -ntf ntlmrelayx_targets.txt --no-relay
All code except any files under horizon3_impacket maintain a GPLv3 license. All code under horizon3_impacket maintain Impackets original license of Apache. For more information, please see the licenses directory.