コード例 #1
0
    def __init__(self):
        """
        Creates a new instance of the DDoS attack.
        """
        # Initialize attack
        super(DDoSAttack,
              self).__init__("DDoS Attack", "Injects a DDoS attack'",
                             "Resource Exhaustion")

        self.total_pkt_num = 0
        self.default_port = 0

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.PORT_SOURCE, Port()),
            Parameter(self.IP_DESTINATION, IPAddress()),
            Parameter(self.MAC_DESTINATION, MACAddress()),
            Parameter(self.PORT_DESTINATION, Port()),
            Parameter(self.PACKETS_PER_SECOND, Float()),
            Parameter(self.NUMBER_ATTACKERS, IntegerPositive()),
            Parameter(self.ATTACK_DURATION, IntegerPositive()),
            Parameter(self.VICTIM_BUFFER, IntegerPositive()),
            Parameter(self.LATENCY_MAX, Float())
        ])
コード例 #2
0
    def __init__(self, name, description, attack_type):
        """
        To be called within the individual attack class to initialize the required parameters.

        :param name: The name of the attack class.
        :param description: A short description of the attack.
        :param attack_type: The type the attack belongs to, like probing/scanning, malware.
        """
        # Reference to statistics class
        self.statistics = Statistics.Statistics(None)

        try:
            # get_reply_delay
            self.all_min_latencies = self.statistics.process_db_query(
                "SELECT minDelay FROM conv_statistics LIMIT 500;")
            self.all_max_latencies = self.statistics.process_db_query(
                "SELECT maxDelay FROM conv_statistics LIMIT 500;")
            self.most_used_mss_value = self.statistics.get_most_used_mss_value(
            )
            self.most_used_ttl_value = self.statistics.get_most_used_ttl_value(
            )
            self.most_used_win_size = self.statistics.get_most_used_win_size()
            pkt_count = self.statistics.get_packet_count()
        except AttributeError:
            self.all_min_latencies = 0
            self.all_max_latencies = 0
            self.most_used_mss_value = 0
            self.most_used_ttl_value = 0
            self.most_used_win_size = 0
            pkt_count = 0

            # Class fields
        self.attack_name = name
        self.attack_description = description
        self.attack_type = attack_type
        self.params = [
            Parameter(self.INJECT_AT_TIMESTAMP, Float()),
            Parameter(self.INJECT_AFTER_PACKET, IntegerLimited([0,
                                                                pkt_count])),
            Parameter(self.BANDWIDTH_MAX, Float()),
            Parameter(self.BANDWIDTH_MIN_LOCAL, Float()),
            Parameter(self.BANDWIDTH_MIN_PUBLIC, Float())
        ]
        self.attack_start_utime = 0
        self.attack_end_utime = 0
        self.start_time = 0
        self.finish_time = 0
        self.packets = []
        self.total_pkt_num = 0
        self.exceeding_packets = 0
        self.path_attack_pcap = ""
        self.timestamp_controller = None
        self.bandwidth_controller = None
        self.last_packet = None
        self.full_interval = None
        self.previous_interval = 0
        self.sent_bytes = 0
        self.interval_count = 0
        self.buffer_size = 1000
コード例 #3
0
    def __init__(self):
        """
        Creates a new instance of the PortscanAttack.
        This attack injects TCP Syn-requests and respective responses into the output pcap file.
        """
        # Initialize attack
        super(PortscanAttack, self).__init__("Portscan Attack",
                                             "Injects a nmap 'regular scan'",
                                             "Scanning/Probing")

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.IP_DESTINATION, IPAddress()),
            Parameter(self.PORT_SOURCE, Port()),
            Parameter(self.PORT_DESTINATION, Port()),
            Parameter(self.PORT_OPEN, Port()),
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.MAC_DESTINATION, MACAddress()),
            Parameter(self.PORT_DEST_SHUFFLE, Boolean()),
            Parameter(self.PORT_DEST_ORDER_DESC, Boolean()),
            Parameter(self.IP_SOURCE_RANDOMIZE, Boolean()),
            Parameter(self.PACKETS_PER_SECOND, Float()),
            Parameter(self.PORT_SOURCE_RANDOMIZE, Boolean())
        ])
コード例 #4
0
    def __init__(self):
        """
        Creates a new instance of the SMBScanAttack.
        This Attack injects TCP Syn Requests to the port 445 of several ips and related response into the output
        pcap file.
        If port 445 is open, it will simulate and inject the SMB Protocol Negotiation too.
        """
        # Initialize attack
        super(SMBScanAttack,
              self).__init__("SMBScan Attack", "Injects an SMB scan",
                             "Scanning/Probing")

        self.host_os = Util.get_rnd_os()

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.IP_DESTINATION, IPAddress()),
            Parameter(self.MAC_DESTINATION, MACAddress()),
            Parameter(self.TARGET_COUNT, IntegerPositive()),
            Parameter(self.HOSTING_PERCENTAGE, Percentage()),
            Parameter(self.PORT_SOURCE, Port()),
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.IP_SOURCE_RANDOMIZE, Boolean()),
            Parameter(self.PACKETS_PER_SECOND, Float()),
            Parameter(self.PORT_SOURCE_RANDOMIZE, Boolean()),
            Parameter(self.HOSTING_IP, IPAddress()),
            Parameter(self.HOSTING_VERSION, String()),
            Parameter(self.SOURCE_PLATFORM, SpecificString(Util.platforms)),
            Parameter(self.PROTOCOL_VERSION, String())
        ])
コード例 #5
0
    def __init__(self):
        """
        Creates a new instance of the Sality botnet.
        """
        # Initialize attack
        super(SalityBotnet,
              self).__init__("Sality Botnet", "Injects an Sality botnet'",
                             "Botnet")

        self.pkt_num = 0
        self.path_attack_pcap = None

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.PACKETS_PER_SECOND, Float())
        ])
コード例 #6
0
    def __init__(self):
        """
        Creates a new instance of the "Memcrashed" Memcached amplification attack.
        """
        # Initialize attack
        super(MemcrashedSpooferAttack, self).__init__("Memcrashed Attack (Spoofer side)",
                                                      "Injects the spoofer-side of a Memcached amplification attack",
                                                      "Resource Exhaustion")

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.IP_DESTINATION, IPAddress()),
            Parameter(self.MAC_DESTINATION, MACAddress()),
            Parameter(self.PACKETS_PER_SECOND, Float()),
            Parameter(self.ATTACK_DURATION, IntegerPositive()),
            Parameter(self.IP_VICTIM, IPAddress()),
            Parameter(self.ATTACK_DURATION, IntegerPositive())
        ])
コード例 #7
0
ファイル: SQLiAttack.py プロジェクト: tklab-tud/ID2T
    def __init__(self):
        """
        Creates a new instance of the SQLi Attack.
        """
        # Initialize attack
        super(SQLiAttack, self).__init__("SQLi Attack", "Injects a SQLi attack'",
                                         "Privilege elevation")

        self.pkt_num = 0
        self.path_attack_pcap = None

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.MAC_DESTINATION, MACAddress()),
            Parameter(self.IP_DESTINATION, IPAddress()),
            Parameter(self.PORT_DESTINATION, Port()),
            Parameter(self.TARGET_HOST, Domain()),
            Parameter(self.PACKETS_PER_SECOND, Float())
        ])
コード例 #8
0
ファイル: MS17ScanAttack.py プロジェクト: tklab-tud/ID2T
    def __init__(self):
        """
        Creates a new instance of the EternalBlue Exploit.
        """
        # Initialize attack
        super(MS17ScanAttack,
              self).__init__("MS17ScanAttack", "Injects a MS17 scan'",
                             "Scanning/Probing")

        self.pkt_num = 0
        self.path_attack_pcap = None

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.PORT_SOURCE, Port()),
            Parameter(self.MAC_DESTINATION, MACAddress()),
            Parameter(self.IP_DESTINATION, IPAddress()),
            Parameter(self.PORT_DESTINATION, Port()),
            Parameter(self.PACKETS_PER_SECOND, Float())
        ])
コード例 #9
0
ファイル: SMBLorisAttack.py プロジェクト: tklab-tud/ID2T
    def __init__(self):
        """
        Creates a new instance of the SMBLorisAttack.
        This attack injects special SMB-packets, which exploit the SMBLoris DoS vulnerability, into the output pcap
        file.
        """
        # Initialize attack
        super(SMBLorisAttack,
              self).__init__("SMBLoris Attack",
                             "Injects an SMBLoris (D)DoS Attack",
                             "Resource Exhaustion")

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.IP_DESTINATION, IPAddress()),
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.MAC_DESTINATION, MACAddress()),
            Parameter(self.PACKETS_PER_SECOND, Float()),
            Parameter(self.ATTACK_DURATION, IntegerPositive()),
            Parameter(self.NUMBER_ATTACKERS, IntegerPositive()),
        ])
コード例 #10
0
    def __init__(self):
        """
        Creates a new instance of the FTPExploit.
        This attack injects a buffer overflow for the WinaXe FTP-client into the output pcap file.
        """
        # Initialize attack
        super(FTPWinaXeExploit,
              self).__init__("FTPWinaXe Exploit",
                             "Injects a WinaXe 7.7 FTP buffer overflow.",
                             "Privilege elevation")

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.IP_DESTINATION, IPAddress()),
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.MAC_DESTINATION, MACAddress()),
            Parameter(self.IP_SOURCE_RANDOMIZE, Boolean()),
            Parameter(self.PACKETS_PER_SECOND, Float()),
            Parameter(self.CUSTOM_PAYLOAD, String()),
            Parameter(self.CUSTOM_PAYLOAD_FILE, FilePath())
        ])
コード例 #11
0
    def __init__(self):
        """
        Creates a new instance of the EternalBlue Exploit.
        """
        # Initialize attack
        super(EternalBlueExploit,
              self).__init__("EternalBlue Exploit",
                             "Injects an EternalBlue exploit'",
                             "Privilege elevation")

        self.pkt_num = 0
        self.path_attack_pcap = None

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.PORT_SOURCE, Port()),
            Parameter(self.MAC_DESTINATION, MACAddress()),
            Parameter(self.IP_DESTINATION, IPAddress()),
            Parameter(self.PORT_DESTINATION, Port()),
            Parameter(self.PACKETS_PER_SECOND, Float())
        ])
コード例 #12
0
    def __init__(self):
        """
        Creates a new instance of the Joomla Registeration Privileges Escalation Exploit.
        """
        # Initialize attack
        super(JoomlaRegPrivExploit,
              self).__init__("JoomlaRegPrivesc Exploit",
                             "Injects an JoomlaRegPrivesc exploit'",
                             "Privilege elevation")

        self.pkt_num = 0
        self.path_attack_pcap = None

        # Define allowed parameters and their type
        self.update_params([
            Parameter(self.MAC_SOURCE, MACAddress()),
            Parameter(self.IP_SOURCE, IPAddress()),
            Parameter(self.MAC_DESTINATION, MACAddress()),
            Parameter(self.IP_DESTINATION, IPAddress()),
            Parameter(self.PORT_DESTINATION, Port()),
            Parameter(self.TARGET_HOST, Domain()),
            Parameter(self.PACKETS_PER_SECOND, Float())
        ])
コード例 #13
0
 def test_is_float_invalid(self):
     self.assertFalse(Float._is_float("invalid")[0])
コード例 #14
0
 def test_is_float_valid(self):
     self.assertTrue(Float._is_float(50.67)[0])