Éireann: Things are blowing up, in industrial systems, here in Germany, this year! I had hoped that these things wouldn't happen. This kind of future wouldn't be one that we are living in. But unfortunately it is. And I hope that we can make that better, partly through the course of this talk. But more, I think, in the future with your help and your work. So I'm sorry to begin this presentation with such a dark thought but: This year's theme is a new dawn. And it's always darkest just before the dawn. So we're going to go through some of that darkness in industrial systems and SCADA-systems to get to a better place, right? Now with that said no hacker really gets to be where they are without the help of other, right? We stand on the shoulders of giants and part of the key is not stepping on their toes, on the way up. So I would like to say thank you to a bunch of people who are here and also some people who aren't here. Particularly the Oslo hackerspace where I hang out. And these people have taught me a lot of things not just about technology but about life and on "aprendo", which is how Goya signed some of his last paintings and sketches - which basically means "I'm still learning". OK. So with that said I hope that you will enjoy this talk with its darkness and its humor all at the same time. I used to be in circus, as you may have guessed from the mustache. So I encourage you not just to view this as a technical vulnerability presentation but also as kind of live technical standup comedy. Instead of jokes we have vulnerabilities. And I hope that you will enjoy them. So these vulnerabilities are in switches. I chose to focus on switches and that will become clear throughout the presentation, why I chose to do that for industrial systems. And we are looking primarily at three different families of switches. Because I don't want to pick on any one vendor. In fact, the whole idea of this talk is to continue giving it. I have two other colleagues who couldn't be here with me today, who have some vulnerabilities in some other switches. And they look forward to presenting those vulnerabilities as part of this presentation in the future. So every time we give this presentation we'd like to give some new vulnerabilities and show that this is systemic and endemic risk. So the three switches we'll be looking at today are the Siemens Scalance- family, the GE Multilin-family and the Garrettcom Magnum family. These switches are usually not very big. They might be 8 ports, they might be 24 ports. And they're used in a variety of different locations. So this talk is for you, if you work in a utility, if you test industrial Ethernet switches, if you manage industrial Ethernet networking, if you're comfortable at a Linux commandline and you play with web apps but you don't know as much about reverse engineering. Don't worry, I'm exactly the same. I suck at reverse engineering. But I care about this stuff. And so I'm learning. If you are a developer of firmware then I think this talk is for you as well. I hope you learn something from it. If you like vulnerabilities you'll enjoy this quite a lot. I'm going to be sharing with you a little collection I have, you know. Some people collect stamps or stories or jokes. I collect private keys. And I like to share them with other enthusiasts such as yourself. If you happen to work for one of the switch manufacturers you know I've spoken to before. Some of you I get on with very well. We speak regularly. Some of you not yet - but I hope you'll come and have a chat with me later. Ok, most SCADA or ICS presentations go a bit like this: Pwn PLC, the RTU, the HMI - these are terms, you know, that all of us in SCADA know. Maybe most of you know them by now, they're pretty popular. I hope you do. But programmable logic controller, remote terminal unit or human machine interface. And the basic idea of the presentation is if I pwn these things, game over. Physical damage. I win. Isn't the world a scary place? And I encourage you to demand better content. I certainly grew up with better content. I used to go and see the presentations and the talks of a guy called Jason Larson. And he has a fantastic example of this. I want all of you to try it, right now. Just think about: If you had complete control over a paint factory. What would you do to damage it? No one is going to get hurt. Everything's safe. It's a thought experiment, right? What would you do to damage it? Most people can't answer this question. And on certain types of processes I can't answer this question. But other types I've worked with before and I can answer this question. And I encourage you to to ask it. But if you like and you want to learn more go and see Marmusha's talk - I think it's tomorrow. Think of my talk as a frame for her talk. She's going to be talking about how to damage a chemical process. And what you need to do as an engineer to do that. And the reason she's doing that is to build a better process in the future. You have to break a few things to make them work a little bit better. Okay. So what's the point in industrial control systems security? It's not credit card data. It's not privacy. No disrespect to my privacy friends in the room. I have the deepest love and respect for the work that you do. But confidentially ... confidentiality is the lowest priority for us in industrial systems. It would go: Availability, integrity, confidentiality. And you might even swap integrity and availability in many cases. So, you have to protect the sensor data or the control signals. Everything else is maybe a vulnerability on the path to getting this. But it's not the most important thing that we're trying to protect. So that's why I'm attacking switches. That's where the process is, right? Now these may not be core switches. They're often a little bit further down in the chain. They're field devices, right. So you might find them in any of these locations. And this last example is not necessarily important be cause oil and gas is important - but it's important because it gives you the general format of all industrial systems. You have sensor network. And sensor data is traveling back and forth. And you have control signal data. That's it, basically. You might have different control signals on different protocols and you might have different sensors on different protocols, giving you different values like pressure or heat or whatever. But most processes follow basically this format. Okay. I don't do SCADA 101. There are other people who do this. I'm trying to do a little bit, to set the reference for this talk, but usually I avoid it. So basically there's not much authentication or integrity in industrial systems protocols. There's not much cryptography. You would expect there to be, maybe. I'm continually surprised that I don't find any. And when I do find it, it's badly implemented and barely works. So once you have compromised a switch or another part of the network you can perform man-in-the-middle attacks on the process. Or you can create malicious firmwares on these different switches. And that's what I'm trying to prevent. I'm trying to find some of the different methods that people can use to produce these firmwares - and then get the vendors to fix them, right. Okay. These are some of the protocols. If you are new to this space, if you want to do some more work in this area, but you don't know what to work on, take a picture of the slide or go and find it later. And choose one of these protocols and go and work on it. We need people to go to these different organizations. Some of them are proprietary, some of them are open and complain that there is not enough cryptography going on in this space. And yes you can use VPNs. But believe me, I often don't find them. Okay. These are the switches, the specific versions of the firmware, in case you're here for vulnerabilities instead of just me waffling on about the basics. If you want to go and look these up, if you're a penetration tester working in this space, you can go and find them all online. And you can get a feeling for the kind of coding practices that go into these different devices. Now I've tried to choose the vulnerabilities that I'm presenting very carefully. To take you gently from web app vulnerabilities into a little bit deeper into the firmware. So the first one we'll be looking at is Siemens. And again, I'm not picking on any particular vendor. In fact I'm very proud of Siemens. They're probably here again. They're here many years. And they fixed these vulnerabilities within three months. And I think that was awesome - especially in the space that I work in. The average patch-time in SCADA and ICS is 18 months. So I think Siemens deserves a round of applause for getting these fixed. Applaus So without further ado let's have some fun, right. So MD5, you go to the web page for this switch. This is the management page of a switch, right. And you interact with this webpage. And you have a look at it. And on the client side they do MD5 of the password. Okay. That's fascinating. I don't think that's particularly secure. But it's done in roughly the same format as that Linux command. So I use the Linux command instead of the JavaScript just to make it easier for everyone. You have the username at the beginning and the password is in the middle. And then you have this nonce that's at the end, a number you use once, right. I was surprised to see the nonce, and it's even called a nonce, right. So somebody had done a little bit of homework on their cryptography. And they understood that they wanted to use, you know, this number used once to prevent replay of the hash every time. Okay, that's some pretty good work. Unfortunately this is MD5 and this is protecting your electric utilities and your water and your sewage systems. And you can brute force this in a few seconds, if the passwords are less than eight characters. and if they're around 15 it might take you 20 minutes or something. You can do this from PCAPs, from network traffic captures. And then you have the cleartext password that you can use forever after, with that switch. So, off to a bad start, in my opinion. So these are the nonces that we're looking at. I'm glad to hear you laughing. It makes me, it warms the heart, right. So you can see that they are incrementing and that they are hex. Yeah. What else can you say about this? The last half is different than the first half. Not only is it incrementing, it is sequential. If you pull them quickly enough. For those of you who also do a bit of reverse engineering you might recognize the first half as well. Anybody in the room see any patterns in the first half of the of the nonces? No? Hmm? Very good, IP address. Mac address would have been a good guess as well. I thought it was at first. And I got very confused when I went to look for the IP address. Because I went to the switch itself. And the switches IP address was not this in hex. It's the clientside address. Which I just couldn't believe, right? Like, it seems like it makes a sort of sense if you're trying to keep session IDs in state. And it's like oh I want a different session for every IP address. And then I'll just use time, I use uptime in hex as the rest of my session ID, right? You know, the entire IP space and time that can't be brute force. It has a kind of crazy logic to it, right. Unfortunately it can be. And you can get the uptime from the device using SNMP. And of course if you don't want to use SNMP you can get old-school and use the TCP- sequence-ID numbers. So, not a lot of entropy there, I guess, I would say. And I think their lawyers agreed when they put out the comments on this. All right. Not only can you perform session hijacking. And if you are attacking switches I'd like to point out that session hijacking is not necessarily a great attack in this environment. Think about it like you would at home, right. How often do you log into your router? In fact even more importantly how often do you upgrade the firmware on your router? Everyone who has upgraded the firmware on their router ever raise your hand. Just for an experiment. Thank goodness, right. But wait, keep them up just for a minute. Everybody who's updated it this year, keep your hand up. Everybody else put them down. Everybody who has updated in the last six months ... okay ... So that gives you a sense of how long these vulnerabilities can be in play on an industrial system's environment. If you multiply that by about 10, right. Okay, so you can simply upload a firmware image to a Siemens Scalance device with this version number without authentication. You just need to know the URL. Cross-site request forgery, right. I just say CSRF all the time. I don't even remember what it stands for. So you can upload or you can download a logfile. Not that useful but you get a sense of what's going on on the switch. You know what usernames might be present, whatever. Incidentally all of these switches by default or at least this one only have two usernames, right. So it's "admin" and "operator" I think on this switch. Or maybe it's not. But anyway, there's two usernames "admin" and "manager"? I know I get them mixed up now. But the configuration includes password hashes. I'm actually not even entirely convinced they're hashes because when you increase the length of your password it increases. But I'll leave that for future researchers to examine. You can download the firmware image from the device, which is nice. So you just make a request. You just post an HTTP-request to this device. And it gives you the firmware that it is running back. That's not that big a deal, right. Because you're just viewing data on the switch. But you can upload firmware and configuration to this device. Which is an authentication bypass in and of itself. But it's also interesting because I can take a configuration file from one of the devices that I have at home with a known password. I can upload a new configuration file with a password that I know. I can use the device to do whatever I want to do. And later I can re upload the old configuration file that I got from the device, so no one ever even realizes what's been changed, right. So. I think that's a disappointing state of affairs. And I wrote a script to do this. So that you wouldn't have to when you are doing penetration tests of these device. And I gave you a little ASCII menu because sometimes I get bored. Cambridge is a small town and there's not much to do in the evening. So feel free to go and examine my github-repository where I put up some of this stuff. I'm Blackswanburst on Github, and on Twitter. So like I say, Siemens are some of my favorite people. So I'm going to finish up with them. This is old day, if you like all that you have just seen. But I want you to keep in mind that these vulnerabilities will still be present in the wild for another two or three years. And I encourage you to go and have a look at your systems, if you have any of these devices. And check them out. And upgrade the firmware. I also hope this encourages you that if you haven't done much in industrial systems and SCADA you don't have to be intimidated by all of the engineering and the terminology, and the verb beotch(?).. There is plenty for any of you in this room to do in the industrial systems space. You need to spend a little time speaking to engineers and translating your vulnerabilities into something meaningful for them. But that's just a matter of spending more time with them and getting to know them. And I think that's valuable too because they have a lot of experience. They care very deeply about safety. And I've learned quite a lot of things from engineers. My general point here is I'd like you to stop defending banks and websites and other stuff. We need your help in industrial systems, in the utilities. We could really do with living in a safer world rather than one where you're just protecting other people's money. So we're gonna move on to the GE Multilin line. I worked on a GE ML800 but these vulnerabilities affect seven of the nine switches in this family. Seven because one of the other switches is an unmanaged switch. If you're a hardware person maybe you want to go and play around with those but not so much my thing and the other one uses a different firmware image but seven of the nine switches use a similar firmware image GE offers a worldwide 10 year warranty. So let's see if that includes fixing vulnerabilities. I think it should. What do you think. No? Couple noes couple of yeses, undecided. All right. CCC is undecided on something that's novel. Let's start with some new vulnerabilities. Cross site scripting. Reflected, I grant you but still cross site scripting and I want you to pay attention to the details. I'm not going to go slow for you and ask you to think . I know it's morning, I know it's tough but I am going to ask you to think. See flash up there flash.php and the third one. Yes, it runs flash in your browser. So if you know something about Flash come and have a look at the switch some time. I didn't go for active script attacks. There are so many attacks surface on this device. I just I sometimes don't even know how I'm going to finish looking at all of them. So I just work with the web interface to begin with. So you have this cross site scripting times eight and I want you to notice in the last section there arbitrarily supplied URL parameters. I don't know about you but I think that's funny right. You can just make up parameters to stick your cross site scripting in. laughs It's unbelievable right. Yeah. Anyways what does that look like. It looks like that, they have an error data page. OK maybe I'm using a browser that they don't approve or something but it deserves looking at. And you can do quite a lot of things with javascript on the client side these days. Disturbing. Anyways I'm not a big fan of XSS so I'm going to move on to things that I think are worth my time. So if you fetch the initial web page of this switch before you've even logged in you get this config. So this is pretty authentication. No authentication, right. Now keep in mind that these switches are designed for process data, right. It's not carrying traffic to images of cats. It's supposed to be for engineering. So what happens if I add a nocache parameter and I make it say 500000 digits long. I should just be able to crash the web server. Right. Maybe maybe. But you would not expect it to reboot the switch. And it takes a minute or so for the switch to reboot which is actually really impressive comes up pretty quickly. But you know obviously you can repeat this. So I wanted to examine that a lot further. I wanted to know more about that that crash what was rebooting the switch. But like I say I'm not a very good reverse engineer. So you're going to go on a little journey with me where I learned a couple of things about reverse engineering and I had to change my approach from looking at the webapp style loans to moving into this other stuff. So why is why is it DoS even interesting. You'll remember that I mentioned Misha's talk. So the reason I mention her talk, this is it right. Denial of Service on a Website. Who cares it's tearing posters down as xkcd once famously explained to us but in the industrial system's environment it's very different. It can be very serious right. A simplistic example is you have an application that has a heartbeat and if you stop that heartbeat it might go into some sort of safety state it might for example scram a reactor. There is a famous denial of service on PLCs that did scram a reactor in real life. Does anybody know what H2S is? Any oil and gas engineers in the room? Okay so H2S alerts not reaching their destinations is pretty serious business right. For those of you who are not aware of H2S it's a byproduct of producing oil and gas and inhaled in very very small amounts you can go unconscious and in sort of larger amounts. Respiratory failure. So if you take CA safety seriously if you ever work on these rigs in these environments you learn to care about the wind sock. Right one of these alerts goes out. An alarm goes off. There are many different alarms you have to memorize how they all sound on a rig and then react to them and when you hear the H2S alert you look up at the wind sock to keep an eye on where the wind is and trying to avoid being downwind of wherever the leak is. So a simple denial of service that we would not care about in a web application environment in this environment can be very serious. I'm not saying it always is. It just can be right. So denial of service goes up in our list of problems especially when we're looking at networking devices. Okay so that's that's it for the denial of service. But like I say we're going to look at some other stuff. In fact the story with the switch began with a concerned citizen about three or four years ago I found 10000 industrial systems on the Internet as part of my master's thesis and I was pretty uncomfortable with that. So I sent that data to various computer emergency response teams around the world. I believe it was 52 of them right. Not all of them were critical infrastructure. A lot of them were small stuff but maybe 1 in 100. I was told or in one particular country when they got back to me one in 20 were considered critical infrastructure. And after that you have a sort of reputation among the computer emergency response teams of the world. So people send you stuff you get anonymous e-mails from someone called Concerned Citizen. Thank you very much. They sent me a firmware upgrade pcap of this particular device. I suspect that they worked at one of the utilities and they wanted me to see how upgrading the firmware of this GE switch was performed. So it all began with a pcap. So I ran TCP trace to carve out all the files and see what was going on and you could see instantly that there was an FTP session later looking at the switch I see that you can also upgrade them over TFTP so the management of the switch happens in HTTPs and is encrypted but the firmware upload goes across FTP right so you can just carve the file out a little bit of network forensics I guess. So instantly I could see that this one is complete and the ports on the end of the numbers give me a clue of what's going on in the larger stream. This one seems interesting. Let's have a look at it. So. I tried running file and binwalk I don't know about you but I believe that hacking is a journey of understanding and facts hacking is understanding a system better than it understands itself and nudging it to do what you want right. And I also feel that I should understand my tools. I don't really understand my tools until I know where they're going to fail me or they have failed me in the past and in this particular case I think binwalk is a fantastic tool and file is a fantastic tool. But they didn't tell me anything and that was that was a journey of discovery for me. So that was nice. It was like OK binwalk doesn't always give me everything. I think I was running an older version and I think it would handle it now. But the point is after been walked didn't give me anything just resort to the old school stuff right. Go strings and I found these deflate and inflate copywrite strings and I could tell that a certain portion of the file was compressed. This is just from the pcap. Remember this whole story. So I tried to deflate the whole thing. That didn't work again. I just did something simple get a python script that checks every byte to see which parts of the file don't produce ZLIB errors when you try and decompress them and you figure out what sectors of this file are compressed. So you go to your friend dd and you carve out this section of the file right. So we have this larger firmware image with this little compressed section and we have now cut this little compressed section out. I suppose I could have loaded this up into python and use ZLIB to decompress it. But at the time I was still trying to use command line tools and someone said I'll just concatenate the gzip bytes on it. Gzip inherits from inflate and deflate. So if you just concatenate the bytes it should still handle it. So I did that and I got a decompressed binary. When you ran strings on that it started to make a lot more sense and you could find the opcodes in it where previously it didn't make any sense at all. So once you've got an image like that what do you do. Well if you're me you just grep for bugs. I think I learned that from Ilija. If he's here in the room thank you. Thank you very much. I asked him like a year or two ago. How do you how do you find so many bugs. And he said: "Oh, I just, you know, I grep for them, I use find." laughs And so I started thinking about firmware images. Like if I was going to grep for a bug in a firmware image what would it be. And my answer is hardcoded credentials and default keys because you find them every single time so I have this command aliased on my machine and I just grep for it and I find private keys and this is how you too can end up with a private key collection. So, there you go. Applause Yeah they're hardcoded keys, but what are they for. It doesn't stop there. You know you've got the keys, but what do they do, right? That was the next step of the journey for me. Two of them you can see one sencrypted with a password; we'll come back to that one later. Let's start with the one on the left. If you load this key up into wireshark. and you use it to decrypt the SSL you have a self decrypting pcap. Remember at the beginning it was using HTTPS to manage the device and upload this firmware image. So if you happen to have this firmware image you can decrypt all the traffic. No forward secrecy, right? Now you don't have to be lucky and have concerned citizens send you an email. You can download this image from the GE website and you can carve the keys out of the image in the same way that I did and decrypt the SSL traffic of any pcap that is sent to you. Now the passwords underneath that are in clear text. You can see them highlighted down here. Password Manager and user manager. You can see them up there as well and you can see that we've decrypted the SSL with that key. So default keys, right? Is it a big deal? I believe the vendors in this case say you can upload your own key to the device. For those of you who aren't used to working in embedded it sometimes is difficult to generate a key on the device because you don't have enough memory or you don't have enough entropy or you don't have enough processing power. That's the usual excuses. And they're true I shouldn't say excuses those those things are true. But you could of course generate it on the client side and upload it to the device and that's what they allow you to do with this switch which is great but where is your encrypted channel in which to upload this key? laughs So you can use the serial device and make sure visually that there's no man in the middle. But if you're doing this remotely – and I'd like you to keep in mind that most substations are remote – if anyone here works in a utility are you going to drive to every substation, plug in a serial cable to change the keys on all these devices? It's the sort of thing you need to know in advance right? So the problem with key management, particularly with SSL and the industrial systems environment, is that you have to manage the keys. And these particular keys, well the certificates are self signed so you can't revoke them. And besides industrial systems are never connected to the Internet. So it wouldn't have made any difference. So these are the kind of problems we're dealing with in this space. And that's why I'm trying to encourage you. Whether you do crypto or privacy or whatever spend a little time in the embedded space, just for bit: there's plenty of easy work. OK. So what about the second key. It requires a password. I didn't feel like brute forcing it. Maybe you do. I don't know. I tried all the strings in the image. A classic technique, just in case someone had a hard coded the password. I mean the hard coded credentials were there but not the hard coded password. So I guess I gotta start reversing, and as I previously said I suck at reversing. That's why I come to CCC, so I can learn, right? But I did find this PowerPC ROM image. and I think its running eCos and redboot and I haven't even gotten down to doing hardware stuff: taking it apart, having look at, it but I probably will in the future. So there's the image I'm slowly starting to learn my way around and figure out what's going on. So I had a look at the image and I figured out that this key is used for SSH, right? Well it would be the other encrypted thing. But I couldn't enable SSH on the device. I try and enable SSH on the device and I'm logged in as manager by the way. which is highest level user on this particular device, and I put it in the passwords that I know and a bunch of other passwords and they don't work. Like I said, I tried all the strings in the image. So apparently to enable ssh, I need a password for something. Now maybe I'm just misunderstanding or I'm not so clear on what's going on but I don't know about you. I kind of feel like if I buy a device that's supposed to be used for a safety critical process I should be allowed to use SSH without having to call up the vendor and get some special magic password. So considering I don't like that approach. What if I patched my own key into the image right. I don't know the password of their key but I know the password of a key I can generate. So I just need to make sure it's roughly the right size and try and patch it in. Then I've got some problems with compression because I've got to reverse the whole process that I just described to you patch it into the larger binary. Will there be any CRC or firmware signing? I don't know, right. So the uploaded image is not a valid image for this device. That's correct: I messed with it. But I got this error and it gave me a clue. It gave me a clue that I did indeed have some of my CRCs wrong so when I altered the image again I got to this state. So you're learning all the time by having a real device. Now some of my friends they do static analysis and they don't buy these devices. I decided to buy this one. I found one on eBay. It wasn't very expensive. I mean it depends on your range for expensive. But if you're helping defend industrial systems I thought it was worth the money. So I bought it and this enables me to try firmware images out and I can slowly start to figure out what I need to patch on these firmware images to do whatever I want. Luckily I just tried to patch mine to have SSH because I thought people deserve to have SSH. So that's an Adler 32 up there on the left and the other CRC is on the bottom so that Adler 32 and some adjustment of file length although zeros in that line just above it eventually got me to the point where it believes it's a corrupted binary. And then we have this CRC on the end that we need to have a look at. Now I'm a big fan of suspense. I love suspense. I'm going to leave that one is a cliffhanger and an exercise for you watching. So I said I was going to talk about GE ML800 but I'm also going to talk about Garrettcom. Luckily it's not very difficult. Garrettcom is the original equipment manufacturer for the GE ML800 series. I noticed that because the certificate I found attached to those private keys said Garrettcom in it and I went and looked at their firmware images and they have similar CRC similar file structures similar everything so I believe that they are affected by the cross site scripting, the denial of service, and hardcoded keys. I understand from some people that they have been in contact with GE to try and fix some of this stuff but their response to GE was mainly "Sorry, this is the end of life on this device". That's fine. I understand you're running a business but you're selling equipment to people who manage utilities that we all depend on. If Sony goes bankrupt because they get hacked that's one thing right. But you can't just dissolve a utility and start again. As my friend Klaus points out regularly – fantastic insights into the industrial system world, Klaus and Vanessa – you can't just dissolve the utility and start again. You still have the same infrastructure you still have the same workers. It doesn't work that way. You can't bail out utilities that we depend on. So sorry. End of Life... I don't even understand why people buy these devices and this code without code escrow. When you buy the code make sure you have the code in perpetuity for these systems so that you can fix them when something like this or something worse happens. If I'm your worst nightmare, you have real problems because there are very dark people in the world actually damaging furnaces in Germany. So me disclosing keys on stage is scary for you. You need to get a grip. So, garrettcom? Here's your key too. Applause The strings come from the images. Developers are funny people really. I like this. I just put them up because they're funny. Some people had some hard times, I guess, writing some of this code. And my respect to them! They do great work but you know, there's a couple of things we can improve on security in these devices. So I once had the opportunity to stand in front of six different vendors at the same time their computer emergency response teams at a conference and I said to them, "Will any of you commit to an average patch time for vulnerabilities of three months?" An average patch time, because it might take 8 months, as it so far has taken in the case of GE and Garrettcom, to work on these issues. It might take a long time in some cases but as an average patch time I think 3 months for things that we all depend on is reasonable. So I asked these six different teams in the same room. If any of them would commit to this and I heard silence for 30 seconds. So my friend decided to call this the silence of the vendors right. And I think that's that sums it up. I'd like to see better patch times. I'd like to see a computer emergency response teams in each of these vendors and I'd like to see someone responsible for security in each of these different utilities. I can dream, right? I think that key management... the current practice industrial systems is to take some insecure protocol and wrap it in SSL or TLS which is why we need the help of you privacy people because TLS and SSL are not the be all and end all. They often sort of go the wrong way, right. For example you can use TLS to do integrity without encryption so you can verify that every message has reached its destination intact but it is not encrypted. And this means that you can still do intrusion detection analysis of the packets. That's really good. But nobody uses that in SSL in other ways right. I'm a big fan of Shodan and use Shodan for a variety of different things usually to get a sense of the Internet as a whole, right? Let me back up a little bit. When I was at Cambridge I went to Darwin college and because you're at Darwin college you read up a bit on Darwin and you think about how Darwin thought and I think the Internet is kind of like that. When it was built by the IETF and various people, who did fantastic work, they imagined it one way and then we inherited it and it grew and it became an ecosystem and stuff happens out there that you wouldn't expect. And so that's why I like Shodan. It's kind of like being a natural scientist: what's a survey of the world, what kind of machines are out there, what versions are they running, when do people update their SSL.. err, you know, their certificates do they do it before or after the certificate is invalid. Do they always upgrade the algorithm. Do they increase the key size. You know how do things change right you need to sort of study it as a whole and that's my point when it comes to just taking SSL and slapping it over a protocol. It's not quite that simple. So again we need your help. Where can we go with these attacks. And you remember at the beginning I pointed out the underpants gnome. The emperor wears no clothes. Altering switch configurations is a big deal because you can exfiltrate process data. That gives you a map of the process because industrial systems are bespoke. Each one of them is different. It does run different traffic and we are lucky to work on security in this space because our users are numerate and literate and they care about safety. They don't always understand security but they do care about safety. So if you can make it a safety concern they care. There are also engineers that many of these utilities who look at the network 24/7. Not all of them but some of them. Can you imagine a home network or something else with that kind of user base. We're lucky we should be taking advantage of that user base. So getting back to the point you know denial of service attacks to disrupt the process go and see Marmusha's talk. This will all make a lot more sense when you go and see her talk. Basically any man in the middle attack can disrupt alter or drop traffic at this point. If you can affect the switches and the substation. And exfiltrating in the data gives you a map of the process which leads towards further potential damage for the utilities. Now it's not always that simple people will get up on stage and they will tell you I am awesome and this is how it's done and it's easy to blow shit up. It's not true. It takes a little bit of thought it takes a little bit of work. I am certainly not awesome. I am just a quality assurance person from a former vendor. I just decided to get into security and keep going with it. So you can't always perform these man in the middle attacks. People will say you can. But the reason you can't is real-time system constraints. Some systems will stop receiving traffic five milliseconds or microseconds later and ignore anything. If a value doesn't arrive in this time it doesn't care. So the idea that you can route the traffic out to some other country and then back in and disrupt the process is bollocks. Sometimes you have to alter the firmware to achieve that. That depends on the process but I'm just trying to give you a sense of how performing actual attacks give you a sense of what the limits are, what the logistical burdens are for the attacker and that's important stuff for us to know. All right. Little bit of an overview. Drunk session IDs. brute forcing MD5+NONCE, cross site request forgery for firmware upload (of all things), reflected cross-site scripting (8 cases of it) pre authentication denial of service, hardcoded keys times 2 in a firmware image, SSL without forward secrecy, self signed certificates so there's no revoking there's no managing of the keys on these devices right. Not to mention utility workers are busy already. They may not have time to manage all of these devices we might need to rethink that approach right. Clear text passwords under SSL because well no one can break SSL unless you hard code the key in the firmware that's downloadable from the internet. Enable ssh with a password and three quarter of a year waiting for fixes for some of this stuff. I'm not happy with that. I think that we could live in a much better, much safer world. And to do so we need to talk very seriously about some of these issues. Don't take my opinion for it. Listen to some other people. The best thing about doing industrial systems work is the diversity of approach. You know I love that there are so many other people doing SCADA and ICS. And I love that they're going different directions. So in the future I plan to be on another stage with some friends and show you some more. Thank you for listening mustache fans and as a parting thought. More tax money is spent on surveillance than on defending common utilities. Applaus Herald: Thank you. It made me a scary Sunday morning. They got a utility *<< guess, mostly incomprehensable* down the road. OK. We'll have some questions taken please. As the session is recorded and streamed anything you say, say it into a mic. Any questions up? Wow, it is Sunday morning. Éireann: Number three, sure Herald: everybody understood everything? You're kidding me. Éireann: I've got one right here Herald: here is a question. Question: Hey thanks I enjoyed your talk and I think it's very important to raise awareness. But I think it's not to raise awareness. Not much in this community, but within the engineering community and I see it a lot of times and many engineers having lots of problems doing that for several reasons. There is maybe the engineer who is thinking about this but has its miniatures in the back has to deal with service personnel which know how to work a hammer and a screwdriver and on the other side, engineers have to work with customers which more those lazy people. And so that's how these things happen. And I think it's more important to raise awareness of these kinds of things in the engineering community. Éireann: So just to repeat a little bit for anybody else that couldn't hear it or for the recording it's very important to work with the engineers some of the engineers understand the problem. But typically management or lower level service personnel don't always understand the problem. And it's not important to raise the awareness in the hacker community. But more with the engineers is what you were saying. Right. OK. Absolutely true. Completely agree with you. I don't just come to these conferences and present to you guys. I go and I present to the engineers too. And in fact a couple of engineers have come to this conference because we did work at other conferences to see what the hacker community is about and learn things from the hacker community because this is a place where you can learn if you're just not afraid of getting pwned a couple of times right. And it happens to me too right. I learned a lot from getting compromised on my machine and watching someone do something. Anyways back to the point I don't just work with engineers or hackers. I also work with C-level executives so I'm on a sabbatical from IOActive at the moment. at the Cambridge Center for Risk studies, and I'm working with the insurance people which has its challenges shall we say. But some of them are very intelligent people and they want to understand what's going on with hacking attacks and they want to approach this from a slightly different angle. My stake in that is to be sure that when the insurance people do get involved that they actually ask for fixes and improve stuff. So yes I do my best to raise awareness wherever I can. And I'm not alone. You can help me. Questioner: Thank you applause Herald: OK, there's another question here. Number two. Oh, and up there too, yes we saw you. OK number two was first I think. Go ahead Question: incomprehensible. So you mentioned a couple of things, err a couple of vulnerabilities and I was wondering what you would think an ideal system would look like. You mentioned key provisioning of course putting certificates. I assume that they were different certificates for different devices rather than the same certificate for all devices. Okay that's a bad thing. And and also sort of the way how the software update management works. So how would you if you could give them some advice how to design a system how would you do it? Éireann: Okay. So first of all I wouldn't hard code the keys as you as you discussed to be in every device the same. It's one thing to put in your documentation hey you should update the keys but I mean if I can patch binary file with a key then there's no reason you couldn't do that on the website where you download the firmware image right. Just as an example as a thought experiment sort of makes that clear. The upgrade path for these devices is download the firmware image from the website to some machine and then carry it, because all these systems are airgapped. to some other location and then upload it onto the switch right with hardcoded credentials. So first off whenever you provision a switch initially you provision all of the credentials for that device. That's standard practice of many routers and other pieces of equipment today. And I would think less about defending and securing the device than on being able to regularly check its integrity, the integrity of the firmware that is running and the integrity of the configuration. So I'd focus on that and I'd focus on being able to recover the switch after it's been attacked. So you reverse your thinking. You assume that one day someone is going to crack your firmware signing and crack this and crack that and you focus on how can I quickly upload a new firmware image that is known to be good and verify that the one that is uploaded is good to this device. Questioner: Thank you. Herald: There was a question up there on the balcony. Signal angel: Yes we have two questions here on the net. So the first one is how would you solve the end of life issue. Sometimes incomprehensible clients just gets really outdated. Éireann: That's absolutely true and it is slightly unfair of me to be a hard on the vendors. But it's my job to take the debate a little bit too far the other way. So how would I solve the end of life issue is the question from the internet. I don't know. I think that's not a technical problem it's a societal problem. Like when we buy bridges they are bridges until they fall down. When we buy roads they stay there until they go away. I mean there is probably some end of life issues in there but it's almost more of a contractual legal issue and someone should study that. There are people studying that but it's not my area of expertise but I'll try and answer as best I can. I think code escrow is a good way to go when you buy some of these devices you say I want the code for this device in the future. I want to have access to it. If your company goes bankrupt I need you to give up the source code for these devices when you go bankrupt or when you disappear or when it's the end of life. There are a couple of manufacturers out there doing open source switches. There's a company called Open gear who are awesome. They gave me a switch to play with that I haven't had time to look at yet. I think that's amazing right. And their code is open source and you can go and examine it. So you would have the code anyway. Those are two different approaches. I think there are others you can solve this problem technically or legally or socially but as a society we depend on these utilities and that code should not just vanish when it's difficult or costly to keep it upgraded. applause Herald: There was a second question from the Internet. Signal angel: Yes, so the second one is: what should a non-technical person in the respect of incomprehensible set non- technical person sent to manage small town utility do as best practice? Éireann: I think the first and most important thing is to look for attacks. I'm sorry I should probably repeat that question just to be sure. What should someone in a small town who manages utility do to defend themselves and protect himself. So the first thing is look for attacks. Even if you spend a few hours a week looking for something you script something up or you hire some college kid to come in and script something and look for things on your network and ask questions and yes they're going to be a pain in the ass and is going to be difficult. But you're going to learn things about your network and you might detect some attacks. The first problem in utilities is no one is responsible for security. It's not my job. It's kind of the mantra so for a small utility find someone whose job it is if you're a very small utility there's probably some other small utilities near you and you can hire a resource together to come and visit your different utilities and help you out. The second one is watch your relationship with your vendor when you purchase this equipment you spend a lot of money on it. Spend a little bit of time doing penetration tests. Yes I like it when you hire me but you don't have to hire me. There are plenty of other people you can hire who will have a look at the device and find the simple vulnerabilities. So when you purchase something make sure you test it for security purposes and that's very important because you can even put into your contract if you fail the security tests we will pay you less money. And the vendors are not going to react to security until you do that. So that's the second answer. And I wish I had a third to make it very neat but I don't. Herald: OK. There was one more question at mic 4 I think Questioner: Yes hi thank you for your time. Herald: Talk into the mike please. Thank you for your talk. Q Hi. I'm kind of a newbie to the C3 community and I am not sure about the question I want to ask you. Probably many people understand in this room but I don't know if I would like to ask you what exactly do you mean by arbitrary firmware. Éireann: No problem. So the question was What do you mean by arbitrary firmware. I mean the firmware that I have altered that was not manufactured by the vendor to do whatever I want. How do you trust that this switch sends all the packets that it should send. What if it's, you know, my handle is BSB right. What if it drops every packet that has BSB in the packet. Right. You can rewrite a firmware image to do whatever the device can do and in some cases more things than the device usually does to damage itself for example. So an arbitrary firmware is one in which anyone writes the firmware and there is no checking to be sure that this is the image that you want on this device whether it's provided by the vendor or the community right. You still want checking that this is the correct code or the code that you wanted anyway. Right. Herald: Okay thank you. Is that a question here mic 1? OK go ahead. Questioner: Yes please. In your hypothetical question, you asked what damage could I do in that paint factory. But you can also reverse it. What kind of company secrets can I obtain for example, your favorite recipe for your hot chocolate or the recipes of Coca-Cola. They are vulnerable as well aren't they. Éireann: Yes. So the question just again for everyone else. You don't just have to talk about damage in a paint factory or any industrial system. You can also talk about intellectual property and protecting the recipes that we use to bake cookies or make beer or whatever pharmaceuticals whatever. And that's a fantastic question and I'm glad you brought it up a couple of years ago when I was doing... well, more than a couple of years like eight years ago, when I was doing industrial system security I realized I wasn't getting a lot of traction. It was before stuxnet, I was a quality assurance guy. Everybody thought I was fucking crazy right. Stuxnet, career. It's wrong. It's really wrong. But the point is I tried to take that approach. I tried to say you have a process in which you manufacture something and you make money by the fact that that process is relatively secret and if you don't care about defending your workers from being damaged then at least care about the intellectual property because I'll get security in by some sort of back door right. I'm a little bit of a security Machiavellian. I'll find a way to get security into the system somehow. So I tried to say intellectual property you should be protected. And I found that they didn't care so much. I mean maybe you'll have more luck maybe post-stuxnet that that's a better argument. I hope you do. But it is an important question as well. Right. It's not, it's not just potential for damage. I think there's a lot more espionage going on on these networks than there is damage and sabotage. Herald: Okay we'll take one more question on mike four. Questioner: Thank you okay. My question concerns the concepts of software defined networking and open flow. So when I first heard about software defined networking I thought well this is a huge security issue and there may be huge vulnerabilities. After your joke I think this might actually be a good idea to dumb down the switches and put the intelligence somewhere locked up in a safe place. What's your opinion on that. Can they actually improve security. Éireann: Yes. So the question is what role could software defined networking play in these sorts of environments. And is it a good idea from a security perspective. Anytime someone has a revolution in computing we also have to update our security paradigm. So I think with software defined networking it's not whether it's good or bad it's that you defend that network differently than you defend one of these networks. So it's not so much that as good as good or bad it's neutral if you know how to defend your network. I don't care what it is. As long as someone is looking to defend it and cares about how the flows are working. So I think software defined networking in these environments could be a very good thing but the refresh rate on these devices is not that high. So I don't think we'll see it there for a little while even though it might be a good thing philosophically. It takes 5 10 15 20 years to refresh these networks so it'll be a little while. But it's not good or bad. It's just learn to defend what you got is the problem right. Questioner: Okay thanks a lot. Herald: Okay okay let's give a big hand for Éireann and thank you. Éireann: Thank you applause subtitles created by c3subtitles.de Join, and help us!