IT biztonság 2014/2015 tanév 2014.11.11. ELTE IT Biztonság Speci 1
Tartalomjegyzék Az OpenSSL használata Adatok lenyomatolása ( hash ), digitális aláírása, rejtjelezése az open source kriptográfiai modullal. Az SSL/TLS protokoll A web server beállítása és az SSL/TLS csatorna felépítésének ( handshake ) bemutatása lépésről-lépésre. A kriptográfiai sérülékenységek ( ethical hacking ) A kriptográfia alkalmazásához (fejlesztéshez, üzemeltetéshez) alaposabb tudásra van szükség. Ehhez érdemes mások hibáit is megvizsgálni, hogy tanulni lehessen belőlük. 2014.11.11. ELTE IT Biztonság Speci 2
Tartalomjegyzék Az OpenSSL használata Adatok lenyomatolása ( hash ), digitális aláírása, rejtjelezése az open source kriptográfiai modullal. 2014.11.11. ELTE IT Biztonság Speci 3
OpenSSL alapismeretek Különböző matematikai algoritmusok segítségével a kriptográfia célja elsősorban a bizalmasság, sértetlenség, hitelesség biztosítása. A kriptográfiában (PKI részen) alkalmazott, matematikai értelemben vett nehéz problémák : IFP Integer Factorization Problem pl. RSA DLP Discrete Logarithm Problem pl. DSA ECDLP Elliptic Curve Discrete Logarithm Problem pl. ECDSA IFP DLP ECDLP 2014.11.11. ELTE IT Biztonság Speci 4
OpenSSL alapismeretek ITU-T X.509 tanúsítvány - Hozzárendeli a felhasználó személyes adataihoz (DN, megkülönböztetett név, CN, C, O, OU, E stb. névelemek) a nyilvános kulcsát. A kulcspár másik fele (titkos kulcs) biztonságos adathordozón (pl. smart card, HSM, USB token) vagy állományként (pl. PKCS#12.p12 vagy.pfx) tárolható. - A tanúsítvány alá van írva digitálisan a kibocsátó (CA) titkos kulcsával. - A protokollok szempontjából a subject, issuer, keyusage és extkeyusage bitek fontosak elsősorban a kriptiográfiai adatok mellett. 2014.11.11. ELTE IT Biztonság Speci 5
OpenSSL alapismeretek Az OpenSSL projekt - alapvetően SSL/TLS protokoll megvalósítása volt a cél, de API-n, parancssoron keresztül minden kriptográfiai funkció külön-külön is használható => nagyon (!) hasznos segédeszköz - https://www.openssl.org/ - open source, nagy közösséggel a háttérben, gyors fejlődéssel - sok (nemcsak ingyenes) rendszerbe került integrálásra (éppen ezért, ha hibát találnak benne, akkor az nagyot szól) - létezik tanúsított (FIPS 140-2 level 1) változata is 2014.11.11. ELTE IT Biztonság Speci 6
OpenSSL alapismeretek Végfelhasználónál történő rejtjelezés - állományok rejtjelezése és megfejtése OpenSSL segítségével, parancssorból - üzenetformátum: W3C XML Encryption Syntax and Processing 2014.11.11. ELTE IT Biztonság Speci 7
OpenSSL alapismeretek Végfelhasználónál történő digitális aláírás - állományok digitális aláírása és ellenőrzése OpenSSL segítségével, parancssorból - üzenetformátum: W3C XML Signature Syntax and Processing IETF RFC 3275 ETSI TS 101 903 (XAdES) 2014.11.11. ELTE IT Biztonság Speci 8
Tartalomjegyzék Az SSL/TLS protokoll A web server beállítása és az SSL/TLS csatorna felépítésének ( handshake ) bemutatása lépésről-lépésre. 2014.11.11. ELTE IT Biztonság Speci 9
SSL/TLS protokoll Az SSL/TLS protokoll a kliens internet böngészője és a web server közötti adatforgalmat rejtjelezi, a tanúsítványok (elsősorban web server) révén pedig a felek hitelességét is biztosítják. Az SSL/TLS protokoll a TCP/IP modell alkalmazás rétegében foglal helyet, de a szállítási réteghez közel (HTTP alatt, TCP felett ). Eredetileg Netscape szabvány volt, majd átvette az IETF. IETF RFC 5246 The Transport Layer Security (TLS) Protocol Version 1.2 internet böngésző (kliens) hálózat web server (server) 2014.11.11. ELTE IT Biztonság Speci 10
SSL/TLS és web server Apache web server beállítások: SSLEngine: SSLCipherSuite: SSLProtocol: SSLCompression: SSLInsecureRenegotiation: SSLCertificateFile: SSLCertificateKeyFile: SSLCACertificateFile: SSLOptions SSLVerifyClient: SSLVerifyDepth: on (SSL fut) HIGH:!DSS:!3DES (engedélyezett algoritmusok köre) +TLSv1.2 (engedélyezett protokollok köre) off (SSL/TLS-szintű tömörítés) off (ClientHello és session megfelelő kezelése) my-server.crt (SSL szerver tanúsítványa a nyilvános kulccsal) my-server.key (SSL szerver titkos kulcsa PIN kód nélkül) my-server-ca.crt ( self-signed SSL szerver, vagy CA tanúsítványa) +StdEnvVars +ExportCertData (handshake paraméterek elérhetők) require ( client authentication szükséges) 1 (tanúsítványlánc hossza) 2014.11.11. ELTE IT Biztonság Speci 11
SSL/TLS tanúsítványok req: rsa: PKCS#10 certificate request (.csr) meghatározott adatok alapján (openssl.cnf) adatok megadása, kulcs létrehozása RSA kulcsokhoz kapcsolódó műveletek PIN kódos védelmet leveszi a kulcsról x509: X.509 tanúsítványhoz kapcsolódó műveletek kérelem és aláíró kulcs alapján tanúsítvány (-extfile a kiterjesztések hozzáadása miatt) pkcs12: PKCS#12 műveletek tanúsítvány összerendelése a titkos kulccsal 2014.11.11. ELTE IT Biztonság Speci 12
SSL/TLS kapcsolat s_client: kapcsolatfelépítés (client => server) szerver IP címe, port száma kliens tanúsítványa, titkos kulcsa (client authentication) 2014.11.11. ELTE IT Biztonság Speci 13
SSL/TLS kapcsolat 2014.11.11. ELTE IT Biztonság Speci 14
SSL/TLS kapcsolat handshake hello_request (0) client_hello (1) server_hello (2) certificate (11) server_key_exchange (12) certificate_request (13) server_hello_done (14) certificate_verify (15) client_key_exchange (16) finished (20) record layer TLSPlaintext TLSCompressed TLSCiphertext alert messages 0,10,20,21,22,30,40,41,42,43,44, 45,46,47,48,49,50,51,60,70,71, 80,90,100,255 ChangeCipherSpec message 2014.11.11. ELTE IT Biztonság Speci 15
felépítés: - protokoll verziója (legmagasabb támogatott) - kliens random: időadat + 28 byte (szervertől függetlenül) - sessionid - kriptográfiai algoritmusok - tömörítési algoritmusok - kiterjesztések SSL/TLS kapcsolat
felépítés: - protokoll verziója (legmagasabb támogatott) - szerver random: időadat + 28 byte (klienstől független) - sessionid (átveszi a klienstől, ha az megfelelő) - kriptográfiai algoritmusok (klienstől kapottak közül választ) - tömörítési algoritmusok (klienstől kapottak közül választ) - kiterjesztések SSL/TLS kapcsolat
SSL/TLS kapcsolat felépítés: - szerver tanúsítványa - kriptográfiai algoritmusnak megfelelő nyilvános kulcsot tartalmazó tanúsítvány RSA, DHE_DSS, DHE_RSA, DH_DSS, DH_RSA digitalsignature, keyencipherment, keyagreement (DH esetén)
felépítés: - Diffie-Hellman vagy RSA kulcscseréhez nyilvános paraméterek - a paraméterek el vannak látva digitális aláírással is RSA (SHA-1 és MD5 hash) vagy DSA (SHA-1 hash) - RSA esetén opcionális SSL/TLS kapcsolat
felépítés: - klienstől kért tanúsítvány által használt kriptográfiai algoritmus - szerver által engedélyezett tanúsítványkibocsátók listája aminek a klienstől kért tanúsítványnak meg kell felelnie (pl. root CA distinguishedname) SSL/TLS kapcsolat
felépítés: - csak jelzésre szolgál SSL/TLS kapcsolat
SSL/TLS kapcsolat felépítés: - kliens tanúsítványa - kriptográfiai algoritmusnak megfelelő nyilvános kulcsot tartalmazó tanúsítvány RSA, DHE_DSS, DHE_RSA, DH_DSS, DH_RSA digitalsignature, keyencipherment, keyagreement (DH esetén)
SSL/TLS kapcsolat felépítés: - Diffie-Hellman kulcscseréhez nyilvános paraméterek - RSA kulcscseréhez rejtjelezett pre_master_secret (48 byte = protokoll verzió + 46 byte) - master_secret a pre_master_secret adatból származtatva: master_secret = PRF(pre_master_secret, "master secret", ClientHello.random + ServerHello.random) A(0) = seed A(i) = HMAC_hash(secret, A(i-1))
felépítés: - ellenőrzéshez egy digitális aláírást használ: a handshake összes eddigi üzenetét összeilleszti (concatenation of client_hello client_key_exchange ) a type és length mezőkkel együtt, majd azok SHA-1 és MD5 lenyomatait (hash) kódolja SSL/TLS kapcsolat
felépítés: - csak jelzésre szolgál - jelentése: a következő adatrekordok már az egyeztetett kulccsal kódolva kerülnek elküldésre SSL/TLS kapcsolat
felépítés: - ellenőrző adat a master_secret, a server finished string, illetve az eddigi handshake üzenetek SHA-1 és MD5 lenyomata alapján (12 byte) SSL/TLS kapcsolat
felépítés: - csak jelzésre szolgál - jelentése: a következő adatrekordok már az egyeztetett kulccsal kódolva kerülnek elküldésre SSL/TLS kapcsolat
felépítés: - ellenőrző adat a master_secret, a server finished string, illetve az eddigi handshake üzenetek SHA-1 és MD5 lenyomata alapján (12 byte) SSL/TLS kapcsolat
felépítés: - rejtjelezés (Generic*Cipher), sértetlenség (MAC) SSL/TLS kapcsolat
Tartalomjegyzék A kriptográfiai sérülékenységek ( ethical hacking ) A kriptográfia alkalmazásához (fejlesztéshez, üzemeltetéshez) alaposabb tudásra van szükség. Ehhez érdemes mások hibáit is megvizsgálni, hogy tanulni lehessen belőlük. 2014.11.11. ELTE IT Biztonság Speci 30
Ethical hacking MD5 collision és Xiaoyun Wang, Marc Stevens, Vlastimil Klima collision bits: tbscertificate (bin.txt bin_msg1.txt + bin_msg2.txt) adatmásolás: SEQUENCE, signaturealgorithm, signaturevalue tbscertificate
Ethical hacking MD5 collision és Xiaoyun Wang, Marc Stevens, Vlastimil Klima
Ethical hacking MD5 collision és Xiaoyun Wang, Marc Stevens, Vlastimil Klima
Ethical hacking MD5 collision és Xiaoyun Wang, Marc Stevens, Vlastimil Klima
Ethical hacking MD5 collision és Flame, WuSetupV.exe
MD5 collision és Flame, WuSetupV.exe Marc Stevens: chosen-prefix collisions Alex Sotirov: a Flame tanúsítvány elemzése Ethical hacking
Ethical hacking <?xml> <in:invoice> e-számla 1.000 HUF </in:invoice> MD5 hash (hex): 72e4d2d483bd2a755d2d73e411e0f036 RSA encoded MD5 hash (base64): acp/ff0w4w0wws+vodscjyjiahljnt6b xcdi0agoff3tao7cnaemmzjv3qcwpepx halir9xmkwa= <?xml> <in:invoice> e-számla 1.000.000 HUF </in:invoice> MD5 hash (hex): 72e4d2d483bd2a755d2d73e411e0f036?????? RSA encoded MD5 hash (base64): acp/ff0w4w0wws+vodscjyjiahljnt6b xcdi0agoff3tao7cnaemmzjv3qcwpepx halir9xmkwa= Ha két különböző dokumentum (pl. e-invoice) azonos MD5 lenyomattal rendelkezik, akkor a titkos kulccsal kódolt lenyomatok is megegyeznek (digitális aláírás copy-paste ). 2014.11.11. ELTE IT Biztonság Speci 37
Ethical hacking SHA-1 collision és E. A. Grechnikov ütközések: 75-step reduced SHA-1 NIST a Keccak (2012-10-02) algoritmust választotta az SHA-3 alapjául
SHA-1 collision és Thai Duong, Juliano Rizzo Ethical hacking ütközések: SHA-1 with modified initialization vectors H0..H4 H0..H4 = [67452301, EFCDAB89, 98BADCFE, 10325476, C3D2E1F0] length extension attack: Flickr, Scribd, Vimeo...
Ethical hacking SHA-1 collision és Thai Duong, Juliano Rizzo
Ethical hacking SHA-1 collision és Thai Duong, Juliano Rizzo
SHA-1 collision és Malicious SHA-1 project ütközések: SHA-1 with modified constant words K(t) K(t) = [5A827999, 6ED9EBA1, 8F1BBCDC, CA62C1D6] Ethical hacking
Ethical hacking Jelszavak tárolása, megfejtése az MD5 előtt alapértelmezettként DES algoritmust használtak, az OpenBSD pedig képes Blowfish algoritmussal kódolva is tárolni a jelszavakat a John the Ripper dictionary attack és brute force támadás esetén is figyelembe veszi a salt értékeket és kezeli a Blowfish algoritmust is a GI John (GRID Implemented John elosztott jelszótörés) a Ravan (AndLabs HTML5 GRID jelszótörés) 2014.11.11. ELTE IT Biztonság Speci 43
Ethical hacking 2014.11.11. ELTE IT Biztonság Speci 44
Ethical hacking Jelszavak törése a John the Ripper segítségével szótár ( dictionary, wordlist ) alapján jól kell megválasztani a szógyűjteményt (magyar, angol?) a 26 jelszó lenyomatból 21 volt törhető szótár alapján DES: MD5: 00:05 [min:sec] 15:48 [min:sec] Rainbow table ( salt ellen nem jó) 2014.11.11. ELTE IT Biztonság Speci 45
Ethical hacking Jelszavak törése a John the Ripper segítségével brute-force alapján max. 8 karakter, kis- és nagybetűk, számok, speciális karakterek (ld. john.ini) videokártya 25-ször gyorsabb (ld. nvidia GeForce 8800 Ultra) 2009-07-08: IGHASHGPU (Ivan Golubev) ATI Radeon HD4850: 955 M/s MD5, 305 M/s SHA-1 nvidia GeForce GTX 260 192SP: 533 M/s MD5, 166 M/s SHA-1 ATI Radeon 5970: Oracle DES/SHA-1 jelszó (csak kisbetűk 26) 8 karakter: DES 10 óra SHA-1 4,6 perc 10 karakter: DES 283 nap SHA-1 2 nap nvidia GeForce 8400 GS 512 MB: MD5 jelszó (csak kisbetű 26) 8 karakter: MD5 1 nap 5 óra (@26,5 M/s) 2014.11.11. ELTE IT Biztonság Speci 46
Ethical hacking Ivan Golubev http://www.golubev.com/gpuest.htm 2014.11.11. ELTE IT Biztonság Speci 47
Ethical hacking Software eszközök - kismet - aircrack-ng - NetStumbler Hardware eszközök - driver típusától függ promiscuous mode: nemcsak a keretek (frame), hanem a teljes csomag feldolgozásra kerül, azaz a címzett MAC címétől függetlenül minden forgalmat lát vezetékes és vezetéknélküli hálózatoknál is az eszköz, de csak ha csatlakozott (pl. adott SSID-hoz tartozó összes forgalom) monitor mode (RFMON): csatlakozás (association) nélkül is lát mindent 2014.11.11. ELTE IT Biztonság Speci 48
Ethical hacking Jelszavak törése WEP-kulcs törése: - aireplay - airodump - aircrack (kezdeti forgalom generálásához deauthentication ) (felhasználó által elküldött ARP request csomagok visszajátszása) (IV-k initialization vector gyűjtése, tárolása), (40/104 bites RC4 kulcs kitalálása + 24 bit IV) 2014.11.11. ELTE IT Biztonság Speci 49
Ethical hacking Történet - 2008-11-08: Martin Beck, Erik Tews (12-15 perc) - 2009-08-27: Toshihiro Ohigashi, Masakatu Morii (1-4 perc) WPA TKIP - WEP továbbfejlesztése - RC4 szimmetrikus algoritmus - Michael algoritmuson alapuló Message Integrity Check (MIC) a CRC32 helyett - TKIP Sequence Counter (TSC) számláló a visszajátszásos támadások ellen - IV is ellenőrzésre kerül, nemcsak a ellenőrző-összeg Támadás - WEP ellen használt chopchop átírása - MIC kulcs megfejtése kis csomagnál (pl. ARP) - a nyílt szöveg rejtjelezett szöveg pár ismeretében RC4 keystream is ismert - ARP üzenetek kiküldése a kommunikáló feleknek (man-in-the-middle) Megoldás - A gyakoribb TKIP kulcsfrissítés sem elegendő védelem, mindenképpen CCMP (AES az IETF RFC 3610 alapján) használata ajánlott! Alkalmazás - tkiptun-ng (forrás: http://www.aircrack-ng.org) 2014.11.11. ELTE IT Biztonság Speci 50
Ethical hacking Jelszavak törése WPA2-kulcs törése: aireplay airodump aircrack ( ARP request csomagok), (legalább 1 handshake ), (csak szótár alapján) 2014.11.11. ELTE IT Biztonság Speci 51
Ethical hacking Jelszavak megszerzése - Cain&Abel (Windows), ettercap (Linux) - Man-in-the-Middle támadás HTTP/HTTPS(SSL/TLS)/SSH kapcsolatoknál is sniffer aktiválása alhálózaton host-ok felderítése ARP poisoning elindítása elcsípett csomagok elemzése kizárólag megbízható SSL/TLS szerver tanúsítványt (hash ellenőrzése!) szabad elfogadni ARP poisoning nélkül is vizsgálhatjuk az SSL csatorna forgalmát: Fiddler2, chrome://net-internals TOR project (The Onion Router): minden proxy node külön titkosít (IP cím elfedésére) 2014.11.11. ELTE IT Biztonság Speci 52
kódvizsgálat és OpenSSL Ethical hacking OpenSSL: 2006-09-17 2008-05-13 (0.9.8c-1 0.9.8g-9) ssleay_rand_add() és process ID (PID): N * 32768 kulcspár érintett magyar oldalak (Microsoft Windows szerint megbízható CA-k) ki generálta a sérülékeny kulcspárt és a PKCS#10 kérést?
kódvizsgálat és OpenSSL Ethical hacking érintett magyar oldalak (megbízható magyar CA-k) bank (MagNet), ISP (GTS), kritikus infrastruktúra (MVM)
kódvizsgálat és OpenSSL Ethical hacking érintett magyar oldalak (megbízható külföldi CA-k) mobil operátor (Telenor), aukció (TeszVesz), webshop (ComputerEmporium)
kódvizsgálat és OpenSSL Ethical hacking OpenSSL: 2012-03-14 2014-04-07 (1.0.1 1.0.1g) IETF RFC 6520 Heartbeat Extension of TLS: OpenSSL bug (memory leak) a Heartbeat Extension engedélyezve van? a titkos kulcsot HSM tárolja a memória helyett?
Ethical hacking basicconstraints és Moxie Marlinspike
subject \0 és Moxie Marlinspike Ethical hacking
Ethical hacking 2011-04-01: Windows betűkészletek A.ttf állományokon levő elektronikus aláírás ellenőrzése a Windows operációs rendszereken felületes: aláírásnak kell rajta lennie, de alapértelmezettként megbízhat tetszőleges aláíró tanúsítványban. 2014.11.11. ELTE IT Biztonság Speci 59
Ethical hacking Az okostelefonoknál is fontos a tanúsítványtár elsősorban az SSL/TLS csatornák kezelése miatt (de néhol a code signer szabályok is ebből táplálkoznak). Android root jogosultság: SuperOneClick cacerts.bks szerkesztése: Portecle cacerts.bks visszaírása: SSHDroid + WinSCP => console /system/etc/security$ mount w o remount /dev/stl12 /system /system/etc/security$ chmod 755 cacerts.bks
Ethical hacking 2009-11-04: renegotiation attack SSLv3.0 TLSv1.2 verziók érintettek ClientHello esetén végződtetni kell a korábbi session-t IETF RFC 5746 javítja 2011-09-23: BEAST SSLv3.0 TLSv1.0 verzió érintett CBC sérülékenység TLSv1.1 verzió javítja 2012-09-13: CRIME SSLv3.0 TLSv1.2 verziók érintettek SSL/TLS session adat felfedése TLS-szintű tömörítés esetén TLS-szintű tömörítés kikapcsolása javítja 2013-08-01: BREACH SSLv3.0 TLSv1.2 verziók érintettek SSL/TLS session adat felfedése HTTP-szintű tömörítés esetén HTTP-szintű tömörítés kikapcsolása javítja 2013-02-04: Lucky 13 SSLv3.0 TLSv1.2 verziók érintettek időalapú padding oracle alapján üzenetek megfejtése 2013-03-12: RC4 SSLv3.0 TLSv1.2 verziók érintettek kulcsfolyam részleges felfedése sok, azonos üzenet esetén AES használata javítja 2014.11.11. ELTE IT Biztonság Speci 61
Ethical hacking 2010-12-29: fail0verflow (27. Chaos Communication Conference) saját ECDSA implementáció kriptográfiai tudás nélkül: a titkos kulcs két komponense közül az egyik (random number) be volt égetve => két különböző aláírásból meghatározható a titkos kulcs másik értéke is => bárki tud aláírt alkalmazásokat készíteni, ami mégis fut Sony PlayStation3 eszközön esti mese: http://www.youtube.com/watch?v=4lozgyqaz7i 2014.11.11. ELTE IT Biztonság Speci 62
Ethical hacking 2011-03-18: RSA Inc. RSA SecurID célzottan kiküldött e-mailek csatolmányban Excel-tábla Excel-táblában 0-day Flash exploit megnyitáskor telepítette a Poison Ivy (Remote Administration Tool) alkalmazást => Az RSA SecurID seed -ek, maguk a szimmetrikus, titkos kulcsok kikerültek => illetéktelen behatolások a Lockheed Martin (és más katonai) cégnél 2014.11.11. ELTE IT Biztonság Speci 63
Köszönöm a figyelmet! aron.szabo@egroup.hu 2014.11.11. ELTE IT Biztonság Speci 64