
** 開発終了 ** 通信プロトコルとしてBackground Intelligent Transfer Service (BITS)を使用し、EDRのユーザーモードフッキング回避のためにDirect Syscalls + Dinvokeを採用したC2フレームワーク。
██╗ ██████╗ ██╗ ██████╗ ██╗████████╗███████╗
██║ ██╔═══██╗██║ ██╔══██╗██║╚══██╔══╝██╔════╝
██║ ██║ ██║██║ ██████╔╝██║ ██║ ███████╗
██║ ██║ ██║██║ ██╔══██╗██║ ██║ ╚════██║
███████╗╚██████╔╝███████╗██████╔╝██║ ██║ ███████║
╚══════╝ ╚═════╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚══════╝
LOLBITS は、Microsoft の Background Intelligent Transfer Service (BITS) を使用して、侵害されたホストとバックエンド間の通信チャネルを確立する C2 フレームワークです。C2 バックエンドは、一見無害な Flask Web アプリケーションの背後に隠されており、アプリが受信する HTTP リクエストに有効な認証ヘッダーが含まれている場合にのみアクセス可能です。このツールは高度に監視された環境で使用することを意図しているため、EDR および AV による検出を回避するために以下の機能が実装されています。
アーキテクチャに関して、LOLBITS は主に 3 つの要素で構成されています。
プロキシによるコンテンツ検査を防ぐために、エージェントと C2 サーバー間で送信されるすべての関連コンテンツは、ランダムに生成された事前共有秘密鍵を使用して RC4 で暗号化されます。インフラストラクチャの動作の概要図を以下に示します。
ブルーチームが古いリクエストの一部を再現して C2 バックエンドインフラストラクチャを発見するのを防ぐために、各認証ヘッダーはランダムに生成され、1 サイクル(サイクルは POST リクエストとそれに続く GET リクエストで構成されます)のみ有効です。古い認証ヘッダーは無視され、それらのリクエストに対しては無害な Web サイトが表示されます。
このツールの機能の一部は、他のプロジェクトのコードを再利用したり、複数のサイバーセキュリティ研究者の努力により実装されています。以下に、このツールの改善に何らかの形で使用された外部の成果物やプロジェクトへのリンクを示します。
C2 インフラストラクチャには、Windows Server 2016 以降、Python 3.4 以上、PowerShell 5.1 以上が必要です。 C# エージェントは、Windows Server 2012、Windows Server 2016、Windows Server 2019、Windows 7、Windows 8.1、Windows 10 で正常にテストされています。コンパイルには以下が必要です。
1.- このリポジトリを C2 サーバーにクローンします
git clone https://github.com/Kudaes/LOLBITS.git
2.- Windows Server Manager から Web サーバー(IIS)をインストールします。CGI、ASP.NET、.NET Extensibility の各ロールがインストールされていることを確認してください。
また、IIS 用の .NET Framework と BITS 機能もインストールしてください。
3.- setup.ps1 スクリプトを 管理者として 実行し、インフラストラクチャ全体を展開し、C# エージェントをセットアップします。
4.- C# エージェントをコンパイルします。コンパイルにより、.exe ファイルと外部依存関係(Newtonsoft.Json.dll)が生成されます。ILMerge を使用して単一の .exe にまとめるか、両方のファイルをそのまま侵害されたホストに送信できます。DEBUG 出力を回避するには、プロジェクトを Windows アプリケーション としてコンパイルしてください。
5.- (オプション) デフォルトでは、setup.ps1 スクリプトは、デフォルトの HTTP ポート(80/TCP)で待受ける lawlbits という新しい Web サイトを IIS に作成します。この新しい Web サイトは HTTP over TLS を使用せず、C# エージェントが C2 に送信するリクエストの内容は事前共有のランダムに生成された秘密鍵を使用して RC4 で暗号化されていますが、新しいサイトに HTTPS を設定することをお勧めします。そのためには、lawlbits に対して Let's Encrypt を使用することをお勧めします。これは HTTPS を設定する最も簡単な方法の 1 つです。その後、Program.cs の変数 Url を、デフォルトの HTTP ではなく HTTPS を使用するように変更することを忘れないでください。
リバースシェルを取得するには、C2 サーバーのコマンドプロンプトで python lawlbin.py と入力し、侵害されたホストで C# エージェントを実行します。
このプロジェクトは以前の失敗したプロジェクトの残骸から生まれたため、古い機能の一部が残っています。以前のプロジェクトは、利用可能なすべてのコマンドを Living off The Land Binaries のみを使用して実行するシェルでした。これが LOLBITS の LOL の由来であり、以下の機能は LOLBINS のみを使用して実行されます(これにより、AWS や一部の AV/EDR フィルターをバイパスするのに役立つ可能性があります)。
これらの機能は一部の環境では興味深いかもしれませんが(PowerShell を使用せずにリモートファイルをダウンロード?いいですね!)、C2 コンソール用の古いコードを再利用するために残しています。以下は、クラシックなレッドチームのコンテキストでより有用であろう他の機能のリストです。
nc -lvp <port> を実行するだけです)。使用上のヒントを得るには、help または <somecommand> help と入力してください。
すべてのコントリビューションを 大いに歓迎します。
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)GNU ライセンスの下で配布されています。詳細については LICENSE を参照してください。