CurtainCuckoo とは
Curtain は難読化された PowerShell を可読化するため Cuckoo モジュールです。このモジュールを使うためにはサンドボックスである Windows 側で PowerShell ScriptBlock Logging が有効になっている必要があります。ここでは Cuckoo 2.0.6 に追加する場合について記載しています。
- karttoon/curtaincuckoo: Curtain module for Cuckoo to deobfuscate PowerShell
https://github.com/karttoon/curtaincuckoo
CurtainCuckoo 導入手順
サンドボックス側:Powershell 5.1 の導入
サンドボックスが Windows 7 の場合は Powershell 2.0 が標準となっておりログ取得機能がないため Powershell をアップデートする必要があります。アップデートに必要なファイルは以下からダウンロードできます。
- ダウンロードサイト
Download Windows Management Framework 5.1 from Official Microsoft Download Center - Windows7x86 向けの直リンク Win7-KB3191566-x86.zip
「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
Cuckoo へのマージ方法 以下のページを参考に適切な場所にファイルの追加や修正をします。
curtaincuckoo/README.md at master · karttoon/curtaincuckoo · GitHub
https://github.com/karttoon/curtaincuckoo/blob/master/README.mdAdded Curtain module by karttoon · Pull Request #2042 · cuckoosandbox/cuckoo
https://github.com/cuckoosandbox/cuckoo/pull/2042/files
結果として以下のようなファイルを修正しました。 対象フォルダは大きく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
結果例
トラブルシューティング
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 について
- karttoon/curtaincuckoo: Curtain module for Cuckoo to deobfuscate PowerShell
https://github.com/karttoon/curtaincuckoo - Added Curtain module by karttoon · Pull Request #2042 · cuckoosandbox/cuckoo
https://github.com/cuckoosandbox/cuckoo/pull/2042/files
Powershell ログ出力設定について
- PowerShellの実行ログを取得する方法について。最低限やっておいた方が良いこと。 | 技術的な何か。
http://level69.net/archives/24861
エラー時に参考にしたサイト
- [Customization] Config section not found! · Issue #1580 · cuckoosandbox/cuckoo
https://github.com/cuckoosandbox/cuckoo/issues/1580
更新履歴
- 2019/06/03 新規作成
- 2020/05/07 エラー「0x80070422」が表示された場合の対処方法を追記。
- 2020/05/08 「トラブルシューティング」を追記。いくつか細かな表記を修正。