Black Hat Rust, Rust, Программирование

#10 Black Hat Rust. Обнаружение многопоточной атаки. Пассивная и активная разведка.

Здравствуйте, дорогие друзья.

“Чтобы узнать своего врага, ты должен сам стать своим врагом”, Сунь Цзы

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

Passive vs Active reconnaissance

Пассивная разведка

Пассивная разведка — это процесс сбора информации о цели, без непосредственного взаимодействия с ней. Например, поиск цели в различных социальных сетях и поисковых системах. Использование общедоступных источников называется OSINT. Какие данные собираются с помощью пассивной разведки? Обычно это фрагменты информации о сотрудниках компании, такие как имена, адреса электронной почты, номера телефонов, а также хранилища исходного кода, утечка токенов. Благодаря поисковым системам, таким как Shodan, мы также можем искать открытые для всего мира сервисы и машины.

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

Активная разведка

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

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

Это может быть почтовый сервер, HTTP-сервер или даже документ с удаленным доступом. Как только honeypot будет отсканирован или взломан, он сообщит об этом службе безопасности компании.

Канарейка — это то же самое, но во внутренней сети. Ее цель – обнаружить злоумышленников, как только они нарушат внешний периметр. Разведка цели сама по себе может быть разделена на два этапа: *

Обнаружение активов; * Идентификация уязвимостей (что является темой раздела 06).

Активы обнаружения

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

Перечисление поддоменов

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

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

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

С другой стороны, эта прозрачность позволяет нам автоматизировать значительную часть нашей работы, поскольку в настоящее время большинство интернет-сервисов (и, следовательно, поверхность атаки) доступны через HTTPS.

Ограничение этого метода заключается в использовании служб, отличных от HTTP(ов) (таких как электронная почта или VPN-серверы), и поддоменов с подстановочными знаками которые могут запутывать используемые реальные поддомены.

Другие источники поддоменов

Списки слов

Существуют списки слов, содержащие наиболее распространенные поддомены, такие как этот: https://github.com/owasp-amass/amass/blob/master/resources/namelist.txt. Затем нам просто нужно запросить эти домены и посмотреть, разрешаются ли они.

Брутфорс

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

Amass

Наконец, существует база данных (https://github.com/owasp-amass/amass), поддерживаемая OWASP, которая предоставляет всевозможные методы для перечисления поддоменов. Источники можно найти в папках datasrc и resources.

На этом все. Всем хорошего дня!

Black Hat Rust

Цикл статей по курсу Black Hat Rust.