Софтуерът гарантирано има грешки. Може да има много хиляди редове код в софтуера и човешката грешка означава, че поне някои от тях няма да бъдат цели, както е предвидено. Жизненият цикъл на разработка на софтуер е процес, предназначен да се опита да сведе до минимум тези проблеми чрез редовно тестване.
Проблемът е, че тестването често се извършва от разработчици, които може да са се научили как да кодират нещо, но може да не са научили сигурни практики за кодиране. Дори в щателно тествани системи погледът от външен наблюдател и въвеждането на нова перспектива може да помогне за идентифицирането на нови проблеми.
Често срещан начин, по който това се прави, е чрез тест за проникване, обикновено съкратен до пентест. Това включва наемането на професионален, етичен хакер, pentester, който да прегледа системата и да открие проблеми със сигурността.
Съвет: Това е „pentest“ и „pentester“, а не „pen test“. Пентестерът не тества химикалки. „Pen-test“ е малко по-приемлив от „pen-test“, но като цяло също трябва да се избягва.
Целта на пентеста
Целта на всеки пентест е да идентифицира всички уязвимости в сигурността на системата, която се тества, и да ги докладва на клиента. Обикновено обаче ангажиментите са донякъде ограничени във времето въз основа на разходите. Ако една компания има вътрешен pentester или pentest екип, те може да работят постоянно за компанията. Все пак много компании с мащаба за това имат широко портфолио от системи, които трябва да бъдат тествани. Това включва както продаваните продукти, така и бизнес системите на компанията.
Като такива, те не могат да прекарват цялото си време в тестване на едно нещо. Много компании предпочитат да наемат външна компания за тестване, която да изпълни ангажимента. Това все още е ограничено във времето въз основа на цената. Разходите се определят от факта, че пентестът е много ръчен процес и този набор от умения е дефицитен.
Обикновено пентестът ще бъде обхванат от определена времева рамка. Това се прави въз основа на въпросната цел и колко време трябва да отнеме, за да сме сравнително уверени, че сме намерили всичко. Срокът за намиране на уязвимости обикновено е камбановидна крива. Не се откриват много моментално, докато pentester разглежда приложението. Тогава по-голямата част от откритията могат да бъдат постигнати в рамките на определен период от време, преди да се намали. В един момент разходите за прекарване на повече време в търсене не си заслужават шанса, че няма какво друго да се намери.
Понякога дори обявената цена за препоръчаното време е твърде висока. В този случай тестът може да бъде „ограничен във времето“. Това е мястото, където клиентът приема, че не тества толкова, колкото се препоръчва, но иска пентестерите да направят най-доброто, на което са способни, за кратък период от време. Обикновено това е включено като предупреждение в доклада.
Ръчен процес
Налични са някои инструменти за автоматично извършване на тестове за сигурност. Те могат да бъдат полезни. Те обаче често имат висок процент на фалшиво положителни и фалшиво отрицателни резултати. Това означава, че трябва да прекарате време в ровене в проверка на проблеми, знаейки, че може да не е изчерпателно. Повечето от тези инструменти търсят конкретни индикатори, като известни уязвими версии на софтуер или известни уязвими функции. Въпреки това има много начини това да не са действителни проблеми или смекчени на практика.
Уязвимостите в сигурността могат да се съберат от куп на пръв поглед безобидни части. Най-добрият начин да забележите това е чрез ръчни човешки усилия. Пентестерите използват инструменти, но знаят как да интерпретират резултатите, да ги проверяват ръчно и да извършват независими ръчни действия. Това ръчно усилие разделя пентеста от сканиране за уязвимост или оценка на уязвимостта.
Видове пентест
Обикновено пентестът включва тестване на цял продукт, както би бил внедрен. В идеалния случай това се случва в реална производствена среда. Това обаче не винаги е практично. Първо, има страх, че пентестът може да извади целта офлайн. Като цяло този страх по същество е неоснователен. Pentests обикновено не генерират твърде много мрежов трафик, може би еквивалент на няколко допълнителни активни потребители. Пентестерите също няма да тестват умишлено за проблеми от типа отказ на услуга, особено в производствени среди. Вместо това обикновено те ще докладват предполагаеми проблеми с отказ на услуга, за да позволят на клиента сам да го проучи.
Освен това си струва да се отбележи, че ако системата е свързана към интернет, тя постоянно е обект на „безплатни пентестове“ от истински черни хакери и техните ботове. Друга причина да избягвате производствени среди са проблемите с поверителността на живите потребителски данни. Пентестерите са етични хакери съгласно NDA и договори, но ако съществува тестова среда и е подобна, тя може да се използва.
Съвет: „Безплатен пентест“ е шеговит начин да се каже, че сте атакувани от черни шапки в Интернет.
Пентестовете могат да се извършват срещу всяка технологична система. Уебсайтовете и мрежовата инфраструктура са най-често срещаните видове тестове. Получавате също API тестове, тестове за „дебел клиент“, мобилни тестове, хардуерни тестове и др.
Вариации на темата
Реално погледнато, фишингът, OSINT и упражненията на червения екип са свързани, но малко по-различни. Вероятно сте наясно със заплахата от фишинг. Някои тестове включват тестване, за да се види как служителите реагират на фишинг имейли. Чрез проследяване на това как потребителите взаимодействат – или не – с фишинг, е възможно да научите как да приспособите бъдещо обучение за фишинг.
OSINT означава Open Source INTelligence. OSINT тестът се върти около събиране на публично достъпна информация, за да се види колко ценни данни могат да бъдат събрани и как те могат да бъдат използвани. Това често включва генериране на списъци със служители от места като LinkedIn и уебсайта на компанията. Това може да позволи на атакуващия да идентифицира високопоставени фигури, които биха могли да бъдат добри цели за spear-phishing атака, фишинг, специално пригоден за отделния получател.
Ангажиментът на червения екип обикновено е много по-задълбочен и може да включва някои или всички други компоненти. Може също да включва тестване на физическа сигурност и спазване на политиката за сигурност. От гледна точка на политиката, това включва социално инженерство. Това се опитва да ви убеди да влезете в сградата. Това може да бъде толкова просто, колкото да се мотаете в зоната за пушачи и да се връщате с пушачите след пауза за дим.
Може да се представяте за длъжностно лице или да помолите някой да ви отвори врата, докато носите поднос с чаша кафе. От страна на физическата сигурност, това може дори да включва опит за физическо проникване, тестване на покритието на камерата, качеството на ключалките и други подобни. Ангажиментите на червения екип обикновено включват екип от хора и могат да преминат през много по-дълги времеви мащаби от нормалните пентести.
Червени отбори
Упражнение с червен отбор може да изглежда по-малко етично от стандартен пентест. Тестерът активно преследва нищо неподозиращи служители. Ключът е, че те имат разрешение от ръководството на компанията, обикновено от ниво борд. Това е единствената причина, поради която е добре червен екип да се опита да нахлуе. Нищо обаче не позволява насилие. Упражненията с червен отбор никога няма да се опитат да наранят или подчинят охранител, да го заобиколят или подмамят.
За да се предотврати арестуването на червения екип, те обикновено носят подписан договор с подписи от одобряващите членове на борда. Ако бъдат хванати, това може да се използва, за да докаже, че са имали разрешение. Разбира се, понякога това се използва като двоен блъф. Червеният екип може да носи две разрешителни, една истинска и една фалшива.
Когато бъдат хванати, те първоначално предават фалшивото разрешително, за да видят дали могат да убедят служителите по сигурността, че е законно, дори когато не е. За тази цел често ще използва действителните имена на борда на компанията, но ще включва телефонен номер за потвърждение, който отива на друг червен екип, инструктиран да провери историята на корицата. Разбира се, ако сигурността види това, се предава истинското разрешение. Това обаче може да се третира с голямо подозрение.
В зависимост от това как е хванат червеният екип, може да е възможно да продължите теста, ако приемем, че са заобиколили индивидуалния охранител, който ги е хванал. Въпреки това е възможно самоличността на тестера да бъде „разкрита“, което по същество да го премахне от всяко по-нататъшно лично тестване. В този момент друг член на екипа може да се включи със или без да информира сигурността.
Заключение
Пентестът е ангажимент, при който специалист по киберсигурност е помолен да тества сигурността на компютърна система. Тестът включва ръчно търсене и проверка на наличието на уязвимости. Като част от това могат да се използват автоматизирани инструменти. В края на теста се предоставя доклад с подробно описание на откритите проблеми и предоставяне на съвети за коригиране.
Важно е, че този отчет не е просто автоматизиран изход от инструмент, но е бил ръчно тестван и проверен. Всяка компютърна система, хардуер, мрежа, приложение или устройство могат да бъдат тествани. Уменията, необходими за всеки, варират, но често се допълват.