Attacks on programmable logic controllers (PLCS) -- the systems used to automate the control of industrial equipment -- can have devastating physical consequences as Stuxnet demonstrated in 2010 when it was used to sabotage uranium-enriching centrifuges at Iran’s Natanz nuclear facility.
Stuxnet's attackers took advantage of several Microsoft Windows vulnerabilities to compromise PCs across the facility, which were then used to tamper with the PLCs.
Security researchers at Black Hat USA in Las Vegas last week demonstrated how a similar attack could be pulled off using a worm residing entirely in the PLC itself and capable of spreading to other controllers -- without a PC or external help. Such worms can be very hard to detect using traditional anti-virus tools and can be easily missed by PLC operators.
The problem, according to researchers Ralf Spenneberg and Maik Bruggemann of OpenSource Security, is that some PLC models allow unauthenticated changes to the user programs, or instructions that are used to control connected equipment. In such cases, it is possible for an attacker with the right know-how to insert code into the PLC that causes connected equipment to behave erratically or to fail entirely.
The researchers used a Siemens S7-1200 PLC system connected to a small piece of industrial equipment for the demonstration. They showed how an attacker could introduce malicious code into the system and get the PLC to issue commands for disrupting the operation of the connected machinery. They also had the infected system search for and infect other PLC systems on the same network.
The demonstration began with the worm scanning a mock industrial network for the presence of Siemens S7-1200 systems and detecting them from their associated TCP number. The researchers showed how the worm could then replicate itself on the target system by mimicking a legitimate process for software changes. Once on a PLC, the worm is designed to scan for and infect other PLCs on its own, they said.
In addition, the PLC Blaster worm used in the demonstration was designed to communicate over TCP with remote a command and control server and receive commands from it.
The hardest part of the attack, according to Spenneberg and Bruggemann, was figuring out the protocol used by the Siemens PLCs to communicate with each other PLC systems. There is no publicly available documentation on how the protocol works,, so the researchers had to adopt their own methods to try and extract the information. Once the protocol was cracked, the rest of the infection and worm propagation was relatively straightforward.
The Siemens PLC chosen for the demonstration offered several anti-tamper mechanisms, the researchers said. For instance the system is designed to prevent unauthorized modifications of the code, is password-protected, and uses AES to encrypt source code. A function called Copy Protection binds user program to specific PLCs, while another access control feature limits the features on the PLC that can be used without a password.
But most of the protections are insufficient and only protects exiting code. They do not fully stop attackers from introducing code modifying the behavior of the PLCs.
According to the researchers, the Siemens model that was used for the demonstration is not the only PLC that is susceptible to such tampering. Many PLCs that have programmable TCP functions support data transfer via TCP and are on an industrial Ethernet are vulnerable, according to them. But the researchers have not tested any of the other models, and therefore are not sure how well the mitigation measures on each of these devices work.