# Intro [TOC] Доброго времени суток, уважаемые участники! Мы начинаем серию лекций и практик, посвященную теме информационной безопасности. И, чтобы понимать, о чем же мы будем говорить, нужно начать с теории. Не будем растягивать вступление и перейдем к делу. ## Что такое информационная безопасность? **Информация** — это актив, который, подобно другим активам организации, имеет ценность и, следовательно, должен быть защищен надлежащим образом. Информационная безопасность защищает информацию от широкого диапазона угроз с целью обеспечения уверенности в непрерывности бизнеса, минимизации ущерба, получения максимальной отдачи от инвестиций, а также реализации потенциальных возможностей бизнеса *(согласно ГОСТ Р ИСО/МЭК 17799-2005)*. Информация может существовать в различных формах. Она может быть напечатана или написана на бумаге, храниться в электронном виде, передаваться по почте или с использованием электронных средств связи, демонстрироваться на пленке или быть выражена устно. Безотносительно формы выражения информации, средств ее распространения или хранения она должна всегда быть адекватно защищена. Информационная безопасность — механизм защиты, обеспечивающий: * **конфиденциальность**: доступ к информации только авторизованных пользователей; * **целостность**: достоверность и полноту информации и методов ее обработки; * **доступность**: доступ к информации и связанным с ней активам авторизованных пользователей по мере необходимости. Информационная безопасность достигается путем реализации соответствующего комплекса мероприятий по управлению информационной безопасностью, которые могут быть представлены политиками, методами, процедурами, организационными структурами и функциями программного обеспечения. Указанные мероприятия должны обеспечить достижение целей информационной безопасности организации. ## Белые и черные В мире принято разделять категории специалистов по информационной безопасности на хакеров (**black hat**) и пентестеров (**white hat**). В чем же их различие? Хакеры: - мотивы - личное обогащение или моральное удовлетворение - действуют анонимно и небольшими группами - применяют самые популярные модели атак, иначе рискуют быть раскрыты - используют самый короткий путь проникновения (в виду ограниченности времени на взлом) - непостоянный заработок, но суммы чаще всего больше - ведут противозаконную деятельность и не несут пользы для мира (за исключением взлома во благо общества) Пентестеры: - работают по контракту (легально) - не ограничены по времени - применяют все возможные векторы атаки, а не только самый простой - стабильная, но менее оплачиваемая работа (по сравнению с хакерами). Зарплаты среди сектора IT выше среднего - вынуждены мириться с публичностью Также выделяют **Grey hat** специалистов, обычно это хакеры, которые могут работать в обе стороны: продать найденную уязвимость налево, а также параллельно сообщить о ней на bugbounty компании, тем самым "обелив" себя ## Две составляющих ИБ Условно, весь спектр задач информационной безопасности можно разделить на две части: **практическая** и **бумажная**. Под бумажной понимается создание и обработка различных документов - политик информационной безопасности, документации, и так далее. Но это очень скучно, этот аспект вам обязательно расскажут в ВУЗе, а мы займемся совсем другим. Практическая же часть включает в себя прикладные задачи: поиск и эксплуатация уязвимостей, настройка средств защиты и непосредственно противодействие атакам. Настройка средств защиты информации - по сути своей работа системного администратора, обладающего навыками специалиста по информационной безопасности. Так же к таким специалистам можно отнести людей, работающих по специальности DevSecOps. Модель, получившая имя DevSecOps, подразумевает обеспечение безопасности на всех этапах разработки приложений. Иными словами, контроль безопасности и разработка осуществляются параллельно, причем безопасность стараются внедрить в каждую часть процесса разработки. В случае с данной моделью речь идет о попытке автоматизировать основные задачи безопасности, внедряя контроль этих процессов на раннем этапе DevOps. Этот подход выгодно отличается от того, что было принято до DevSecOps — контроль безопасности являлся заключительным процессом и осуществлялся в конце разработки. DevSecOps может использоваться, например, при переходе на микросервисы, в процессах Непрерывной интеграции (Continuous Integration, CI) и Непрерывного развертывания (Continuous Deployment, CD), или просто для тестирования облачной инфраструктуры. ## Пентест Некоторые компании заказывают проверку периметра у легальных хакеров - специалистов по тестированию на проникновение (пентест). Почему легальных? Потому что данные специалисты заключают контракт с фирмой, где описаны разрешаемые им действия - активное сетевое сканирование периметра, попытка эксплуатации уязвимостей Тестирование на проникновение — метод оценки безопасности компьютерных систем или сетей средствами моделирования атаки злоумышленника. Процесс включает в себя активный анализ системы на наличие потенциальных уязвимостей, которые могут спровоцировать некорректную работу целевой системы, либо полный отказ в обслуживании. Анализ ведется с позиции потенциального атакующего и может включать в себя активное использование уязвимостей системы. Результатом работы является отчет, содержащий в себе все найденные уязвимости системы безопасности, а также может содержать рекомендации по их устранению. Цель испытаний на проникновение — оценить возможность его осуществления и спрогнозировать экономические потери в результате успешного осуществления атаки. Испытание на проникновение является частью аудита безопасности. Специалист проводящий испытание на проникновение называется пентестером. Результатом проведения испытания на проникновение как правило является отчёт, содержащий выявленные в ходе анализа уязвимости и опционально рекомендации по их устранению. В основе испытаний на проникновение могут лежать несколько различных методик. Основными отличиями является наличие информации об исследуемой системе. При проверке закрытых систем (систем типа *чёрный ящик*) атакующий не имеет первоначальных сведений об устройстве атакуемой цели. Первоначальная задача такого вида проверки — сбор необходимой информации о расположении целевой системы, её инфраструктуры. Помимо закрытых систем, существуют открытые (доступна полная информация о целевой системе), и полузакрытые (имеется лишь частичная информация). К целевым системам относятся компьютерные системы c доступом из сети Интернет. Испытание на проникновение должно проводиться до запуска целевой системы в массовое использование. Это дает определенный уровень гарантии, что любой атакующий не сможет нанести вред, прямой или косвенный, работе исследуемой системы. Пентест обычно путают с другими методами оценки безопасности: поиск уязвимостей и редтиминг. Но хотя у этих подходов есть общие компоненты, они всё же отличаются и должны использоваться в разных контекстах. По сути, настоящий пентест заключается в выявлении максимального числа уязвимостей и ошибок конфигурации за отведённое время, а также в их эксплуатации для определения уровня риска. Это не обязательно должно включать поиск зеродеев, чаще всего — это поиск известных незакрытых уязвимостей. Как и в случае с поиском уязвимостей пентест предназначен для выявления уязвимостей и проверки на ошибки первого рода (ложнопозитивные срабатывания). Однако при проведении пентеста проверяющий идёт дальше, пытаясь осуществить эксплуатацию уязвимости. Это может быть проделано множеством способов, и когда уязвимость проэксплуатирована, хороший пентестер не останавливается. Он продолжает искать и эксплуатировать другие уязвиости, объединяя атаки, чтобы достичь цели. Все организации ставят эти цели по-разному, но обычно они включают доступ к персональным данным, медицинской информации и коммерческой тайне. Иногда это требует доступа на уровне администратора домена, но зачастую можно обойтись и без этого, либо даже доступа такого уровня бывает недостаточно. Однако, помимо специалистов на проникновение существуют так называемые RedTeam. ### RedTeam Редтиминг во многом похож на пентест, но более направлен. Цель красной команды не в поиске максимального числа уязвимостей. Цель — проверить возможности организации по выявлению и предотвращению вторжения. Нападающие получают доступ к чувствительной информации любым доступным способом, стараясь остаться незамеченными. Они эмулируют направленные атаки злоумышленника, похожие на APT. Кроме того, редтиминг, как правило, более длителен, чем пентест. Пентест обычно занимает 1-2 недели, в то время как редтиминг может продолжаться 3-4 недели и дольше, задействуя несколько человек. В ходе редтиминга не производится поиск кучи уязвимостей, а лишь тех, что нужны для достижения цели. Цели обычна те же, что и при пентесте. В ходе редтиминга используются такие методы, как социальная инженерия (физическая и электронная), атаки на беспроводные сети, внешние активы и т.д. Такое тестирование — не для всех, а лишь для организаций со зрелым уровнем информационной безопасности. Такие организации обычно уже прошли пентесты, запатчили большинство уязвимостей и уже имеют опыт успешного противодействия тестам на проникновения. Редтиминг может проходить следующим образом: Член красной команды под видом почтальона проникает в здание. Попав внутрь, он подключает устройство к внутренней сети организации для удалённого доступа. Устройство устанавливает сетевой туннель, используя один из разрешённых портов: 80, 443 или 53 (HTTP, HTTPS или DNS), обеспечивая C2-канал для красной команды. Другой участник команды, используя этот канал, начинает продвижение по сетевой инфраструктуре, используя, например, незащищённые принтеры или другие устройства, которые помогут скрыть точку проникновения в сеть. Таким образом красная команда исследует внутреннюю сеть, пока не достигнет поставленной цели, стремясь остаться ниже радаров. Это лишь один из примеров работы команды редтиминга. Однако, все шаги команды редтим можно описать одной последовательностью - так называемой цепочкой killchain. Термин Cyber Kill-Chain изначально был предложен корпорацией Lockheed Martin как часть их модели Intelligence Driven Defense для идентификации и предотвращения процессов кибер-вторжения. Эта модель определяет, что должны сделать злоумышленники для того, чтобы достичь своих целей, атакуя сеть, извлекая данные и поддерживая присутствие в организации. Благодаря этой модели мы знаем, что блокировка хакеров на любом этапе разрывает всю цепочку атаки. Повторимся, что для достижения успеха хакеры должны пройти через все этапы, а, в свою очередь, нам, обороняющейся стороне, достаточно всего лишь блокировать их на любом этапе, чтобы добиться хотя бы минимального успеха. Конечная точка является неизбежной точкой, через которую идут все атаки, а, следовательно, остановка атаки на этом уровне существенно повышает шансы на противодействие любой кибер-атаке. Вероятность успеха будет выше, если хакеры будут остановлены на ранних этапах. Кроме того, каждое вторжение, и следы, которое оно оставляет на конечной точке, — это шанс лучше узнать о действиях хакера и использовать данную информацию себе на пользу. Чем лучше мы понимаем хакеров и их способы выполнения атак, тем вероятнее мы сможем построить более эффективную оборону. Модель Cyber-Kill Chain указывает на то, что для осуществления своих злодеяний хакеры всегда должны пройти следующие основные этапы: * Разведка * Вооружение и упаковка * Доставка * Заражение * Установка * Управление * Выполнение конечных действий Рассмотрим каждый этап по отдельности. **Разведка**. Этот этап может быть определен как фаза выбора цели, выявления особенностей организации, специфических требований в данной отрасли, выбор технологий, изучения активности компании в соцсетях или через рассылки. По сути дела, хакер пытается получить ответы на такие вопросы: «Какие методы атаки будут работать с наибольшей степенью успеха?» или, например, «Какие из них будет легче всего осуществить с точки зрения инвестиций и ресурсов?» **Вооружение и упаковка**. Возможны различные формы: эксплуатация веб-приложения, стандартные или специально изготовленные вредоносные программы, уязвимости в различных документах (PDF, Office или другие форматы документов) или атаки типа “watering hole”. Обычно они подготавливаются с очень конкретными знаниями о цели. **Доставка**. Передача требуемого (вредоносного) контента либо по инициативе жертвы (например, пользователь заходит на вредоносный сайт, в результате чего передается вредоносная программ, или он открывает вредоносный PDF-файл), либо по инициативе хакера (SQL-инъекция или компрометация сетевой службы). **Заражение**. После доставки на компьютер или устройство пользователя, требуемый (вредоносный) контент разворачивается, устанавливаясь в окружении. Как правило, это происходит при использовании известной уязвимости, для которой ранее был доступен патч. В большинстве случаев (в зависимости от цели) хакерам не требуется нести дополнительные расходы на поиск и эксплуатацию неизвестных уязвимостей. **Установка**. Часто установка (внедрение) происходит на фоне каких-то внешних соединений. Обычно вредоносная программа скрывается в этих операциях, незаметно проникая на конечные точки, к которым можно получить доступ. Затем хакер может контролировать это приложение без ведома жертвы. **Управление**. На этом этапе хакеры начинают контролировать активы жертвы с помощью таких методов управления (как правило, удаленных), как DNS, Internet Control Message Protocol (ICMP), веб-сайты и социальные сети. В результате, хакер передает на контролируемые «активы» требуемые команды: что делать далее и какую информацию собирать. Используемые для сбора данных методы: снимки экрана, контроль нажатия клавиш, взлом паролей, мониторинг сети на учетные данные, сбор критического контента и документов. Часто назначается промежуточный хост, куда копируются все данные, а затем они сжимаются/шифруются для дальнейшей отправки. Выполнение конечных действий. На финальном этапе хакер отправляет собранные данные и/или выводит из строя ИТ-активы во время своего нахождения в сети жертвы. Затем проводятся мероприятия по выявлению других целей, расширению своего присутствия внутри организации и (что самое важное) извлечению данных. Затем цепочка повторяется. Вообще, особенностью Cyber-KillChain является то, что она круговая, а не линейная. Как только хакер проник в сеть, он снова начинает эту цепочку внутри сети, осуществляя дополнительную разведку и выполняя горизонтальное продвижение внутри Вашей сети. Этой же методикой пользуются и противники RedTeam - BlueTeam. ### BlueTeam Задача Blue Team — обеспечивать защиту инфраструктуры вслепую: команду защитников не предупреждают о проведении атаки или ее отличиях от реальных злоумышленников — это один из лучших факторов проверить как защитные системы, так и способность специалистов выявлять и блокировать атаки, а впоследствии проводить расследование инцидентов. После завершения операции необходимо сравнить отработанные векторы атак с зафиксированными инцидентами для улучшения системы защиты инфраструктуры. Так же отличительная особенность хорошей и слаженной BlueTeam команды - это умение не только выявлять атаку на стадии ее реализации, но и предотвращать ее на более ранних стадиях. Например, если команда заметит активное сканирование сети с определенных ip-адресов - она может заблокировать пул адресов или при технической возможности вывести сканируемый сегмент сети за дополнительный фаервол. Но иногда лучше дать злоумышленникам шанс проявить себя, особенно если удалось засечь их действия на ранних стадиях. Ведь если вы заметили это тут и сейчас, предприняли активные действия - где гарантия, что злоумышленники не пойдут по другой траектории и вы сможете ее вовремя заметить? В итоге, что бы стать хорошим специалистом в любой из практических областей информационной безопасности, необходимо потратить достаточно большое время на обучение и самообразование. Но ведь практике не научишься читая книжки, а если практиковаться на чужих компаниях/сайтах без их согласия - можно нарушить закон со всеми вытекающими последствиями. Поэтому еще в 90-х годах в Лаю-Вегасе собралась группа специалистов по информационной безопасности и придумала новый формат обучения в формате соревнований - CTF или Capture The Flag. ## CTF CTF это командная игра, главной целью которой является захват «флага» у соперника. Формат Сapture the flag может использоваться и в пейнтболе, и среди ролевиков, и в компьютерных играх. В области компьютерной безопасности тоже есть своё понятие CTF. Соревнования формата CTF могут проходить удалённо (в сети) и очно. В первом случае команды соревнуются через интернет, находясь в разных точках мира. Такие соревнования чаще всего длятся больше суток в формате нон-стоп. На очных соревнованиях команды собираются в одном месте каждая за своим столом. Такие соревнования длятся семь — восемь часов, а то и больше. Часто практикуется совмещение форматов: например, отборочные этапы на некоторые СTF-соревнования проходят в сети, а финал — очно в городе организаторов соревнований. Победа в отборочном туре онлайн даёт команде право участвовать на очном этапе соревнований. Есть два формата проведения соревнований по компьютерной безопасности. ### Task-Based Во-первых, это формат task-based (или jeopardy) — когда игрокам предоставляется набор тасков (заданий), к которым требуется найти ответ и отправить его. Ответ представляет собой флаг: это может быть набор символов или произвольная фраза. За верно выполненное задание команда получает определенное количество очков. Чем задание сложнее, тем больше очков будет полагаться за правильный ответ. Все задания в CTF-соревнованиях формата task-based можно разделить на несколько категорий: * admin — задачи на администрирование * joy — различные развлекательные задачи вроде коллективной фотографии или мини-игры * pwn — поиск и последующая эксплуатация уязвимостей системы * recon — поиск информации в Интернете * reverse — исследование программ без исходного кода (реверс-инжиниринг) * stegano — стеганография * ppc — задачи на программирование (professional programming and coding) * crypto — криптография * web — задачи на веб-уязвимости, такие как SQL injection, XSS и другие. ### Classic Ещё один формат CTF-соревнования — формат classic (или attack-defense). В классической схеме каждая команда получает выделенный сервер или небольшую сеть для поддержания её функционирования и защиты. Во время игры команды получают очки за корректную работу сервисов своего сервера и за украденную информацию (она же — «флаги») с серверов соперников. Соревнования данного типа помогают развить навыки в практической безопасности и понять, к чему стоит стремится и на что делать упор. Однако, не смотря на все многочисленные плюсы данных игр - они имеют один достаточно большой минус. Довольно часто встречаются интересные с одной стороны, но весьма отдаленные от реальности задачи. Можно получить хороший опыт и толчок в развитии занимаясь данным видом соревнований, но не стоит на них зацикливаться. ### Vulnboxes А еще помимо CTF-подобных соревнований практический опыт можно получить на специализированных площадках, где размещаются виртуальные образы уязвимых машин. Данные площадки обычно стараются делать задания наиболее приближенными к реальности, где вам необходимо будет пройти по всей цепочке KillChain и получив первоначальный доступ постепенно продвигаться вглубь, повышая свои привилегии в системе. Стоит заметить, что данные площадки все же направлены на специалистов, имеющих хотя бы минимальный опыт, потому как иначе сходу разобраться и что-то сделать будет весьма проблематично. Давайте разберем как выглядят и решаются подобные машины. Предположим, уязвимый (хотя мы пока точно этого не знаем, но верим что это так) сервис имеет ip адрес 10.10.10.1, первым делом нам необходимо посмотреть какие у него открыты порты и какое ПО там запущено. Для этого можно воспользоваться любым сетевым сканером, например nmap’ом. После Сканирования мы выявили что у нас открыт порт 22 (протокол SSH), открыты порты 80 и 443 (http и https) соответственно, а так же все это находиться на сервере с Linux. Для подключения по 22 порту нам необходимо знать логин и пароль от юзера, поэтому пока оставим его. А вот на портах 80 и 443 крутится сайт, к которому можно присмотреться. После беглого изучения находим в одной из форм ввода (например, форма поиска) SQL иньекцию. Использовав данную уязвимость, выгружаем всю информацию из базы данных к себе и в таблице пользователей находим учетную запись john с паролем qwerty123. Делаем предположение, что эти учетные данные могут подойти так же и для подключения по 22 порту, пробуем и подключаемся. В итоге мы находимся в системе с правами пользователя john, а нам необходимо подняться выше, до прав учетной записи root. Запускаем специальные скрипты, которые проверяют систему и находим какое нибудь потенциально уязвимое ПО, работающее от учетной записи с повышенными привилегиями и доступное для запуска из под нашей учетной записи. Ищем в сети интернет подходящий эксплоит, загружаем его на машину, запускаем и получаем сессию с учетной записью root. ## Summary В рамках данных занятий мы будем знакомиться с различными категориями задач формата task-based, алгоритмами их решения. В самом конце будет проведен ряд соревновательных мероприятий, нацеленных на применение п олученного материала уже в рамках другого формата - VulnBox.