Jag har märkt en intressant sak: många företag och organisationer blandar ihop säkerhetsskanningar med pentest. Ett pentest är när man på ett kontrollerat sätt försöker bryta sig in i ett system, medan en sårbarhetsskanning bara försöker hitta möjliga sårbarheter. Detta är mycket märkligt, men jag har sett det många gånger. Felet verkar även finnas bland de som jobbar inom området. För ett antal månader sedan hjälpte jag till att intervjua en arbetssökande till en tjänst som pentestare. Han berättade att han sökte tjänsten eftersom han var intresserad av säkerhet. Jag frågade vad han hade gjort för typer av säkerhetarbeten. Han sa att han kört programmet Nessus ett par gånger och lämnat över resultaten till någon annan att tolka. Nessus är ett program som hittar vanliga miskonfigurationer och säkerhetshål i tjänster. Ganska uppenbart kanske, men han fick inte jobbet.
Jag läste på ett forum för pentestare där en del personer beklagade av säkerhetsföretag säljer sårbarhetsskanningar som pentester. De betalar ett företag för att skanna av deras tjänster och komma med en automatgenererad rapport över ”allvarliga säkerhetshål”. Detta är knappt ett halvt pentest om ens det.
Betänk att pentest är en förkortning av penetrationstest, vilket innebär som ovan skrivet är att en inhyrd konsult eller flera försöker ta sig in i systemet. Lyckas de, lämnar de över en rapport som förklarar hur de tog sig in. Om ett försök att faktiskt hacka systemet inte görs, är det inte ett pentest. När jag gör pentester brukar jag faktiskt lämna in även hittade sårbarheter och miskonfigurationer, för att jag hittade dem på vägen när jag analyserade systemet för sårbarheter. Det tycker jag ingår i ett bra test även om det inte är huvudsyftet med det.
Så varför är inte en sårbarhetsskanning tillräcklig? Jo, för att den inte hittar problem med systemlogiken. Den kan se att en programvara har sårbarheter som potentiellt skulle kunna användas för att ta sig in. Men den kan inte hitta felaktigheter i hur t.ex. en webbapplikation hanterar inloggningen, som möjliggör att man tar över sessionen.
Sen är sårbarhetsskanningar dåliga på att hitta alla fel. Jag gjorde en gång ett pentest mot en webbapp och min programvara, Burp suite hittade ingenting. När jag klistrade in lite javaskriptkod direkt i ett inmatningsfält, hittade jag en möjlighet att köra javaskriptkod hos andra användare och läcka ut information den vägen. På så sätt kunde jag få ut data från andra användares ärenden (det var ett ärendehanteringssystem). Ett automatiserat program hade aldrig kunnat förstå vidden av problemet.
En annan attack jag gjorde mot en kund var att ladda upp ett dokument som i själva verket var ett litet program. Men detta kunde jag på under fem minuter ta över servern som körde webbapplikationen och även hela nätverket. Alla dessa attacker är värda oändligt mycket mer än att bara lämna in en rapport där det står att HTTP-protokollet stöder version 3.0 av SSL vilket inte är bra.
Om du anlitar någon att göra ett pentest på din miljö, se då till att du verkligen får vad du betalar för. Som jag skrev förut finns det många som säljer dåliga tjänster därute.