pytbull – Intrusion Detection/Prevention System (IDS/IPS) Testing Framework

Keep on Guard!


pytbull is an Intrusion Detection/Prevention System (IDS/IPS) Testing Framework for Snort, Suricata and any IDS/IPS that generates an alert file. It can be used to test the detection and blocking capabilities of an IDS/IPS, to compare IDS/IPS, to compare configuration modifications and to check/validate configurations.

The framework is shipped with about 300 tests grouped in 9 testing modules:

  • clientSideAttacks: this module uses a reverse shell to provide the server with instructions to download remote malicious files. This module tests the ability of the IDS/IPS to protect against client-side attacks.
  • testRules: basic rules testing. These attacks are supposed to be detected by the rules sets shipped with the IDS/IPS.
  • badTraffic: Non RFC compliant packets are sent to the server to test how packets are processed.
  • fragmentedPackets: various fragmented payloads are sent to server to test its ability to recompose them and detect the attacks.
  • multipleFailedLogins: tests the ability of the server to track multiple failed logins (e.g. FTP). Makes use of custom rules on Snort and Suricata.
  • evasionTechniques: various evasion techniques are used to check if the IDS/IPS can detect them.
  • shellCodes: send various shellcodes to the server on port 21/tcp to test the ability of the server to detect/reject shellcodes.
  • denialOfService: tests the ability of the IDS/IPS to protect against DoS attempts
  • pcapReplay: enables to replay pcap files

It is easily configurable and could integrate new modules in the future.

There are basically 6 types of tests:


  • socket: open a socket on a given port and send the payloads to the remote target on that port.
  • command: send command to the remote target with the subprocess.call() python function.
  • scapy: send special crafted payloads based on the Scapy syntax
  • multiple failed logins: open a socket on port 21/tcp (FTP) and attempt to login 5 times with bad credentials.
  • client side attacks: use a reverse shell on the remote target and send commands to it to make them processed by the server (typically wget commands).
  • pcap replay: enables to replay traffic based on pcap files

The official documentations is available here: pytbull documentation.

Changes/Improvements in V1.1

  • Issue #2 fixed (test number incrementing twice just after the last test from multipleFailedLogins test)
  • Issue #3 fixed (pcapReplay module not present in the checks on STDOUT)
  • Code factoring in pytbull.py
  • Timing options are now in parameters (config.cfg)
  • Automatically checks and informs if a new version is available (use PROXY section in the configuration file if needed)
  • New basic checks: Checks that paths are valid
  • SVN tags added in source code

You can download pytbull here:

pytbull-2.0.tar.bz2

Or read more here.

Posted in: Countermeasures, Networking Hacking, Security Software

, , , ,


Latest Posts:


BootStomp - Find Bootloader Vulnerabilities BootStomp – Find Android Bootloader Vulnerabilities
BootStomp is a Python-based tool, with Docker support that helps you find two different classes of bootloader vulnerabilities and bugs.
Google Chrome Marking ALL Non-HTTPS Sites Insecure July 2018 Google Chrome Marking ALL Non-HTTPS Sites Insecure July 2018
Google is ramping up its campaign against HTTP only sites and is going to mark ALL Non-HTTPS sites insecure in July 2018 with the release of Chrome 68.
altdns - Subdomain Recon Tool With Permutation Generation altdns – Subdomain Recon Tool With Permutation Generation
Altdns is a subdomain recon tool in Python that allows for the discovery of subdomains that conform to patterns. The tool takes in words that could be present in subdomains under a domain (such as test, dev, staging) as well as takes in a list of subdomains that you know of.
0-Day Flash Vulnerability Exploited In The Wild 0-Day Flash Vulnerability Exploited In The Wild
So another 0-Day Flash Vulnerability is being exploited in the Wild, a previously unknown flaw which has been labelled CVE-2018-4878 and it affects 28.0.0.137 and earlier versions
dorkbot - Command-Line Tool For Google Dorking dorkbot – Command-Line Tool For Google Dorking
dorkbot is a modular command-line tool for Google dorking, which is performing vulnerability scans against a set of web pages returned by Google search queries in a given Google Custom Search Engine.
USBPcap - USB Packet Capture For Windows USBPcap – USB Packet Capture For Windows
USBPcap is an open-source USB Packet Capture tool for Windows that can be used together with Wireshark in order to analyse USB traffic without using a Virtual Machine.


4 Responses to pytbull – Intrusion Detection/Prevention System (IDS/IPS) Testing Framework

  1. Tushar May 17, 2011 at 6:57 pm #

    It`s a virus.
    my antivirus detect it as sql slammer

    • Darknet May 17, 2011 at 7:25 pm #

      Well it’s designed to trigger IDS/IPS for testing purposes, if it didn’t have any malicious strings in it….it wouldn’t work very well would it?

      • Sébastien Damaye May 17, 2011 at 11:12 pm #

        It’s definitely NOT a virus, and I don’t think Darknet would accept to promote such stuff ;-)
        Absolutely agree with Darknet, pytbull contains malicious payloads that could trigger alerts from your AV but there are inoffensive in the sense they couldn’t affect the machine running pytbull. Such payloads are DoS attempts, SQL injections, … supposed to trigger alerts from the probed IDS/IPS.
        The only part that could have been considered as viruses was contained in the pdf/ directory and has been removed since v1.0 (stable release is now release 1.1). If you want to test this module (clientSideAttacks), you have to define a third party server.
        Please feel free to contact me (you will find my email on aldeid.com) for any comment or question.
        Thanks for your positive support ;-)
        SPecial thx to Darknet for the prompt answer!

        • Darknet May 18, 2011 at 10:26 am #

          No probs, am here to serve :P