1

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

Объектами тестирования могут быть как отдельные информационные системы, например: CMS (система управления содержимым), CRM (система управления взаимоотношениями с клиентами), интернет клиент-банк, так и вся инфраструктура в целом: периметр сети, беспроводные сети, внутренняя или корпоративная сеть, а так же внешний периметр.

Задача тестирования на проникновение — поиск всех возможных известных уязвимостей программного обеспечения (ПО), недостатков парольной политики, недостатков и тонкостей настроек конфигурации ИС. Во время подобного теста специалист-тестировщик устраивает псевдоатаку на корпоративную сеть, инсценируя действия реальных злоумышленников или атаку, проводимую вредоносным программным обеспечением без непосредственного участия самого специалиста-тестировщика. Целью данных тестов является: выявление слабых мест в защите корпоративной сети от подобных атак и устранение найденных в ходе псевдоатак уязвимостей.

Тестирования на проникновение принято делить на BlackBox, WhiteBox и GreyBox:

BlackBox — «черный ящик». Специалист располагает только общедоступной информацией о цели исследования, её сети и параметрах. Данный вариант максимально приближен к реальной ситуации. В качестве исходных данных для тестирования исполнителю сообщается только имя компании или ее сайт, а всю остальную информацию, такую как  используемые компанией IP-адреса, сайты, точки выхода офисов и филиалов компании в сеть Интернет, исполнителю придётся выяснять самому.

WhiteBox – полная противоположность BlackBox. В данном случае, специалисту предоставляется максимум необходимой для него информации, вплоть до административного доступа на любые сервера. Данный способ позволяет получить наиболее полное исследование уязвимости объекта. При WhiteBox исполнителю не придётся тратить время на сбор информации, составления карты сети, и другие действия перед началом тестирования, а так же сократит время самого тестирования, т.к. часть проверок просто не придется делать. Плюс данного метода в более полном и комплексном подходе к исследованию. Минус в том, что это менее приближено к ситуации реальной атаки злоумышленника.

GrayBox – это средний вариант  между WhiteBox и BlackBox, когда исполнитель действует по варианту BlackBox и периодически запрашивает информацию о тестируемой системе, для того чтобы сократить время исследования или более эффективно приложить свои усилия. Такой вариант самый популярный, так как позволяет провести тестирование без траты лишнего времени на сбор информации, и больше времени уделить поиску уязвимостей, при этом данный вариант остается достаточно близким к реальной ситуации действия злоумышленника.

1. ОСОБЕННОСТИ ПРОНИКНОВЕНИЯ НА УДАЛЕННУЮ КОМПЬЮТЕРНУЮ СИСТЕМУ.

Любое объективное и полноценное тестирование на проникновение обладает рядом особенностей и должно выполняться с учетом рекомендаций и правил.

Правила и рамки информационного тестирования на проникновение представлены в методологиях OSSTMM и OWASP. Впоследствии полученные данные можно легко адаптировать для проведения оценки соответствия с какими-либо промышленными стандартами и «лучшими мировыми практиками», такими как, Cobit, стандартами серии ISO/IEC 2700x, рекомендациями CIS/SANS/NIST/etc и стандартом PCI DSS.

Для осуществления такой оценки в полном объеме одних лишь технологических данных будет недостаточно. Для полноценной оценки требуется интервьюирование сотрудников различных подразделений оцениваемой компании, анализ распорядительной документации, различных процессов  информационных технологий (ИТ) и информационной безопасности (ИБ) и много еще чего.

Что касается тестирования на проникновение в соответствии с требованиями стандарта по защите информации в индустрии платежных карт, – он не намного отличается от обычного тестирования, проводимого с использованием методик OSSTMM и OWASP. Более того, стандартом PCI DSS рекомендуется придерживаться правил OWASP при проведении как пентеста (AsV), так и аудита (QSA).

Основные отличия тестирования по PCI DSS от тестирования на проникновение в широком смысле этого слова заключаются в следующем:

  • Стандартом не регламентируется (а значит и не требуется) проведение атак с использованием социальной инженерии.
  • Все проводимые проверки должны максимально минимизировать угрозу «Отказа в обслуживании» (DoS). Следовательно, проводимое тестирование должно осуществляться методом «серого ящика» с обязательным предупреждением администраторов соответствующих систем.
  • Основная цель такого тестирования – это попытка осуществления
    несанкционированного доступа к данным платежных карт (PAN, Cardholder Name и т.п.).

Метод GrayBox позволяет снизить риск отказа в обслуживании при проведении подобных работ в отношении информационных ресурсов, функционирующих в режиме 24/7.

В общем случае тестирование на проникновение по требованиям PCI должно удовлетворять следующим критериям:

  • п.11.1(b) – Анализ защищенности беспроводных сетей
  • п.11.2 – Сканирование информационной сети на наличие уязвимостей (AsV)
  • п.11.3.1 – Проведение проверок на сетевом уровне (Network-layer
    penetration tests)
  • п.11.3.2 – Проведение проверок на уровне приложений (Application-layer penetration tests)

Определение границ проводимого исследования. В первую очередь необходимо выявить границы тестирования на проникновение, определиться и согласовать последовательность выполняемых действий. В лучшем случае со стороны подразделения ИБ может быть получена карта сети, на которой схематично показано, каким образом процессинговый центр взаимодействует с общей инфраструктурой. В худшем – придется общаться с системным администратором, который знает собственные недоработки и получение исчерпывающих данных об информационной системе будет затруднено его нежеланием делиться своими данными об ИС. Так или иначе, для проведения пентеста по PCI DSS, как минимум, требуется получить следующую информацию:

  • сегментация сети (пользовательская, технологическая, ДМЗ, процессинг и т.д.);
  • межсетевое экранирование на границах подсетей (ACL/МСЭ);
  • используемые Web-приложения и СУБД (как тестовые, так и продуктивные);
  • используемые беспроводные сети;
  • какие-либо детали обеспечения безопасности, которые необходимо учесть в ходе проведения обследования (например, блокировка учетных записей при N попытках неправильной аутентификации), особенности инфраструктуры и общие пожелания при проведении тестирования.

2. ЭТАПЫ ТЕСТИРОВАНИЯ НА ПРОНИКНОВЕНИЕ

Рассмотрим возможные этапы проведения тестирования на проникновение. В зависимости от располагаемой информации (BlackBox/ WhiteBox/ GreyBox), последовательность действий может быть различной: сбор данных, сетевое сканирование, взлом системы, вредоносное ПО, социальная инженерия.

2.1 Сбор данных.

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

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

Так же информацию могут предоставлять внутренние URL сайта, адреса e-mail, телефонные номера, факсы, DNS-сервер, диапазон IP-адресов, сведения о маршрутизации.

С развитием интернета широкое распространение получили WHOIS-сервисы. Whois (от английского «who is» — «кто такой») – сетевой протокол, базирующийся на протоколе TCP. Его основное предназначение – получение сведений о «регистранте» (владельце домена) и «регистраторе» (организации, которая домен зарегистрировала), имена DNS серверов, дату регистрации и дату истечения срока действия. Записи об IP адресах сгруппированы по диапазонам (например, 8.8.8.0 — 8.8.8.255) и содержат данные об организации, которой этот диапазон делегирован.

2.2 Сетевое сканирование.

Сетевое сканирование можно разделить на составляющие:

1. Сканирование диапазона IP-адресов для определения «живых» хостов

2. Сканирование портов

3. Обнаружение служб и их версий

4. Сканирование для определения ОС

5. Сканирование уязвимостей

1. Сканирование диапазона IP-адресов.

Фундаментальная задача при исследовании любой сети это сократить набор IP-диапазонов до списка активных хостов. Сканирование каждого порта каждого IP адреса медленно и необязательно. Интерес к исследованию определенных хостов во многом определяется целями сканирования. Задачи администраторов по обнаружению работающих хостов в сети могут быть удовлетворены обычным ICMP-пингом, людям же, которые тестируют способность сети противостоять атакам из вне, необходимо использовать разнообразные наборы запросов с целью обхода брандмауэра.

Задачу обнаружения хостов иногда называют пинг сканированием (ping scan), однако она намного превосходит использование обычных ICMP запросов ассоциирующихся с вездесущими ping утилитами. Сканировать сеть предпочтительно с помощью произвольных комбинаций мультипортовых TCP SYN/ACK, UDP и ICMP запросов. Целью всех этих запросов является получение ответов, указывающих, что IP адрес в настоящее время активен (используется хостом или сетевым устройством). В большинстве сетей лишь небольшой процент IP адресов активен в любой момент времени. Это особенно характерно для адресных пространств вида 10.0.0.0/8. Такие сети имеют 16 млн. IP адресов, но бывают случаи, когда они используются компаниями, в которых не более тысячи машин. Функция обнаружения хостов может найти эти машины в этом необъятном море IP адресов.

2. Сканирование портов.

Существует множество различных приемов сканирования портов и выбираются для конкретной задачи подходящий (или комбинацию из нескольких). Рассмотрим наиболее популярные приемы сканирования:

TCP SYN сканирование
SYN это используемый по умолчанию и наиболее популярный тип сканирования. Он может быть быстро запущен, он способен сканировать тысячи портов в секунду при быстром соединении, его работе не препятствуют ограничивающие бранмауэры.

Различные типы UDP сканирования
В то время как большинство сервисов Интернета используют TCP протокол, UDP службы также широко распространены. Тремя наиболее популярными являются DNS, SNMP и DHCP (используют порты 53, 161/162 и 67/68). Т.к. UDP сканирование в общем случае медленнее и сложнее TCP, то многие специалисты по безопасности игнорируют эти порты. Это является ошибкой, т.к. существуют UDP службы, которые используются атакующими.

TCP NULL, FIN и Xmas сканирования
Эти три типа сканирования используют незаметную лазейку в TCP RFC, чтобы разделять порты на открытые и закрытые.\

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

3. Обнаружение служб и их версий.

При сканировании удаленной системы может быть выявлено, что порты25/tcp,80/tcp, и 53/udp открыты. Используя сведения можно узнать, что эти порты вероятно соответствуют почтовому серверу (SMTP), веб серверу (HTTP), и серверу доменных имен (DNS) соответственно. Эта информация обычно верна, т.к. подавляющее большинство служб, использующих 25 TCP порт, фактически, почтовые сервера. Тем не менее, не следует полностью полагаться на эту информацию. Люди могут и запускают службы с использованием нестандартных портов.

После обнаружения каких-либо TCP и/или UDP портов происходит процедура их идентификации с целью определения какие приложения (службы) их используют. Используя базу данных запросов для обращения к различным службам и соответствующие выражения для распознавания и анализа ответов можно определить протоколы службы (напр. FTP, SSH, Telnet, HTTP), имя приложения (e.g. ISC BIND, Apache httpd, Solaris telnetd), номер версии, имя хоста, тип устройства (напр. принтер, роутер), семейство ОС (напр. Windows, Linux) и иногда различные детали типа: возможно ли соединится с X сервером, версию протокола SSH, или имя пользователя.

4. Сканирование для определения ОС.

Возможно определить ОС на удаленной системе на основе анализа работы стека TCP/IP. Посылается серия TCP и UDP пакетов на удаленный хост и изучается практически каждый бит в ответах. После проведения множества тестов таких как TCP ISN выборки, поддержки опций TCP, IP ID выборки, и анализа продолжительности процедуры инициализации, сравнивается результаты сбазой данных, содержащей известные наборы типичных результатов для различных ОС и, при нахождении соответствий, можно сделать вывод об установленной ОС.

5. Сканирование уязвимостей.

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

2.3 Взлом системы.

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

Однако имеются подходы, которым может быть подвергнута практически любая операционная система:

  1. Кража пароля.
  2. Наблюдение за пользователем в момент его ввода пароля, дающего право на работу с операционной системой.
  3. Получение пароля из файла, в котором этот пароль был сохранен пользователем.
  4. Поиск пароля, который пользователи зачастую записывают на бумажном носителе.
  5. Кража внешнего носителя парольной информации (дискеты или электронного ключа, на которых хранится пароль пользователя, предназначенный для входа в операционную систему).
  6. Полный перебор всех возможных вариантов пароля.
  7. Подбор пароля по частоте встречаемости символов и биграмм, с помощью персональных словарей и наиболее часто применяемых паролей.
  8. Сканирование жестких дисков компьютера.
  9. Сборка «мусора».
  10. Превышение полномочий (используя ошибки в программном обеспечении или в администрировании операционной системы, исследователь получает полномочия, превышающие полномочия, предоставленные ему согласно действующей политике безопасности).
  11. Запуск программы от имени пользователя, имеющего необходимые полномочия, или в качестве системной программы (драйвера, сервиса, демона и т. д.).
  12. Подмена динамически загружаемой библиотеки, используемой системными программами, или изменение переменных среды, описывающих путь к таким библиотекам.
  13. Модификация кода или данных подсистемы защиты самой операционной системы.
  14. Отказ в обслуживании (целью этой атаки является частичный или полный вывод из строя операционной системы).
  15. Захват ресурсов (подконтрольная программа производит захват всех имеющихся в операционной системе ресурсов, а затем входит в бесконечный цикл).
  16. Бомбардировка запросами (подконтрольная программа постоянно направляет операционной системе запросы, реакция на которые требует привлечения значительных ресурсов компьютера).
  17. Использование ошибок в программном обеспечении или администрировании.

2.4 Вредоносное программное обеспечение. 

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

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

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

  1. Удаление данных
  2. Блокирование данных
  3. Изменение данных
  4. Копирование данных
  5. Замедление работы компьютеров и компьютерных сетей.

Троянские программы классифицируются в соответствии с типом действий, выполняемых ими на компьютере.

  1. Бэкдоры. Троянская программа бэкдор предоставляет злоумышленникам возможность удаленного управления зараженными компьютерами. Такие программы позволяют автору выполнять на зараженном компьютере любые действия, включая отправку, получение, открытие и удаление файлов, отображение данных и перезагрузку компьютера. Троянцы-бэкдоры часто используются для объединения группы компьютеров-жертв в ботнет или зомби-сеть для использования в криминальных целях.
  2. Эксплойты. Эксплойты — это программы с данными или кодом, использующие уязвимость в работающих на компьютере приложениях.
  3. Руткиты. Руткиты — это программы, предназначенные для сокрытия в системе определенных объектов или действий. Часто основная их цель — предотвратить обнаружение вредоносных программ антивирусным ПО, чтобы увеличить время работы этих программ на зараженном компьютере.

2.5 Социальная инженерия.

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

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

Техники социальной инженерии:

  • Претестинг. Претекстинг — это набор действий, проведенный по определенному, заранее готовому сценарию (претексту).
  • Фишинг. Фишинг (англ. phishing, от fishing — рыбная ловля, выуживание) — это видинтернет-мошенничества, целью которого является получение доступа к конфиденциальным данным пользователей — логинам и паролям. Целью фишинга является незаконное получение  конфиденциальной  информации.
  • Quid pro quo. Квид про кво (отлат. Quid pro quo — «то за это») — в английском языке это выражение обычно используется в значении «услуга за услугу». Зачастую социальный инженер представляется сотрудником технической поддержки, который сообщает о возникновении технических проблем на рабочем месте сотрудника и предлагает помощь в их устранении.

Проведенное в 2003 году исследование в рамках программы Информационная безопасность показало, что 90% офисных работников готовы разгласить конфиденциальную информацию, например свои пароли, за какую-либо услугу или вознаграждение.

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

 

Организация псевдоатаки.

Для организации псевдоатаки на компьютерную систему используем программные средства Social Engineering Toolkit (SET) и Metasploit Framework (MFS). Эти утилиты по умолчанию включены в дистрибутив Backtrack 5, предназначенный для тестирования возможности системного и сетевого взлома. Так же используем две виртуальные машины с такими ОС как: Windows 7 и Backtrack 5.

Генерация бэкдора. SET будем использовать для создания бэкдора с обратным TCP, а MFS для создания handler’a (обработчик), чтобы обрабатывать пакеты от созданного бэкдора, который будет поддерживать канал связи между потенциальным злоумышленником и системой, на которой будет запущен бэкдор.

Все действия производятся в консольном режиме на ОС Backtrack 5.  Создание полезной нагрузки достигается через утилиту SET, п. 4 Create a Payload and Listerer

Безымянный

Создание полезной нагрузки с обратным TCP (для установления обратной связи) производится путем выбора п. 2 Windows ReverseTCP Meterpreter и затем п. 16 Backdoored Executable.  Данная операция завершает создание бэкдора. При его создании также указывается номер порта, через который будет происходить обратная связь. В папке /pentest/exploits/SET будет сформирован msf.exe, на основе выбранных нами опций.

Настройка эксплойта. Эксплоит предназначен для получения запросов TCP от созданного бэкдора. Его настройка производится через запуск MFS и выбор эксплоита handler (прослушиватель): use exploit/multi/handler.

Безымянный

Вследствие этого MFS переключается в контекст обработчика эксплоита. Дальнейшая задача состоит в конфигурировании полезной нагрузки для этого эксплоита. Поскольку бэкдор ориентирован (создан) с Revers_TCP Meterpretor, то обмен информацией происходит через TCP соединение: set/payload windows/meterpreter/revers_tcp. Кроме того необходимым является указание в опциях Local Host (ip-адреса потенциального злоумышленника).

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

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

Безымянный