BatCloakの実現するFUD

ほぼこもセキュリティニュース By Terilogy Worx

FUDはfully undetectable、完全に検出不可能、という単語です。
BatCloakという名前のツールが出回っています。
この名前は、悪意あるツールをマントで覆い隠して潜めることができるもの、ということでしょうか。

このBatCloakが対象にしている悪意あるツールは、バッチファイルです。
バッチファイルはテキストファイルですので、通常はそのバッチファイルを閲覧すると記載されている処理内容がすべて確認できます。
なにをどういった手順で実行しているかがわかってしまうのです。
元々バッチファイルは記述内容を隠ぺいする必要のない用途で利用されるものですのでこれはこれでよいのですが、脅威アクターがバッチファイルを悪意ある活動に使用しようと考える場合はこれでは都合が良くないということになります。

昔から、平文のなんらかのスクリプトをバイナリ化するものというものはいろいろと提供されてきています。
shcというツールが代表的なものです。Shell Script Compilerです。
これは名前の通り、shell script をストリップ済のバイナリにコンパイルしてくれるツールです。
他にもいろいろあります。
PythonにはPyInstallerやcx_Freezeなどがありますし、Goであればそもそもの言語の機能の方にバイナリ化の機構が用意されています。
しかしこういったこれまでのバイナリ化ツールは性質上、実行する環境を用意する手間を削減できるとかそういった動機のほうが強かったように思えます。

では、このBatCloakはどうでしょう。

  • 作成者の考えている姿
    BatCloakのバナーで、BatCloakのUsageなどの説明文を表示する機能があります。
    そこでこう説明されています。
    Evasive Batch File Obfuscation
    回避的なバッチファイルの難読化、といった解釈でよいのでしょうか。
    バイナリ化の主目的が内容把握させないことに定められていると感じます。

     

  • コマンドライン引数
    このBatCloakはコマンドラインで利用するツールとして実装されています。
    そのため利用時には要望をコマンドライン引数で渡して動作させることになります。
    指定するコマンドライン引数は非常にシンプルです。
    入力するファイル名、出力するファイル名、難読化のレベル、それだけです。
    難読化のレベルは1から5までが指定でき、指定しない場合は3が指定されたものとして動作します。

道具は使う人の意図でいかようにでも活用できるものですが、このツールの場合は生まれた時からそっちの意味合いが濃いものだったのかもしれません。

そしてこのBatCloakはある意味ライブラリのようになってきています。
BatCloakの機能を核として、いくつものツールが生み出されてきています。
CryBat(これは以前はJlaiveとして公開されていました), Exe2Bat, ScrubCryptなどです。
SeroXen RATなどのように難読化されたPowerShellスクリプトをバイナリ化してRATとして仕立てられたものもでてきています。

fully undetectable、厄介なことになってきています。

参考記事(外部リンク):Analyzing the FUD Malware Obfuscation Engine BatCloak
www.trendmicro.com/en_us/research/23/f/analyzing-the-fud-malware-obfuscation-engine-batcloak.html