One of the major concerns of a public utility security issues applicable to securing SCADA systems of energy, gas and water supply. Manufacturers have responded slowly to this challenge and we can see traffic assurance deployments like HP with its TippingPoint IPS and Fortinet. The complex point of these solutions is that their cost is quite remarkable and some of them do not have enough functionality.
Fortunately, the Sourcefire guys began to include support for SCADA protocols withinSnort from version 2.9.2 and started with the electrical substations protocols DNP3 and Modbus.
Check out one of my previous SCADAdiary for basic definitions. I made some test myself with this functionality and Ifound very useful the following features to increase the valuable alerts within the SCADANetwork:
Check for broadcast messages: DNP3 protocol talks to each device within the system and perform specific functions on it. Broadcast messages can be dangerous specially if they have a turn off command to all the Remote Terminal Unit (RTU) that controls its own energy substation. You can check this with the following snort rule:
alert tcp any 20000 - any any (msg:All RTU being contacted using DNP3)
Check for write or delete operations not being sent by the master station: We definitely don't want someone else to write or deleteto theRTU on behalf of the official Human-Machine Interface (HMI). The following snort rule can be used to check this behavior, assuming thatHMI ip address is 1.1.1.1:
alert tcp!1.1.1.1any - any any (msg:Someone trying to write or deleteto RTU)
Check for save configuration commands not being sent by the master station: If someone writes to the RTU and then tries to save the configuration on behalf of the official HMI, could already have control of the RTU devices and make sure we no longer can send commands to them. The following snort rule can be used to check this behavior, assuming that HMI ip address is 1.1.1.1:
alert tcp!1.1.1.1any - any any (msg:Someone trying to save the configurationof a RTU device)
Check for stop applications commands not being sent by the master station: This is very dangerous if sent broadcast to all RTU.The following snort rule can be used to check this behavior, assuming that HMI ip address is 1.1.1.1:
alert tcp!1.1.1.1any - any any (msg:Someone trying to stop the applications of an RTU device)
I would include a couple of special wishlist to the Sourcefire guys to include in next versions: IEC60870-5 and Bristol Standard Asynchronous Protocol (BSAP), used in water supply SCADA systems.
Manuel Humberto Santander Pelez
SANS Internet Storm Center - Handler
Twitter:@manuelsantander
Web:http://manuel.santander.name
e-mail: msantand at isc dot sans dot org (c) SANS Internet Storm Center. http://isc.sans.edu Creative Commons Attribution-Noncommercial 3.0 United States License.