Ultimate Packer for Executables(UPX)は、実行ファイルのサイズを大幅に(Zipファイルよりも)縮小できるオープンソースのパッカーであり、WindowsのDLL、macOSのアプリ、LinuxのELFなど、幅広い実行ファイル形式に対応している。
ベンダーは、基本的なリバースエンジニアリングや違法な再配布を防ぐために、パッキングを利用することがある。パッカーは基本的に、元の実行ファイルに「スタブ」と呼ばれる小さなコード片を追加し、新たな実行ファイルを作成する。その後、スタブがファイルの展開に使われ、実行ファイルを元の状態に「復元」する。
一部のパッカー(UPX)はファイルを圧縮するだけだが、暗号化も行えるパッカーもある。
攻撃者は、一見無害で正規のファイルにマルウェアを隠し、シグネチャベースの検知や、高度な人工知能(AI)ベースのウイルス対策ソリューションさえ欺くことができる。ハッカーがUPXを使ってマルウェアを検知不能にする方法を見ていこう。
関連記事:ハッカーが検知を回避する方法
UPXベースの回避の仕組み
UPXは悪意のある実行ファイルをパックし、そのバイト列を変更して、検知不能なマルウェアを生成できる。
自己展開型アーカイブ実行ファイルを使えば、パッカーはパックされたファイルの実行時にメモリ内で自らを展開できる。
パックされたファイルは通常、ディスク上では小さくなる一方、メモリ上では大きくなる。不審なファイルを調べると、次のような典型的なセクションが見つかることがある。
- UPX0:実際の生データを含まない空のセクションだが、仮想メモリのサイズは非常に大きい
- UPX1:スタブと圧縮された実行ファイル
ほかにもセクションはあるが、ここでは簡単に説明する。
UPXでパックされたファイルを実行すると、ハッカーが格納した悪意のあるコードを含め、パックされたすべてのセクションがメモリ内で展開され、プログラムは元のエントリーポイント(OEP)にジャンプして実行ファイルを実行する。
圧縮は古典的な回避手法
UPXベースの回避は一見すると少し理解しにくいかもしれないが、圧縮はウイルス対策ソフトによる検知を回避する古典的な手法だ。
簡単に試せるテストとして、マルウェアサンプルの元のバージョンとパックしたバージョンを、VirusTotalなどの任意のプラットフォームにアップロードしてみるとよい。パックしたバージョンは通常、元のマルウェアと比べて検知される回数が大幅に少なく、多くのウイルス対策ツールはパックされたバージョンを単純に見逃す可能性がある。
マルウェアの展開におけるUPXの利用頻度を示す統計は多くないが、MITREは、攻撃者がコードを隠すために利用できるさまざまな「パッキングベース」の手順を列挙しており、多くのケースにUPXが関係しているようだ。
UPXでパックされたファイルを検知する
UPXでパックされたファイルを見つけるには、単純なUPXコマンドを試すことができる。
upx -l {suspicious_binary}
もちろん、この方法には限界があり、常に機能するわけではない。もう1つの、限定的ながら有効な方法は、16進コードをダンプし、UPX:のような特定の文字列を検索することだ。
hexdump -C {suspicious_binary} | grep "UPX"
また、ポータブル実行可能ファイル(PE)アナライザーを利用して、UPXでパックされたファイルを検知することもできる。
UPXによる改変と破損ファイルへの対処
実際に確認されている多くのエクスプロイトは、悪意のあるコードの展開にUPX自体を使わず、意図的に破損したパックファイルを生成する。
先ほど見た基本的な例では、セクションが非常に分かりやすかったが、16進エディターなどのツールを使ってバイト列を変更したり文字列を挿入したりし、ファイルの検知を大幅に難しくすることも可能だ。
このような操作を行うと、upx -dコマンドによる従来の展開はおそらく破綻してエラーが発生するが、バイナリは依然として実行される。
Akamaiがupxdump.pyを、推奨ツールとして挙げた可能性がある。このツールは、UPXでパックされたマルウェアの難読化によく使われる破損ヘッダーを修復し、意図的に破損させられたUPXパックファイルを直せるかもしれない。
ただし注意が必要だ。作者は、一部の亜種がUPXヘッダーを単純に削除したり、ヌルバイトを挿入したりするため、ツールが機能しなくなる可能性があると警告している。
パッカーの分析とUPX展開対策の手法
リバースエンジニアやマルウェア分析担当者は、ollydbg、radar2、あるいは人気のGhydraなどのツールを使ってパックファイルを分析できる。重要なのは、先に進む前に、そのバイナリがUPX展開対策の手法を使っているかどうかを判断することだ。
Miraiのように、セキュリティ研究者の作業を遅らせるゼロ埋めファイルなどのUPX展開対策を使うマルウェアは多いが、だからといって展開できないわけではない。upx-modのようなツールが役立つ。
とはいえ、非常に高度な攻撃者は、標準的なUPX実装では「展開不能」なファイルを作成できる可能性があるが、そのようなケースはかなりまれだ。
UPXでパックされたマルウェアを軽減するためのベストプラクティス
悪意のあるUPXパックファイルの利用は、どれほど高度なツールだと宣伝されていても、マルウェアを検知するためにウイルス対策ソフトやその他のシグネチャベースのソリューションだけに頼ることはできないことを示している。
こうしたツールがなければ、さらに脆弱になるだろう。しかし攻撃者は、正規のユーティリティを悪用し、検知を回避する方法を常に探している。
UPXはさまざまなプラットフォームを標的にできる汎用形式であり、UPX展開対策の手法はリバースエンジニアリングやマルウェア分析を妨害するために利用できる。
ユーザーが必要としない場合は、特に企業環境において、tmpやダウンロードなど一部のディレクトリで実行を無効にすることが有効だ。これはセキュリティポリシーによって実現できる。
システムでファイル拡張子を非表示にしないようにする必要がある。しかし、非表示になっていないからといって、特に標的型攻撃では、誰も不用意にクリックしないとは限らない。不審な活動や挙動を記録する必要がある。
次の記事:





