Файл: Назначение и структура системы защиты информации коммерческого предприятия (Введение в предметную область).pdf
Добавлен: 20.05.2023
Просмотров: 309
Скачиваний: 2
- Инъекции. Данная уязвимость возникает при отсутствии валидации или фильтрации вводимой пользователем информации; вредоносная информация встраивается напрямую в запрос или команду, например, SQL-запрос.
Пример атаки:
Допустим приложение использует следующую функцию:
«Querry = “SELECT * FROM customers WHERE id ='” + request.getParameter(“id”)+” '”)»
Злоумышленник может влиять на запрос. Например, если подставить «' or '1'='1», то это изменит запрос и результат выдачи. Очевидно, что это простейший пример. В худших случаях данная уязвимость может привести к исполнению произвольного кода на сервере, и, как следствие, компрометации всего сервера.
- Неправильная настройка аутентификации. Данная уязвиvость возникает если приложение позволяет допускает автоматизированные атаки, например метод грубой силы, когда атакующий перебирает все возможные пароли. Кроме того, отсутствие проверки сложности пароля может привести к этой уязвимости (например, пароли вида «admin/admin»).
Пример атаки:
Допустим у злоумышленника есть список пользователей системы. В больших компаниях это чаще всего сочетание имени и фамилии. Если отсутствует проверка на сложность пароля, количество попыток ввода и нет защиты от автоматического перебора, то имея список самых популярных паролей [12] и мощный компьютер, можно в течение дня получить доступ к аккаунтам всех пользователей системы.
- Доступность чувствительной информации. Данная уязвимость возникает при несоблюдении правил хранения персональных данных, утвержденных законами РФ, GDPR. Ярким примером может служить хранение персональных данных, логинов/паролей, бэкапов и их передача в незашифрованном виде по протоколам, которые можно перехватить, например, HTTP, FTP, SMTP.
- Внедрение внешней сущности (XXE). Если на сайте предусмотрена возможность загрузки пользователем XML файлов то злоумышленник может встроить внешнюю сущность, которая нарушит работу парсера и позволит совершать действия, не предусмотренные изначально. Неправильные настройки обработки DTD в XML парсере также ведут к этой уязвимости. К уязвимости может привести использование SAML для Single sign on (SSO). Поскольку SAML использует XML для идентификации личности, то он так же может быть уязвим.
- Неправильные настройки доступа. Управление доступом обеспечивает политику безопасности, таким образом, что пользователи не могут совершать действия, которые не предусмотрены его роли. При неправильных настройках доступа может произойти доступ к несанкционированному чтению, модификации и удалению данных. Распространенные уязвимости контроля доступа включают в себя:
- Обход проверок контроля доступа путем изменения URL-адреса, внутреннего состояния приложения или HTML-страницы или простого использования пользовательского средства атаки API.
- Разрешение изменения первичного ключа на запись другого пользователя, разрешение просмотра или редактирования чужой учетной записи.
- Повышение привилегий. Злоумышленник действует как пользователь без входа в систему или как администратор при входе в систему как пользователь.
- Неправильная конфигурация системы безопасности. Уязвимость возникает при недостаточном количестве внимания безопасности. Обработка ошибок показывает трассировки стека или другие чрезмерно информативные сообщения об ошибках пользователям.
• Для модернизированных систем последние механизмы безопасности отключены или не настроены надежно.
• Параметры настройки безопасности в серверах приложений, среды разработки приложения (например, Django, ASP.NET), библиотеки, базы данных, и т.д. находятся в режиме отладки или выдают избыточную информацию об ошибках.
• Сервер не посылает заголовки безопасности или директивы, или они не собираются обеспечить безопасность данных.
- Межсайтовый скриптинг(XSS). Уязвимость возникает при отсутствии фильтрации ввода пользовательских данных, в результате чего пользователь может вставить произвольный javascript код, что позволит влиять на выдачу пользователю, подменяя содержимое сайта, воруя его данные и так далее. Существует 3 типа XSS: stored, reflected и DOM. Stored возникает, если злоумышленник может сохранить вредоносный код на сайте и его активирует другой пользователь. Reflected – возникает, когда злоумышленник дает ссылку на сайт, и в ссылке использует эту XSS уязвимость, то есть она не хранится на сайте и происходит активация только при переходе по вредоносной ссылке. DOM возникает из-за изменения злоумышленником DOM объекта. Такой уязвимости могут быть подвержены JavaScript фреймворки.
- Небезопасная десериализация. При такой уязвимости злоумышленник может изменять логику приложения или получить произвольное исполнение кода, если какие-либо классы приложения позволяют это сделать. Она возникает, если у атакующего есть возможность изменять десериализованные объекты. Наиболее часто это встречается в:
- Remote- and inter-process communication (RPC/IPC)
- Wire protocols, web services, message brokers
- Базы данных, кэш серверы, файловые системы
- HTTP cookies, API authentication tokens
- Использование ПО с изместными уязвимостями. Данная проблема в безопасности возникает либо из-за того, что используемое программное обеспечение не обновлялось длительное количество времени и в нем нашли различные уязвимости, либо из-за того, что разработчики не проверили уязвимо ли доступное програмнное обеспечение. Чаще всего проблема касается каких-либо гоотовых решений, например почтовый/ftp сервера, различные CMS.
- Недостаточное логирование и мониторинг. Проблема логгирования довольно важна для злоумышленников. Они полагаются на недостаточное логгирование и слабый мониторинг, что позволяет им действовать свободнее. Проблема возникает когда:
- Важные события, такие как удачные/неудачные авторизации не логгируются
- Предупреждения и /или ошибки записываются в непонятном формате или неинформативны
- Логи приложения и API не мониторятся на предмет успешных/неуспешных подключений
- Логи хранятся только локально
- Приложение не может в режиме реального времени обнаружить атаку и предупредить администратора о ней.
OWASP top 10 является приоритетной методологией, которую используют компании, поэтому и в нашем исследовании мы будем придерживаться её. Несмотря на это, стоит упомянуть о других методологиях классификации веб-уязвимостей.
The Web Application Security Consortium (WASC) является некоммерческой организацией, состоящей из международной группы экспертов, специалистов-практиков в отрасли и представителей организаций, которые производят открытый исходный код и широко согласованные стандарты безопасности на основе передового опыта для Всемирной паутины. Будучи активным сообществом, WASC облегчает обмен идеями и организует несколько отраслевых проектов. WASC постоянно публикует техническую информацию, статьи, руководящие принципы обеспечения безопасности и другую полезную документацию. Предприятия, учебные заведения, правительства, разработчики приложений, специалисты по безопасности и поставщики программного обеспечения во всем мире используют наши материалы для решения проблем, связанных с безопасностью веб-приложений. Данная организация разработала свою классификацию угроз [13]. Она отличается от OWASP тем, что некоторые классы атак расписаны подробнее, например, инъекции разделены на SQL инъекцию, SSL инъекцию и так далее. WASC может быть полезен начинающим специалистам по безопасности, так как он более подробен, чем OWASP и четко разграничивает разные виды уязвимостей. Несмотря на эти плюсы, предпочтение все равно отдают OWASP, поскольку его сообщество шире и в клад в развитие безопасности больше. Кроме того, обновления классификаций выходят чаще, чем в WASC.
Еще одним важным вкладом в развитие безопасности можно считать проект WASC «Distributed Open Proxy Honeypots». Благодаря этому проекту любой исследователь может подключиться к honeypot и посмотреть наиболее частые атаки, применяемые в настоящее время. Honeypot— ресурс, представляющий собой приманку для злоумышленников. Задача Honeypot — подвергнуться атаке или несанкционированному исследованию, что впоследствии позволит изучить стратегию злоумышленника и определить перечень средств, с помощью которых могут быть нанесены удары по реально существующим объектам безопасности. Honeypot собирает небольшое количество информации, после анализа которой строится статистика методов, которыми пользуются взломщики, а также определяется наличие каких-либо новых решений, которые впоследствии будут применяться в борьбе с ними.
ГЛАВА 2. ЭТАПЫ АУДИТА ЗАЩИТЫ ИНФОРМАЦИИ
2.1 Разведка
Перед тем, как проводить тестирование на проникновение, необходимо определить, с чем мы имеем дело. Для этого первым делом собирают всю возможную информацию о компании, аудит которой будет проводиться. Перечень информации в каждом случае уникален, однако есть перечень необходимого минимума. Самая важная информация – диапазон ip-адресов. Чаще всего у компании несколько адресов и важно определить их правильно, поскольку заключается договор именно с данным конкретным предприятием, и атака ip-адресов, не принадлежащих ей, будет уже уголовным преступлением. Кроме ip-адресов атакующего также интересуют поддомены сайта, поскольку могут быть поддомены вида: dev.example.com или beta.example.com, которые показывают, что есть какие-то прототипы. Кроме того, на разных поддоменах могут находиться разные сервисы, например, почтовый клиент, ftp-клиент и так далее. Немаловажным фактором успешного аудита является сбор информации с сайта и поддоменов: электронные адреса и телефоны сотрудников, ссылки на GitHub, headhunter или иные сайты по подбору персонала, различные файлы, в числе которых могут быть важные и секретные, которые остались в открытом доступе из-за неправильных настроек сервера. Не стоит забывать и про структуру HTML кода, поскольку в нем могут содержаться говорящие названия выпускаемых продуктов, могут быть ссылки на другие адреса и так далее. Многое из этой информации может пригодиться для социальной инженерии, которая также часто применяется при проведении аудита. Социальная инженерия – это метод получения необходимого доступа к информации, основанный на особенностях психологии людей. Основной целью социальной инженерии является получение доступа к конфиденциальной информации, паролям, банковским данным и другим защищенным системам. Пентестеры же используют этот метод на этапе разведки, чтобы втереться в доверие к сотрудникам, как действующим, так и бывшим, разузнать побольше о компании, выведать ее проблемные места.
Выделяют 2 вида разведки: активная и пассивная. Отличие состоит в том, что в случае пассивной разведки сайт не знает, что пентестер взаимодействует с ним, а в случае активной знает. Пассивную разведку также называют OSINT – разведка по открытым источникам. Как раз в этот вид разведки включат сбор информации в интернете, поиск ссылок на компанию, сотрудников и их github, определение стека технологий по вакансиям, размещенных на различных поисковых сайтах, поиск поддоменов и так далее. Для получения этой информации используется разное программное обеспечение. По словам сами пентестеров, главный инструмент разведки на этом этапе – google. Этот поисковик, как и многие другие имеет Dorks: возможности поиска определенных элементов среди всех сайтов. Рассмотрим самые безобиднее: логические операторы (Где живет Вася OR Петя), фразы в кавычках будут искаться дословно (“именно это я хочу найти”), можно убирать ненужные результаты выдачи при помощи знака минус (Кузьминов –ректор). В последнем случае нам будут выведены все результаты о Кузьминове, но не будет упоминаний ректора Высшей школы экономики. Есть и Dorks, которые помогают искать информацию о сайте, например, «site:example.com» выведет нам все поддомены сайта example.com, filetype: позволяет искать файлы определенных расширений, например pdf, doc и другие важные документы, которые могут быть в открытом доступе, inurl: позволяет нам искать определенные запросы в адресе сайта, например, запрос «inurl:"RootFolder=" Allitems "confidential" | "classified" | "passwords" | username» показывает нам уязвимые директории. Существует база наиболее популярных DORK [14]
Для разведки чаще всего используют Dorks «site:», «filetype:», «email “example.com”». они позволяют извлечь почти всю информацию из сайта: его поддомены, то есть все возможности, откуда можно попробовать атаковать сайт; позволяет получить все документы, электронные адреса компании. Очевидно, что у крупных компаний очень много электронных адресов, документов и поддоменов огромное количество, поэтому для сбора информации используют специальное программное обеспечение. Главным инструментом является FOCA. Это open-source программное обеспечение, которое использует Dorks вместо пользователя и выводит нужную ему информацию в удобном виде. Кроме того, FOCA позволяет скачивать любые документы, находящие в открытом доступе на сайте. У этой программы есть аналоги для поиска доменов, например, searchdns.netcraft.com, virustotal.com/#/home/search, community.riskiq.com/home. Эти сайты, как и FOCA, не позволяют определить ip адрес сайта, для этой цели используются другие аналоги. Наиболее популярным аналогом является сайт dnsdumpster.com. Он не только определяет все поддомены сайта, их расположение, но и определить их ip адрес, страну, где расположены сервера, хосты, карту сайта, его поддоменов. Это все позволяет составить картину о сайте, структуре компании. Стоит отметить, что использование FOCA и других программ переводит разведку из пассивной в активную категорию, поскольку происходит взаимодействие с сайтом. Для пассивной разведки стоит использовать веб-аналоги: google, shodan.io и другие. Активную разведку также называют этапом сканирования.
2.2 Сканирование
Этап сканирования включает в себя активный автоматизированный сбор информации. Пентестеры сканируют весь диапазон ip-сети предприятия, так как в этой сети могут быть домены, отличные от основного сайта, кроме того в ней могу находиться различные устройства интернета вещей, SKADA (программный пакет, предназначенный для разработки или обеспечения работы в реальном времени систем сбора, обработки, отображения и архивирования информации об объекте мониторинга или управления), АСУ ТП и другие устройства. Чаще всего главной целью пентестеров является основной сайт. Для сбора информации с сайта используются либо специализированные расширения для браузеров google chrome/firefox, либо программы типа harvester, которые позволяют собирать информацию о всех email-адресах на сайте. Для получения информации о структуре сайта они пытаются понять, какие папки есть в директории сайта, так как при неправильной настройке доступа, у них будет возможность получить доступ к данным, которые там хранятся. Первым делом просматривается файл robots.txt. Этот файл есть у каждого сайта, так как в нем находится список директорий, которые не должны индексироваться поисковиками. То есть, если на сайте example.com в robots.txt прописано «Disallow: /admin.php», это что поисковик не будет выдавать «example.com/admin.php». Часть директорий в этом файле может быть открытой для просмотра, но закрытой для поисковиков. Это может произойти из-за неверного понимания принципа работы этого файла. Исследовав этот файл, пентестеры запускают программу для поиска директорий. Чаще всего это dirb/dirbuster. Принцип работы программы прост: используя заранее созданный словарь наиболее популярных названий директорий, файлов программа делает запрос к ним, если ответ отличается от «404 Not Found», то выводится информация о директории и код доступа к ней. Наиболее ценными являются ответы с кодом 200 – файл доступен, то есть его можно открыть. Наиболее частные же ответы – 403 (необходима авторизация), 302 (перенаправление на другую страницу). Очевидно, что из-за специфики работы программы, можно настроить обработчик страниц, который на все запросы будет выдавать код 200, а при открытии страницы будет писаться, что нет доступа, либо такой адрес не существует. В таком случае, либо пишут свои программы, способные обходить это, либо ищут вручную. Отдельная ценность данных программ в том, что они могут обнаружить .git архив расположенный в директории сайта. Если это произошло, то используя специальную программу (ссылка на двс риппер) можно скачать этот репозиторий и получить исходный код сайта.