Historien bakom penetrationstestning och dess betydelse
År 1967 samlades datasäkerhetsexperter från Rand Corporation, däribland Willis Ware, Rein Turn, Harold Petersen och Benard Peters, för att utarbeta en rapport. Denna rapport, som följde på en gemensam datorkonferens, belyste sårbarheten i kommunikationskanalerna mellan datorer. De insåg att dessa kanaler var relativt enkla att penetrera.
Detta ledde till att termen ”penetration” började användas i samband med intrång i datasäkerheten. James P. Anderson utvecklade därefter en strukturerad metodik för penetrationstestning, som blev grundläggande för framtida säkerhetsarbeten.
Grundprincipen i dessa tidiga tester var enkel: säkerhetsteam skulle systematiskt identifiera sårbarheter och utveckla metoder för att neutralisera dem. Mer detaljerad historik om penetrationstester finns att utforska.
Idag krävs både teknisk skicklighet och tid för att lyckas exploatera ett företags säkerhet. Tyvärr har den moderna tekniken gjort det lättare för illvilliga aktörer att hitta svagheter i en organisations infrastruktur. Angreppen fokuserar ofta på tillgångar som är exponerade på internet, såsom webbapplikationer, webbplatser, domännamnsservrar (DNS) och e-postsystem, i syfte att stjäla värdefull information.
Genom att utföra penetrationstester kan ett företag proaktivt identifiera och stärka potentiella angreppspunkter innan en faktisk attack äger rum. Enligt forskning, har hela 73% av lyckade dataintrång skett genom sårbarheter i webbapplikationer.
Det är idag viktigare än någonsin att organisationer regelbundet verifierar säkerheten i sina applikationer, system och nätverk. Simulerade tester är ett effektivt sätt att testa ett systems säkerhetsstyrka och kontrollmekanismer. Detta är inte en engångsföreteelse, utan en kontinuerlig process. Frekvensen av testerna bör baseras på organisationens struktur och risknivå.
Penetrationstestning behöver inte vara komplicerad. Genom att utbilda IT-teamen i nödvändiga färdigheter kan en organisation systematiskt implementera säkerhetsåtgärder, särskilt vid större infrastrukturuppgraderingar eller introduktion av nya digitala tjänster och tillgångar.
Allt börjar med en djup förståelse för vad processen egentligen innebär.
Vad innebär penetrationstestning?
Innan vi går in på detaljerna, bör vi klargöra vad och varför. Penetrationstester, ofta förkortade till ”penntester”, är i grunden cyberattacker mot företag i en säker och kontrollerad miljö. De syftar till att upptäcka sårbarheter i en organisations IT-miljö i samklang med säkerhetsrevisioner. Penntester efterliknar de metoder som hackare använder i verkligheten. Några viktiga anledningar till att ett företag behöver genomföra penetrationstester inkluderar:
- Att identifiera dolda sårbarheter innan de upptäcks av illvilliga aktörer.
- Att stärka säkerhetsprocesser och strategier.
- Att minska kostnader för åtgärder och driftstopp.
- Att säkerställa efterlevnad av regelverk kring säkerhet och integritet.
- Att skydda varumärket och behålla kundernas lojalitet.
Penntester ger en indikation på ett företags motståndskraft mot attacker och visar hur enkelt det är för hackare att bryta sig in i systemen. Insikterna som erhålls kan bidra till att prioritera investeringar i cybersäkerhet, följa branschstandarder och förbättra defensiva strategier. Automatiska testverktyg, så kallade penetrationsverktyg, spelar en avgörande roll i detta arbete.
Vad är penntestverktyg?
Ettiska hackare använder penntestverktyg för att simulera verkliga cyberattacker och utvärdera säkerheten i en IT-infrastruktur. Dessa verktyg automatiserar repetitiva testuppgifter, snabbar upp rapportgenereringen och minskar kostnaderna för multipla skanningar.
Det finns en stor variation av verktyg: öppen källkod, verktyg för webbapplikationer, nätverk, mobilapplikationer, molntjänster, manuella verktyg, automatiserade verktyg och penetrationstestning som en tjänst. Det är viktigt att leta efter funktioner som tydliga rapporter, integration med CI/CD, åtgärdsstöd och penntestcertifikat (endast ett fåtal erbjuder offentliga certifikat).
Låt oss nu gå igenom de olika faserna i en penetrationstestprocess.
Faser i penetrationstestning
En typisk penetrationstestprocess består av flera steg. Även om olika källor kan dela in processen på olika sätt, är den grundläggande strukturen densamma. Processen innefattar informationsinsamling, skanning, sårbarhetsbedömning, exploatering och rapportering.
Framgångsrika testare använder en mängd olika verktyg för att säkerställa att de har rätt utrustning i varje testfas. Låt oss titta närmare på varje steg i processen.
Informationsinsamling
Denna fas, som ibland förbises, hjälper organisationen att fastställa en gemensam grund med testaren. Här definieras omfattningen av arbetet, testreglerna, tidslinjerna och den exakta logistiken med tydliga målsättningar.
För att få ett komplett och användbart penntest hjälper detta steg till att identifiera vilka områden som behöver testas och vilka metoder som är bäst lämpade. Det är viktigt att inte hoppa över detta steg.
Innan ett system kan testas måste organisationen ge sitt godkännande till testaren. Annars kan agerandet betraktas som olagligt. Organisationer upprättar klara regler (i ett kontrakt) för att säkerställa ett smidigt arbetsflöde. Avtalet bör även specificera kritiska tillgångar, testmål och säkerhetsåtgärder. Detta steg påverkar alla efterföljande steg och säkerställer att planen överensstämmer med de förväntade testresultaten.
Spaning/OSINT-insamling
I denna fas samlar testaren in all tillgänglig information om systemet. Informationen är kopplad till kommande tester och baseras på resultaten från det första steget. Testaren kan därmed få detaljerad information om vilka data som ska samlas in och vilka strategier som ska användas. Vid aktiv spaning interagerar testaren direkt med systemet. Vid passiv spaning samlas allmänt tillgänglig information. För en fullständig bild är det bäst att använda båda teknikerna.
Aktiv datainsamling innebär arbete med nätverk, operativsystem, användarkonton, domännamn, e-postservrar och applikationer. Passiv datainsamling innebär att använda offentliga källor (OSINT) som sociala medier, skatteinformation, webbplatser och annan publik information.
Här är några verktyg för OSINT som är användbara för att samla och organisera information. Med hjälp av OSINT-ramverket kan man skapa en checklista för potentiella angreppspunkter och sårbarheter. Även om detta steg är viktigt för både interna och externa penntester, utförs det inte alltid vid tester av webbapplikationer, mobilappar eller API:er.
Skanning
En djupgående teknisk genomgång av systemet är nästa steg. Med hjälp av skanningsverktyg som automatiska sårbarhetsskannrar och nätverksmappare kan man förstå hur målsystemet reagerar på olika intrång, öppna portar och nätverkstrafik.
De viktigaste uppgifterna i detta steg är att skanna och analysera tillgångar. Man kan använda verktyg som Nmap för att identifiera datortjänster och värdar, skicka paket och analysera svar. Efter detta steg har man en detaljerad bild av systemets tillgångar, inklusive operativsystem, tjänster och öppna portar.
Genom att analysera resultaten kan man planera en exploatering. Man kan kartlägga systemets digitala struktur och identifiera potentiella angreppspunkter. Man kan utföra statisk och dynamisk analys för att få en tydlig bild av hur systemet reagerar i olika förhållanden.
Statisk analys innebär att granska koden för applikationerna utan att köra den. Man kan använda verktyg för att sömlöst skanna kodbaser. Dynamisk analys innebär att granska koden medan applikationen körs. Det är viktigt att all information som samlas in är korrekt, eftersom detta steg påverkar de efterföljande fasernas framgång.
Bedömning/åtkomstförvärv
I detta skede används all data som samlats in i de föregående stegen för att identifiera sårbarheter och undersöka om de kan exploateras. Det här steget är mest effektivt när det kombineras med andra processer för penetrationstestning.
För att utvärdera riskerna med identifierade sårbarheter använder testare olika resurser, bland annat den nationella sårbarhetsdatabasen (NVD), som analyserar programvarusårbarheter publicerade i Common Vulnerabilities and Exposures (CVEs).
Därefter identifieras målen och attackvektorerna. Mål kan inkludera värdefulla tillgångar som personuppgifter, kundinformation, partners/leveranskedjor, leverantörer, portar, appar och protokoll. Webappattacker genomförs ofta. De vanligaste är SQL-injektion, cross-site scripting och bakdörrar. Systemet exploateras genom att eskalera behörigheter, avlyssna trafik och stjäla data för att exponera skador. Testaren arbetar inom ramen för de begränsningar som definierats i informationsinsamlingsfasen.
Exploatering
Detta steg kallas även för upprätthållande av åtkomst. Testaren undersöker om sårbarheterna kan användas för att få tillgång till systemet. Med hjälp av verktyg som Metasploit simulerar testaren en verklig attack.
Under detta steg är testaren ansvarig för organisationens resurser och måste se till att systemen inte äventyras efter simuleringarna.
Metasploit är ett populärt verktyg för att exploatera sårbarheter. Denna fas mäter effekterna av ett intrång. Testaren kan försöka kryptera eller exfiltrera data och simulera ransomware och noll-dagsattacker. Nyckeln till ett lyckat penntest är att balansera gränsöverskridande med att upprätthålla systemets integritet.
Experter är mest lämpade för detta arbete; de kan utnyttja sårbarheter som automatiserade system missar. I slutet av denna fas har testaren försökt få högre behörigheter i systemet och nätverksinformation genom att identifiera tillgängliga data. Den etiska hackaren bör även redogöra för resultaten av exploateringen av värdefulla mål.
Riskanalys, rekommendationer, granskning och rapportering
Efter exploateringsfasen genereras en rapport som dokumenterar resultaten. Rapporten ska användas för att åtgärda de identifierade sårbarheterna.
En bra penntestrapport är ett register över de dokumenterade sårbarheterna och ger organisationen verktyg för att åtgärda säkerhetsrisker. En omfattande rapport dokumenterar alla identifierade sårbarheter och deras CVVS-poäng, en kort beskrivning av tekniska risker, potentiella effekter på verksamheten, detaljerad information om exploateringssvårigheter och taktiska råd.
Rapporten bör även beskriva alla testfaser, testmodeller, använda tekniker och mål. Testaren kan också ge en åsikt om testet uppfyller gällande krav. Rapporten levereras bäst med en allmän sammanfattning och en teknisk guide.
Efter att rapporterna har levererats är det viktigt att rengöra systemet. Detta innebär att återställa systemet till sitt ursprungliga tillstånd. Rengöringsaktiviteter inkluderar att ta bort alla körbara filer, temporära filer och skript från infekterade system, ta bort användarkonton som skapats för att ansluta till systemet och avinstallera rootkits i miljön.
Som sista steg är det upp till organisationen att åtgärda problemen. Med hjälp av rapporterna identifierar man sårbarheter, analyserar potentiella effekter, informerar beslutsfattare och utvecklar strategier för att åtgärda problemen.
Åtgärderna ska åtgärda alla sårbarheter som kan exploateras inom en rimlig tidsram. Denna fas kan ibland pågå under en längre tid, beroende på att nya tester måste genomföras för att utvärdera uppdateringar eller andra förändringar.
Praktisk tillämpning av penntester: Steg-för-steg-guide
I detta exempel har vi valt att använda Metasploit-ramverket. Du kan skapa ett anpassat arbetsflöde, men här är ett exempel för att komma igång. Börja med att installera ramverket.
För Linux/macOS, använd följande kommando:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \ chmod 755 msfinstall && \ ./msfinstall
För Windows, använd det senaste installationsprogrammet för Windows. Alternativt kan du använda kommandot Shell:
[CmdletBinding()] Param( $DownloadURL = "https://windows.metasploit.com/metasploitframework-latest.msi", $DownloadLocation = "$env:APPDATA/Metasploit", $InstallLocation = "C:\Tools", $LogLocation = "$DownloadLocation/install.log" ) If(! (Test-Path $DownloadLocation) ){ New-Item -Path $DownloadLocation -ItemType Directory } If(! (Test-Path $InstallLocation) ){ New-Item -Path $InstallLocation -ItemType Directory } $Installer = "$DownloadLocation/metasploit.msi" Invoke-WebRequest -UseBasicParsing -Uri $DownloadURL -OutFile $Installer & $Installer /q /log $LogLocation INSTALLLOCATION="$InstallLocation"
Och sedan…
Starta ett projekt – Detta kommer att fungera som platsen för alla data och arbetsytor. Eftersom kraven kan variera för olika undernät i organisationen är det bra att organisera arbetet för att öka effektiviteten. Om man exempelvis har ett penntest för IT- och personalavdelningen kan det vara bra att separera resultaten.
Bildkälla – MetaSploit
Skaffa måldata – Här lägger du till data till projektet genom en upptäcktskanning eller genom att importera befintliga data. Skanna mål för att räkna upp öppna portar och se nätverkstjänster. Använd skanningsalternativet. Ange sedan de IP-adresser som ska användas, en per rad. Du kan också använda importalternativet för att importera data från en lokal fil.
Bildkälla – MetaSploit
Visa/hantera värddata – Du kan visa data från värd- eller projektnivå. Du kan växla mellan olika IP-adresser för att få en specifik värdvy.
Bildkälla – MetaSploit
Sök efter sårbarheter – Starta en sårbarhetssökning via Nexpose-alternativen. Detta steg använder sårbarhetsdatabaser för att hitta eventuella matchningar.
Utnyttja sårbarheter – Du kan utnyttja sårbarheter via en smidig valideringsguide. Alternativt kan du använda Nexpose.
Aktivitet efter exploatering – Samla in data från exploateringen via fliken ”sessioner” och klicka på ”samla”.
Bildkälla – MetaSploit
Rensa – När du är klar med datainsamlingen kan du använda alternativet ”rensa” för att avsluta sessionen och rensa systemet.
Generera rapporter – I slutet av penntestet tillhandahåller Metasploit ett antal rapporter som kan användas som utgångspunkt för datainsamling och resultatsammanställning.
En mer detaljerad snabbstartsguide om penntester finns på Metasploits snabbstartsguide.
Vanliga penntestverktyg
Några vanliga verktyg är Sn1per, Metasploit och Commix.
#1. Sn1per
Sn1per är ett verktyg för sårbarhetsundersökning som används för att validera effekterna av attacker på klientsidan. Det kan användas för att simulera fjärrangrepp och attacker från användare i en kontrollerad miljö. Sn1per har över 6000 stjärnor på GitHub. Det fungerar även som en mediahubb. Med Sn1per kan du spara tid genom att automatisera öppen källkod och kommersiella verktyg för att hitta sårbarheter.
#2. Metasploit
Metasploit är ett stort ramverk för penetrationstestning som utvecklats genom samarbete i open source-communityn. Det har 31 200 stjärnor på GitHub, vilket visar på ett stort intresse inom programvaruvärlden. Metasploit stöds av säkerhetsentusiaster som arbetar tillsammans för att identifiera sårbarheter och öka säkerhetsmedvetenheten.
#3. Commix
Commix är ett utmärkt verktyg för att utnyttja OS-kommandoinjektion. Commix är specialiserat på sårbarheter för kommandoinjektion och är lättanvänt, gratis, open source, plattformsoberoende, portabelt och modulärt. Det har fått över 4000 stjärnor på GitHub. Det är gratis och open source.
Sammanfattning
Att förstå de olika faserna i en penetrationstestprocess är viktigt för företag som vill förbättra motståndskraften i sina digitala system. I takt med att cyberattacker blir allt vanligare och mer sofistikerade, är simulering av verkliga attacker genom penetrationstester ett effektivt sätt att möta utmaningarna inom cybersäkerhet.
Genom att skräddarsy penntesterna efter organisationens specifika behov kan man säkerställa effektiva säkerhetsåtgärder. Genom att genomgå varje fas i penetrationstestprocessen får man en bra avkastning på sina investeringar i cybersäkerhet.
För att få ett lyckat penntest är det viktigt att gå smart tillväga. Börja med att samla in information om testet. Bygg vidare på den informationen på spaningsnivån. En bra utgångspunkt för spaning är att definiera omfattningen som ska granskas.
Skanna sedan systemet för att få en djupgående förståelse och identifiera sårbarheter. Fortsätt sedan till att starta en attack samtidigt som du undviker att skada systemet. Skapa sedan användbara rapporter som kan guida åtgärdande åtgärder. Kom ihåg att rensa upp och återställa systemet till sitt ursprungliga tillstånd.
Korrekt utförda penetrationstester förbättrar organisationens säkerhet genom att identifiera och åtgärda sårbarheter. I takt med att allt fler organisationer migrerar till molnet och använder ny teknik, blir penetrationstester allt viktigare inom informationssäkerhetsområdet. Hela 75% av företagen använder penntester för att utvärdera sin säkerhetsställning, eller för att uppfylla krav på efterlevnad. Om man är noggrann med varje steg i processen kommer man alltid att se värdet i att utföra penetrationstester.
Kolla även in verktyg för kostnadsfria penetrationstester (Pentest) för att testa applikationssäkerhet.