Код
#статьи

Наступательная кибербезопасность: подробный гайд от «белого» хакера

Лев Прокопьев рассказал, как тестируют безопасность приложений, какие проблемы безопасности самые распространённые и как стать элитой :)

Иллюстрация: Катя Павловская для Skillbox Media

Лев Прокопьев


Независимый исследователь безопасности и тестировщик на проникновение.

Работал в «Солар Секьюрити», «Лаборатории Касперского». Специализируется на анализе защищённости внешнего и внутреннего периметра, разработке ПО для эксплуатации уязвимостей, исследует безопасность беспроводных сетей и защиту от приёмов социальной инженерии. Умеет в Bash, Python, PowerShell, Visual Basic, C и даже JavaScript.

Коллекционирует произведения российского уличного искусства, обожает океан, бассейн и умных, остаётся 31337.


Ссылки


Прежде чем говорить о кибербезопасности, пентестах, хакерстве, разберёмся с термином «хакер». Многие понимают его превратно.

Люди, которые крадут деньги с помощью IT, взламывают сайты, сливают информацию, придумывают вирусы, ― это бандиты, а не хакеры.

В любой сфере есть подлые или отчаявшиеся люди, которые хотят заполучить чужое. Конечно, среди них встречаются умные и даже гениальные. О них пишут в «Википедии» и на тематических ресурсах, по их биографиям снимают фильмы, их талантом восхищаются. Но преступления всегда заканчиваются печально. Жаль, что люди используют свои способности только для того, чтобы совершить профессиональный суицид. Им остаётся лишь посочувствовать.

Хакер же изначально (от слова hack ― врубаться) ― это человек, который хорошо разбирается в какой-либо технологии, понимает, как она работает? и умеет эксплуатировать её недостатки и уязвимости, чтобы сделать свою работу быстрее.

Это сверхкомпетентный специалист, способный консультировать и предлагать собственные решения, самостоятельно находить бреши в системе. Он хочет не разрушать, а делать мир лучше.

Поэтому тех, кто занимается кибербезопасностью, часто называют белыми, этичными хакерами, или white hat. Они противостоят киберпреступникам — black hat: ищут уязвимости, чтобы помочь разработчикам и сделать продукт безопаснее. Они разбираются в системных ошибках, умеют их исправлять, защищают информацию с помощью криптографии и выстраивают преграды на пути вредоносных программ.

Содержание

Что такое наступательная кибербезопасность

В информационной безопасности, к сожалению, не бывает идеального состояния, которого можно достичь и больше не беспокоиться. В безопасности — как в любви: это вам не просто так, этим нужно постоянно заниматься.

Допустим, у вас есть кодовая фраза от криптокошелька — ваш основной, дорогостоящий информационный актив. С этим кошельком работают несколько менеджеров: взаимодействуют с биржевыми API, отправляют транзакции и так далее.

Хранить пароль в открытом виде, на мониторе или на бумажке, — опасно и неудобно. Поэтому существуют специальные архитектуры для работы с сервисами и идентификационными данными.

Задача наступательной безопасности ― проводить проверку этих архитектур, искать потенциальные векторы и возможности проникать в защитные периметры сети. Соответственно, в информационной безопасности есть условное деление на Blue Team (защитников) и Red Team (нападающих).

Кадр: фильм «Соник 2 в кино»

Blue Team — это в первую очередь сисадмины и специалисты по реагированию на кибератаки. У них по большей части административная работа: им нужно постоянно мониторить происходящее и своевременно реагировать на киберинциденты.

Red Team ― наступательная команда. Её задача — имитировать действия потенциального злоумышленника и тренировать специалистов по защите. А ещё «красные» исследуют ПО на предмет уязвимости и потенциальных недостатков в используемой заказчиком конфигурации, ищут возможности обхода антивируса и занимаются прочей на вид разрушительной, но на самом деле очень созидательной работой.

Никто не ждёт, что красная и синяя команды закроют все уязвимости. Цель их противостояния — оценить эффективность работы обороняющихся, обучить их в условиях, максимально приближенных к целевой атаке подготовленных злоумышленников. Красной команде необходимо обнаружить и проэксплуатировать наиболее опасные и неочевидные векторы атак и при этом остаться незамеченными. Подробная отчётность команды и привязка ко времени позволяет обнаружить слабые места и улучшить действия обороняющихся во время реальных атак. В некоторых случаях синяя команда может оставить некоторые вектора атак «незапатченными» и усилить мониторинг для своевременного выявления попыток реальных атак злоумышленников.

Что должен уметь «красный»

Когда-то я сидел на форумах и искал — что нужно, чтобы стать хакером? Какой язык программирования учить? На этот вопрос обычно отвечают: «Нужно знать все» — и это правда.

На самом деле поначалу технологический стек может быть минимальным — но освоить его нужно максимально качественно. Например, один мой коллега знает только Visual Basic — и прекрасно себя чувствует.

На мой взгляд, ключевых требований три:

1. Знать в совершенстве хотя бы один язык программирования. Проще всего начать с самых задокументированных и простых. Например, Python хорошо задокументирован и присутствует везде, его очень легко выучить. При достаточной мотивации, времени и силах для этого достаточно пары недель — особенно если у человека есть опыт взаимодействия с веб-технологиями или написанием кода. Вам в помощь — уйма достойных книг и платформ, в том числе русскоязычных. А ещё большое, сильное сообщество, которое всегда даст дельный совет.

2. Базово разбираться в архитектуре выполнения кода. Нужно хотя бы понимать, как скачать файл или сделать минимальную таблицу в базе данных, и научиться читать данные из неё с помощью своего языка программирования. Освоите это — быстро разберётесь и с другими языками. Естественно, у разных языков разная архитектура. Но если вы занимаетесь безопасностью, нужно уметь получать исчерпывающую информацию про каждую атаку, каждую технику, каждую уязвимость — и корректно их описывать.

Пример: хакер взаимодействует с веб-приложениями, используя ресурсы клиентской стороны. Он пытается повлиять на работу серверного приложения или атаковать клиентов. Если специалист хочет получить контроль над сервером приложения, ему нужно понимать, на каком языке оно написано и как можно выполнить код на серверной стороне, используя возможности клиента. Специалист по анализу защищённости веб-приложений или баунтер ищет уязвимости на просторах интернета, а потом сообщает о них вендору и получает за это вознаграждение.

3. Уметь находить релевантную информацию, понимать её и воспроизводить в проекте. Не нужно пытаться охватить сразу всё: главное — научиться брать из потока информации то, что вам действительно необходимо, и отсекать лишнее.

Как тестируют безопасность инфраструктуры

Подход к тестированию зависит от целей отдела информационной безопасности. Можно выделить пять основных направлений.

Анализ защищённости: обнаружение всех возможных рисков в использовании конкретного ПО или технологического решения на внутреннем или внешнем периметре организации. Часто анализ проводится методом «белого ящика», когда исходный код приложения доступен для исследователей.

Тестирование на проникновение: получение доступа во внутреннюю сеть организации, при котором исполнитель симулирует действия потенциального злоумышленника и атакует инфраструктуру с внешнего периметра. Цель — посмотреть, как глубоко можно пройти.

Эта информация нужна для выстраивания архитектуры и эффективного применения систем обнаружения вторжений, файрволов, доменных политик, конфигураций на конечных устройствах и других решений, обеспечивающих информационную безопасность. Подобные тестирования могут масштабироваться в зависимости от ситуации.

Киберучения (Red Teaming): «красные» симулируют актуальные тактики киберпреступников, применимые для конкретной организации, а специалисты Центра реагирования SOC и Blue Team предотвращают атаки.

Перед киберучениями заказчик ставит красной команде конкретные цели: прочитать почту одного из директоров, получить доступ к определённым файлам, бухгалтерским операциям, вывести деньги и так далее. С определённой периодичностью «красные» присылают отчёт с почасовым описанием своих действий представителю заказчика. Клиент наблюдает за эффективностью синей команды и в случае необходимости вносит коррективы в процесс.

Учения не обязательно заканчивается победой «красных». Наоборот: победа «синих» ― замечательный результат. Я недавно её наблюдал, и это действительно круто. Видишь, что люди хорошо работают, постоянно учатся.

Социотехническое тестирование, или классический фишинг: отправляешь сообщения об участии в акции, предлагаешь зарегистрироваться, скачать или кликнуть. Цель — получить данные.

В каждый документ ставится персональная ссылка, чтобы идентифицировать пользователя, который её откроет. Если есть форма для ввода логина и пароля, можно посмотреть, что за человек пришёл, какие данные ввёл. У меня в практике были случаи, когда сотрудники заказчика перенаправляли фишинговые письмам коллегам и расширяли покрытие моей рассылки.

По результатам социотехнического тестирования вы поймёте, кто из сотрудников плохо осведомлён об информационной безопасности. Их не надо увольнять — с ними надо поработать, подготовить для них обучающий курс.

Проникновение методами социальной инженерии: отправляем фишинговый запрос и с его помощью и закрепляемся на машине. Пишем приложение, которое позволяет удалённо управлять рабочей станцией сотрудника, открывшего документ.

Мой совет: чтобы противодействовать таким атакам, читайте заголовки сообщений. Вам могут подменить отправителя. Скорее всего, в письме злоумышленники будут вас торопить — играть на страхе. А ещё не стоит верить, что вам подарят машину, квартиру или даже «сникерс». Взаимодействовать с рабочей почты можно только по рабочим вопросам — никаких конкурсов и розыгрышей.

Для чего нужен каждый вид тестирования

Прежде всего это зависит от того, какая инфраструктура тестируется — внутренняя или внешняя.

Внешняя инфраструктура — ресурсы организации, доступные из интернета: веб-сайты, серверы и даже конечные устройства, которые могут быть доступны извне. Самая распиаренная услуга для её проверки — тестирование на проникновение.

Допустим, у компании Example Ltd. есть сайт example.com. Она обращается к службе тестирования на проникновение с просьбой проверить внешний периметр. Для этого предоставляют конкретный перечень ресурсов — например, IP-адреса и доменные адреса — или просят составить его самостоятельно.

Внутренняя инфраструктура — ресурсы, доступные только внутри корпоративной сети: принтеры, сетевые диски, доменный контроллер Active Directory, панели администрирования АСУТП, базы данных, рабочие станции сотрудников и так далее.

Для неё чаще проводят анализ защищённости. Это удобно для Blue Team: они могут захватывать сетевой трафик, примеры запросов, собирать данные для систем обнаружения и реагирования на киберинциденты.

Прочие виды тестирования проводят компании с довольно зрелым уровнем информационной безопасности — например, крупные заводы или телеком-провайдеры. Иначе там быть не может — слишком много рисков, связанных с утечкой данных. Это довольно длительные процессы, длящиеся от трёх месяцев до нескольких лет.

Независимо от вида тестирования и принадлежности к той или иной команде, специалистам отдела информационной безопасности лучше всегда быть на связи — например, создавать общий чат и обмениваться знаниями. Хотя часто он становится чатом для претензий одной команды к другой.

Желательно, чтобы был третейский судья в лице представителя заказчика — так называемая Purple Team, которая обеспечит эффективное взаимодействие между «красными» и «синими».

Самые частые проблемы с безопасностью и способы их преодоления

В моей карьере было много смешных случаев. Если в них разбираться, можно либо разочароваться в человечестве, либо прокачать чувство юмора.

Пароли в открытом виде. Я тестировал хорошо защищённые организации со зрелым уровнем информационной безопасности — у них была полноценная внешняя защита, благодаря которой попасть в их внутреннюю инфраструктуру, казалось, было невозможно. Но и там нашлась лазейка! Обнаружил небезопасную конфигурацию на беспроводных точках доступа. Я создал поддельную беспроводную точку доступа с таким же названием, как у заказчика, атаковал устройства клиентов и предложил им пройти аутентификацию к моей точке доступа, но по протоколу, позволяющему получить учетные данные в открытом виде и попасть во внутреннюю сеть.

Пренебрежение безопасностью. Однажды мы с коллегой приезжали на внутренний пинтест в солидную организацию. Приходим в отдел информационной безопасности — маленькая комната, в которой сидят три человека. Руководитель представляет нас, удаляется, а ребята говорят: вот стульчики, вот шкафчик, работайте, а мы пойдём покурим — и просто оставляют нас, незнакомцев, у себя в отделе, со всеми данными, ключами и красными кнопками.

Фишинг. В одной компании сотрудники умудрились 15 раз ввести свои пароли в фишинговом окне. Мы обновили веб-версию Outlook, всем очень хотелось в неё попасть — никого не смутил неправильный номер телефона и изменения в цветовой гамме окна.

Кстати, мой первый опыт в редтиминге как раз начался с того, что я вскрыл одну компанию с помощью фишинга. Так что дам несколько советов по безопасности:

  • Не открывайте подозрительных писем, проверяйте адрес отправителя, не переходите по сомнительным ссылкам.
  • Не качайте программы с торрентов, платите за ПО, пользуйтесь только лицензионными продуктами.
  • Проверяйте, на какие сайты вы переходите, — корректно ли указан адрес, не фишинг ли это.
  • Не передавайте пароли в открытом виде.
  • Не оставляйте технику без присмотра в незаблокированном режиме, не давайте никому доступ к ней.
  • Не сообщайте по телефону личные данные, пароли.
  • Не спешите. Если вам кто-то прислал письмо на электронный ящик и пытается апеллировать к спешке, выгоде либо авторитету, это странно.

Как стать нападающим

Чтобы прокачать свои навыки, следуйте нехитрым советам:

1. Используйте бумажный дневник и программы для ведения записей — например, Joplin, Cherrytree или Typora.io. Записывайте всё, чему научились, и старайтесь применить новые навыки буквально на следующий день.

2. Ознакомьтесь с теорией наступательной безопасности. Рекомендую эту лекцию:

Лекция по наступательной безопасности

Затем можно посмотреть цикл лекций «Практические аспекты информационной безопасности»:

Цикл лекций по наступательной кибербезопасности

Также будет полезно прочитать эту статью.

3. Освойте командную строку Linux и попрактикуйтесь в написании Bash-скриптов.

На сайте explainshell.com есть подробное описание команд Linux и примеры их применения.

По адресу tryhackme.com/room/bashscripting можно найти семь задач для изучения Bash-скриптинга — их решение позволит разобраться с базовыми операциями за полчаса.

devhints.io/bash — подробная интерактивная шпаргалка по Bash со всевозможными примерами применения.

А на hackerrank.com/domains/shell можно пройти челендж для закрепления изученного материала.

Напоследок — Opennet, один из самых подробных ресурсов для изучения Bash на русском языке.

4. Освойте Python. Вам в помощь — 10 задач, чтобы разобраться с базовыми операциями за час.

5. Освойте JavaScript. Например, с помощью этого ресурса: 10 задач для изучения JavaScript, чтобы разобраться с базовыми операциями за час.

6. Пройдите в заданной последовательности следующие курсы: Pre Security, Jr Penetration Tester, CompTIA PenTest+, Offensive Pentesting.

7. Освойте методологию первичного сбора информации о цели и отработайте её на публичных bug-bounty-программах. Больше об этом можно узнать на сайте HackTricks.

YouTube-канал по bug-bounty-программам

А вот сайты bug-bounty-программ:

8. Изучите актуальный перечень уязвимостей в веб-приложениях OWASP top 10. Отработайте их на практике и законспектируйте: в чём заключается природа изученных уязвимостей и какие условия потребуются для их эксплуатации.

Лаборатории для изучения и практики:

9. Изучите методологию атак на Windows системы и Active Directory:

Также рекомендую подписаться на полезные блоги:

YouTube-каналы:

Telegram-каналы:

Также рекомендую:

Сообщество Open Web Application Security Project OWASP имеет собственную методологию тестирования веб-приложений. У них есть подробный гайд по тестированию OWASP Web Security Testing Guide, который является своего рода стандартом в тестировании веба. В нём описаны:

  • правила первоначального сбора информации,
  • эксплуатация базовых уязвимостей,
  • некорректные конфигурации в работе веб-приложений, которые представляют потенциальную угрозу для безопасности.

Для новичка этой методологии будет достаточно, углубляться в другие стоит только после того, как вы основательно разберётесь в этой.

Наконец, есть блогер и хакер Jason Haddix — у него неплохая презентация и интересные работы. Их полезно прочитать, чтобы понимать, как всё устроено в индустрии: Джейсон буквально всё разжёвывает и очень предан своему делу.

И конечно, не обойтись без хакерского гуру Кевина Митника. У него очень складные книжки по слогу, их приятно читать, но будьте осторожны: многое преувеличено или принесено в угоду художественному вымыслу.

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована