#10 Black Hat Rust. Обнаружение многопоточной атаки. Пассивная и активная разведка.
Здравствуйте, дорогие друзья.
“Чтобы узнать своего врага, ты должен сам стать своим врагом”, Сунь Цзы
Как мы видели, первым шагом каждой атаки является разведка. Цель этого этапа — собрать как можно больше информации о нашей цели, чтобы найти точки входа для нашего предстоящего нападения. В этом разделе мы познакомимся с основами рекогносцировки, с тем, как реализовать наш собственный сканер в Rust и как ускорить его за счет использования многопоточности. Существует два способа выполнения рекогносцировки: пассивный и активный.
Пассивная разведка
Пассивная разведка — это процесс сбора информации о цели, без непосредственного взаимодействия с ней. Например, поиск цели в различных социальных сетях и поисковых системах. Использование общедоступных источников называется 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.
На этом все. Всем хорошего дня!