SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

52
SCADA Software or Swiss Cheese Software? Code Blue 2014 , Tokyo Celil ÜNÜVER, SignalSEC Ltd.

description

The talk is about discovering SCADA vulnerabilities.

Transcript of SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Page 1: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

SCADA Software or Swiss Cheese Software?

Code Blue 2014 , Tokyo Celil ÜNÜVER, SignalSEC Ltd.

Page 2: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Agenda

• About me • How it started? • Why are SCADA apps so BUGGY? • Hunting SCADA vulnerabilities • Analysis of the vulnerabilities

Page 3: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

About me

• Co-founder and Researcher @ SignalSEC Ltd.

• Organizer of NOPcon Hacker Conference (Istanbul,Turkey)

• Interested in vulnerability research , reversing

• Hunted a lot of bugs affect Adobe, IBM, Microsoft, Facebook, Novell , SCADA vendors etc.

• Has been a speaker at CONFidence, Swiss Cyber Storm, c0c0n etc.

Page 4: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

How it started?

• SCADA systems are in our daily life for long years!

• There was not too much interest in SCADA Security

Page 5: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Milestone

• Stuxnet and Duqu attacks in 2010 – 2011

• SCADA systems got attention of hackers and researchers after these attacks.

• Critical systems , fame, profit etc..

• They are all JUICY target

• Lots of SCADA systems are open to INTERNET

Page 6: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

No more stuxnet

• Sure , all of us know about stuxnet!

Page 7: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

SCADA Overview

Page 8: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

ICS Vulnerabilities

• Hardware/Firmware Vulnerabilities:

Vulns in PLC & RTU devices

• Software Vulnerabilities:

Vulns in Control System Software(HMI) but also affects PLC/RTU devices

Page 9: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

TWO DOZEN BUGS IN A FEW HOURS

Page 10: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Trust me , it’s easy!

Actually, it’s really easy to hunt SCADA BUGS!!!

Page 11: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Why it’s easy?

There wasn’t a real threat for SCADA software until 2010

So the developers were not aware of SECURE

Development

Page 12: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Hunting Vulnerabilities

• Simple reversing rocks!

• 1-) Analyze the target software (Potentatial inputs; communication protocols, activex etc.)

• 2-) Discover & trace the input

• 3-) Hunt the bugs.

Page 13: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Hunting Vulnerabilities

“You must understand that there is more than one path to the top of the mountain.”

- Miyamoto Musashi -

Page 14: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-1: CoDeSys Gateway Vuln

• CoDeSys is development environment for industrial control systems used by lots of manufacturers.

• Aaron Portnoy from Exodus discovered these vulnerabilities.

• Status: Patched

Page 15: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-1 : CoDeSys - RECON

• Listening PORT

Page 16: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-1: CoDeSys - Debug

• Breakpoint on recv()

• Send junk bytes

• Breapoint Access on recv’s ‘buf’ parameter

Page 17: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-1: CoDeSys - Debug

• Comparing

Page 18: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-1: CoDeSys – Switch Cases / Opcodes

• After we pass the comparison

Page 19: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-1: CoDeSys – Switch Cases

• Let’s find the bugs

Page 20: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-1: CoDeSys – Delete File

• Opcode : 13

Page 21: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-1: CoDeSys – Upload File

• Opcode: 6

Page 22: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-1: Recommendation

• Actually, file remove / upload bugs are ‘feature’ of this application

• But there is no authentication for these operations. Somebody can reverse the packet structure and use these features for evil!

• To solve this kind of bugs, developers should add an “authentication” step before executig opcodes.

• Patched in 2013

Page 23: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

An Interesting Story: Progea MOVICON Vulnerability – still 0day

“When a patch doesn’t patch anything!”

• 23 Nov 2013: I’ve discovered some vulnerabilities on the latest version of Progea MOVICON HMI software

• 24 Nov 2013: We’ve published a short analysis on Pastebin

• 3 Dec 2013: ICS-CERT contacted us about the post on Pastebin. They asked details , we sent information etc.

Page 24: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

An Interesting Story: Progea MOVICON Vulnerability – 0day

• 5 Dec 2013:

• from ICS-CERT to me;

Page 25: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

An Interesting Story: Progea MOVICON Vulnerability – 0day

• THEY SAY : The bugs you discovered are SIMILAR to a bunch of OLDER BUGS and PATCHED IN 2011.

• ICSA-11-056;

• My findings looks exactly same!!!! But I am able to reproduce on the latest version!!

Page 26: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

An Interesting Story: Progea MOVICON Vulnerability – 0day

• These bugs are similar to the bugs that we analyzed in Case-1:CoDeSys

• There is NO authentication to call some functions , operations in the software. Somebody can reverse the packet structure and use these features for evil!

• After a conversation with Code Blue staff, we have decided to mask some details of this zero-day vulnerability.

Page 27: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

An Interesting Story: Progea MOVICON Vulnerability – 0day

Page 28: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

An Interesting Story: Progea MOVICON Vulnerability – 0day

• Remote Information Disclosure: opcode [-censored-]

Page 29: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

An Interesting Story: Progea MOVICON Vulnerability – 0day

• Opcode [-censored-] calls GetVersionExA API and sends output to the client

Page 30: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

An Interesting Story: Progea MOVICON Vulnerability – 0day

• Here is a simple PoC for this bug;

Page 31: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

An Interesting Story: Progea MOVICON Vulnerability – 0day

• When we run it and call opcode [-censored-]:

• 6th byte in printed data is "dwMajorVersion" which is a return value of GetVersionExA and gives information about the OS.

• Status: PATCHED(!) in 2011 but we are able to exploit it in 2014!

Page 32: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

An Interesting Story: Progea MOVICON Vulnerability – 0day

• So what is the problem? Why old bugs are still there !?

• After comparing the older version and the latest version , I understood that actually vendor didn’t patch anything.

• Instead of fixing vulnerabilities, they just changed “opcodes” of the functions in new version!

• Older version: Opcode 7 causes info disclosure vulnerability by calling GetVersionEx API

• New version: They just changed opcode “7” to “X” for calling GetversionEx API

Page 33: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

PROGEA, your fail is unbelievable!

Page 34: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Temporary solution

• Block remote connections to TCP:10651

• If you contact me in personal , I can share vulnerability signatures that you can use in your IDS/IPS (snort etc.)

Page 35: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-3: CoDeSys WebVisu

• CodeSys WebVisu uses a webserver which is usually open to Internet for visualization of PLC

• Discovered by me • Status: Patched

Page 36: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-3: CoDeSys Vulnerability

• Buffer overflow vulnerability when parsing long http requests due to an unsafe function.

• It uses “vsprintf” to print which file is requested.

Page 37: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-4: Schneider IGSS Vulnerability

• Gas Distrubution in Europe

• Airport in Asia

• Traffic Control Center in Europe

Page 38: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-4: Schneider IGSS Vulnerability • Discovered by me • Status: Patched • IGSS listens 12399 and 12397 ports in runtime • A simple bunch of code causes to DoS use IO::Socket; $host = "localhost"; $port = 12399; $port2 = 12397; $first = "\x01\x01\x00\x00"; $second = "\x02\x01\x00\x00";

Page 39: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-5: Schneider Electric Accutech Heap Overflow Vulnerability

Buffer overflow vulnerability when parsing long http requests due to an unsafe function

Status: Patched

Page 40: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-5: Schneider Electric Accutech Heap Overflow Vulnerability

Page 41: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-3: Schneider Electric Accutech Heap Overflow Vulnerability

Page 42: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-6: Pwning the Operator

Page 43: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-6: Invensys Wonderware System Platform Vulnerability

• Discovered by me

• Status: Patched

• Killing five birds with one stone

Page 44: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-6: Invensys Wonderware System Platform Vulnerability

• An ActiveX Buffer Overflow vulnerability

• Just found by ActiveX fuzzing...

• Send the exploit URL to HMI Operator

• Click and pwn !

Page 45: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-7: InduSoft HMI Bugs

Page 46: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-7: InduSoft HMI Bugs

• This is really creepy!

• This software doesn’t check even any “magic” value of incoming packets. There is no custom packet structure!

• Sending 1 byte to TCP:4322 is enough to jump a switch case

Page 47: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Case-7: InduSoft HMI Exploit

Page 48: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Finding Targets

• Banner Information: “3S_WebServer”

• Let’s search it on SHODAN!

Page 49: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

CoDeSys WebServer on SHODAN

Server’s Banner : “3S_WebServer”

Shodan Results: 151

Page 50: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Demo

• DEMO

Page 51: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

Conclusion

• Critical Infrastructures are juicy targets!

• Hacktivists are interested in SCADA Hacking too. Not only government intelligence agencies.

• Applications are insecure!

Page 52: SCADA Software or Swiss Cheese Software - CODE BLUE, Japan

D Thank you! • Contact:

[email protected]

• Twitter: @celilunuver

• www.signalsec.com

• www.securityarchitect.org