В процессе работы, у кого-то легальной, у кого-то не очень, нередко возникает потребность в реализации фишинг-атак. Зачем? Как показывает практика, это зачастую наиболее пробивной и простой вариант для получения доступа к целевой системе. Почему?
Разработкой и настройкой веб-сайтов, серверов, прочих сетевых устройств, занимаются по большей части компетентные люди, а о защите конечных пользователей, например, службы поддержки, секретарей и прочих личностей, думают в последнюю очередь. Естественно, атаки возможны и на более квалифицированный персонал, но об этом чуть позже.
Начнем с начала, а точнее с определения, что такое фишинг. Фишинг - вид мошенничества, целью которого является получение доступа к конфиденциальным данным пользователей, например, учетным данным от рабочей станции или какого-либо веб-сервиса.
Какие используются методы? Наиболее популярные способы: рассылка писем, создание поддельных веб-сайтов (тесно связано с предыдущим способом), сообщения через социальные сети и прочие средства коммуникации, физический уровень (вроде популяризованного посредством сериалов разбрасывания флешек).
Рассмотрим подробнее процесс создания веб-ресурсов под фишинг, так как данный процесс является одним из наиболее часто используемых, вдобавок является неотъемлемым элементом в других способах.
В качестве примера возьмем адрес блога - kaimi.io и рассмотрим порядок действий, а также вспомогательные инструменты.
Нам понадобится зарегистрировать домен, где будет размещен веб-ресурс. Позднее он может быть использован для проведения рассылок. Как выбрать имя?
- Придумать самостоятельно, используя распространенные техники, например:
- замена визуально схожих символов (i -> l)
- замена символов с использованием punycode (https://ru.wikipedia.org/wiki/Punycode)
- зарегистрировать произвольное имя, где разместить поддомен с целевым именем, которое
- будет видно в начале (вроде admin.kaimi.io.sample.com), особенно актуально для мобильных клиентов, где адресная строка в большинстве случаев урезана из-за размера экрана
- зарегистрировать ровно такой же домен в другой зоне (например, kaimi.it)
- придумать что-то "оригинальное", вроде kaimi-blog.io (не лучший вариант)
- Воспользоваться специальным ПО, которое реализует часть описанных методов, например:
- EvilURL (https://github.com/UndeadSec/EvilURL)
- DomainFuzz (https://github.com/monkeym4ster/DomainFuzz)
- CATPHISH (https://github.com/ring0lab/catphish)
- dnstwist (https://github.com/elceef/dnstwist)
Имя выбрали, перейдем к привязке имени к IP и настройке всевозможных полезностей. Можно разместиться на каком-нибудь хостинге, который предоставляет доступ к панели, где все настраивается в пару кликов или не настраивается... Я рассмотрю вариант использования VPS.
Итак, мы арендовали VPS (рекомендую ArubaCloud, как самое дешевое, 1€ в месяц на момент написания, либо DigitalOcean, как наиболее удобное, от 5$ в месяц).
Необходимо настроить SPF, DKIM, DMARC. По порядку:
SPF - пользуемся одним из следующих мануалов:
- https://www.digitalocean.com/community/tuto...ail-reliability
- https://help.mail.ru/biz/domain/verificatio...tings/other/spf
- https://yandex.ru/support/pdd/set-mail/spf.html
Завалялся у меня скрипт для настройки VPS под рассылку AMS на Python. Честно не помню, откуда, мне кажется, на каком-то форуме взял. Если нарушаю чьи-то авторские права - напишите в комментариях.
Скачать: https://kaimi.io/wp-content/uploads/2018/05/vps-setup.zip
Как обычно, можно вручную:
- https://www.digitalocean.com/community/tuto...n-debian-wheezy
- https://petermolnar.net/howto-spf-dkim-dmarc-postfix/
И, наконец, выпустим для нашего домена 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. Довольно тривиально.
Раз уж затронул тему фреймворков для фишинга, то упомяну еще несколько, которые умеют всё, но не всё и временами криво:
- Gophish https://getgophish.com/
- King Phisher https://github.com/securestate/king-phisher
Переходим к отправке фишинговых писем. Предполагаю, что сам механизм отправки был настроен на предыдущем этапе, либо, внезапно, у вас имеется доступ к учетной записи сотрудника для целевого домена.
Итак, первое что нужно сделать - собрать откуда-то адреса, которые возможно использовать в фишинге-рассылке, по крайней мере если нет конкретной цели. Откуда? Вариантов множество:
- С веб-сайта
- Из данных DNS, WHOIS
- Вручную (whois, dig...)
- Сервисы
- Перебором (SMTP, веб-версии некоторых почтовиков и т.п.)
- Из социальных сетей
- etc...
- Со специализированных сервисов
- Из обычных поисковых систем
- Из всевозможных утекших баз (если повезет, то еще и действующий пароль от какого-либо сервиса удастся получить)
- Maltego - https://www.paterva.com/web7/buy/maltego-cl.../maltego-ce.php
- recon-ng - https://bitbucket.org/LaNMaSteR53/recon-ng
Помните, полноценный OSINT может сильно помочь в целевом фишинге, но трудозатраты довольно велики.
Но вернемся к рассылкам. Мы собрали некоторое количество адресов, теперь нам требуется провести предварительную рассылку (лучше даже не с нашего домена), чтобы понять, как выглядит типичное письмо от сотрудника. Нас интересует подпись, общий формат письма, а также его заголовки (обращаем внимание на антиспам, используемый клиент и прочие полезные вещи). Все это поможет в дальнейшем успешно прикинуться сотрудником.
Итак, подписи. Тут особо сказать нечего, нередко в компаниях используется характерное оформление подписи, где указываются ФИО сотрудника, должность, контактные данные и т.п.
Бывают варианты попроще:
Бывают посложнее:
Цель - сделать такое же.
Общий стиль. Тоже довольно очевидно. Следует обратить внимание на структуру, используемые обращения, визуальное оформление (цвет, шрифт) и т.д.
Заголовки.
Любое письмо содержит заголовки, которые могут намекнуть на использование систем фильтрации, конкретных почтовых клиентов или веб-интерфейсов и т.п. Это может помочь, как, например, в вышеописанной ситуации с punycode, который некорректно отображается в ряде почтовых клиентов.
Занимательный набор заголовков, не правда ли? Тут и клиент, и IP, и имя компьютера...
Кстати, о спам-фильтрах, если видно использование какой-либо системы, то перед отправкой рекомендую взять отдельную систему, развернуть на ней тот же SpamAssassin и проверить свое письмо в нем, представление о потенциальном Score (субъективной оценке SpamAssassin вероятности того, что это спам) - отличная возможность внести правки до непосредственной рассылки.
Поговорим о содержимом писем. Все настроено, о чем писать? Пишите о погоде, серьезно, не пытайтесь изобразить CEO и прочее начальство, в большинстве случаев это ни к чему не приведет, легко проверяется и скорее всего они придерживаются шаблона, который тоже нужно где-то взять.
В качестве темы письма используйте простые и распространенные: подойти подписать документы, опрос, график работы в праздники, тему с префиксом Fwd или Re, чтобы изобразить продолжение переписки и т.п. Если письмо в формате HTML и в нем имеются ссылки на сторонние ресурсы (стили, изображения), то в ряде клиентов такое содержимое блокируется по умолчанию, но может быть разблокировано пользователем, поэтому лучше составлять письмо с оглядкой на такое поведение (например, указывая в тексте, что ниже приведена инфографика или купон или что-то еще).
Иногда имеет смысл указать несколько получателей (заголовок Cc) в рамках одной компании, добавляет доверия.
Не забывайте о возможности манипуляции отображаемым отправителем (заголовок From, который следует детальнее рассмотреть, вдруг в компании принято использовать только имя, а вы вписали ФИО), указанием альтернативного получателя ответа (Reply-To) и прочих полезных заголовках, не лишним будет полистать RFC (https://tools.ietf.org/html/rfc2076).
Текст составлен, перейдем к вложениям. Ведь нас может интересовать не только факт открытия письма (который можно установить, например, с помощью ссылки на изображение, если письмо в формате HTML), а еще возможность проникновения на ПК получателя.
Что шлют? В основном офисные документы, реже архивы. Слать типичные исполняемые расширения - 99% попадание под фильтр. Кстати, интересный момент по поводу вложений. Сталкивался с ситуацией, что вложения с любыми потенциально опасными расширениями (даже .reg) физически вырезаются из писем, однако архивы с паролем проходят на ура.
Бывают варианты с эксплоитами под распространенные медиа-форматы, но публичные решения для такого практически не найти.
В случае с офисными документами используются следующие варианты:
- Всевозможные эксплоиты под публичные уязвимости (тут на форуме множество тем с продажей)
- Макросы
- Dynamic Data Exchange (https://msdn.microsoft.com/en-us/library/wi...4(v=vs.85).aspx, https://nakedsecurity.sophos.com/2017/10/22...res-what-to-do/)
- OLE
- Менее распространенные форматы файлов, вроде HTA (бывает, в рамках формата что-то можно реализовать, бывает, эксплоит найдется https://www.rapid7.com/db/modules/exploit/w...office_word_hta)
Под некоторые решения можно найти подробные описания, что-то сгенерировать существующими продуктами (например, 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 и подобных ограничений, когда отправленный документ успешно открыт, но попытка передать какую-либо информацию завершается неуспешно, некоторе особенности мобильных устройств и кое-что еще.
Все вышеперечисленные моменты за рамками данной статьи, потому что статья писалась с целью систематизации знаний о фишинге без серьезного углубления в детали того или иного аспекта.
Coppy