Pentests Tom de Jong 18 juni, 2014 Samenvatting Een pentest kan een belangrijke rol spelen bij het verbeteren van computernetwerken. Nadat we hebben vastgesteld wat een pentest precies is, verdiepen we ons in de verschillende onderdelen van een pentest en enkele tools. Hierbij streven we er niet naar om een compleet overzicht van tools te geven. Het doel van deze paper is de lezer inzicht te geven in de verschillende facetten van een pentest door de werking van de tools te bestuderen en toe te lichten aan de hand van concrete voorbeelden. Ook beschrijven we de terminologie bij een pentest, zoals grey box test, exploit en payload. Inhoudsopgave 1 Inleiding 2 2 Wat is een pentest? 2.1 Vulnerability assessment . 2.2 Soorten pentests . . . . . 2.3 Redenen voor een pentest 2.4 Pentest fasen . . . . . . . 2.5 Kali Linux . . . . . . . . . . . . . . 2 2 2 3 3 3 3 Reconnaissance 3.1 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 4 Enumeration 4.1 Port scanning . . . . . 4.1.1 Fingerprinting 4.1.2 Nmap . . . . . 4.2 Kwetsbaarheden . . . 4.2.1 OpenVAS . . . . . . . . 5 5 6 7 7 8 5 Exploits 5.1 Metasploit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Meterpreter payload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10 6 Conclusie 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Inleiding Regelmatig worden bedrijven (Diginotar bijvoorbeeld) en overheden in verlegenheid gebracht doordat hun infrastructuur wordt gehackt. Omdat veel van onze informatie online verwerkt wordt (denk bijvoorbeeld aan internetbankieren), in het voor hackers interessant om digitale systemen aan te vallen en informatie te stelen. Een pentest kan overheden en bedrijven helpen om hun systeembeveiliging te verbeteren. In hoofdstuk 2 defini¨eren we een pentest en gaan we in op enkele variaties. Daarnaast wordt een motivatie voor het uitvoeren van een pentest gegeven, alsmede een opdeling van een pentest in fasen. In de daaropvolgende hoofdstukken gaan we dieper in op de verschillende fasen en tools die hierbij gebruikt kunnen worden. Hoofdstuk 3 biedt inzicht in de eerste fase (reconnaissance) en geeft enkele concrete voorbeelden van nuttige tools. Vervolgens behandelen we de enumeration fase in hoofdstuk 4. Hierbij komen port scanning, OS fingerprinting en Nmap aan de orde. Als laatste vindt men in hoofdstuk 5 een bespreking van de exploitation fase en het Metasploit Framework. 2 Wat is een pentest? Een penetratietest (ook wel pentest) is een poging om met toestemming van de systeemeigenaar informatie uit een beveiligd systeem te verkrijgen zonder de vereiste toegangsgegevens. Het doel van een pentest is het verbeteren van de systeembeveiliging, hetgeen mogelijk is doordat inzicht is verkregen in de kwetsbaarheden van het onderzochte systeem. [1][2] 2.1 Vulnerability assessment Een pentest wordt soms verward met een vulnerability assessment, maar dit is niet hetzelfde als een pentest. Bij een pentest is het van belang om zoveel mogelijk toegang te krijgen binnen het systeem, terwijl een vulnerability assessment alleen punten aangeeft die (mogelijk) kwetsbaar zijn voor computeraanvallen. Bij een vulnerability assessment wordt het systeem niet daadwerkelijk binnengedrongen, terwijl dit bij een pentest juist wel gebeurt. In beide gevallen zoekt men naar kwetsbaarheden, maar alleen bij pentests worden deze ook echt uitgebuit. [2] 2.2 Soorten pentests Bij pentests spreekt men vaak over ‘boxes’. Zo zijn er black box tests, waarbij de tester minimale voorkennis heeft over systeem. Bij een white box test beschikt de tester over informatie van alle aspecten van de systeemarchitectuur. Een grey box test geeft de tester slechts gedeeltelijke informatie (bijvoorbeeld een inlogaccount). Een extreem geval is de crystal box test, waarbij de tester ook de broncode van de applicatie en configuratieinformatie kent. Voor het verkrijgen van verdere informatie kan de tester publieke bronnen raadplegen of social engineering toepassen. Dit laatste houdt in dat geprobeerd wordt om informatie of toegangsprivil`eges te krijgen door gebruikers van het systeem over te halen. Men heeft het ook over time box of budget box tests, maar deze begrippen hebben niets te maken met kennis van het systeem. Ze geven aan dat de looptijd of de kosten bepalen wanneer de test ophoudt. Dit kan heel zinvol zijn, omdat men op deze manier aan kwantitatief risicomanagement kan doen. Kluizen verkoopt men bijvoorbeeld met een tijdsaanduiding: “een aanvaller met de juiste kennis en gereedschap heeft minstens x uur nodig om deze kluis open te krijgen”. [1] 2 2.3 Redenen voor een pentest De belangrijkste reden voor het uitvoeren van een pentest is zodat systeemeeigenaren op de hoogte zijn van kwetsbaarheden en deze kunnen fixen voordat een aanvaller er misbruik van maakt. Het zou natuurlijk kunnen dat een aanvaller beschikt over zero-day vulnerability1 , maar over het algemeen zal een aanvaller bekende aanvalstechnieken gebruiken. Hierdoor is het dus ook goed mogelijk om het systeem van tevoren voldoende te beveiligen. Daarnaast kan een pentest testen hoe adequaat de IT-afdeling optreedt in het geval van een aanval op het computernetwerk. Wordt de aanval u ¨berhaupt opgemerkt? Zo ja, hoe snel? Is gauw duidelijk wat er aan de hand is? Kan tegen de aanval opgetreden worden? Tevens kan een IDS (Intrusion Detection System) of IPS (Intrusion Prevention System) getest worden. [2] 2.4 Pentest fasen Een pentest wordt gekenmerkt door drie fasen: reconnaissance, enumeration en exploitation. In de eerste twee fasen wordt informatie verzameld over de organisatie die moet worden aangevallen. In de tweede fase gaat het hier veelal om het vinden van kwetsbaarheden die mogelijk toegang verschaffen tot het systeem. De exploitation fase wordt gekenmerkt door het uitbuiten van een of meerdere kwetsbaarheden. Hier wordt het systeem ´echt aangevallen. Voor alle fasen zijn tools ontwikkeld, waarvan er enkele worden besproken. De tools zijn onderverdeeld naar de verschillende fasen, maar men dient op te merken dat sommige tools onder meerdere categori¨eren geschaard zouden kunnen worden. Zo kan Metasploit 3.0 zowel kwetsbaarheden vinden als uitbuiten. [2] 2.5 Kali Linux Naast deze tools kan Kali Linux (voorheen bekend als Backtrack Linux) van grote waarde zijn voor een pentester. Deze Linux distributie kan men draaien als LiveCD, vanaf harde schijf of als virtual machine. Kali Linux heeft alle tools die nodig zijn bij een pentest. Deze tools zijn vooraf geconfigureerd en zijn netjes ingedeeld in de menu’s van de GUI. Het grootste voordeel van Kali Linux ten opzichte van andere besturingssystemen is dat men zelden tools hoeft te installeren. [3][4] 3 Reconnaissance In veel gevallen zal bij een pentest een entiteit (bijvoorbeeld een bedrijf of overheidsinstantie) worden aangevallen en niet een enkele computer. Als het doel is om de organisatie over het internet aan te vallen dan moet men allereest achterhalen waar op het internet de organisatie ‘zich bevindt’. Zo heeft een organisatie vaak meerdere websites, mail servers of zusterorganisaties die op zichzelf ook weer worden vertegenwoordigd door meerdere computers op het internet. Daarnaast is het voor de pentester interessant om zo veel mogelijk servers te vinden die met het internet verbonden zijn, omdat dit de kans op een succesvolle aanval vergroot. Het doel is van de reconnaissance-fase is dan ook om een doelwit vanuit de ‘echte wereld’ (zoals een bedrijf of overheidsinstantie) te mappen naar een doelwit in de ‘cyberwereld’. Zo’n doelwit is een bereikbaar en relevant IP adres. Relevant wil zeggen dat het IP adres gebruikt wordt door het doelwit. Zo zijn mail servers, DNS servers en websers van een organisatie allen relevant. 1 Een zero-day vulnerability is een kwetsbaarheid in een stuk software die (vooralsnog) onbekend is bij anderen en de softwareontwikkelaar. 3 Daarnaast zijn we ge¨ınteresseerd in de werknemers van de organisatie. Persoonlijke gegevens en e-mail adressen kunnen een rol spelen bij een pentest. Zo zouden we een werknemer een e-mail kunnen sturen waarbij we ons voordoen als een oud-collega. Met de mail sturen we dan bijvoorbeeld een PDF-bestand als bijlage die gebruikt maakt van een kwetsbaarheid in Adobe Acrobat en ons toegang te verschaft tot de computer van de werknemer, waarna we mogelijk het uiteindelijke doelwit kunnen hacken. 3.1 Tools Om deze informatie te vergaren kan men gebruik maken van verschillende tools. Uiteraard biedt een zoekmachine als Google vaak al een hoop informatie. Daarnaast zijn Netcraft’s SearchDNS, host en dnsmap belangrijke tools. Netcraft is een Britse ISP die op haar site gebruikers laat zoeken in een lijst met DNS hostnames. Zo kunnen we andere servers binnen het DNS domein vinden. Figuur 1 geeft enkele servers binnen het uu.nl domein. Met het host commando kunnen we MX en NS-records vinden. Een MX-record bevat de naam van de computer die e-mailverkeer voor het betreffende domein afhandelt. NS-records geven de namen van DNS servers binnen het domein. Figuur 2 toont de mail en DNS servers binnen het uu.nl domein. De tool dnsmap gebruikt een woordenlijst om subdomeinen te vinden, zie figuur 3. Daarnaast kunnen we het Python script theHarvester gebruiken om snel het internet af te zoeken naar e-mail adressen. Ook het script MetaGoofil kan handig zijn. Dit script gebruikt zoekmachines om naar bestanden op servers (binnen het desbtreffende domein) te zoeken, zodat we de metadata kunnen gebruiken om werknemersinformatie (bijvoorbeeld (login)namen) te verkrijgen. [3] Figuur 1: Deel van de uitvoer van Netcraft’s SearchDNS voor uu.nl. Figuur 2: Uitvoer (deels) van het host -a commando met als invoer uu.nl. 4 Figuur 3: Gedeeltelijke uitvoer van dnsmap voor uu.nl. 4 Enumeration In sectie 3 noemden we een doelwit een bereikbaar en relevant IP adres. De reconnaissance fase heeft ons een lijst met relevante adressen opgeleverd. In de enumeration fase controleren we of de adressen bereikbaar zijn. Een eerste optie is om het hele netwerk een ICMP echo request (ping) te sturen. Alle adressen die de request beantwoorden zijn bereikbaar en online. Veel systemen blokkeren ICMP echo requests echter, vanwege het gebruik bij DDOS-aanvallen of om zo ‘stealthier’ te zijn. Een tweede optie is het gebruik van TCP ACK netwerk pakketten. Als we een host zomaar een ACK pakket sturen, wordt van deze verwacht dat die een TCP RST terugstuurd. Dit werkt echter alleen als de firewall de TCP ACK niet blokkeert, maar dit zal niet vaak het geval zijn als we veelgebruikte poorten nemen (zoals poort 80). [3] 4.1 Port scanning Nu we een lijst van bereikbare online hosts hebben wordt het interessant om te achterhalen wat voor OS en services er op de hosts draaien. Om hierachter te komen gebruiken we een port scan. Hierbij maken we onderscheid in TCP port scans en UDP port scans. De eerste zijn gebruikelijker en er zijn vele variaties op. De meest voorkomende is de SYN scan, waarbij een SYN pakket naar het doelwit wordt gestuurd, waarna deze SYN/ACK terugstuurt als de poort open en RST als de poort gesloten is. De scan maakt gebruik van de TCP handshake (zie figuur 42 ), maar deze wordt niet afgemaakt (want het laatste ACK pakket wordt niet verzonden), waardoor er geen verbinding ontstaat tussen het doelwit en de pentester. Zodoende wordt deze scan vaak niet gelogd en dus niet opgemerkt. Een UDP port scan is wat ingewikkelder omdat het geen verbinding maakt zoals TCP dat doet. Wanneer we een host een UDP pakket sturen en we krijgen een antwoord, dan is dit een van de volgende antwoorden: • een pakket dat aangeeft dat de firewall ons pakket blokkeerde; • een ICMP pakket ten teken dat de poort dicht is; • een pakket van de service die draait op de UDP poort. 2 http://upload.wikimedia.org/wikipedia/commons/c/c7/300px-Tcp-handshake.png 5 Wanneer we geen antwoord krijgen, kan het zijn dat de poort open is, maar het kan ook zijn dat de firewall ons pakket blokkeerde of dat het pakket u ¨berhaupt het doelwit nooit bereikt heeft. We zien dat UDP scanning niet zo makkelijk is als TCP scanning. Toch kan het handig zijn om een UDP scan uit te voeren, omdat bij netwerkbeveiliging vaak erg op TCP wordt gelet en minder op UDP, waardoor er wellicht een kwetsbaarheid over het hoofd is gezien. [3] Figuur 4: TCP Handshake schematisch weergegeven. Bij een SYN scan wordt het laatste ACK pakket niet verzonden. 4.1.1 Fingerprinting Nu de open poorten van een hosts bekend zijn willen we erachter komen wat er precies op die poorten draait. Als bijvoorbeeld poort 22 open staat, dan is het waarschijnlijk dat er een SSH daemon draait. Om de precieze implementatie te achterhalen kunnen we een banner grab doen. Hierbij verbinden we met de hosts op de desbetreffende poort (bijvoorbeeld met telnet) en bekijken zijn response (zie figuur 5). Figuur 5: Banner grabbing met Telnet. De host draait OpenSSH 6.6.1 op poort 22. Vervolgens zijn we benieuwd naar het besturingssysteem van de host (OS fingerprinting). Hiervoor zijn twee typen scans: een actieve en een passieve scan. Voor een actieve scan wordt meestal een TCP of een ICMP scan gebruikt. Bij een TCP scan geef men sommige flags van het pakket bepaalde waarden waar verschillende besturingssystemen vervolgens verschillend op reageren. Deze reacties worden dan vergeleken met een database van besturingssystemen. De ICMP scan werkt soortgelijk, maar valt minder op, doordat er minder netwerkpakketten nodig zijn. Het minst opvallend is de passieve scan. Hierbij analyseer je het verkeer in het netwerk en stuur je zelf niets. Een nadeel hiervan zijn dat je afhankelijk bent van de netwerkactiviteit en netwerktoegankelijkheid. Daarnaast duurt dit type scan vaak langer. Toch kan een passieve scan nut hebben. Zo zal een passieve scan niet worden gedetecteerd door een IDS en dus blijft de aanval onopgemerkt. [3] 6 4.1.2 Nmap Nmap is een populaire port scanner en kan alle bovenstaande taken uitvoeren. Alleen voor de passieve scan voor het bepalen van het OS moet men een andere tool gebruiken, bijvoorbeeld p0f. [3] Daarnaast beschikt Nmap over de Nmap Scripting Engine (NSE) waarmee men door middel van Lua-scripts Nmap kan gebruiken om in het netwerk naar kwetsbaarheden te zoeken. [5] Dit type scannen wordt in sectie 5 verder toegelicht. De eerste versie van Nmap zag in 1997 het licht en wordt nog steeds als open-source project verder ontwikkeld. Waar Nmap vroeger alleen als commandline tool onder Linux werkte, is er tegenwoordig een GUI en draait Nmap op vrijwel alle platformen. De OS-fingerprint database wordt door Nmap gebruikers up-to-date gehouden. Als Nmap de fingerprint niet aan een besturingssysteem kan matchen, wordt de gebruiker verzocht de fingerprint te uploaden mits hij zelf het besturingssysteem kent. [5] Figuur 6: Een voorbeeld van een scan met Nmap. Merk op dat Nmap de softwareversies van de FTP en SSH daemons achterhaalt alsmede het besturingssysteem. [5] 4.2 Kwetsbaarheden Nadat we een overzicht hebben van de hosts in het netwerk en de software die zij draaien, kunnen we kijken of de software kwetsbaarheden bevat die we kunnen uitbuiten. Een manier om kwetsbaarheden te vinden is door simpelweg online te zoeken naar de software en bekende kwetsbaarheden. Wanneer kwetsbaarheden worden gevonden (door mensen met goede bedoelingen), worden ze gerapporteerd en opgeslagen in vulnerability databases, zoals de Open Source Vulnerability Database (OSVDB) en de Common Vulnerabilities and Exposures (CVE). Voor het vinden van bekende kwetsbaarheden in een netwerk zijn geautomatiseerde scanners, zoals Nessus, OpenVAS en speciaal voor webservers Nikto en w3af. Wat de laatste twee tools bijzonder maakt is dat ze geautomiseerd bekende websitehacks (zoals Local File Influsion (LFI), Cross Site Scripting (XSS) en SQL injection) uitproberen. Het ligt niet binnen het bereik van deze paper om deze technieken toe te lichten en daarom volstaan we met het kort noemen van beide tools. Hieronder bekijken we OpenVAS om een concreter beeld te krijgen van een vulnerability scanner. 7 4.2.1 OpenVAS OpenVAS is eigenlijk een open-source fork van Nessus. Omdat de tools ongeveer hetzelfde werken, behandelen we hier slechts OpenVAS. OpenVAS maakt gebruik van zogeheten NVT’s (Network Vulnerability Tests). Dit zijn kleine script files die versienummers van software controleren. Een voorbeeld hiervan is het script gb openssh 54114.nasl 3 . Dit script checkt of het versienummer van OpenSSH 5.8 of lager is en geeft een waarschuwing wanneer dit het geval is. OpenSSH 5.8 en oudere versies bevatten namelijk een kwetsbaarheid gespecificeerd in CVE2011-50004 , waarbij ingelogde gebruikers een Denial Of Service (DOS) aanval konden opzetten door te veel geheugen te alloceren. OpenVAS heeft meer dan 35000 NVT’s.5 De lokale NVT database kan men synchroniseren met de online feed die elke week wordt ge¨ updatet.6 7 In figuur 7 zien we nog een voorbeeld. OpenVAS rapporteert hier dat de host een verouderde versie van ClamAV (een virusscanner) draait die waarschijnlijk kwetsbaarheden bevat. De CVE entries worden ook geleverd, zodat details over de kwetsbaarheden eenvoudig kunnen worden opgezocht. Figuur 7: OpenVAS vindt kwetsbaarheden in een verouderde versie van ClamAV. 3 http://wald.intevation.org/scm/viewvco.php/scripts/2014/gb_openssh_54114.nasl?root= openvas-nvts&view=log 4 http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-5000 5 http://www.openvas.org/openvas-nvt-feed.html 6 http://www.openvas.org/openvas-nvt-feed.html 7 http://www.openvas.org/compendium/images/mainwindow-report-en.png 8 5 Exploits Nu we enkele kwetsbaarheden hebben gevonden hebben we een exploit nodig. Dit is niets anders dan een stukje code dat gebruik maakt van de kwetsbaarheid en de aanvaller hiermee extra bevoegdheden geeft. De exploit voert een payload uit op het doelwit. Een payload geeft de aanvaller (enige) controle over het doelwit en wordt als het ware verpakt in de exploit. De payload kan vari¨eren van het maken van een screenshot tot het tot stand brengen van een shell-verbinding van het doelwit naar de host. [6] 5.1 Metasploit Metasploit is een framework voor het uitvoeren van exploits.8 Metasploit heeft standaard geen GUI en is daarom misschien wat minder toegankelijk dan bijvoorbeeld Nmap. Echter, doordat men Metasploit kan uitbreiden met eigen exploits en scripts is het framework wel erg krachtig. [6] Metasploit beschikt verder over een eigen exploit database die wekelijks wordt ge¨ updatet. Stel dat we kwetsbaarheden hebben gevonden in het netwerk met OpenVAS. We kunnen dan de OpenVAS data inladen in Metasploit, vragen naar de kwetsbaarheden en zoeken op bijbehorende exploits. Met het autopwn commando kan dit en het uitvoeren van de exploits zelfs geautomatiseerd worden. Deze exploits zijn eigenlijk geschreven als configureerbare scripts. Zo geef je bijvoorbeeld het doelwit, een gebruikersnaam of poort als exploit parameter. Vervolgens kunnen we een payload kiezen die men op eenzelfde manier kan configureren als de exploit. [4] In figuur 8 zien we de opzet en het uitvoeren van een exploit die in een kwetsbaarheid in Windows SMB (voor File Sharing) uitbuit met als payload een login shell die wordt opgezet vanaf het doelwit (om een firewallblokkade te voorkomen). Figuur 8: Het configureren en uitvoeren van een exploit en payload in Metasploit. 8 Overigens kan Metasploit ook gebruikt worden voor andere aanvallen zoals een bruteforce HTTP login of als port scanner. 9 Daarnaast beschikt Metasploit over enkele payload encoders. Deze encoders ’crypten’ de payload code volgens een vaste manier waardoor de code minder opvalt. Zo werd volgens een studie in 2008 19% van de Metasploit payloads door virusscanners herkend, maar daalde dit naar 7% wanneer de payload ge¨encoded was. [6] 5.1.1 Meterpreter payload Een bijzondere feature van Metasploit is de meterpreter payload. Een normale shell payload zou wellicht opvallen omdat deze draait als een op zichzelf staand proces. De meterpreter payload is een payload die commando’s accepteert en direct in het heap geheugen van het proces met de kwetsbaarheid wordt ge¨ınjecteerd. Hierbij wordt geen extra proces aangemaakt en de code komt zelfs niet eens op disk te staan doordat de payload het laden van DLL’s aanpast. De meterpreter payload verstopt zich dus in een al bestaand proces en verandert nooit bestanden. Hierdoor is het bijzonder onopvallend. [6][4] Maar wat nu als de gebruiker het proces afsluit waarin de payload code zich bevindt? Hiervoor hebben we de ps en migrate commando’s. Met deze eerste opdracht vinden we het proces-id (PID) van bijvoorbeeld explorer.exe (een proces dat normaal gesproken nooit wordt afgesloten zolang een gebruiker is ingelogd), waarna we met het migrate commando de meterpreter payload kunnen injecteren in het explorer.exe preces. [4] Tevens beschikt de Meterpreter payload over vele commando’s, waaronder: het openen van een shell, het nemen van webcam snapshots, het loggen van keys, het up- & downloaden van bestanden en het dumpen van password hashes.9 6 Conclusie We hebben een pentest beschreven als een poging om met toestemming van de systeemeigenaar informatie uit een beveiligd systeem te verkrijgen zonder de vereiste toegangsgegevens waarbij kwetsbaarheden in een systeem daadwerkelijk (mogen) worden uitgebuit. Het voornaamste doel van de pentest is het verbeteren van de systeembeveiliging, maar ook het testen van een IDS kan een aanleiding zijn voor een pentest. Vervolgens hebben we gekeken naar de reconnaissance fase. Tijdens deze fase willen we een doelwit uit de ‘echte wereld’ mappen naar een doelwit in de ‘cyberwereld’. We hebben gezien dat de tools SearchDNS en dnsmap ons kunnen helpen bij het vinden van subdomeinen. Het host commando kan mail en DNS servers van het doelwit vinden. Daarnaast hebben we scripts voor het zoeken naar e-mail adressen en (login)namen van werknemers van het doelwit. Hiermee zouden we een gepersonaliseerde aanval kunnen opzetten om toegang te krijgen tot het interne netwerk. Hierna hebben we gekeken naar manieren om snel te bepalen of hosts bereikbaar zijn. Daarnaast hebben we de werking van port scanning en OS fingerprinting toegelicht. Hierbij gaven we met Nmap een voorbeeld van port scanning, waarbij versienummers en het besturingssysteem werden bepaald. Tevens hebben we de werking van vulnerability scanners toegelicht aan de hand van OpenVAS. Deze scanners kunnen ons helpen bij het zoeken naar (bekende) kwetsbaarheden in gebruikte software. Als laatste behandelden we de exploitation fase. Een exploit is een stukje code dat een kwetsbaarheid uitbuit en een payload uitvoert. Een payload geeft de aanvaller controle over het doelwit. Voorbeelden hiervan zijn: het maken van screenshots, het loggen van keys en het opzetten van een login shell. In dit kader beschreven we Metasploit. Dit framework maakt exploitation eenvoudig door exploits en payloads beschikbaar te maken als uitvoerbare scripts. 9 http://www.offensive-security.com/metasploit-unleashed/Meterpreter_Basics 10 Referenties [1] GOVCERT.NL in samenwerking met Fox-IT, Pentesten doe je zo: Een handleiding voor opdrachtgevers, 2010. [2] Stephen Northcutt, Jerry Shenk, Dave Shackleford, Tim Rosenberg, Raul Siles en Steve Mancini, “Penetration Testing: Assessing Your Overall Security Before Attackers Do,” SANS Analyst, June 2006. [3] Jeremy Faircloth, Penetration Tester’s Open Source Toolkit, Third Edition. Elsevier, 2011. [4] Shon Harris, Allen Harper, Chris Eagle en Jonathan Ness, Grey Hat Hacking: The Ethical Hacker’s Handbook, Second Edition. McGraw-Hill, 2011. [5] Gordon “Fyodor” Lyon, Nmap Network Scanning. Nmap Project, 2009. [6] Carlos Joshua Marquez, “An Analysis of the IDS Penetration Tool: Metasploit.” 11
© Copyright 2024 ExpyDoc