Alan Framework
Alan Framework は、レッドチーム活動で有用なポストエクスプロイテーションフレームワークです。
このツールが役立つと感じられたなら、スポンサーになることをご検討ください。
⚠⚠⚠ 免責事項 ⚠⚠⚠
この種のソフトウェアの作成はこれまで物議を醸してきました。なぜこのツールを作成したのか疑問に思われるなら、それは、学ぶための究極の経験は学んだことを実装することだと確信しているからです。リバースエンジニアリングの過程では、多くの小さな詳細が見落とされがちです。それらの詳細が少しずつ、研究者が全体像を把握するのを妨げます。最後に、私は何よりもプログラマーであり、この種のプログラムを開発することが大好きだからです😄
ダウンロード
Alan C2 Framework をダウンロード
主な機能
- 好みのツールをメモリ上で直接実行可能
- JavaScript スクリプトの実行(サードパーティ依存なし、メモリ上で実行)
- 完全準拠の SOCKS5 プロキシ
- 対応エージェントタイプ: PowerShell (x86/x64)、DLL (x86/x64)、実行ファイル (x86/x64)、シェルコード (x86/x64)
- Server.exe は Linux でも実行可能(dotnet core 経由)
- ネットワーク通信はセッションキーで完全に暗号化され、エージェントバイナリやトラフィックダンプからキーを復元することは不可能
- 通信は HTTP/HTTPS 経由で行われる
- 外部依存関係やライブラリのインストールは不要
- 強力なコマンドシェル
- エージェント設定は実行中に更新可能(ポートやプロトコルも変更可能)
ドキュメンテーション:
ブログ記事
使用方法の詳細については、ドキュメントをお読みください。
ソースコードのコンパイル
Alan をコンパイルするには、以下の手順を実行する必要があります:
- cmake がインストールされ、PATH が通っていることを確認してください(cmake --help を実行して動作を確認してください)
- Visual Studio 2022(Community Edition で問題ありません)をインストールしてください。これらの手順は VS 2022 17.3.1 でテストされています
- .NET デスクトップ開発、C++ によるデスクトップ開発、および F# 言語が Visual Studio スイートの一部としてインストールされていることを確認してください
- .NET ライブラリをインストールするには、./src/server/paket.exe install を実行してください
- Visual Studio で .src/server/ServerSln.sln ファイルを開いてください。ServerBuilder プロジェクトをスタートアッププロジェクトに設定してください(右クリック → スタートアッププロジェクトに設定)
- ServerBuilder を実行すると、すべてがコンパイルされます
- コンパイルが正常に終了した場合、Alan .zip ファイルは新しく作成されたディレクトリ Misc/out/release に配置されます
動画:
デモ動画
Alan v7.0.514.10 - SOCKS5 プロキシ  | Alan v6.0.511.28 - JS 実行  | Alan v5.0.509.20 - メモリ内実行  |
|---|
Alan v4.0.0 - x64 エージェント && インジェクト  | Alan v3.0.0 - その他のコマンド  | Alan v2.0.500.23  |
Alan v1.0.0  | | |
変更履歴
v7.0.514.10 - 2022/05/15
- ピボット用の
proxy コマンドを実装
info および info++ コマンドでエージェントがプロキシを使用しているか表示
- ネットワーク通信のバグを修正(Issue 2)
- 関数を序数でインポートする際の PE ローダーのエラーを修正
- JS モジュールがメモリを早期に解放するバグを修正
run コマンドで & オプションが機能しなかったエラーを修正
- ログメッセージをファイル
alan.log に保存するように変更
- 生成されたすべての出力とユーザー入力を
evidences フォルダ内の証拠ファイルに記録
info コマンドにマシン ID 情報を追加
- エージェント作成に
Vanilla パッケージタイプを追加。カスタムパッカーの統合が容易になりました。
v6.0.511.28 - 2022/02/24
- x86/x64 PE ローダーを変更し、PEB->Ldr フィールドを更新するように修正。これにより、インジェクトされた DLL に対してシステムが DLL_PROCESS_DETACH を呼び出せるようになりました。
- 最大応答サイズを 1GB に拡大。大きなファイルのダウンロードが修正されました。
- 設定にエージェントの有効期限を追加。
run コマンドを拡張し、JavaScript ファイルの実行をサポート。
info++ コマンドでボリュームラベルとファイルシステムタイプを表示するように修正。
v5.0.509.20 - 2021/12/13
run コマンドを実装
kill コマンドを実装
exec コマンドを実装
inject メッセージを削除(run コマンドをバックグラウンドで使用することで実現可能なため)
- ステージャーと PE ローダーを作成し、エージェントをよりステルスに。生成される各エージェントファイルは異なるハッシュを持つ
- 動的コードポリシー緩和をバイパスするためのコードインジェクションを改善
- ウィザード中に作成するエージェントファイル名を指定可能に
upload および download コマンドのエラーを修正
- シェル作成のエラーを修正。コマンドシェルのプロセストークンがエージェントと同じ整合性レベルを持っていなかった
- DLL エージェントアーティファクトからエクスポート関数を削除
info コマンドに現在の作業ディレクトリを追加
shell コマンドを拡張し、単一コマンドの実行に対応
v4.0.0 - 2021/09/26
inject コマンドを追加。このコマンドにより、オペレーターはリモートプロセスにコードをインジェクトできる
sleep コマンドに 400 ミリ秒の短いスリープを追加
sleep にジッターの概念を導入
- エージェントを x64 ビットに移植(PE32+ ローダーを含む)
- x86 PE ローダーのエラーを修正
- .NET エージェントランナーをよりステルスに実行するように変更
- HTTP/S リスナーの応答でカスタム Web サーバーを指定可能に
- 冗長なため、
listeners コマンドを削除
info コマンドを改善し、より多くの情報を表示
- エラーメッセージをより詳細に
- プロセストークンの種類(昇格されているかどうか)、特権、グループの情報を追加
v3.0.0 - 2021/05/15
- エージェントシェルの
quit コマンドを exit に変更
migrate コマンドによるエージェント移行を実装
- OS バージョン取得のエラーを修正
- 作成ウィザードでエージェント形式として DLL を追加
ps コマンドを実装し、現在実行中のプロセスを一覧表示
download コマンドを実装し、ファイルまたはディレクトリ全体をローカルにダウンロード
upload コマンドを実装し、侵害されたホストにファイルをアップロード
- HTTP サーバーの応答オプションとして
SuccessRequest を実装し、HTTP/S リスナーの応答をカスタマイズ
- 不正なリクエストに対する HTTP/S リスナーの応答をカスタマイズする
ErrorRequest を実装
- HTTP サーバーのリクエストオプションとして
prepend および append を実装し、エージェントプロファイルで指定可能
v2.0.500.23 - 2021/03/20
- エージェントの
detach コマンドを実装し、参加中のエージェントから一時的に退出
- シェルの
detach コマンドを実装し、コマンドシェルから一時的に退出
listeners コマンドを実装し、利用可能なリスナーを一覧表示
- TLS 経由でエージェントと通信する HTTPS リスナーを実装
get-config コマンドを実装し、現在のエージェント設定をダウンロード
update コマンドを実装し、エージェント設定を更新
- Windows7 をサポート
v1.0.0 - 2021/02/22