Msfgaf backdoor как пользоваться
Перейти к содержимому

Msfgaf backdoor как пользоваться

Знай своего врага: создаём Node.js-бэкдор

Бэкдор в собственном коде, который может незаметно взаимодействовать с операционной системой, это один из самых страшных кошмаров любого разработчика. В настоящий момент в npm имеется более 1.2 миллиона общедоступных пакетов. За последние три года зависимости проектов превратились в идеальную цель для киберпреступников. Экосистема npm может оказаться на удивление хрупкой в том случае, если сообщество разработчиков не обратит пристальное внимание на безопасность. В качестве доказательств этой мысли достаточно вспомнить о тайпсквоттинге и об инциденте с npm-пакетом event-stream.

Автор статьи, перевод которой мы сегодня публикуем, хочет, в образовательных целях, рассказать о том, как создавать бэкдоры для платформы Node.js.

Что такое бэкдор?

Вот какое определение понятия «бэкдор» («backdoor») даётся на ресурсе Malwarebytes: «В сфере кибербезопасности бэкдором называют любой метод, пользуясь которым авторизованные и неавторизованные пользователи могут обойти обычные меры безопасности и получить высокоуровневый доступ (root-права) к компьютерной системе, сети, приложению. После получения подобного доступа к системе киберпреступники могут использовать бэкдор для кражи персональных и финансовых данных, установки дополнительных вредоносных программ, взлома устройств».

Бэкдор состоит из двух основных частей:

  1. Вредоносный код, внедрённый в атакованную систему, и выполненный в ней
  2. Открытый канал связи, который позволяет атакующему отправлять команды бэкдору и управлять удалённым компьютером.

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

Зачем нам child_process?

Стандартный модуль Node.js child_process можно использовать для запуска дочерних процессов. Основная идея тут заключается в том, что это даёт нам возможность выполнять команды (поступающие в процесс через стандартный поток ввода — stdin ) вроде pwd или ping snyk.io , а затем интегрировать результат работы этих команд (выходные данные поступают из потока вывода — stdout ) и возможные сообщения об ошибках (из потока stderr ) в основную программу.

Выполнение процесса и его взаимосвязь со стандартными потоками ввода, вывода и ошибок, играющих роль входных и выходных потоков для запущенного системного процесса

Существуют различные способы выполнения дочерних процессов. Для данной атаки легче всего воспользоваться функцией exec , которая позволяет выполнять коллбэки и помещать в соответствующие буферы то, что попадает в потоки stdout и stderr . Например — то, что будет выдано в результате выполнения команды cat passwords.txt . Обратите внимание на то, что функция exec — это не лучший способ выполнения длительных задач наподобие ping snyk.io .

Как объединить функцию exec с HTTP-сервером?

Я разработал простой, невинно выглядящий пакет промежуточного слоя browser-redirect, предназначенный для Express-приложений. Он перенаправляет пользователей, работающих не в Chrome, на browsehappy.com. Вредоносный код я включу в этот пакет.

Код пакета будет примерно таким:

Жертве достаточно установить пакет и воспользоваться им в Express-приложении так же, как пользуются любым пакетом промежуточного слоя:

Обратите внимание на то, что в данном случае, даже если используется Helmet , это не защищает приложение от атаки.

Вредоносный код

Реализация вредоносного кода весьма проста:

Как работает наш бэкдор? Для ответа на этот вопрос нужно учесть следующее:

  1. Нужно, чтобы у злоумышленника была бы возможность аутентификации при подключении к бэкдору. Это позволит не дать другим злоумышленникам пользоваться чужим бэкдором. В данном случае мы используем md5-хэш (слово p@ssw0rd1234 превращается в c4fbb68607bcbb25407e0362dab0b2ea ). Данный хэш нужно включить в запрос в качестве значения заголовка knock_knock . Программа, обнаружив соответствующее значение, аутентифицирует того, кто имеет право с ней работать.
  2. Нужно, чтобы у автора бэкдора был бы механизм идентификации заражённых серверов. Нам не нужны некие сведения о серверах, не относящиеся к нашей задаче. Поэтому мы включаем в ответ сервера заголовок Content-Sec-Policy , который внешне очень похож на Content-security-policy . Но это — совсем не одно и то же. Тут мы пользуемся механизмом тайпсквоттинга. Теперь цели можно искать с помощью Shodan, пользуясь таким запросом: /search?query=Content-Sec-Policy%3A+default-src+%27self%27 .
  3. Параметр запроса ?cmd можно использовать для выполнения на заражённом сервере неких команд. При этом обращаться к серверу можно по любому маршруту. В результате при выполнении запросов вроде victim.com/?cmd=whoami или ?cmd=cat .env в ответ мы получим сведения в формате JSON.

Способы распространения бэкдора

Теперь, когда код бэкдора готов, нужно подумать о том, как распространять вредоносный пакет.

Первый шаг — публикация пакета. Я опубликовал пакет browser-redirect@1.0.2 в npm. Но если взглянуть на GitHub-репозиторий проекта, то вредоносного кода там не будет. Убедитесь в этом сами — взгляните на ветку проекта master и на релиз 1.0.2. Это возможно благодаря тому, что npm не сверяет код публикуемых пакетов с кодом, опубликованным в некоей системе, предназначенной для работы с исходным кодом.

Хотя пакет и опубликован в npm, его шансы на распространение пока очень низки, так как потенциальным жертвам ещё нужно найти его и установить.

Ещё один способ распространения пакета заключается в добавлении вредоносного модуля в качестве зависимости для других пакетов. Если у злоумышленника есть доступ к учётной записи с правами публикации какого-нибудь важного пакета, он может опубликовать новую версию такого пакета. В состав зависимостей новой версии пакета будет входить и бэкдор. В результате речь идёт о прямом включении вредоносного пакета в состав зависимостей популярного проекта (взгляните на анализ инцидента, произошедшего с event-stream). В качестве альтернативы злоумышленник может попытаться сделать PR в некий проект, внеся в lock-файл соответствующие изменения. Почитать об этом можно здесь.

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

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

Обратите внимание на то, что выпущен новый API (находящийся пока в статусе private beta), который позволяет узнать о том, был ли пакет опубликован с использованием IP-адреса сети TOR, и о том, была ли при публикации использована двухфакторная аутентификация.

Более того, злоумышленники могут настроить вредоносный код так, чтобы он запускался бы в виде скрипта, выполняемого перед установкой или после установки любого npm-пакета. Существуют стандартные хуки жизненного цикла npm-пакетов, которые позволяют выполнять код на компьютере пользователя в определённое время. Например, система для организации тестирования проектов в браузере, Puppeteer, использует эти хуки для установки Chromium в хост-системе.

Райан Даль уже говорил об этих уязвимостях на JSConf EU 2018. Платформа Node.js нуждается в более высоком уровне защиты для предотвращения этого и других векторов атак.

Вот некоторые выводы, сделанные по результатам исследования безопасности опенсорсного ПО:

  • 78% уязвимостей обнаруживается в непрямых зависимостях, что усложняет процесс избавления от таких уязвимостей.
  • За 2 года наблюдается рост уязвимостей в библиотеках на 88%.
  • 81% респондентов полагают, что за безопасность должны отвечать сами разработчики. Они, кроме того, считают, что разработчики недостаточно хорошо для этого подготовлены.

Итоги: как защититься от бэкдоров?

Контролировать зависимости не всегда легко, но в этом деле вам могут помочь несколько советов:

Что такое Backdoor и какой вред он может нанести?

Что такое Backdoor и как вред он может нанести?

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

Как распространяются Backdoor?

Как распространяются Backdoor?

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

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

Пользователи сами могут непреднамеренно устанавливать на свои компьютеры бэкдоры. Такой вирус обычно прикрепляется к файлообменным приложениям или электронной почте. Методы scareware и вирусы-вымогатели при этом не применяются.

Некоторые бэкдоры используют определенные уязвимости в удаленных системах, либо на компьютерах, либо в сети.

Какой вред могут нанести Backdoor?

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

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

Бэкдорные атаки приносят прибыли от записей перемещений пользователей в интернете, заражения файлов, повреждения системы и порчи приложений.

Примеры атак Backdoor

Одним из таких примеров являются Sticky Attacks. В этом случае, злоумышленники используют «атаку грубой силы» на сервер с включенным протоколом удаленного рабочего стола (RDP) и могут получить учетные данные для доступа к компьютеру. Затем киберпреступники используют скрипты и инструменты операционной системы, чтобы остаться незамеченными и установить простой бэкдор.

Даже если жертвы понимают, что были скомпрометированы и меняют пароли, злоумышленники тогда применяют Sticky Keys для доступа к компьютеру без необходимости повторно вводить учетные данные.

DoublePulsar

Еще одним примером является DoublePulsar, инструмент для внедрения бэкдоров, который часто используется хакерскими группами. Он может заразить сразу несколько тысяч компьютеров под управлением Microsoft Windows всего за несколько дней и активно используется для атак с 2017 года.

Статья Взлом Android — устройства. (Backdoor-apk + HTA server)

Всем привет! В этой теме я хочу показать еще один способ взлома Android – устройства, на мой взгляд, не сложный, но действенный. Использовать будем QR-код, HTA – сервер и естественно Kali Linux.

upload_2016-12-5_13-26-37.png

Для начала нам потребуется софт, для того, чтобы поместить полезную нагрузку в APK – файл. Мы будем использовать Backdoor-apk, скачаем его с Github командой:

upload_2016-12-5_13-27-3.png

Затем установим все необходимые библиотеки.

> apt-get install lib32stdc++6 lib32ncurses5 lib32z1

upload_2016-12-5_13-27-30.png


Теперь нам понадобится приложение, в которое мы будем «вшивать» полезную нагрузку, для этого перейдем на сайт apk4fun.com и выберем понравившееся. Сразу оговорюсь, что я перепробовал порядка ста приложений, но большинство из них не компилировалось, при попытке записать нагрузку в него. Еще какая-то часть работала с ошибками. Так же я сталкивался с проблемой, когда сессия отваливались по прошествии 30 – 50 сек после открытия. А именно, когда телефон уходил в ждущий режим и гас экран.

Был интересный момент c Viber, пару раз мне удавалось «вызвать» сессию тогда когда мне было нужно, просто написав сообщение жертве. Но потом эксперимент провалился, приложение перестало работать от слова совсем.

Итак, после нескольких часов тестов я остановился на игре 2048. Как это ни забавно, но именно она работала стабильнее всего, и сессия meterpreter работала корректно.

Качаем именно эту версию, так как другие я просто не пробовал:

upload_2016-12-5_13-29-42.png

upload_2016-12-5_13-30-4.png

Затем скопируем файл в папку с установленным Backdoor-apk.

upload_2016-12-5_13-30-20.png

Теперь, выполняя по очереди следующие команды, создадим файл с полезной нагрузкой:

> cd backdoor-apk

> cd backdoor-apk

> ./backdoor-apk.sh com.digiplex.game-2.7.2.apk (я сократил ему имя)

upload_2016-12-5_13-30-55.png

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

upload_2016-12-5_13-31-17.png

Этот процесс сгенерирует готовый файл в директорию, в моем случае, /root/backdoor-apk/backdoor-apk/original/dist

upload_2016-12-5_13-31-53.png

upload_2016-12-5_13-31-59.png


На этом пока остановимся.

Пришло время запустить SET — Social Engineering Toolkit – набор инструментов для социальной инженерии. Вектор выбранной атаки – это клонирование сайта Google Play и скачивания игры 2048 именно с нашего, клонированного сайта. Дальнейшие действия не должны выходить за рамки приведенной ниже инструкции. Запускаем SET:

> setoolkit

Выбираем:

upload_2016-12-5_13-32-59.png

Выберем Website Attack Vectors.

upload_2016-12-5_13-33-17.png

Нас интересует HTA – Attack Method.

upload_2016-12-5_13-33-53.png

Следующий выбранный пункт – это ввод адреса сайта, который мы склонируем. Базироваться он будет нашей локальной сети, и единственная его цель, это доставить игру с полезной нагрузкой на смартфон цели. Так как по легенде это игра, то клонируем Google Market.

> https://play.google.com/store

upload_2016-12-5_13-38-50.png


Опции, которые будет запрашивать SET вы можете вводить такие же, как и при создании .apk файла. В моем случае 192.168.0.101 и порт 4444. Позже мы все изменим. Терминал с запущенным SET не закрываем.
Итак, Apache работает, ложный сайт склонирован. Если зайдем на адрес 192.168.0.101 с любого компьютера в нашей сети, то в случае успеха, попадем на фэйковый Google Play.

upload_2016-12-5_13-39-52.png

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

· Копируем файл с полезной нагрузкой в директорию /var/www/html (На Kali Linux машине)

· В файле index.html меняем указанную строку. Впишем туда название файла с игрой, но предварительно переименуем ее в Launcher.apk (Ctrl+F поиск по файлу)

upload_2016-12-5_13-40-34.png

Теперь, зайдя на страницу по адресу 192.168.0.101, мы не просто попадаем на ложный Google Play, но и скачиваем автоматически нашу игру 2048 переименованную в Launcher.apk.

upload_2016-12-5_13-41-38.png

Теперь мы оптимизируем процесс установки нашего приложения на целевое устройство.

Для начала установим расширение The QR Code Extension в наш браузер. Я использую Google Chrome.

upload_2016-12-5_13-42-7.png

На целевом устройстве должно присутствовать приложение для считывания QR – кодов, например, QR – Code Reader:

upload_2016-12-5_13-42-29.png

Перейдем на наш фейковый сайт Google Play и сгенерируем QR – код ссылку на него.

upload_2016-12-5_13-42-51.png

Просканировав QR – код с нашего целевого устройства мы скачиваем наш файл с полезной нагрузкой.

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

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