Пентест для начинающих: Введение в фишинг

В процессе работы, у кого-то легальной, у кого-то не очень, нередко возникает потребность в реализации фишинг-атак. Зачем? Как показывает практика, это зачастую наиболее пробивной и простой вариант для получения доступа к целевой системе. Почему? Разработкой и настройкой веб-сайтов, серверов, прочих сетевых устройств, занимаются по большей части компетентные люди, а о защите конечных пользователей, например, службы поддержки, секретарей и прочих личностей, думают в последнюю очередь. Естественно, атаки возможны и на более квалифицированный персонал, но об этом чуть позже.

Начнем с начала, а точнее с определения, что такое фишинг. Фишинг - вид мошенничества, целью которого является получение доступа к конфиденциальным данным пользователей, например, учетным данным от рабочей станции или какого-либо веб-сервиса.

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

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

В качестве примера возьмем адрес блога - kaimi.io и рассмотрим порядок действий, а также вспомогательные инструменты.

Нам понадобится зарегистрировать домен, где будет размещен веб-ресурс. Позднее он может быть использован для проведения рассылок. Как выбрать имя?

  1. Придумать самостоятельно, используя распространенные техники, например:
    • замена визуально схожих символов (i -> l)
    • замена символов с использованием punycode (https://ru.wikipedia.org/wiki/Punycode)
    • зарегистрировать произвольное имя, где разместить поддомен с целевым именем, которое будет видно в начале (вроде admin.kaimi.io.sample.com), особенно актуально для мобильных клиентов, где адресная строка в большинстве случаев урезана из-за размера экрана
    • зарегистрировать ровно такой же домен в другой зоне (например, kaimi.it)
    • придумать что-то "оригинальное", вроде kaimi-blog.io (не лучший вариант)
  2. Воспользоваться специальным ПО, которое реализует часть описанных методов, например:

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

Имя выбрали, перейдем к привязке имени к IP и настройке всевозможных полезностей. Можно разместиться на каком-нибудь хостинге, который предоставляет доступ к панели, где все настраивается в пару кликов или не настраивается... Я рассмотрю вариант использования VPS.
Итак, мы арендовали VPS (рекомендую ArubaCloud, как самое дешевое, 1€ в месяц на момент написания, либо DigitalOcean, как наиболее удобное, от 5$ в месяц).

Необходимо настроить SPF, DKIM, DMARC. По порядку:
SPF - пользуемся одним из следующих мануалов:

DKIM и DMARC
Завалялся у меня скрипт для настройки VPS под рассылку AMS на Python. Честно не помню, откуда, мне кажется, на каком-то форуме взял. Если нарушаю чьи-то авторские права - напишите в комментариях.
Скачать: https://kaimi.io/wp-content/uploads/2018/05/vps-setup.zip

Как обычно, можно вручную:

Не забываем добавить пользователя, если планируется отправка с использованием почтовых клиентов. Также почтовые обязанности можно переложить на сторонние сервисы, что в ряде случаев может помочь, например, воспользоваться SendGrid (https://sendgrid.com), Mandrill (https://www.mandrill.com), GMail for Business (https://gsuite.google.com/products/gmail/) или даже Яндекс.Почта для домена (https://pdd.yandex.ru/domains_add/).

И, наконец, выпустим для нашего домена SSL-сертификат, домен ведь не только для рассылок используется. Подойдет сервис Let's Encrypt (https://letsencrypt.org/) для которого существует уйма скриптов для развертывания (в зависимости от используемого веб-сервера).

Деталей рассылки писем коснемся чуть позже, а сейчас перечислим основные варианты для создания копий существующих веб-страниц, которые могут использоваться, если мы планируем поднять веб-сервер на нашем домене и создать имитацию административной панели или, скажем, веб-версии Outlook.
Первый вариант - руками, все как обычно, выкачиваем хоть браузером, хоть с помощью wget интересующую страницу, правим ссылки на скрипты, стили и изображения, смотрим, какой запрос отправляется при попытке аутентификации на странице и делаем скрипт, который будет записывать данные, отправляемые ему. В конце делаем опциональный редирект на оригинальную страницу. Примеров таких скриптов в Интернете множество, принципиальных отличий нет, разве что имена переменных и тип HTTP-запроса, которым они приходят.
Второй вариант - воспользоваться Social-Engineer Toolkit (https://github.com/trustedsec/social-engineer-toolkit), после установки идем по мануалу или по здравому смыслу (все ведь знают английский на базовом уровне, да?) [http://ironkali.blogspot.nl/2014/03/how-to...se-toolkit.html
Вообще, это не вполне корректный вариант, так как тут запускается собственный веб-сервер, а не создается страница для размещения где-либо, поэтому если мы пошли этим путем, то не забываем про SSL-сертификат, который придется вручную прописать в файле set.config. Довольно тривиально.
Раз уж затронул тему фреймворков для фишинга, то упомяну еще несколько, которые умеют всё, но не всё и временами криво:

Еще может быть полезен инструмент elScripto (https://github.com/psych0tr1a/elScripto), если веб-ресурс создается для проведения "фишинга" пользователей в рамках другого веб-ресурса, на котором у вас имеется XSS.

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

Также можно использовать специальное OSINT ПО для сбора информации, например:

Тема полноценного OSINT по человеку или организации выходит за рамки данной статьи, однако приведу пару ссылок, которые помогут сориентироваться в сервисах, подходах и доступных инструментах:

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

Но вернемся к рассылкам. Мы собрали некоторое количество адресов, теперь нам требуется провести предварительную рассылку (лучше даже не с нашего домена), чтобы понять, как выглядит типичное письмо от сотрудника. Нас интересует подпись, общий формат письма, а также его заголовки (обращаем внимание на антиспам, используемый клиент и прочие полезные вещи). Все это поможет в дальнейшем успешно прикинуться сотрудником.

Итак, подписи. Тут особо сказать нечего, нередко в компаниях используется характерное оформление подписи, где указываются ФИО сотрудника, должность, контактные данные и т.п.
Бывают варианты попроще:

Бывают посложнее:

Цель - сделать такое же.

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

Заголовки. Любое письмо содержит заголовки, которые могут намекнуть на использование систем фильтрации, конкретных почтовых клиентов или веб-интерфейсов и т.п. Это может помочь, как, например, в вышеописанной ситуации с punycode, который некорректно отображается в ряде почтовых клиентов.

Занимательный набор заголовков, не правда ли? Тут и клиент, и IP, и имя компьютера...

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

Поговорим о содержимом писем. Все настроено, о чем писать? Пишите о погоде, серьезно, не пытайтесь изобразить CEO и прочее начальство, в большинстве случаев это ни к чему не приведет, легко проверяется и скорее всего они придерживаются шаблона, который тоже нужно где-то взять. В качестве темы письма используйте простые и распространенные: подойти подписать документы, опрос, график работы в праздники, тему с префиксом Fwd или Re, чтобы изобразить продолжение переписки и т.п. Если письмо в формате HTML и в нем имеются ссылки на сторонние ресурсы (стили, изображения), то в ряде клиентов такое содержимое блокируется по умолчанию, но может быть разблокировано пользователем, поэтому лучше составлять письмо с оглядкой на такое поведение (например, указывая в тексте, что ниже приведена инфографика или купон или что-то еще). Иногда имеет смысл указать несколько получателей (заголовок Cc) в рамках одной компании, добавляет доверия.
Не забывайте о возможности манипуляции отображаемым отправителем (заголовок From, который следует детальнее рассмотреть, вдруг в компании принято использовать только имя, а вы вписали ФИО), указанием альтернативного получателя ответа (Reply-To) и прочих полезных заголовках, не лишним будет полистать RFC (https://tools.ietf.org/html/rfc2076).

Текст составлен, перейдем к вложениям. Ведь нас может интересовать не только факт открытия письма (который можно установить, например, с помощью ссылки на изображение, если письмо в формате HTML), а еще возможность проникновения на ПК получателя. Что шлют? В основном офисные документы, реже архивы. Слать типичные исполняемые расширения - 99% попадание под фильтр. Кстати, интересный момент по поводу вложений. Сталкивался с ситуацией, что вложения с любыми потенциально опасными расширениями (даже .reg) физически вырезаются из писем, однако архивы с паролем проходят на ура. Бывают варианты с эксплоитами под распространенные медиа-форматы, но публичные решения для такого практически не найти.
В случае с офисными документами используются следующие варианты:

Если интересует только фиксация попытки открытия файла, то тут тоже есть простор, обращение к внешнему ресурсу (иногда с возможностью утечки полезных данных https://habr.com/post/354618/), подписывание документа сертификатом и фиксация факта обращения к CRL или Timestamp серверам и т.п.
Под некоторые решения можно найти подробные описания, что-то сгенерировать существующими продуктами (например, Metasploit Framework, Empire, но придется дорабатывать), что-то купить.

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

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

И, наконец, совсем вкратце затрону физический аспект. Тут все очень индивидуально и практический опыт в области у меня более чем скудный. Обычно в том или ином формате появляется возможность взаимодействовать с сотрудниками. Что используется? В большинстве случаев Rubber Ducky (https://hakshop.com/products/usb-rubber-ducky-deluxe), а точнее похожая по нагрузке дешевая реплика с AliExpress (https://ru.aliexpress.com/item/BadUsb-Beetl...2732578586.html). Естественно, можно выковырять или взять за основу подходящий контроллер (Google -> Bad USB DIY) и собрать все в нужном корпусе или подсадить в какое-либо готовое устройство, например, мышь. Далее готовое устройство передается, отправляется, подкидывается, что в один или несколько заходов позволяет получить доступ к системе внутри целевой сети. На самом деле сложно подготовить, т.к. приходится учитывать множество нюансов (система пользователя, антивирусы, файрволлы, системы DLP, личный уровень паранойи и т.д.), но иногда, что характерно, срабатывает на ура.

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

Первоначально статья была размещена 02.05.2018 на форуме exploit.in.

Пентест для начинающих: Введение в фишинг: 12 комментариев

  1. Great article.
    Phishing by emails is very unpleasant.
    I would recommend you to use Zerobounce.net. They saved me from being a victim of the online fraud.
    The system works by reducing and eliminating invalid, abuse, complaint, inactive, and spam-trap email address. They also provide IP address validation and verification of key recipient demographics and has the ability to add missing information on certain emails, such as the name, gender, and location of the owner.
    They are the most secure email validation system you can find.
    Here is the link where you can find them http://www.zerobounce.net

  2. Добрый день, Ваша программка MyTestXTractor для извлечения теста (.mtf) из .exe-файла - не работает. Выбираю тест, нажимаю Extract и просто запускается мой .exe тест. Извлечения .mtf не происходит.
    Если это возможно, дайте обратную связь. Заранее благодарен.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *