Programvaran har garanterat buggar. Det kan finnas många tusen rader kod i mjukvara, och mänsklig felbarhet innebär att åtminstone några av dem inte blir hela som avsett. Livscykeln för mjukvaruutveckling är en process utformad för att försöka minimera dessa problem genom att regelbundet testa.
Problemet är att testning ofta görs av utvecklare, som kanske har lärt sig hur man kodar något men kanske inte har lärt sig säker kodningsmetoder. Även i noggrant testade system kan det hjälpa att identifiera nya problem med en utomstående observatörsblick och få in ett nytt perspektiv.
Ett vanligt sätt att göra detta på är genom ett penetrationstest, vanligtvis förkortat till ett penetest. Detta innebär att få en professionell, etisk hacker, en pentester, att titta på systemet och hitta eventuella säkerhetsproblem.
Tips: Det är "pentest" och "pentester", inte "pentest". En pentester testar inte pennor. "Pen-test" är något mer acceptabelt än "pen-test" men bör i allmänhet också undvikas.
Målet för en Pentest
Målet med varje pentest är att identifiera alla säkerhetsbrister i systemet som testas och att rapportera dem till klienten. Vanligtvis är dock engagemang något tidsbegränsade baserat på kostnad. Om ett företag har ett internt pentester- eller pentest-team kan de arbeta permanent för företaget. Ändå har många företag med skalan för det en bred portfölj av system som måste testas. Detta inkluderar både produkter som säljs och företagets affärssystem.
Som sådana kan de inte lägga all sin tid på att testa en sak. Många företag föredrar att anlita ett externt testande företag för att utföra uppdraget. Detta är fortfarande tidsbegränsat baserat på kostnaden. Kostnaden drivs av att ett pentest är en mycket manuell process och att kompetensen är en bristvara.
Vanligtvis kommer ett pentest att omfattas av en specifik tidsram. Detta görs utifrån målet i fråga och hur lång tid det ska ta att vara någorlunda säker på att ha hittat allt. Tidslinjen för att hitta sårbarheter är i allmänhet en klockkurva. Inte mycket hittas direkt när pentestern tittar runt applikationen. Då kan de allra flesta fynden uppnås inom en specifik tidsskala innan avsmalning. Vid någon tidpunkt är kostnaden för att lägga mer tid på att leta inte värt chansen att det inte finns något annat att hitta.
Ibland är även det angivna priset för den rekommenderade tiden för mycket. I det här fallet kan testet vara "time boxed". Det är här kunden accepterar att de inte testar så mycket som rekommenderat men vill att pentestarna ska göra det bästa de kan inom en kortare tidsram. Vanligtvis ingår detta som en varning i rapporten.
Manuell process
Vissa verktyg är tillgängliga för att utföra säkerhetstestning automatiskt. Dessa kan vara användbara. Men de har ofta höga falska positiva och falska negativa siffror. Detta innebär att du måste lägga tid på att gräva igenom verifieringsproblem, med vetskap om att det kanske inte är heltäckande. De flesta av dessa verktyg letar efter specifika indikatorer, såsom kända sårbara versioner av programvara eller kända sårbara funktioner. Det finns dock många sätt för att dessa inte ska vara faktiska problem eller mildras i praktiken.
Säkerhetssårbarheter kan komma samman från ett gäng till synes ofarliga delar. Det bästa sättet att upptäcka detta är genom manuell mänsklig ansträngning. Pentesters använder verktyg men vet hur de ska tolka resultaten, manuellt verifiera dem och utföra oberoende manuella åtgärder. Denna manuella insats skiljer en pentest från en sårbarhetsskanning eller sårbarhetsbedömning.
Typer av Pentest
Vanligtvis innebär ett pentest att testa en hel produkt som den skulle distribueras. Helst sker detta i en riktig produktionsmiljö. Detta är dock inte alltid praktiskt. Först finns det rädslan för att den pentest ska kunna slå målet offline. I allmänhet är denna rädsla i huvudsak ogrundad. Pentest genererar i allmänhet inte för mycket nätverkstrafik, kanske motsvarigheten till några extra aktiva användare. Pentesters kommer inte heller medvetet att testa för överbelastningsproblem, särskilt i produktionsmiljöer. Istället kommer de vanligtvis att rapportera misstänkta problem med denial-of-service för att låta klienten undersöka det själv.
Dessutom är det värt att notera att om systemet är anslutet till Internet är det ständigt föremål för "gratis pentest" från riktiga black hat hackers och deras bots. En annan anledning att undvika produktionsmiljöer är integritetsproblem med live användardata. Pentesters är etiska hackare enligt NDAs och kontrakt, men om en testmiljö finns och är liknande kan den användas.
Tips: En "gratis pentest" är ett skämtsamt sätt att hänvisa till att bli attackerad från svarta hattar på Internet.
Pentests kan utföras mot i princip alla tekniska system. Webbplatser och nätverksinfrastruktur är de vanligaste typerna av tester. Du får också API-tester, "tjocka klienter"-tester, mobiltester, hårdvaratester och mer.
Variationer på temat
Realistiskt sett är nätfiske, OSINT och röda lagövningar relaterade men något annorlunda. Du är förmodligen medveten om hotet med nätfiske. Vissa tester involverar testning för att se hur anställda svarar på nätfiske-e-postmeddelanden. Genom att spåra hur användare interagerar – eller inte gör – med nätfisket är det möjligt att lära sig hur man skräddarsyr framtida nätfisketräning.
OSINT står för Open Source Intelligence. Ett OSINT-test kretsar kring att skrapa allmänt tillgänglig information för att se hur värdefull data kan samlas in och hur den kan användas. Detta innebär ofta att man skapar listor över anställda från platser som LinkedIn och företagets webbplats. Detta kan göra det möjligt för en angripare att identifiera seniora personer som kan vara bra mål för en spear-phishing-attack, nätfiske specifikt skräddarsytt för den individuella mottagaren.
Ett rött teamengagemang är vanligtvis mycket mer djupgående och kan involvera några eller alla andra komponenter. Det kan också inkludera testning av fysisk säkerhet och efterlevnad av säkerhetspolicy. På den politiska sidan handlar det om social ingenjörskonst. Det är att försöka övertyga dig in i byggnaden. Detta kan vara så enkelt som att hänga i rökområdet och komma tillbaka in med rökarna efter en rökpaus.
Det kan vara att posera som tjänsteman eller att be någon skaffa en dörr åt dig medan du bär på en kaffekoppsbricka. På den fysiska säkerhetssidan kan det till och med handla om att försöka bryta sig in fysiskt, testa kameratäckning, kvalitet på lås och liknande. Rött team engagemang involverar vanligtvis ett team av människor och kan löpa över mycket längre tidsskalor än vanliga pentests.
Röda lag
En röd lagövning kan verka mindre etisk än en vanlig pentest. Testaren jagar aktivt intet ont anande anställda. Nyckeln är att de har tillstånd från företagsledningen, vanligtvis från styrelsenivå. Detta är den enda anledningen till att det är ok för en röd lagspelare att faktiskt försöka bryta sig in. Ingenting tillåter det dock att vara våldsamt. En röd lagövning kommer aldrig att försöka skada eller underkuva en säkerhetsvakt, att kringgå eller lura dem.
För att förhindra att den röda lagspelaren arresteras kommer de i allmänhet att bära ett undertecknat kontrakt med underskrifter från de godkända styrelsemedlemmarna. Om de fångas kan detta användas för att bevisa att de hade tillstånd. Naturligtvis, ibland, används detta som en dubbel bluff. Den röda teamern kan bära två tillståndskort, en riktig och en falsk.
När de grips lämnar de först över den falska tillståndssedeln för att se om de kan övertyga säkerheten om att den är legitim även när den inte är det. För detta ändamål kommer den ofta att använda de faktiska namnen på företagets styrelse men inkluderar ett verifieringstelefonnummer som går till en annan röd teamer som informeras om att verifiera omslagshistorien. Självklart, om säkerheten genomskådar detta, överlämnas den riktiga tillståndsbeviset. Detta kan dock behandlas med stor misstänksamhet.
Beroende på hur den röda teamaren greps kan det vara möjligt att fortsätta testet, förutsatt att de har gått förbi den enskilda väktare som har fångat dem. Det är dock möjligt att testarens identitet kan vara "sprängd", vilket i huvudsak tar bort dem från ytterligare personliga tester. Vid denna tidpunkt kan en annan teammedlem byta in med eller utan att informera säkerheten.
Slutsats
Ett pentest är ett engagemang där en cybersäkerhetsexpert ombeds att testa säkerheten i ett datorsystem. Testet går ut på att manuellt söka efter och verifiera förekomsten av sårbarheter. Automatiserade verktyg kan användas som en del av detta. I slutet av testet tillhandahålls en rapport som beskriver de problem som hittats och ger råd om åtgärdande.
Det är viktigt att den här rapporten inte bara är den automatiska utdata från ett verktyg utan alla har testats och verifierats manuellt. Alla datorsystem, hårdvara, nätverk, applikationer eller enheter kan testas. De färdigheter som behövs för var och en varierar men är ofta kompletterande.