Este garantat că software-ul are erori. Pot exista multe mii de linii de cod în software, iar falibilitatea umană înseamnă că cel puțin unele dintre ele nu vor fi întregi așa cum s-a dorit. Ciclul de viață al dezvoltării software este un proces conceput pentru a încerca să minimizeze aceste probleme prin testare regulată.
Problema este că testarea este adesea făcută de dezvoltatori, care poate au învățat cum să codifice ceva, dar este posibil să nu fi învățat practici de codare sigure. Chiar și în sistemele testate temeinic, a avea un aspect de observator extern și a aduce o nouă perspectivă poate ajuta la identificarea de noi probleme.
O modalitate obișnuită de a face acest lucru este printr-un test de penetrare, de obicei scurtat la un pentest. Aceasta implică obținerea unui hacker profesionist, etic, un pentester, să se uite la sistem și să găsească orice probleme de securitate.
Sfat: este „pentest” și „pentester”, nu „pen test”. Un pentester nu testează stilouri. „Testul stiloului” este puțin mai acceptabil decât „testul stiloului”, dar, în general, ar trebui evitat și.
Scopul unui Pentest
Scopul oricărui pentest este de a identifica toate vulnerabilitățile de securitate din sistemul testat și de a le raporta clientului. De obicei, totuși, angajamentele sunt oarecum limitate în timp în funcție de cost. Dacă o companie are un pentest intern sau o echipă de pentest, aceștia pot lucra permanent pentru companie. Cu toate acestea, multe companii cu amploare pentru asta au un portofoliu larg de sisteme care trebuie testate. Aceasta include atât produsele vândute, cât și sistemele de afaceri ale companiei.
Ca atare, ei nu își pot petrece tot timpul testând un singur lucru. Multe companii preferă să angajeze o companie externă de pentesting pentru a îndeplini misiunea. Acesta este încă limitat în timp în funcție de cost. Costul este determinat de faptul că un pentest este un proces foarte manual și că setul de abilități este limitat.
În mod obișnuit, un test pentest va fi încadrat într-un interval de timp specific. Acest lucru se face pe baza țintei în cauză și a cât timp ar trebui să dureze pentru a fi rezonabil încrezător că ai găsit totul. Cronologia pentru găsirea vulnerabilităților este, în general, o curbă clopot. Nu se găsesc multe lucruri instantaneu în timp ce pentesterul se uită în jurul aplicației. Apoi, marea majoritate a constatărilor pot fi obținute într-o anumită scală de timp înainte de a se reduce. La un moment dat, costul petrecut mai mult timp căutând nu merită șansa că nu există altceva de găsit.
Uneori, chiar și prețul cotat pentru timpul recomandat este prea mare. În acest caz, testul poate fi „încadrat în timp”. Aici clientul acceptă că nu testează atât de mult pe cât se recomandă, dar dorește ca pentesterii să facă tot ce pot într-un interval de timp redus. De obicei, acest lucru este inclus ca o avertizare în raport.
Proces manual
Unele instrumente sunt disponibile pentru a efectua automat teste de securitate. Acestea pot fi utile. Cu toate acestea, ei au adesea rate ridicate de fals pozitive și fals negative. Aceasta înseamnă că trebuie să petreceți timp săpând prin verificarea problemelor, știind că s-ar putea să nu fie cuprinzător. Majoritatea acestor instrumente caută indicatori specifici, cum ar fi versiunile vulnerabile cunoscute de software sau funcțiile vulnerabile cunoscute. Cu toate acestea, există o mulțime de modalități prin care acestea să nu fie probleme reale sau atenuate în practică.
Vulnerabilitățile de securitate pot veni împreună dintr-o grămadă de piese aparent inofensive. Cel mai bun mod de a observa acest lucru este prin efortul uman manual. Pentesterii folosesc instrumente, dar știu să interpreteze rezultatele, să le verifice manual și să efectueze acțiuni manuale independente. Acest efort manual separă un pentest de o scanare a vulnerabilităților sau de evaluarea vulnerabilităților.
Tipuri de Pentest
În mod obișnuit, un pentest implică testarea unui întreg produs așa cum ar fi implementat. În mod ideal, acest lucru se întâmplă într-un mediu de producție real. Cu toate acestea, acest lucru nu este întotdeauna practic. În primul rând, există teama că pentest-ul ar putea arunca ținta offline. În general, această teamă este în esență nefondată. Pentest-urile nu generează în general prea mult trafic de rețea, poate echivalentul a câțiva utilizatori activi în plus. De asemenea, Pentesterii nu vor testa în mod deliberat problemele de tip refuzul serviciului, în special în mediile de producție. În schimb, de obicei, vor raporta probleme suspectate de refuzare a serviciului pentru a permite clientului să le investigheze singur.
În plus, merită remarcat faptul că, dacă sistemul este conectat la Internet, acesta este supus în mod constant la „pentest-uri gratuite” de la hackeri adevărați black hat și roboții lor. Un alt motiv pentru a evita mediile de producție este problemele de confidențialitate cu datele utilizatorilor în direct. Pentesterii sunt hackeri etici conform NDA-urilor și contractelor, dar dacă un mediu de testare există și este similar, acesta poate fi folosit.
Sfat: Un „pentest gratuit” este un mod glumeț de a te referi la a fi atacat de pălării negre pe Internet.
Pentestele pot fi efectuate practic împotriva oricărui sistem tehnologic. Site-urile web și infrastructura de rețea sunt cele mai comune tipuri de teste. De asemenea, obțineți teste API, teste „client gros”, teste mobile, teste hardware și multe altele.
Variațiuni pe tema
În mod realist, exercițiile de phishing, OSINT și echipa roșie sunt legate, dar ușor diferite. Probabil că sunteți conștient de amenințarea phishingului. Unele teste implică testarea pentru a vedea cum răspund angajații la e-mailurile de phishing. Urmărind modul în care utilizatorii interacționează – sau nu – cu phishing-ul, este posibil să învățați cum să personalizați formarea viitoare în phishing.
OSINT înseamnă Open Source INTelligence. Un test OSINT se învârte în jurul informațiilor disponibile public pentru a vedea cât de valoroase pot fi adunate și cum ar putea fi utilizate acestea. Acest lucru implică adesea generarea de liste de angajați din locuri precum LinkedIn și site-ul web al companiei. Acest lucru poate permite unui atacator să identifice personalități de rang înalt care ar putea fi ținte bune pentru un atac de tip spear-phishing, phishing special adaptat destinatarului individual.
O implicare a unei echipe roșii este de obicei mult mai aprofundată și poate implica unele sau toate celelalte componente. De asemenea, poate include testarea securității fizice și aderarea la politica de securitate. În ceea ce privește politica, aceasta implică ingineria socială. Asta încearcă să-ți convingă drumul spre clădire. Acest lucru poate fi la fel de simplu ca să stai în zona pentru fumat și să te întorci cu fumătorii după o pauză de fumat.
Poate fi să te prezinți ca un oficial sau să ceri cuiva să-ți ia o ușă în timp ce iei o tavă pentru ceașcă de cafea. În ceea ce privește securitatea fizică, poate implica chiar încercarea de a pătrunde fizic, testarea acoperirii camerei, calitatea încuietorilor și altele asemenea. Angajamentele echipei roșii implică de obicei o echipă de oameni și se pot desfășura pe perioade de timp mult mai lungi decât pentesturile normale.
Echipele Roșii
Un exercițiu de echipă roșie poate părea mai puțin etic decât un pentest standard. Testerul exploatează în mod activ angajații nebănuiți. Cheia este că au permisiunea conducerii companiei, de obicei de la nivelul consiliului de administrație. Acesta este singurul motiv pentru care este în regulă ca un echipier roșu să încerce efectiv să pătrundă. Nimic nu-i permite totuși să fie violent. Un exercițiu de echipă roșie nu va încerca niciodată să rănească sau să supună un agent de securitate, să-l ocolească sau să-l păcălească.
Pentru a preveni arestarea echipei roșii, aceștia vor avea, în general, un contract semnat, cu semnături de la membrii consiliului de aprobare. Dacă sunt prinși, acest lucru poate fi folosit pentru a dovedi că au avut permisiunea. Desigur, uneori, aceasta este folosită ca un bluff dublu. Echipa roșie poate avea două permisiuni, una reală și una falsă.
Când sunt prinși, inițial predau permisiunea falsă pentru a vedea dacă pot convinge securitatea că este legitim chiar și atunci când nu este. În acest scop, va folosi adesea numele reale ale consiliului de administrație al companiei, dar va include un număr de telefon de verificare care merge la un alt echipaj roșu informat pentru a verifica povestea de acoperire. Bineînțeles, dacă securitatea reușește, se predă permisiunea reală. Acest lucru poate fi apoi tratat cu mare suspiciune, totuși.
În funcție de modul în care a fost prins echipa roșie, poate fi posibilă continuarea testului, presupunând că a ocolit agentul de securitate individual care i-a prins. Cu toate acestea, este posibil ca identitatea testerului să fie „exploatată”, în esență, eliminându-i de la orice testare în persoană ulterioară. În acest moment, un alt membru al echipei poate schimba cu sau fără informarea securității.
Concluzie
Un pentest este un angajament în care unui profesionist în securitate cibernetică i se cere să testeze securitatea unui sistem informatic. Testul implică căutarea manuală și verificarea prezenței vulnerabilităților. Instrumentele automate pot fi utilizate ca parte a acestui lucru. La sfârșitul testului, este furnizat un raport care detaliază problemele găsite și oferă sfaturi de remediere.
Este important ca acest raport să nu fie doar rezultatul automat al unui instrument, ci să fi fost testat și verificat manual. Orice sistem informatic, hardware, rețea, aplicație sau dispozitiv poate fi testat. Abilitățile necesare pentru fiecare variază, dar sunt adesea complementare.