マルウェアの音声化(曲あり)

Do, a debugger, you often use
Re, a reverse engineer
Mi, a name, I call myself

ドレミの歌です。歌を思い出していただけましたか?きっと、今日一日、ドレミの歌があなたの頭の中で永遠にループすることでしょう。

それがマルウェア解析と一体何の関係があるのかと思っていますか?

マルウェアやリバースエンジンの世界では、マルウェアファミリー間の関係を調査し、新しいバージョンを検出し、マルウェアサンプル間の違いを理解するために使用するツール、スクリプト、メソッドがあります。なぜこのようなことをしているかというと、現在書かれている検知ログが、より新しいマルウェアの亜種でまだ動作しているかどうかを理解するのが良い例です。敵がコードのどこを変更したのか、それがお客様に対する我々の保護に影響を与えるのか?一つのアプローチとして、古いサンプルと新しいサンプルを比較し、どちらのサンプルにも必ず存在するコンポーネントを把握することが挙げられます。場合によっては、野心的に、例えばランサムウェアに分類されるサンプルを大量に使用し、ランサムウェアに属するという分類に当てはまる新しいサンプルを特定するのに役立つコードの共通項を探します。

もう1つの古典的な方法は、バイナリ差分によるコード比較です。BinDiff injunction with IDA Proを使用して、マルウェアサンプルの2つのデータベースを作成し、その2つの比較を開始します。総合的な比較スコアが生成され、図1に示すようにサンプル間に存在する類似性が示されます。

Figure 1: BinDiff exampleFigure 1: BinDiff example

図1では、BinDiffのダッシュボードにより、2つのサンプルの類似性が52%であることがわかります。さらに掘り下げてダッシュボードを見ると、相違点と類似点がいくつかのカテゴリーに分割されています。また、例えば関数を視覚化して比較し、正確な違いを見出すことも可能です。敵は、新しいリリースにおいてコードを再利用し、特定の部分を最適化する傾向があります。類似性がどこに存在するか、それが重要です。一般的なコード要素に?それともマルウェアを作成するために使用したコンポーネントに?

ファジーハッシュ、コードブロックの抽出、比較など、マルウェアの比較には他にも多くの方法があります。最近、DPRK Ransomwareファミリーに関するブログで、グラフ技術とヒルベルト曲線マッピングを使用して、図2に示すような類似性を発見しました。

Figure 2: Hilbert Curve mapping

Figure 2: Hilbert Curve mapping

私たちはこれまで、コードの比較や可視化を頻繁に使用してきましたが、もっと抽象的な手法でマルウェアのサンプルを比較することはできないでしょうか?音はどうでしょうか?


新しい手法

音楽、サウンド、そして特にアナログシンセは、私にとって常に魅力的なトピックでした。オランダ海軍の退役軍人として、潜水艦で1週間、ソナー音を聞いたり、滝を見たり、船と動物を区別してフィルタリングしたり、それは貴重な驚くような体験でした。このような経験と、新しい比較方法を研究・開発したいという思いが結びついて、マルウェアのサンプルを音で比較することはできないか、と考えたのです。

まず、5月と6月にリリースされたLinux用ランサムウェア「Conti」のサンプルを2つ用意しました。BinDiffとコード比較の観点からは、最小限の違いしかなく、総合スコアは99.8%の同等性を示しました。サウンドを使った実験でも、同じような結果が得られるでしょうか?

まず、サンプルをオーディオファイルに転送し、これを再生して周波数分析に使用できるようにする必要がありました。Linuxのコマンドラインから「cat」コマンドを使用し、オーディオプレーヤーに送って音を発生させました。

>> cat malwarefile.bin | mplayer -cache 1024 -quiet -rawaudio samplesize =1: channels=1 :rate=8000 -demuxer rawaudio –

 

これは、電話回線を使ってインターネットに接続しようとするダイアルアップモデムに似た、ノイズの多い音声になります。ヘッドセットジャックからミキサーに向かって音声を再ルーティングし、音を録音して.WAVと.MP3の両方のオーディオファイルとしてエクスポートしました。

Conti May Recording(5月)


Conti June Recording(6月)

ContiランサムウェアLinux亜種から生成された2つの.WAVサンプルを、私たちが使用している音声分析ツール(AudacityとSonic LineUp)にロードすると、図3のスペクトログラムが表示されました。

Figure 3: The sound of Conti

Figure 3: The sound of Conti

上の図を見ると、両者はほとんど同じですが、6月のサンプルのサウンドプロファイルの最後に小さな違いがあることがわかります。これは、バイナリコード解析で発見されたものと一致しています。

さて、次の実験です。DPRKランサムウェアファミリーの調査から、VHDランサムウェアのサンプルとBEAFのサンプルには、コードの類似性がある一方で、多くの相違点があることがわかりました。これも音で証明できるのでしょうか?

今回も、両サンプルに必要な音声ファイルを作成しました。バイナリマルウェアのサンプルはファイルサイズが異なるため、録音の長さはサンプルごとに異なることになります。これは、音声ファイルをAudacityに読み込ませたときに反映されました。

Figure 4: DPRK Ransomware soundFigure 4: DPRK Ransomware sound

まず長さの違いが見られますが、波形の類似性も際立っています。Sonic LineUpを使って、波形と周波数スペクトルをなるべく揃えてみました。

 

Figure 5: Spectrum diffing

Figure 5: Spectrum diffing

視覚的にだけでなく、2つのオーディオサンプルの周波数プロットスペクトル分析を行うと、図6のようにその違いが明確に現れます。

Figure 6: Frequency plot spectrum

Figure 6: Frequency plot spectrum

VHDのプロット・スペクトルは、BEAFに比べて7000Hz以上の帯域がより活性化しており、その違いが確認できる一例です。

マルウェアのサンプルを音声に変換して比較することは、興味深く、価値のある学習体験でした。また、従来のコード解析や視覚的な解析で発見されたことが、音声解析でも見られることが証明されました。正直なところ、従来のコード類似性/比較調査手法で観察されたことを証明するという、この楽しい実験の結果は予想外でした。従来の手法では変化が少なかったContiのケースで、音声変換と周波数解析が同じ結果を示したことは、驚くべきことでした。

身代金を要求する代わりに、ランサムウェアが自分たちのコードの音楽を作って、SpotifyやApple Musicで私たちに聴かせたらいいと思いませんか?私たちは、Contiコードの生成された音声を、Garagebandを使っていくつかのトラックと組み合わせ、Contiランサムウェアギャングのテクノの最初のバージョンを作成することに挑戦してみました。ぜひ、ご意見をお聞かせください。

コードをオーディオに変換して、素敵な音楽を作ることができるクリエイティブな才能のある人がもっといないか気になりますね。あなたのミックスをアップロードして、私たちの SoundCloud channel で共有してください。

※本ページの内容は、2022年6月23日(US時間)更新のTrellix Storiesの日本語訳です。
原文:The Sound of Malware
著者:Christiaan Beek