setodaNote

忘れる用のメモ書き for Cybersecurity

Cuckoo に難読化 Poweshell 解析モジュール CurtainCuckoo を導入する

CurtainCuckoo とは

Curtain は難読化された PowerShell を可読化するため Cuckoo モジュールです。このモジュールを使うためにはサンドボックスである Windows 側で PowerShell ScriptBlock Logging が有効になっている必要があります。ここでは Cuckoo 2.0.6 に追加する場合について記載しています。

f:id:soji256:20190603230911p:plain
CurtainCuckoo

CurtainCuckoo 導入手順

サンドボックス側:Powershell 5.1 の導入

サンドボックスが Windows 7 の場合は Powershell 2.0 が標準となっておりログ取得機能がないため Powershell をアップデートする必要があります。アップデートに必要なファイルは以下からダウンロードできます。

「0x80070422」というエラーが出てしまう場合

インストールの際に「0x80070422」というエラーが出てしまう場合は Windows Update のサービスが無効になっている可能性があります。 サービス「Windows Update」が開始されているか確認しましょう。

サンドボックス側:Powershell のログ出力設定

グループポリシーから以下の2つについてログ出力されるように設定します。

  • [Windowsキー] + [R]
  • "gpedit.msc" と入力
  • グループポリシー: [管理用テンプレート] > [Windows コンポーネント] > [Windows PowerShell]
    • PowerShell スクリプト ブロックのログ記録を有効にする:有効
    • モジュールログを有効にする:有効
      • 「モジュールログを有効にする」については左側にある「表示」ボタンから更に以下の2項目を登録しておきます。
Microsoft.PowerShell.*
Microsoft.WSMan.Management
  • コマンドプロンプトから gpupdate と入力してポリシーを適用する。

ホストマシン側:Curtain モジュールの適用

  • Curtain の入手
git clone https://github.com/karttoon/curtaincuckoo.git

結果として以下のようなファイルを修正しました。 対象フォルダは大きく2つ「cuckoo」と「.cuckoo」があります。 一部のフォルダ構造が似ているので、誤った方を修正しないように注意が必要です。

<make dir>
mkdir {cuckoo dir}/cuckoo/web/templates/analysis/pages/curtain

<copy files>
cp auxiliary_curtain.py ~/.cuckoo/analyzer/windows/modules/auxiliary/curtain.py
cp processing_curtain.py {cuckoo dir}/cuckoo/processing/curtain.py
cp index.html {cuckoo dir}/cuckoo/web/templates/analysis/pages/curtain/
cp _altr.html {cuckoo dir}/cuckoo/web/templates/analysis/pages/curtain/
cp _filt.html {cuckoo dir}/cuckoo/web/templates/analysis/pages/curtain/
cp _orig.html {cuckoo dir}/cuckoo/web/templates/analysis/pages/curtain/

<edit files>
vi {cuckoo dir}/cuckoo/web/controllers/analysis/routes.py
vi {cuckoo dir}/cuckoo/web/templates/analysis/pages/nav-sidebar.html
vi {cuckoo dir}/cuckoo/web/templates/analysis/pages/sidebar.html
vi {cuckoo dir}/cuckoo/common/config.py
vi ~/.cuckoo/conf/auxiliary.conf
vi ~/.cuckoo/conf/processing.conf

結果例

f:id:soji256:20190603192539p:plain
Curtain - Cuckoo (1/2)

f:id:soji256:20190603192643p:plain
Curtain - Cuckoo (2/2)

トラブルシューティング

CuckooConfigurationError

[cuckoo] CRITICAL: CuckooConfigurationError: Configuration value 
auxiliary:curtain:enabled not present! 
This may indicate that you've incorrectly filled out 
the Cuckoo configuration, please double check it.

auxiliary.conf が正しく修正されていない場合などに表示されます。 ~/.cuckoo/conf/auxiliary.conf の内容を確認します。

CRITICAL: CuckooConfigurationError: Configuration value 
processing:curtain:enabled not present! 
This may indicate that you've incorrectly filled out 
the Cuckoo configuration, please double check it.

processing.conf が正しく修正されていない場合などに表示されます。 ~/.cuckoo/conf/processing.conf の内容を確認します。

解析レポートに Curtain メニューが表示されない

解析結果に有用な Curtain ログが取得されていない場合はメニューに表示されません。 これには例えば Cuckoo のデバッグログで以下のようにファイルサイズが常に 36 となっている場合などが含まれます。

DEBUG: File upload request for curtain/158xxxxxxx.0.curtain.log
DEBUG: Uploaded file length: 36

参考文献

CurtainCuckoo について

Powershell ログ出力設定について

  • PowerShellの実行ログを取得する方法について。最低限やっておいた方が良いこと。 | 技術的な何か。
    http://level69.net/archives/24861

エラー時に参考にしたサイト

更新履歴

  • 2019/06/03 新規作成
  • 2020/05/07 エラー「0x80070422」が表示された場合の対処方法を追記。
  • 2020/05/08 「トラブルシューティング」を追記。いくつか細かな表記を修正。