Linuxでウィルス対策ソフトの試験をしたい。UPXによる『亜種化』方法について解説

エンジニア小技

・Linuxで正規のファイルを亜種化したい

・そもそも亜種化ってなに?

・亜種化のルーツを知りたい

・UPXの利用方法を知りたい

 

こういった疑問に答えます

スポンサーリンク

Linuxでウィルス対策ソフトの試験をしたい。UPXによる『亜種化』方法について解説

以前はコンピューターウィルスというとWindows向けの物が多く、macOSやLinux向けのコンピューターウィルスはそれほど多くありませんでした。

ただし最近はクラウドの活用やIoT機器、サーバー用途などでLinuxが多く利用される機会が増えたこは、Linux向けのコンピューターウィルスが増加した要因の一つかもしれません。

Linuxシステム狙うマルウェアが2021年に増加
Linuxシステムを標的とするマルウェアは2021年、前年比で35%増加している。CrowdStrikeがレポートで明らかにした。3種類のマルウェアファミリーが、Linuxを標的とする脅威の22%超を占めているという。

Linuxは今まではコンピューターウィルスによる被害が少なかったためか、短いログインパスワードを利用していたり、安定運用のためパッチを適用しなかったり、また、担当者のスキル不足から環境を塩漬けのまま放置されているケースが散見されます。

上記の記事内の『亜種』が多く見かけるようになったのも、コンピューターウィルスが増加している要因でしょう。

とはいえ、コンピューターウィルスを入手しての試験は感染リスクがあるので、単純にLinux上で『亜種化』を行ってみます。

毎日登録されるマルウェアや利用が望まれないソフトウェアは45万件!?

最近、ニュースなどでコンピューターウィルスによる感染被害を頻繁に見かけます。

セキュリティソフトの比較検証を行う独立機関の最大手であるAV-Test.orgによると、毎日登録されるマルウェアは45万とその多さに驚きます。

Every day, the AV-TEST Institute registers over 450,000 new malicious programs (malware) and potentially unwanted applications (PUA).

引用元:AVTEST

日本語訳:『AV-TEST Instituteは、毎日450,000を超える新しい悪意のあるプログラム(マルウェア)と潜在的に不要なアプリケーション(PUA)を登録しています。

一日は、86,400秒(60秒 x 60分 x 24時間)なので、この450,000を86,400で割ると実に5秒に1つのマルウェアや利用が好まれないソフトウェアが誕生していることになります。

この45万件のマルウェアが全くの新しいマルウェアや悪意のあるソフトウェアという訳ではありません。

そこで先ほどの『亜種化』の登場です。

ちょっとした加工、つまり『亜種化』をすることで、ウィルス対策ソフトで検知し難くすることが出来ます。

これが、今日のコンピュータウィルスの増加と被害が増加している原因です。

亜種化とはなにか?

シグネチャやパターンファイルを利用したウィルス対策ソフトやEDR製品では、マルウェアや悪意のあるソフトウェアの判断にhashを利用します。

hashとは人間の指紋のようなものです。

つまり指紋の書き換えを任意に行うことで、同じプログラムでもシグネチャやパターンファイルを利用したウィルス対策ソフトでは検知し難くなります。

少し古い記事となりますが、マイクロソフト社も『マルウェアの96%は使い捨て』と伝えていのはこの理由です。

第24回 マルウェアの96%は「使い捨て」――マイクロソフトが3カ月分析して分かったこと
マイクロソフトが3カ月の間マルウェアを分析したところ、マルウェアのうち、実に96%が“使い捨て”であるという事実が分かりました。今回は、アンチウイルスソフトだけではマルウェアを防げない実態を紹介します。

UPXのダウンロードと展開

今回は亜種化にUPXを利用します。

UPX (ultimate packer for executables)は、様々なOSのファイル形式に対応した圧縮ソフトウェアです。

圧縮というとzip形式などを想像するかもしれませんが、UPXは実行できるプログラムのままファイルサイズを約50%〜70%削減することが出来ます。

圧縮されたプログラムは内部構造とhash値が変化し、これが結果的に亜種化となります。

しかも、UPXはダウンロードして展開するだけで利用可能です。

今回の検証も自宅サーバー上のCentOS8.4環境で検証を行いますが、自宅サーバーに興味がある方はこちらを参考にしてください。

では早速UPXをダウンロードします。

GitHub - upx/upx: UPX - the Ultimate Packer for eXecutables
UPX - the Ultimate Packer for eXecutables. Contribute to upx/upx development by creating an account on GitHub.

インターネットに接続できるLinux環境では、『wget』コマンドでURLを指定すれば直接ダウンロードが可能です。

最新版は2022年6月時点ではupx-3.96です。

作業は管理者権限で行っていますが、最後のupxのコピーの部分だけsudoで実行しても問題ありません。

# wget https://github.com/upx/upx/releases/download/v3.96/upx-3.96-amd64_linux.tar.xz

ダウンロードしたら解凍しupx本体をコピーします。

# tar Jxfv upx-3.96-amd64_linux.tar.xz
# cp -p upx-3.96-amd64_linux/upx /bin/

ダウンロードと展開は以上で完了です。

UPXの実行と確認

UPXは前述の通り『実行できるプログラムのまま』ファイルの圧縮が可能です。

そこで、Linuxの実行形式であるELFファイルを実際にUPXで圧縮してみます。

ELFかどうかは『readelf』コマンドで確認が可能です。

初めて『readelf』コマンドを使う方は、是非manコマンドで確認してみましょう。

# man readelf

今回は『vmware-toolbox-cmd』コマンドを利用してUPXの動作確認を行います。

# readelf -a /bin/vmware-toolbox-cmd
ELF ヘッダ:
  マジック:  7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  クラス:                            ELF64
  データ:                            2 の補数、リトルエンディアン
  バージョン:                        1 (current)
  OS/ABI:                            UNIX - System V
  ABI バージョン:                    0
  型:                                DYN (共有オブジェクトファイル)
  マシン:                            Advanced Micro Devices X86-64
  バージョン:                        0x1
  エントリポイントアドレス:          0x2a90
  プログラムの開始ヘッダ:            64 (バイト)
  セクションヘッダ始点:              44352 (バイト)
  フラグ:                            0x0
  このヘッダのサイズ:                64 (バイト)
  プログラムヘッダサイズ:            56 (バイト)
  プログラムヘッダ数:                11
  セクションヘッダ:                  64 (バイト)
  セクションヘッダサイズ:            32
  セクションヘッダ文字列表索引:      31

『readelf』コマンドを実行すると分かりますが、ヘッダやクラスにELFである旨の記載有ることが分かります。

次にhash値を確認します。

# sha256sum /bin/vmware-toolbox-cmd
b337e19de8731c4f10377b84065168beb9be1bb56309b07ef24ca7af052c6cd9  /bin/vmware-toolbox-cmd

hash値を元にファイルを確認するには、Virustotalを確認するのが手早いです。

勿論ですが、Virustotalで確認すると『vmware-toolbox-cmd』のhashから、このファイルが安全なファイルであることが分かります。

次にUPXを使って圧縮します。

VirusTotal
VirusTotal

ここでは分かりやすくUPXで亜種化したファイル名を『vmware-toolbox-cmd.upx』としています。

# upx -o vmware-toolbox-cmd,upx /bin/vmware-toolbox-cmd
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2020
UPX 3.96        Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 23rd 2020

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
     46400 ->     19184   41.34%   linux/amd64   vmware-toolbox-cmd,upx

Packed 1 file.

『Packed 1 file.』を出力された通り、正しく亜種化(Packed)されたこと分かります。

オリジナルと亜種化したファイルのhash値を確認すると、hash値が変化したことが分かります。

オリジナル

# sha256sum /bin/vmware-toolbox-cmd
b337e19de8731c4f10377b84065168beb9be1bb56309b07ef24ca7af052c6cd9  /bin/vmware-toolbox-cmd

亜種化後

# sha256sum vmware-toolbox-cmd,upx
0602c678a0a0c06832a4ef4f2de5b721f8328915819c9fbc5dff289502d1ff12  vmware-toolbox-cmd.upx

Packed 1 file.

亜種化したことで、Virustotal上では過去に見たことがないhash値となり、結果も『No matches found』となりました。

亜種化したファイルの実行

最後の亜種化したファイルが実行可能かを確認します。

ここでは単純に-hオプションでヘルプを確認します。

亜種化前のオリジナルファイル

# /bin/vmware-toolbox-cmd -h
使用方法: /bin/vmware-toolbox-cmd <コマンド> [オプション] [サブコマンド]
「/bin/vmware-toolbox-cmd help <コマンド>」と入力すると、そのコマンドのヘルプを表示できます。
VMware Tools のバージョンを確認するには「/bin/vmware-toolbox-cmd -v」と入力します。.
stdout 出力を抑止するには「-q」オプションを使用します。
ほとんどのコマンドではサブコマンドも使用されます。

使用可能なコマンド:
   config
   device
   disk(オペレーティング システムによっては使用できない場合もあります)
   info
   logging
   script
   stat
   timesync
   upgrade(オペレーティング システムによっては使用できない場合もあります)

亜種化後

# ./vmware-toolbox-cmd.upx -h
使用方法: ./vmware-toolbox-cmd,upx <コマンド> [オプション] [サブコマンド]
「./vmware-toolbox-cmd,upx help <コマンド>」と入力すると、そのコマンドのヘルプを表示できます。
VMware Tools のバージョンを確認するには「./vmware-toolbox-cmd,upx -v」と入力します。.
stdout 出力を抑止するには「-q」オプションを使用します。
ほとんどのコマンドではサブコマンドも使用されます。

使用可能なコマンド:
   config
   device
   disk(オペレーティング システムによっては使用できない場合もあります)
   info
   logging
   script
   stat
   timesync
   upgrade(オペレーティング システムによっては使用できない場合もあります)
Packed 1 file.

亜種化後も動作に変化がない(正常に動作)ことが分かりました。

まとめ

今回はUPXを使った亜種化について解説してみました。

最近はコンピュータウィルスによる被害が増えています。

亜種化とその動作を理解することもエンジニアのスキルアップに繋がるので、是非試してみてください。

なお、本ブログではITエンジニア向け小技を紹介していますので、ぜひこちらも参考にしてみてください。

エンジニア小技
「エンジニア小技」の記事一覧です。

タイトルとURLをコピーしました