Deny nothing. Doubt everything.
Testen van IoT Security Marinus Kuivenhoven Sr. Security Specialist Vianen, 11 juli 2016 Testen van IoT Security 2
Casio AT-550 Testen van IoT Security 3
LG GD910 Testen van IoT Security 4
Adoptie van nieuwe technologie Technologie werkt Technologie werkt goed Technologie werkt goed en verhoogt de waarde van andere technologie veilig Testen van IoT Security 5
Wat is Internet of Things Smart devices Operational Technology Information Technology veilig Testen van IoT Security 6
Applicatie Invoer -> Verwerking -> Uitvoer Spoofing Tampering Repudiation Information Disclosure Denial of Service Elevation of Privilege Testen van IoT Security 7
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 8
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 9
Pre-test activiteiten Informatie vergaren: -Informatie -Relaties -Gedrag Applicatie mappen: -Technische -Functionele Testen van IoT Security 10
Externe bronnen allinanchor: allintext: allintitle: allinurl: cache: define: filetype: id: inanchor: info: intext: intitle: inurl: link: related: site: Voorbeelden: http://www.exploit-db.com/google-dorks/ Testen van IoT Security 11
Technische sitemap protocol://hostname[:port]/[pad/]bestand[?parameter=waarde] http://www.sogeti.nl/index.html http://www.sogeti.nl/events/events.asp http://www.sogeti.nl/events/events.asp?entnm=101 Inzicht (mens) & Inspanning (tool) Testen van IoT Security 12
Techniek : Fuzzing Replacive Vervangen met onlogische waarden Recursive Vervangen met logische waarden Testen van IoT Security 13
Recursive Fuzzing 1 //pagina/viewdocument.jsp //pagina/adddocument.jsp //pagina/adduser.jsp //pagina/addusr.jsp //pagina/adusr.jsp Testen van IoT Security 14
Recursive Fuzzing 2 //pagina/menu.php?id=210 //pagina/menu.php?id=240 //pagina/menu.php?id=250 //genreport.aspx?file=annual2005.pdf Testen van IoT Security 15
Replacive Fuzzing 1 //pagina/menu.php?id=aaa213da //pagina/menu.php?id=@$$ //pagina/menu.php?id= Testen van IoT Security 16
Entry- en exitpoints Testen van IoT Security 17
Functionele sitemap Andere view op dezelfde applicatie Gericht op workflow en processen Testen van IoT Security 18
Testen van IoT Security 19
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 20
Security test stap 3 : Clientside Controls Zoek alle plekken waar de applicatie informatie van de client naar de server stuurt. Analyseer de reden waarom. Zoek alle plekken vooraf aan het versturen waar er controles op de client gebeuren. Probeer er om heen te werken. Testen van IoT Security 21
Thick clients Thick clients - Java applets - Online: http://www.showmycode.com/ - Offline: http://www.varaneckas.com/jad - ActiveX controls - Online: http://www.showmycode.com/ - Offline: https://github.com/icsharpcode/ilspy - Shockwave flash - Online: http://www.showmycode.com/ - Offline: www.flash-decompiler.com Testen van IoT Security 22
Disassemble / Decompile firmware Testen van IoT Security 23
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 24
Security test stap 4 :Authenticatie Directe aanvallen Speciale functionaliteit Credentials Authenticatie logica Testen van IoT Security 25
Directe aanvallen De kwaliteit van het password Minimale eis password Foute validatie Hoe lang duurt een brute force De username Waar wordt de username gebruikt Verkeerde username opgeven Andere username opgeven Testen van IoT Security 26
Directe aanvallen Het password 10x foutieve passwords Bruteforce Lockout Testen van IoT Security 27
Speciale functionaliteit De username/password vergeten functionaliteit Worden de credentials opgestuurd danwel getoond? Zijn de hints moeilijk? De onhoud mij functionaliteit Wordt de username gebruikt bij het onthouden? Zijn de accounts over te nemen? Welke actie wordt gedaan? Testen van IoT Security 28
Credentials De originaliteit van de username Zelfde naam 2x registeren Bruteforce Password Logica achter generatie Onveilige verzending van de credentials Gebruik een proxy om in te zien bij welke actie deze worden verzonden. Testen van IoT Security 29
Authenticatie logica Onveilige distributie van de credentials Activatie url Multistage mechanisme Doorloop alle stappen in een verkeerde volgorde Gelijk naar een bepaalde stap Testen van IoT Security 30
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 31
Security test stap 5 : Sessies Token generatie Token afhandeling Testen van IoT Security 32
Token generatie Tokens analyse Verschillende gebruikers, andere tokens? Algoritme? Tokens voorspellen Testen van IoT Security 33
Token afhandeling Onveilige verzending HTTP -> HTTPS Secure flag Opslag in logs Via GET Tokens naar sessie vertalen 2x inloggen met 1 user Beeindiging sessie Logout mogelijk? Tijdsduur? Testen van IoT Security 34
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 35
Security test stap 6 : Toegang Segregatie van rollen Soorten accounts Onveilige toegang Testen van IoT Security 36
Segregatie van rollen Verticaal Verschillende niveau s van gebruikers Verschillende functionaliteit Horizontaal Zelfde niveau van gebruikers Verschillende functionaliteit Testen van IoT Security 37
Soorten accounts Meerdere accounts Probeer acties met steeds mindere privileges Gelimiteerde accounts Probeer de acties zonder privileges (guest) Testen van IoT Security 38
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 39
Security test stap 7 : Input Validatie Fuzzen van parameters Specifieke bedreigingen Testen van IoT Security 40
Fuzzen van parameters Header User-agent Referer URL bij GET www.test.nl/pagina.php?parameter=3-90tuut9 URL en body bij POST Proxy Testen van IoT Security 41
Fuzzen van parameters Cookie Cookie editor Replacive A -> 1 1-> DJ#RIU Recursive A -> B 1 -> 2 Adduser -> deleteuser Testen van IoT Security 42
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 43
Functie specifieke injection SMTP Injection test2@test.nl%0abcc:test1@test.nl Code flaws Te grote data Nullbytes SOAP injection Test</item><item>test2 Testen van IoT Security 44
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 45
Security test stap 9 : Logica fouten Processen met meerdere stappen Onvolledige invoer Trust boundaries Transactie logica Testen van IoT Security 46
Processen met meerdere stappen Volgorde van GET/POST Acties tussen 2 sessies wisselen Negatieve waarden Gelimiteerde acties vaker uitvoeren Testen van IoT Security 47
Transactie logica Negatieve waarden Gelimiteerde acties vaker uitvoeren Testen van IoT Security 48
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 49
Security test stap 10 : Omgeving Testen van IoT Security 50
Security Test aanpak PRE-TEST 1. Informatie vergaren 2. Applicatie mappen LOGICA 3. Clientside controls TOEGANG 4. Authenticatie INPUT 7. Input validatie CONFIGURATIE 10. Omgeving 9. Logica fouten 5. Sessiemanagement 8. Functie input 11. Server 6. Toegang POST-TEST 12. Filteren 13. Rapporten Testen van IoT Security 51
Security test stap 11 : Server Configuraties Default credentials/content handleiding / google HTTP methoden OPTIONS op een request Misconfiguratie virtual hosting DNS Bekende bugs / exploits Changelog / www.exploit-db.com Testen van IoT Security 52
IoT - Weinig verschil in aanpak - Wel andere middelen / skills nodig - Veel verschil in impact Testen van IoT Security 53
If you think technology can solve your security problems, then you don't understand the problems and you don't understand the technology. Bruce Schneier, secrets and lies, 2007