Softver će zajamčeno imati greške. U softveru može postojati mnogo tisuća redaka koda, a ljudska greška znači da barem neki od njih neće biti cjeloviti kako je zamišljeno. Životni ciklus razvoja softvera je proces osmišljen kako bi se pokušali minimizirati ti problemi redovitim testiranjem.
Problem je u tome što testiranje često provode programeri, koji su možda naučili kako nešto kodirati, ali možda nisu naučili sigurne prakse kodiranja. Čak iu temeljito testiranim sustavima, pogled vanjskog promatrača i unošenje nove perspektive može pomoći u identificiranju novih problema.
Uobičajen način na koji se to radi je putem penetracijskog testa, obično skraćenog na pentest. To uključuje angažiranje profesionalnog, etičkog hakera, pentestera, da pregleda sustav i pronađe sve sigurnosne probleme.
Savjet: to je "pentest" i "pentester", a ne "pen test". Pentester ne testira olovke. "Pen-test" je malo prihvatljiviji od "pen-test", ali općenito ga također treba izbjegavati.
Cilj pentesta
Cilj svakog pentesta je identificirati sve sigurnosne propuste u sustavu koji se testira i prijaviti ih klijentu. Međutim, obično su angažmani donekle vremenski ograničeni na temelju troškova. Ako tvrtka ima internog pentestera ili pentest tim, oni mogu trajno raditi za tvrtku. Ipak, mnoge tvrtke s razmjerom za to imaju širok portfelj sustava koji se moraju testirati. To uključuje i proizvode koji se prodaju i poslovne sustave tvrtke.
Kao takvi, ne mogu potrošiti sve svoje vrijeme testirajući jednu stvar. Mnoge tvrtke radije angažiraju vanjsku tvrtku za pentestiranje za obavljanje angažmana. To je još uvijek vremenski ograničeno na temelju cijene. Trošak je uzrokovan činjenicom da je pentest vrlo ručni proces i da je skupa vještina nedovoljno.
Pentest će obično biti ograničen na određeni vremenski okvir. To se radi na temelju predmetne mete i vremena koje bi trebalo proći da bismo bili razumno sigurni da smo sve pronašli. Vremenski okvir za pronalaženje ranjivosti općenito je zvonasta krivulja. Ne može se pronaći puno odmah dok pentester pregledava aplikaciju. Tada se velika većina nalaza može postići unutar određenog vremenskog okvira prije nego što se smanji. U nekom trenutku trošak trošenja više vremena na traženje nije vrijedan šanse da se ne može pronaći ništa drugo.
Ponekad je čak i navedena cijena za preporučeno vrijeme previše. U ovom slučaju, test može biti "vremenski ograničen". Ovdje klijent prihvaća da ne testira onoliko koliko se preporučuje, već želi da pentesteri daju najbolje što mogu u skraćenom vremenskom okviru. Obično je to uključeno kao upozorenje u izvješće.
Ručni proces
Dostupni su neki alati za automatsko provođenje sigurnosnog testiranja. Ovo može biti korisno. Međutim, često imaju visoke lažno pozitivne i lažno negativne stope. To znači da morate provesti vrijeme kopajući po pitanjima provjere, znajući da to možda nije sveobuhvatno. Većina tih alata traži specifične pokazatelje, kao što su poznate ranjive verzije softvera ili poznate ranjive funkcije. Međutim, postoji mnogo načina da to ne budu stvarni problemi ili da se u praksi ublaže.
Sigurnosne ranjivosti mogu nastati iz hrpe naizgled bezazlenih dijelova. Najbolji način da se to uoči je ručnim ljudskim naporom. Pentesteri koriste alate, ali znaju kako interpretirati rezultate, ručno ih provjeriti i izvršiti neovisne ručne radnje. Ovaj ručni pokušaj odvaja pentest od skeniranja ranjivosti ili procjene ranjivosti.
Vrste pentesta
Pentest obično uključuje testiranje cijelog proizvoda onako kako bi se koristio. U idealnom slučaju, to se događa u stvarnom proizvodnom okruženju. Međutim, to nije uvijek praktično. Prvo, postoji strah da bi pentest mogao izbaciti metu izvan mreže. Općenito, ovaj strah je u biti neutemeljen. Pentestovi općenito ne stvaraju previše mrežnog prometa, možda ekvivalent nekoliko dodatnih aktivnih korisnika. Pentesteri također neće namjerno testirati probleme tipa uskraćivanja usluge, posebno u proizvodnim okruženjima. Umjesto toga, obično će prijaviti sumnje na probleme s uskraćivanjem usluge kako bi omogućili klijentu da to sam istraži.
Dodatno, vrijedi napomenuti da je sustav, ako je spojen na Internet, stalno podložan “besplatnim pentestovima” od pravih crnih hakera i njihovih robota. Još jedan razlog za izbjegavanje produkcijskih okruženja su problemi s privatnošću živih korisničkih podataka. Pentesteri su etički hakeri prema NDA-ima i ugovorima, ali ako testno okruženje postoji i slično je, može se koristiti.
Savjet: "besplatni pentest" šaljiv je način označavanja napada crnih šešira na internetu.
Pentestovi se mogu izvesti u osnovi protiv bilo kojeg tehnološkog sustava. Web stranice i mrežna infrastruktura najčešće su vrste testova. Dobivate i API testove, testove "debelog klijenta", mobilne testove, hardverske testove i još mnogo toga.
Varijacije na temu
Realno, phishing, OSINT i red team vježbe su povezani, ali malo drugačiji. Vjerojatno ste svjesni prijetnje krađe identiteta. Neki testovi uključuju testiranje kako bi se vidjelo kako zaposlenici reagiraju na phishing e-poštu. Prateći kako korisnici stupaju u interakciju – ili ne – s phishingom, moguće je naučiti kako prilagoditi buduću obuku za phishing.
OSINT je kratica za Open Source INTelligence. OSINT test se vrti oko struganja javno dostupnih informacija kako bi se vidjelo koliko se vrijedni podaci mogu prikupiti i kako se mogu koristiti. To često uključuje generiranje popisa zaposlenika s mjesta poput LinkedIna i web stranice tvrtke. To može omogućiti napadaču da identificira starije osobe koje bi mogle biti dobre mete za spear-phishing napad, phishing posebno prilagođen pojedinom primatelju.
Angažman crvenog tima obično je mnogo dublji i može uključivati neke ili sve druge komponente. Također može uključivati testiranje fizičke sigurnosti i pridržavanja sigurnosne politike. S političke strane stvari, to uključuje društveni inženjering. To je pokušaj uvjeravanja da uđete u zgradu. To može biti jednostavno poput druženja u prostoru za pušenje i vraćanja s pušačima nakon pauze za dim.
To može biti predstavljanje kao službena osoba ili traženje nekoga da vam otvori vrata dok nosite pladanj sa šalicom kave. Što se tiče fizičke sigurnosti, to čak može uključivati pokušaj provale fizički, testiranje pokrivenosti kamerom, kvalitete brava i slično. Angažmani crvenog tima obično uključuju tim ljudi i mogu se odvijati u mnogo dužim vremenskim razmacima od uobičajenih pentestova.
Crveni timovi
Vježba crvenog tima može se činiti manje etičkom od standardnog pentesta. Ispitivač aktivno lovi nesuđene zaposlenike. Ključno je da imaju dopuštenje vodstva tvrtke, obično s razine odbora. To je jedini razlog zašto je u redu da crveni tim zapravo pokuša provaliti. Međutim, ništa ne dopušta da bude nasilan. Vježba crvenog tima nikada neće pokušati ozlijediti ili savladati zaštitara, zaobići ga ili prevariti.
Kako bi se spriječilo uhićenje crvenog tima, oni će općenito nositi potpisan ugovor s potpisima članova odbora koji ga odobravaju. Ako budu uhvaćeni, to se može upotrijebiti za dokazivanje da su imali dopuštenje. Naravno, ponekad se ovo koristi kao dvostruki blef. Crveni tim može nositi dvije dozvole, jednu pravu i jednu lažnu.
Kad budu uhvaćeni, isprva predaju lažnu dozvolu da vide mogu li uvjeriti osiguranje da je legitimna čak i kad nije. U tu će svrhu često koristiti stvarna imena uprave tvrtke, ali će uključivati telefonski broj za provjeru koji ide drugom crvenom timu upućenom da provjeri naslovnu priču. Naravno, ako sigurnost to vidi, predaje se stvarna dozvola. No, to se tada može tretirati s velikom sumnjom.
Ovisno o tome kako je crveni tim uhvaćen, možda će biti moguće nastaviti test, pod pretpostavkom da su zaobišli pojedinog zaštitara koji ih je uhvatio. Međutim, moguće je da se identitet ispitivača "razotkrije", što ga u biti uklanja iz daljnjeg osobnog testiranja. U ovom trenutku, drugi član tima može se zamijeniti sa ili bez obavještavanja osiguranja.
Zaključak
Pentest je angažman u kojem se od stručnjaka za kibernetičku sigurnost traži da testira sigurnost računalnog sustava. Test uključuje ručno traženje i provjeru prisutnosti ranjivosti. Automatizirani alati mogu se koristiti kao dio toga. Na kraju testa daje se izvješće s pojedinostima o pronađenim problemima i sa savjetima za popravak.
Važno je da ovo izvješće nije samo automatizirani izlaz iz alata, već da je sve ručno testirano i verificirano. Svaki računalni sustav, hardver, mreža, aplikacija ili uređaj mogu se testirati. Vještine potrebne za svakog razlikuju se, ali su često komplementarne.