Email phishing. Part 2.
ScullyПродолжаем.
Дисклеймер: вся эта информация предоставляется исключительно с позиции независимого исследователя и для образовательных и исследовательских целей. Фишинг, сталкинг, мошенничество - это все уголовно наказуемые деяния, не делайте так. Я лишь изучаю механизм явления и провожу эксперименты на собственных устройствах (либо с участием людей, которые заранее дали согласие на участие).
Итак, допустим, у нас выполнены следующие этапы:
- Мы подробно изучили личность таргета
- Поставили цель атаки (что мы хотим сделать с помощью email фишинга? варианты бывают разные: материальная выгода, кража персональных данных, сталкинг и т.д)
- Выбрали определенную электронную почту (так как нам важен почтовый ящик, от него будут зависеть используемые спам фильтры и другие меры безопасности)
- Сформировали несколько вариантов фишингового письма (на случай, если первый вариант не прокатит, нам нужно будет выждать время и попробовать другой вариант)
- У нас есть прогретая почта с хорошей репутацией
Теперь нам нужно выбрать тип полезной нагрузки и способ ее доставки на компьютер таргета.
Тип полезной нагрузки будет зависеть от:
- Функционала (кейлоггер с длительным временем жизни, скрипт, который просто соберет все данные и отправит на наш север, а потом умрет, возможно, это будет аудио или видео кейлоггер - вариантов море, тут на что фантазии хватит)
- ЯП, который выбирается в зависимости от функционала и уязвимости, которую мы собираемся эксплуатировать
- Логики работы скрипта (способ активации, время жизни, осуществление сетевой связи с нашим сервером, обход антивиров и т.д)
Кстати, email фишинг не всегда включает себя пейлоад. Если мы хотим получить конфиденциальные данные (логин\пароль, например) таргета от конкретного сайта, то мы можем использовать такой сценарий:
- это наиболее распространенный тип фишинговых писем, в которых злоумышленник пытается обманом заставить таргет разгласить конфиденциальную информацию, выдавая себя за законную организацию, например, банк или интернет-магазин. В письме может содержаться ссылка, по которой таргет переходит на поддельный сайт, похожий на настоящий, где ее просят ввести свои учетные данные или другую конфиденциальную информацию. В таком случае далее таргета перенаправляют на реальный сайт и типа ничего не произошло, а мы получаем его конфиденциальные данные для входа.
Некоторые методы доставки полезной нагрузки:
Способ 1: Waterhole attack
Шаг 1: Определение целевого веб-сайта - мы должны определить веб-сайт, который регулярно посещает таргет.
Шаг 2: Компрометация сайта - теперь нужно скомпрометировать сайт, используя его уязвимости.
Шаг 3: Внедрение вредоносного кода на сайт. Этот код обычно предназначен для использования уязвимостей в устройстве таргета и предоставления нам удаленного доступа к устройству.
Шаг 4: Отправить фишинговое письмо таргету, содержащее ссылку на взломанный веб-сайт.
Шаг 5: Подождать, пока таргет нажмет на ссылку - Как только таргет нажмет на ссылку, вредоносный код будет выполнен в фоновом режиме и доставит полезную нагрузку на устройство таргета.
Способ 2: Загрузка вложения
Шаг 1: Создание вредоносной полезной нагрузки, которая предназначена для использования уязвимостей в устройстве таргета и предоставления нам удаленного доступа к устройству.
Шаг 2. Выбор шаблона фишингового письма.
Шаг 3: Вставка вредоносной программы во вложение - полезная нагрузка вредоносной программы должна быть вставлена во вложение таким образом, чтобы это выглядело законно. Для этого можно использовать обычный формат файла, например PDF, Word или Excel. Обычно для наиболее популярных форматов существуют уже готовые эксплойты. Написание собственного - довольно сложная задача, но готовые эксплойты не всегда могут подходить под наши задачи.
Шаг 4: Отправить электронное письмо с вредоносным вложением.
Шаг 5: Дождаться, пока таргет откроет вложение. Как только таргет откроет вложение, полезная нагрузка вредоносной программы будет доставлена на устройство таргета, что позволит нам получить удаленный доступ к устройству.
Способ 3 Стандартный способ с активацией с помощью ссылки
Шаг 1: Создайте вредоносную полезную нагрузку. Это можно сделать с помощью конструктора вредоносных программ или написав собственный код. Вредоносная программа должна быть разработана таким образом, чтобы использовать уязвимости в устройстве таргета и предоставить нам удаленный доступ к устройству.
Шаг 2: Выбор шаблона фишингового письма.
Шаг 3: Создание фальшивой страницы входа. Фальшивая страница входа должна выглядеть идентично законной странице входа в аккаунт таргета.
Шаг 4. Размещение поддельной страницы входа в систему. Поддельная страница входа в систему должна быть размещена на сервере, который будет доступен таргету, когда он нажмет на вредоносную ссылку. Для этого можно использовать взломанный или поддельный веб-сайт.
Шаг 5: Вставка вредоносной ссылки в электронное письмо. Для этого можно использовать текст гиперссылки или кнопку с надписью "нажмите здесь, чтобы просмотреть важную информацию" или аналогичную.
Шаг 6. Отправка электронного письма - электронное письмо должно быть отправлено таргету с включенной в него вредоносной ссылкой.
Шаг 7: Подождать, пока таргет нажмет на ссылку. После того как таргет нажмет на ссылку, откроется поддельная страница входа в систему. Таргету будет предложено ввести свои учетные данные, которые будут собраны нами.
Шаг 8: Передача полезной нагрузки. После того как таргет введет свои учетные данные, он будет перенаправлена на легитимную страницу, создавая впечатление, что ничего не произошло. Однако в фоновом режиме на устройство таргета будет доставлена полезная нагрузка вредоносного ПО, что позволит нам получить удаленный доступ к устройству.
Я делала примеры на С. По очевидным причинам, никакой готовый код публиковать не буду (в этом канале)))).
Общий алгоритм написания функций для unix систем (щас бы я алгоритм для распространенной винды написала, ага) на C, которые будут собирать данные обо всех действиях пользователя, таких как нажатия клавиш, щелчки мыши и скриншоты, а затем отправлять эти данные обратно нам на сервер:
1. Используйте либу, например libinput, для перехвата событий пользовательского ввода, таких как нажатие клавиш и щелчки мыши. Эта библиотека предоставляет интерфейс для перехвата событий ввода с различных устройств, включая клавиатуры, мыши и сенсорные панели.
2. Используйте такую либу, как libX11, для создания скриншотов экрана пользователя. Эта библиотека предоставляет интерфейс для захвата изображений X Window System, которая является наиболее распространенной оконной системой, используемой в Unix-подобных системах.
3. Желательно кодировать захваченные данные в подходящий формат, например JSON или XML, чтобы облегчить передачу на сервер.
4. Закодированные данные на сервер можно отправлять с помощью сетевого сокета (include <sys/socket.h> include <netinet/in.h>).
5. Повторяйте шаги 1-4 через регулярные интервалы времени, например, каждые несколько секунд или каждый раз, когда собран определенный объем данных. Это обеспечит непрерывный поток данных на сервер.
6. Обязательно обфусцируйте код и используйте такие методы, как подписание кода и шифрование, чтобы предотвратить обнаружение и анализ программными средствами безопасности.
Вот пример кода на С, который осуществляет такую функцию как сбор и отправка скриншотов и сбор кликов мышкой и отправка этих данных (код содержит некоторые ошибки во избежание слепого копирования и использования):
void collect_mouse_clicks() {
Display *display = XOpenDisplay(NULL);
if (display == NULL) {
fprintf(stderr, "Failed to open X display\n");
exit(1);
}
XEvent event;
while (1) {
XNextEvent(display, &event);
if (event.type == ButtonPress) {
// Send mouse coordinates to server
}
}
}
void capture_screenshot() {
Display *display = XOpenDisplay(NULL);
if (display == NULL) {
fprintf(stderr, "Failed to open X display\n");
exit(1);
}
Window root = DefaultRootWindow(display);
XWindowAttributes attrs;
XGetWindowAttributes(display, root, &attrs);
int width = attrs.width;
int height = attrs.height;
XImage *image = XGetImage(display, root, 0, 0, width, height, AllPlanes, ZPixmap);
// Send image data to server
}
Если мы говорим про использование пейлоада во вложении типа экселевской таблицы, то примерный алгоритм таков:
- Создайте новую таблицу Excel или откройте существующую, которую вы хотите использовать для доставки полезной нагрузки.
- Нажмите "Alt + F11", чтобы открыть окно редактора Visual Basic Editor (VBE).
- В окне VBE выберите "Insert" -> "Module", чтобы создать новый модуль.
- В новом модуле вставьте код полезной нагрузки, который вы хотите вставить в электронную таблицу. Убедитесь, что код правильно отформатирован и не содержит ошибок.
- Сохраните модуль и закройте окно VBE.
- Выберите ячейку в электронной таблице, в которую вы хотите вставить полезную нагрузку. Это может быть любая ячейка в любом рабочем листе рабочей книги.
- Щелкните правой кнопкой мыши на выбранной ячейке и выберите "Форматировать ячейки" из контекстного меню.
- В диалоговом окне "Формат ячеек" выберите вкладку "Число", а затем выберите "Пользовательский" из списка "Категория".
- В поле "Тип" введите следующий код: =CALL("Module1.payload"). Примечание: "Module1" должно быть заменено именем модуля, в который вы вставили код полезной нагрузки.
- Нажмите "OK", чтобы закрыть диалоговое окно и применить пользовательский формат к ячейке.
- Сохраните таблицу Excel и выйдите из приложения.
- Когда электронная таблица будет открыта снова, полезная нагрузка будет выполнена автоматически.
Но, как и говорилось выше, всегда следует помнить о том, что подобное ПО оснащено определенными мерами безопасности, например, песочницей. Как это примерно работает у екселя:
- Когда пользователь открывает файл Excel, Excel запускает приложение в изолированной среде, чтобы изолировать выполнение приложения от остальной системы.
- Среда "песочницы" ограничивает доступ приложения к системным ресурсам, таким как файлы, сетевые подключения и реестр.
- Приложение в песочнице имеет доступ к ограниченному набору API и библиотек, которые считаются безопасными в песочнице.
- Когда пользователь взаимодействует с приложением "песочницы", приложение отправляет запросы операционной системе на выполнение определенных действий, таких как чтение файла или открытие сетевого соединения.
- Эти запросы перехватываются "песочницей" и оцениваются, чтобы определить, являются ли они безопасными и разрешенными в среде "песочницы".
- Если запрос считается небезопасным или недопустимым, "песочница" блокирует запрос и не дает приложению выполнить действие.
- Если запрос признан безопасным, песочница позволяет приложению выполнить запрошенное действие в ограниченных рамках среды песочницы.
- Когда пользователь закрывает файл Excel, среда "песочницы" завершается, и все изменения, внесенные приложением "песочницы", удаляются.
Конечно, песочницу тоже можно обойти, но это требует углубленных знаний работы приложения, мониторинга уязвимостей данного ПО и т.д.
Также следует помнить, что у каждого ПО своя песочница и свои особенности исполнения кода.
Кстати, иногда фишинг может использоваться для благих целей: для установления личности пользователя, который совершает противоправные действия в сети, например. Но делать это самостоятельно ни в коем случае нельзя, подобные действия опасны и могут влечь за собой очень серьезные последствия. Это может делать исключительно при согласовании с правоохранительными органами.
И второе кстати: в этих двух частях подразумевалось, что атаковать мы будем компьютер\ноутбук таргета, потому что для мобилок алгоритм будет другой. Email фишинг на мобильные устройства тоже актуален, так как многие хранят на телефоне важную конфиденциальную информацию + в основном, общаются в мессенджерах с телефонов.