62
インストール前にマルウェアを発見する方法

水曜日に報じられた通り、Macのドメインネームサーバ(DNS)アドレスを変更するトロイの木馬型のOS Xマルウェアが新たに確認されました。このマルウェアの検出と削除方法については既に解説しました。では、このようなマルウェアがインストールされないようにするために、一般的にどのような対策を講じることができるかについて見ていきましょう。

なお、これはトロイの木馬型マルウェアパッケージ(ある物を装いながら実際には別の物、通常は悪意のあるプログラム)に特に焦点を当てた議論です。ただし、ここで紹介する一般的な対策は、ダウンロードするほぼすべての種類のプログラムに適用できます。

これから紹介する内容は、小さな例外を除いてターミナルを使わず、技術的な知識もほとんど必要ありません。つまり、これらのテクニックを使えば、誰でもダウンロードしたプログラムをインストール前に検査できるはずです。このチュートリアルは長くて詳細なので、以下に概要版を掲載します。

インストールパッケージをControlキーを押しながらクリックし、「パッケージの内容を表示」を選択します。インストーラー内の様々なファイルに移動し、テキストエディタでそれぞれの内容を確認します。中には意味不明な文字列で表示されるものもありますが、これはバイナリであることを示しています。それらのファイルは閉じてください。読めるファイルについては、意味不明な部分がないか確認してください。少しでもおかしい点が見つかった場合は、プログラムをインストールしないでください。

インストーラーの検査プロセスの詳細については、以下をお読みください。

ルール1: 信頼できない情報源を避ける

OSX.RSPlug.Aトロイの木馬の検出に関する記事で述べたように、このようなプログラムを回避する最善の方法は、既知の信頼できるソースからのソフトウェアを使用することです。MacUpdate、VersionTracker、download.com、MacGameFilesなどのソフトウェアアップデートサイトは、一般的に安全な選択肢です。特に、他のユーザーによるコメントを読んだ上でインストールを進められるソフトウェアであればなおさらです。この競争で先頭を走る必要はありません。大規模なサイトで誰かが悪意のあるプログラムを見つけた場合、その人が必ずコメントを投稿するでしょう(そして、おそらくそのパッケージはすぐに削除されるでしょう)。

つまり、信頼できないソースからソフトウェアをダウンロードしてインストールしないでください。このシンプルなルールに従えば、トロイの木馬アプリケーションに感染する確率は大幅に低下します。

ルール2: ルール1に従う

本当に。本気で。信頼できない情報源には近づかないでください。この2つのルールを頻繁に無視するなら、高性能なウイルス対策/マルウェア対策ソフトに投資すべきです。完璧な保護ではありませんが、何も知らないまま行動するよりはずっと良いでしょう。

でももしも…

さて、どういうわけか、あなたのせいではないのに(あるいは全くの間違いで)、ダウンロードフォルダにディスクイメージが保存されています。正規のファイルだと確信しているものの、あまり知られていないサイトで見つけたので、インストールするリスクを冒す前に、もう少し安心感を得たいと考えています。とはいえ、l33tターミナルを使いこなせるほどの超オタクではないので、選択肢は限られていると思うかもしれません。

そうではないということをここでお伝えします。テキスト エディターと英語を読む能力 (もちろん英語のアプリケーションについて話している場合) があれば、実際に自分でかなりのスヌーピングを行うことができます。問題のプログラムを実行する必要もなく、マウス ボタンをクリックする以上の技術的なスキルも必要ありません。

今日はパッケージインストーラーとして提供されるプログラムに焦点を当てます。これらはAppleのインストーラーで実行されるプログラムで、多くのプログラムが管理者パスワードを求めます。管理者パスワードを入力すると、基本的にそのプログラムにMacに対して何でも好きなように操作する権限を与えることになります。そのため、最も注意すべきプログラムはパッケージインストーラーです。(もちろん、通常のアプリケーションは管理者パスワードを要求しなくても悪意のあるプログラムになる可能性がありますが、ユーザーが認証しないとインストールできない場所にインストールすることはできません。一方、パスワード付きのパッケージインストーラーは、どこにでも何でも配置でき、好きなように変更することができます。)ただし、ここで提供するヒントは、インストールするあらゆる種類のプログラムを確認するのに役立ちます。

マルウェアパッケージと通常のパッケージの違いを説明するために、OSX.RSPlug.Aトロイの木馬(略してRSPlug.A)と、Microsoftの新しいリモートデスクトップ接続2ベータ2(RDC2)のインストーラーを使用します。以下をお読みいただく際には、マルウェアパッケージがオンライン動画の視聴を支援するためのビデオコーデックのインストーラーであるとされていたことをご留意ください。さあ、私と一緒にパッケージインストーラーの素晴らしい世界へ足を踏み入れましょう…

パッケージについて

パッケージインストーラーは、OS Xのアプリケーションとよく似ています。つまり、別の何かに偽装されたフォルダです。そのため、開いて中身を調べることができ、それがマシンへのマルウェアのインストールを防ぐ鍵となります。しかし、そこまでに至らなくても、Macにマウントされたインストーラーのディスクイメージを見るだけで、かなりの情報を把握できます。そこで、この演習ではまず、疑わしいディスクイメージをマウントすることから始めます。

重要事項:これからご紹介する内容はすべて、マルウェア作成者であれば回避可能です。これらの「痕跡」を必ず見つけられる保証はありませんが、一つだけ有利な点があります。マルウェア作成者は通常、できるだけ早くマルウェアを拡散させたいと考えているからです。つまり、痕跡を隠すために必要な細部にわたる作業に時間をかける可能性は低いということです。ですから、この情報は今後の捜査に役立つ可能性があります。ただし、必ずしも役立つとは限りませんのでご了承ください。

その点を念頭に置き、以下の 2 つのアイコン (左側が Microsoft の RDC2、右側が RSPlug.A マルウェア) について考えてみましょう。

Microsoftのディスクイメージには「本物の」名前が付けられているのに対し、マルウェアの名前は単に「76」となっていることに注目してください。これは、何かがおかしいという確かな手がかりとなるはずです。Macのプログラムで、数字だけで命名されているものはほとんどありません。もちろん、マルウェア作成者は偽の名前を考える時間をかけるかもしれませんが、そこが問題なのです。時間がかかるので、彼らは努力しないかもしれません。何かの名前がおかしいと感じたら、それが何かがおかしいという最初の手がかりになります。

次に、各ディスクイメージのパッケージの詳細を確認してみましょう。列表示モードのプレビューから取得した各イメージのスクリーンショットを以下に示します。

ここで注目すべき点が2つあります。1つ目は、たとえ「76」がプログラム名だと認めたとしても、ディスクイメージ上の実際のインストールプログラムの名前が install.pkg であることに注目してください これはディスクイメージの名前と一致しませんし、ソフトウェアに真剣に取り組んでいる人が単に install.pkg という名前のインストーラをリリースするとは思えません。左側のRDC2イメージと比べてみてください。インストーラの名前がディスクイメージの名前と一致しており、これはインストールしようとしているものの名​​前と一致しています。

このディスクイメージをご覧になる際は、「サイズ」の項目に注目してください。RDC2 は 13.7MB です。小さいとは言えませんが、数ギガバイトのゲームデモや 350MB のソフトウェアアップデートのダウンロードが当たり前の昨今においては、決して大きいとは言えません。では、右側の install.pkg のサイズを見てください。100KB です。MacUpdate でファイルリストをサイズ順に並べ替えてみました。リストに表示される 1,300 個のプログラムのうち、100KB 以下のものは約 50 個しかありませんでした。次に「コーデック」で検索してみると、23 個のうち 100KB 未満のものは 2 個だけでした。ビデオ関連のコーデックのほとんどは 3MB から 10MB の範囲です。簡単に言えば、100KB は本物のビデオコーデックとしては小さすぎます。

しかし、このバンドルのサイズに問題があると分かるのに、私があれほど検索しなくても分かるはずです。最近ダウンロードしたファイルの中で、100KB以下のものがいくつあったか考えてみてください。テキストファイルを除けば、おそらく1つもないはずです。

このパッケージはまだ本格的に検討を始めていないにもかかわらず、既に3つの欠点があります。1) ディスクイメージの名前がおかしい。2) インストールパッケージの名前がディスクイメージと一致していない。3) 正規のソフトウェアとしてはサイズが小さすぎる。もしこれが「現実」だったら、このディスクイメージはすぐにゴミ箱に捨ててしまうでしょう。そもそも、このパッケージは謳い文句通りのものではないので、インストールしたくないものである可能性が高いです。

パッケージの詳細

しかし、これは現実世界ではなく、Webの世界です。ですから、引き続き調査を続けましょう。インストールパッケージの内容を調べれば、通常、特定のプログラムの信頼性を確信するために必要な証拠はすべて見つかります。ただし、念頭に置いておいてください。巧妙に開発されたマルウェアには、以下の「兆候」が全く見られない可能性があります。それでも、調べてみるのは決して損ではありません。

FinderでインストーラパッケージをControlキーを押しながらクリックし、ポップアップメニューから「パッケージの内容を表示」を選択します。これでインストーラのファイルバンドルに「入り」、このプログラムが実際にどのような構成になっているかを確認できます。ここでは、有効なRDC2パッケージ(左)とRSPlug.Aトロイの木馬(右)の両方を確認できます。

このレベルではまだあまり理解できませんが、重要な点をお伝えします。インストーラーパッケージ内のファイルの多くは、アイコンがテキストファイルでなくてもテキストファイルです。そのため、アイコンをテキストエディタにドラッグ&ドロップして、読みやすいテキストが表示されるかどうかを確認してみるのも一つの方法です。いくつか興味深いファイルを赤い枠で囲みましたが、最初のファイル以外はすべて純粋なテキストファイルです。最初のファイル(Archive.bom)はとりあえず飛ばして、それぞれを簡単に見ていきましょう。

• 76.info: パッケージ内に.infoファイルを見つけたら、まずは開いてみることで多くの情報が得られるでしょう。では、このファイルには何が含まれているのでしょうか?76ディスクイメージの.infoファイルの最初の数行を以下に示します。

	タイトル MacCodec バージョン 説明 Its a suppa puppa desc yo DefaultLocation /Library/Internet Plug-Ins/ DeleteWarning	

1行目はインストーラーの名前を示していますが、肝心なのは説明文です。最初の3つのストライクでこのプログラムを捨てなかったとしても、説明文できっと捨てられるでしょう!「Its a suppa puppa desc yo(これは素晴らしい説明文だ)」というメッセージは、76ランドに何か問題があることの明確な兆候です。これが4つ目のストライクです。

このファイルのもう一つの重要な行は、DefaultLocation行です。これは、ファイルがインストールされる場所を示しています。この場合、リストされているディレクトリは/Library/Internet Plug-Insです。これはビデオコーデックの場合に適切なので、ここには有用な情報はありません。ただし、インストールフォルダを知っておくと、後で役に立ちます。

• Description.plist: .infoファイルが見つからない場合は、代わりにこのファイルを探してください。似たようなファイルが含まれているはずです。このファイルを開くと、「Its a suppa puppa desc yo」という説明文が見つかりました。ストライク5です。

• License.txt: 76 パッケージには、一見するとかなり公式に見えるこのファイルが含まれています。

「ライセンス契約!

本製品を使用する前に、以下の契約条件をよくお読みください。本製品には、ライセンサーが顧客に下記に定める使用目的に限り使用を許諾するソフトウェアが含まれています。本契約の契約条件に同意しない場合は、ソフトウェアを使用しないでください。ソフトウェアのいずれかの部分を使用することで、お客様は本契約条件に同意したものとみなされます。

本製品は「現状有姿」で提供されます。本契約に基づく保証は一切なく、ライセンサーは商品性または特定目的への適合性に関する黙示の保証を一切放棄します。

では、何が問題なのでしょうか?契約書全体を読めば、会社名が一度も記載されていないはずです。上記の引用文でも、常に「ライセンサー」と記載されており、その定義は示されていません。これまで目にした他のライセンス契約書と比べてみてください。他の契約書では、会社名は少なくとも一度は出てきますが、通常は何度も出てきます。まさに「ストライクシックス」です。

• preinstall と postinstall: これらはインストールプロセスの開始時と終了時に実行されるスクリプトです。実際にすべてをインストールするのはこれらのスクリプトです。(上のスクリーンショットには、preupgrade と postupgrade も表示されています。これらはアップグレードインストールを実行する場合に実行されるスクリプトです。ただし、この場合、これらは対応する「install」スクリプトと同一です。)

プログラマーでない方は、ここに載っている内容は役に立たないと思うかもしれません。しかし、そうではありません。テキストエディタでファイルを開いてみると、実際に理解できる部分があったり、ネット検索に役立つ情報が見つかるかもしれません。preinstall の以下のコードを見てください。

	/usr/sbin/scutil << EOF オープン d.init d.add ServerAddresses * $s1 $s2 設定 State:/Network/Service/$PSID/DNS	

最初の行は という名前の Unix 実行ファイルです scutil。Google などの検索エンジンを使って調べてみると、 scutil どうやらビデオコーデックとは何の関係もなさそうなので、私にとってはこれが7つ目のストライクです。

コードをスキャンしながら、Googleに入力してさらに情報を見つけられるような単語を探してみましょう。膨大な量の情報が見つかるので、ほんの数個のキーワードだけでも、プログラムが何をしているのか大体分かるかもしれません。もちろん保証はできませんが、調べても損することはありません。

bomファイル

リストの最初のファイル、Archive.bom ファイルについてもう一度確認しましょう。少なくともこのアプリに関しては、この手順は完全にオプションです。アプリをインストールできない原因を既に何度も特定してしまったからです。しかし、.bom ファイルはインストーラーがインストールするすべてのファイルのリストが含まれているため、情報の宝庫となる可能性があります。これらのファイルの名前は必ずしも Archive.bom とは限りませんが、必ず .bom で終わります。このファイルの内容にアクセスするには、ターミナルを少しの間だけ使用する必要があります。その最も簡単な方法をご紹介します。

ターミナルウィンドウを開き、 cdと入力して スペースバーを押し、Finderに切り替えます(まだReturnキーは押さないでください)。Finderで、インストーラのContentsフォルダを含むウィンドウを開きます。このウィンドウを先に閉じた場合は、インストーラをControlキーを押しながらクリックし、「パッケージの内容を表示」を選択する必要があります。Contentsフォルダをターミナルウィンドウにドラッグ&ドロップします。

ターミナルはContentsフォルダへのパスを自動補完します。Returnキーを押して cd コマンドを実行します。bomファイルの内容を使用可能なテキストファイルに変換するには、次のコマンドを入力します。

lsbom アーカイブ.bom > ~/Desktop/xyzinstaller.txt

上記の行の前半は、bomファイルを読み込むUnixコマンドを実行します。大なり記号(">")は、出力を指定したファイルにリダイレクトします。この場合、そのファイルはデスクトップ上にあり、xyzinstaller.txtという名前です。注意:スペースを含む名前は使用しないでください。面倒なことになります。短くて分かりやすい名前にして、後で必要であればFinderで名前を変更してください。

Finderに切り替えて、先ほど作成したファイルをテキストエディタで開きます。76パッケージでこれを実行すると、以下のようになります。

	. 40777 501/501 ./Mozillaplug.plugin 40775 0/80 ./Mozillaplug.plugin/Contents 40775 0/80 ./Mozillaplug.plugin/Contents/Info.plist 100664 0/80 930 1525506808 ./Mozillaplug.plugin/Contents/MacOS 40775 0/80 ./Mozillaplug.plugin/Contents/MacOS/VerifiedDownloadPlugin 100775 0/80 24584 1275209212 ./Mozillaplug.plugin/Contents/Resources 40775 0/80 ./Mozillaplug.plugin/Contents/Resources/VerifiedDownloadPlugin.rsrc 100644 0/80 381 4223255919 ./Mozillaplug.plugin/Contents/Resources/VerifiedDownloadPlugin.rsrc.ROVE 100664 0/80 381 2963929028 ./Mozillaplug.plugin/Contents/Resources/VerifiedDownloadPlugin.rsrc.bak 100644 0/80 338 3415230991 ./Mozillaplug.plugin/Contents/version.plist 100664 0/80 471 2911002047 ./plugins.settings 100755 0/501 526 2742581597 ./sendreq 100644 0/501 1214 3210924043	

表示されている数字はすべて無視してください。それ以外のデータは、インストーラが実際にインストールするファイルのリストです。場所は先ほどDefaultLocation行で確認したとおりなので、これらはすべて/Library -> Internet Plug-Insフォルダに格納されます。使用しているインストーラによっては、ここで提供される情報が役立つ場合と役に立たない場合があります。ただし、何かをインストールしていて削除したい場合は、bomファイルの情報を使用して、その痕跡をすべて削除できます。

このリストですぐに疑問に思ったのは、命名規則です。特定のブラウザに必ずしも紐付けられているわけではないプラグインなのに、なぜ「Mozilla」という名前が付いているのでしょうか?これはビデオ再生コーデックであり、特定のブラウザやブラウザクラス向けの拡張機能ではないことを思い出してください。DivX、Flip4Mac、RealPlayerなど、私が使っている他のビデオコーデックと似たような名前にするべきです。最後のファイル「sendreq」も疑問に思います。これは何を、そしてなぜ送信しているのでしょうか?これらを総合すると、これは8番目のストライクです。

オプションの補足: 実際のインストールファイル

bomファイルは、何がどこにインストールされるかを示しています。しかし、bomファイルが参照する実際のファイルはどこにあるのでしょうか?インストーラ内の圧縮ファイル(通常はArchive.pax.gzやArchive.paxなど)の中に隠れています。このファイルを別の場所にコピーし、Finderで展開することができます(読み取り専用のディスクイメージを使用しているため、その場で展開することはできません)。Finderは.pax.gzと.pax形式に対応しています。

ファイルを展開すると、bomファイルに示されているファイルを含むフォルダが作成されます。76マルウェアの場合、そこにはMozillaplug.plugin(実際にはbomファイルに示されている他のファイルを含むバンドル)、plugins.settings、sendreqの3つのファイルがありました。多くのプログラムでは、これらのファイルはバイナリコードであり、テキストエディタでは表示できません。しかし、76の場合はテキストファイル(シェルスクリプト)だったので、テキストエディタで確認することができました。

Plugins.settings はプリインストールスクリプトのコピーであり、cronジョブ(最初の記事で説明した通り)によって実行されるコードです。これにより、「不正な」DNSサーバーの情報が常に確保されます。Sendreq は一度だけ実行され、その後削除されます。Sendreq はマシンに関する基本情報(驚くべきことに、それほど危険なものではなく、プロセッサの種類とマシン名のみ)を収集し、不正なサーバーの1つに送信します。

これらのファイルの分析は他のファイルの分析よりも少し複雑ですが、手順は基本的に同じです。つまり、単語をざっと読み、ある程度意味が通っているかどうかを確認します。キーワードを探し、Googleにそのキーワードが何をするのかを説明してもらいます。自分が行っていることと関連しないはずのものへの参照も探してください。例えばsendreqの場合、IPアドレスやネットワークアクティビティに関連する「ソケット」関連のものへの参照がありました。なぜビデオコーデックが私のマシンに関する情報を収集してどこかに送信する必要があるのか​​疑問に思いました。

まとめ

この時点で、私はこのダウンロードを8回も強制終了していたでしょう。普段なら、たった一度の失敗でそうしてしまうでしょう。しかし、技術に詳しくない人でも、インストール前に疑わしいパッケージを確認する方法を少しでも理解していただけるよう、このプロセス全体を解説したいと思います。しかも、基本的にテキストエディタとFinderだけを使って。

もちろん、疑わしいパッケージを扱う最も安全な方法は そのまま破棄し、ネットで詳細を調べてからインストールを進めることです。しかし、もし興味があれば、ここで紹介した方法を使えば、インストール前にアプリケーションパッケージを安全に検査することができます。ただし、安全が保証されているわけではないことを覚えておいてください。ここで示した内容のほとんど全ては、現実的に偽造することが可能です。疑わしいパッケージのインストールを続行すると、依然として問題が発生する可能性があるのです。

[ 上級編集者 Rob Griffiths が Mac OS X Hints Web サイトを管理しています。 ]