USB - инъекция при помощи Rawcoon¹ .
¹ - Rawcoon является USB-устройством, которое представляет собой компьютер в качестве клавиатуры. Он посылает нажатия клавиш, чтобы открыть терминал, загрузить ваш скрипт и выполнить его.
Введение
Для тех из нас, кто еще не знаком с USB-инъекциями нажатия клавиш, концепция довольно проста: USB-устройство, напоминающее обычную флешку, но выполняющее функции клавиатуры, отправляет последовательность нажатий клавиш при подключении. Это позволяет запускать некоторые действия на любом компьютер, к которому он подключен, без необходимости какого-либо взаимодействия с пользователем.
На рынке появилось несколько устройств, которые позволяют это, например Malduino 46 или RubberDucky 13, которые обычно позволяют пользователю настраивать или «программировать» последовательность нажатий клавиш на устройстве.
Я всегда был поражен и заинтригован развитием этой технологией и ее способностью доставлять полезную нагрузку на разблокированные компьютеры таким "скрытным" способом - просто подключить устройство к USB-порту и затем тихо уйти.
Это все конечно хорошо, но, к сожалению, это не волшебство, чтобы всё было так легко, и есть некоторые важные недостатки:
Rawcoon
Я хотел создать другой вид USB-инъекционного инструмента, который не будет ограничен этими соображениями. Я решил назвать это Rawcoon.
Главная идея
Идея заключается в том, чтобы разместить сценарий полезной нагрузки где-то в облаке, загрузить USB-устройство и выполнить его на целевом компьютере. Выполняя скрипт (Из файла), нам больше не нужно было бы беспокоиться о раскладке клавиатуры, а наличие скрипта в облаке позволило бы нам быстро обновить его, не используя компьютер для подключения USB-устройства - простого смартфона с доступом в интернет могло быть достаточно. Кроме того, использование широко стандартного сценария, такого как sh (shell script), устраняет большую часть необходимости специально ориентироваться на конкретную операционную систему - становится возможным писать сценарии независимо от ОС.
Таким образом, это позволило бы устранить все проблемы, упомянутые выше. Однако остались ещё некоторые нюансы.
Хорошо, мы можем поместить все, что захотим, в «сценарий полезной нагрузки» (поскольку он будет интерпретироваться из файла, а не «набираться» устройством), но нам все еще нужно, чтобы устройство фактически загрузило сценарий и выполнило его - и для этого нам нужно еще отправить нажатия клавиш.
Решение проблемы с раскладкой клавиатуры
Во-первых, чтобы обойти проблему с раскладкой клавиатуры, я решил, что Rawcoon будет работать только с «универсальными» клавишами - теми, которые никогда не меняются при разных раскладках клавиатуры (ну, по крайней мере, большинство из них). К счастью, их достаточно, чтобы запустить curl (Кроссплатформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL ) со всеми необходимыми аргументами для загрузки материалов из Интернета. Но URL-адреса, которые мы свертываем, также должны быть ограничены этими «универсальными» символами. Это привело к выбору домена ' rc0.ch 29 '¹
ОС-Агностик
Для справки, агностицизм философская концепция, согласно которой мир непознаваем; люди не могут знать ничего достоверного о Боге и о действительной сущности вещей.
Далее проблема с операционной системой. Чтобы обойти это, Rawcoon начинает свой код с отправки некоторых сочетаний клавиш, чтобы открыть терминал. Для Windows мы открываем меню «Пуск» и начинаем вводить «cmd». Для MacOS CMD + Space открывает функцию поиска, где мы вводим «terminal² » . Для Linux мы используем общие комбинации клавиш CTRL + ALT + Space / CTRL-ALT-T. Когда терминал открыт, выдается команда curl для загрузки bootstrap.- это не фактическая полезная нагрузка, а скрипт, который будет запускаться как в оболочках sh, так и в cmd.exe. С этого момента Rawcoon практически закончил работу, завершил вводом команды 'exit' и попытался свернуть окно терминала - теперь запускается скрипт начальной загрузки. Он начинается с создания каталога .r и входит в него. Затем скрипт начальной загрузки использует маркер комментария rem из cmd.exe для выборочного выполнения различных действий³ в зависимости от типа оболочки (sh / cmd.exe). Если оболочкой является cmd.exe, мы загружаем небольшой zip-файл, содержащий облегченные двоичные файлы для sh, grep, sed и кучу других базовых утилит оболочки. В любом случае мы также скачиваем промежуточный загрузчик (как «.i») и фактический скрипт полезной нагрузки (как «.r»). Затем мы запускаем промежуточный загрузчик, который зависит от ОС. Для оболочек он просто начинает выполнять полезную нагрузку в фоновом процессе. Для cmd.exe сначала распаковывается zip-файл, содержащий sh и другие утилиты, затем создается фоновый процесс powershell для выполнения файла сценария полезной нагрузки через sh.
На этом этапе наша полезная нагрузка выполняется в оболочке sh (независимо от ОС) в фоновом режиме.
Текущее состояние
Несколько дней назад я начал продавать эти Rawcoon на Ebay 44 по цене $ 16,49. Веб-сайт https://www.rawcoon.ch/ 108 .
Как пользоваться
Перво-наперво, нам нужно войти на https://rawcoon.ch/login 11 . Для этого требуется аккаунт Google / Gmail. Ничего о вас не хранится в нашей базе данных.
После входа в систему мы можем зарегистрировать наше первое устройство. Каждое устройство Rawcoon поставляется с уникальным ключом устройства , который мы можем использовать для регистрации устройства в нашей учетной записи. Мы можем дать «отображаемое имя» каждому устройству при регистрации (это можно изменить позже).
В приведенных ниже примерах я зарегистрировал свое устройство как «TrashPanda». После регистрации устройство появится в меню слева. Когда мы выбираем его, мы можем начать писать наш скрипт полезной нагрузки в главном текстовом редакторе.
Если наш скрипт создан для сбора активов (см. Https://rawcoon.ch/faq.html 12 - для получения подробной информации о том, как это сделать), они появятся в списке внизу страницы. Каждый ресурс отображается с датой / временем сбора, а также с публичным IP-адресом, с которого он был собран.
Примечания
Спасибо за прочтение этой статьи и хорошего дня. В очередной раз хочу поблагодарить admin за предложение данной статьи.
Оригинальная статья: https://0x00sec.org/t/better-usb-injection-with-rawcoon/16843
neopaket
¹ - Rawcoon является USB-устройством, которое представляет собой компьютер в качестве клавиатуры. Он посылает нажатия клавиш, чтобы открыть терминал, загрузить ваш скрипт и выполнить его.
Введение
Для тех из нас, кто еще не знаком с USB-инъекциями нажатия клавиш, концепция довольно проста: USB-устройство, напоминающее обычную флешку, но выполняющее функции клавиатуры, отправляет последовательность нажатий клавиш при подключении. Это позволяет запускать некоторые действия на любом компьютер, к которому он подключен, без необходимости какого-либо взаимодействия с пользователем.
На рынке появилось несколько устройств, которые позволяют это, например Malduino 46 или RubberDucky 13, которые обычно позволяют пользователю настраивать или «программировать» последовательность нажатий клавиш на устройстве.
Я всегда был поражен и заинтригован развитием этой технологией и ее способностью доставлять полезную нагрузку на разблокированные компьютеры таким "скрытным" способом - просто подключить устройство к USB-порту и затем тихо уйти.
Это все конечно хорошо, но, к сожалению, это не волшебство, чтобы всё было так легко, и есть некоторые важные недостатки:
- Последовательность нажатий клавиш должна быть адаптирована к целевой операционной системе (Значит нельзя создать код, адаптивный под любую ситуацию)
- Поскольку устройство функционально является клавиатурой, оно подчиняется текущей раскладке клавиатуры ОС (Отправленные нажатия клавиш будут преобразованы в разные символы в зависимости от того, какая раскладка клавиатуры используется)
Rawcoon
Я хотел создать другой вид USB-инъекционного инструмента, который не будет ограничен этими соображениями. Я решил назвать это Rawcoon.
Главная идея
Идея заключается в том, чтобы разместить сценарий полезной нагрузки где-то в облаке, загрузить USB-устройство и выполнить его на целевом компьютере. Выполняя скрипт (Из файла), нам больше не нужно было бы беспокоиться о раскладке клавиатуры, а наличие скрипта в облаке позволило бы нам быстро обновить его, не используя компьютер для подключения USB-устройства - простого смартфона с доступом в интернет могло быть достаточно. Кроме того, использование широко стандартного сценария, такого как sh (shell script), устраняет большую часть необходимости специально ориентироваться на конкретную операционную систему - становится возможным писать сценарии независимо от ОС.
Таким образом, это позволило бы устранить все проблемы, упомянутые выше. Однако остались ещё некоторые нюансы.
Хорошо, мы можем поместить все, что захотим, в «сценарий полезной нагрузки» (поскольку он будет интерпретироваться из файла, а не «набираться» устройством), но нам все еще нужно, чтобы устройство фактически загрузило сценарий и выполнило его - и для этого нам нужно еще отправить нажатия клавиш.
Решение проблемы с раскладкой клавиатуры
Во-первых, чтобы обойти проблему с раскладкой клавиатуры, я решил, что Rawcoon будет работать только с «универсальными» клавишами - теми, которые никогда не меняются при разных раскладках клавиатуры (ну, по крайней мере, большинство из них). К счастью, их достаточно, чтобы запустить curl (Кроссплатформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL ) со всеми необходимыми аргументами для загрузки материалов из Интернета. Но URL-адреса, которые мы свертываем, также должны быть ограничены этими «универсальными» символами. Это привело к выбору домена ' rc0.ch 29 '¹
ОС-Агностик
Для справки, агностицизм философская концепция, согласно которой мир непознаваем; люди не могут знать ничего достоверного о Боге и о действительной сущности вещей.
Далее проблема с операционной системой. Чтобы обойти это, Rawcoon начинает свой код с отправки некоторых сочетаний клавиш, чтобы открыть терминал. Для Windows мы открываем меню «Пуск» и начинаем вводить «cmd». Для MacOS CMD + Space открывает функцию поиска, где мы вводим «terminal² » . Для Linux мы используем общие комбинации клавиш CTRL + ALT + Space / CTRL-ALT-T. Когда терминал открыт, выдается команда curl для загрузки bootstrap.- это не фактическая полезная нагрузка, а скрипт, который будет запускаться как в оболочках sh, так и в cmd.exe. С этого момента Rawcoon практически закончил работу, завершил вводом команды 'exit' и попытался свернуть окно терминала - теперь запускается скрипт начальной загрузки. Он начинается с создания каталога .r и входит в него. Затем скрипт начальной загрузки использует маркер комментария rem из cmd.exe для выборочного выполнения различных действий³ в зависимости от типа оболочки (sh / cmd.exe). Если оболочкой является cmd.exe, мы загружаем небольшой zip-файл, содержащий облегченные двоичные файлы для sh, grep, sed и кучу других базовых утилит оболочки. В любом случае мы также скачиваем промежуточный загрузчик (как «.i») и фактический скрипт полезной нагрузки (как «.r»). Затем мы запускаем промежуточный загрузчик, который зависит от ОС. Для оболочек он просто начинает выполнять полезную нагрузку в фоновом процессе. Для cmd.exe сначала распаковывается zip-файл, содержащий sh и другие утилиты, затем создается фоновый процесс powershell для выполнения файла сценария полезной нагрузки через sh.
На этом этапе наша полезная нагрузка выполняется в оболочке sh (независимо от ОС) в фоновом режиме.
Текущее состояние
Несколько дней назад я начал продавать эти Rawcoon на Ebay 44 по цене $ 16,49. Веб-сайт https://www.rawcoon.ch/ 108 .
Как пользоваться
Перво-наперво, нам нужно войти на https://rawcoon.ch/login 11 . Для этого требуется аккаунт Google / Gmail. Ничего о вас не хранится в нашей базе данных.
После входа в систему мы можем зарегистрировать наше первое устройство. Каждое устройство Rawcoon поставляется с уникальным ключом устройства , который мы можем использовать для регистрации устройства в нашей учетной записи. Мы можем дать «отображаемое имя» каждому устройству при регистрации (это можно изменить позже).
В приведенных ниже примерах я зарегистрировал свое устройство как «TrashPanda». После регистрации устройство появится в меню слева. Когда мы выбираем его, мы можем начать писать наш скрипт полезной нагрузки в главном текстовом редакторе.
Если наш скрипт создан для сбора активов (см. Https://rawcoon.ch/faq.html 12 - для получения подробной информации о том, как это сделать), они появятся в списке внизу страницы. Каждый ресурс отображается с датой / временем сбора, а также с публичным IP-адресом, с которого он был собран.
Примечания
[1] На самом деле, некоторые символьные клавиши все еще довольно проблематичны. В частности, цифры не могут быть надежно набраны с использованием их обычных клавиш. Действительно, французская раскладка клавиатуры, например, требует нажатия клавиши «Shift» для доступа к номерам. Решением этой проблемы было то, что Rawcoon обнаружил состояние индикатора NumLock (сообщается хостом на клавиатуре) и включил его при необходимости. Цифры, доступные через цифровую клавиатуру, на самом деле являются «универсальными». Еще одна важная проблема - это точка ('.'), Которую можно набирать с помощью цифровой клавиатуры на большинстве клавиатур, за исключением немецкой раскладки, на которой вместо нее выводится запятая (','). Чтобы обойти эту проблему, запросы скручивания фактически выполняются дважды - один раз с цифровой точкой, затем второй с «классической» точкой. Какой бы ни была раскладка клавиатуры,
[2] Поскольку не все компьютеры одинаковы, некоторым может потребоваться больше времени, чем другим, чтобы фактически открыть терминал и заставить оконную систему ОС переключить фокус ввода данных на него. Поэтому Rawcoon вводит произвольные задержки после определенных клавиш - например, в Windows добавляется несколько миллисекунд задержки после нажатия клавиши «Пуск» перед началом ввода «cmd». Это дает ОС достаточно времени, чтобы фактически открыть меню и начать регистрацию ввода. Задержки, однако, являются «слепыми» в том смысле, что Rawcoon не имеет обратной связи с хост-компьютером и не может «знать», когда продолжать печатать. Следовательно, эти задержки были сделаны целенаправленно «достаточно длинными», чтобы вместить как можно больше систем, и при этом они не были настолько длинными, чтобы стать недостатком.
[3] Использование команды 'alias' не влияет на cmd.exe, но позволяет нам переопределить маркер комментария 'rem' cmd.exe в оболочках sh. Пример ниже показывает это:
Код:alias rem="" 2> nul rem rm nul Это позволяет нам писать строки, которые будут выполняться только в оболочках sh, но будут рассматриваться как комментарии в cmd.exe. Мы даже можем создать оператор if, который позволит нам выборочно запускать файлы в cmd.exe или sh: rem echo This is an sh shell rem if uname | grep -q 'not_linux'; then echo This is cmd.exe rem fi
Спасибо за прочтение этой статьи и хорошего дня. В очередной раз хочу поблагодарить admin за предложение данной статьи.
Оригинальная статья: https://0x00sec.org/t/better-usb-injection-with-rawcoon/16843
neopaket