午前7時のしなもんぶろぐ

駆け出しのセキュリティエンジニア、しなもんのぶろぐ。

怪しいファイル・サイトを検査! 「VirusTotal」の安全な使い方教えます!

お久しぶりです!

しなもんです。

 

大変お待たせしました……(。>﹏<)

最近は Twitter でばかり活動していてしなもんぶろぐの方はご無沙汰でしたが、ちゃんとブログも続けていくつもりですのでこれからもどうかご愛読ください。

 

ブログでは主にセキュリティ技術者以外の一般の方向けのある程度ボリュームある記事を書いている (つもりな) のですが、Twitter では単なる思い付きやある程度詳しい方向けのつぶやき (と雑談) がメインになっています。

もしよろしければあわせてご覧ください。

twitter.com

さて、本日はファイルやサイトの危険性を検査できるサイト「VirusTotal」と、その安全な使い方をご紹介します。

 

 VirusTotal って何?

ゲームや役に立つソフトだと思って、インターネットからダウンロードしてきたファイル。

 

誰かから送られてきたメールに添付されていたファイル。

 

その文中に貼られていたリンク。

 

それらがマルウェア*1だったり、フィッシング*2サイトだったりすることはないでしょうか?

 

危ないファイルやサイトとは関わりたくないですよね!!!

 

そこで使える Web サービスが「VirusTotal」(ウイルストータル) です!

www.virustotal.com

 

f:id:am7cinnamon:20200423210138j:plain

VirusTotal の TOP 画面

 

VirusTotal のすごいところ

無料で使える

Virustotal は無料でファイルやサイトの検査を行うことができます。

 

実は多機能な有料版もある*3のですが、セキュリティのプロではない一般の方が使用する分には、無料でも十分です。

 

色々なセキュリティソフトの検査結果を一覧ですぐ見られる

VirusTotal で見られるのは、何十個ものセキュリティ製品によってそのファイルやサイトを検査した結果です。

 

セキュリティソフトを何個も買って試すことはなかなかできないですよね*4

 

VirusTotal を利用すれば数多いセキュリティソフトの結果を一度に見られます。

 

ただし、VirusTotal には実製品がそのまま搭載されているわけではないそうなので、「〇〇を検知できなかったこの製品はダメ!」というようなことはいえないらしいです。

 

Google が運営している

現在 VirusTotal を運営しているのはあの Google です。検索エンジンで有名ですね。

 

どこだかわからない会社ではなく誰もが知っている大企業なので、その点は信頼できますね。(もちろん無条件に信用していいわけではありませんが……)

 

運営費用はおそらく有料会員の代金だと思われます。特に広告などは出てこないです。

 

セキュリティのプロも使っている

プロのセキュリティエンジニアの間でも VirusTotal はよく使われています。

 

オンラインツールとしては最も有名なもののひとつではないでしょうか?

 

略して VT (ブイティー) ということが多いですね。

 

 VirusTotal の使い方

ファイルを調べる場合

使い方はいたって簡単なのですが、ひとつ非常に重要な注意点があります。

 

VirusTotal を開くと、おそらくこのような状態だと思います。

 

f:id:am7cinnamon:20200423212440j:plain

ファイル選択

これはアップロードして検査するファイルを選択するタブが表示されている状態です。

 

 「Choose file」ボタンを押すことでファイルを選択でき、検査が始まります。

 

このとき、会社の業務用データや個人情報などの機密情報の載ったファイルを決して選択しないでください

 

絶対に、絶対にやめてください

 

実は VirusTotal の有料会員になると、他の人がアップロードしたファイルをダウンロードすることができます。

 

つまりどこかの誰かに、あなたがアップロードしたファイルを見られてしまうのです。情報漏えい事案です!!!

 

個人のデータもさることながら、会社で仕事に使っているようなファイルは(たとえ漏れても大したことなさそうな情報に見えたとしても)絶対に選択してはダメです。懲戒処分などの罰を受けることになりますよ。

 

インターネットからダウンロードしてきたファイルなどはそのまま検査するのもありだと思いますが、間違いを避けるためにファイルの直接アップロードは一切使わないというのも一つの手です

 

ではどうすればいいかというと、ファイルの「ハッシュ値」を貼り付けて検査します

ハッシュ値とは、例えばこのような文字列です。

MD5: 38851458a7cb886708cdfdb05e61b54d

SHA-1: f1460f2823f6b342e8c44f3be906a8909fe1af92

SHA-256: 59292f4d6617354e5572f943dce9b3641b3c935a55152211377079b619ea3646

 

 (ちなみに上のハッシュ値は、NISC の「インターネットの安全・安心ハンドブック Ver4.10」から取得しています。大変参考になりますので是非ダウンロードしてご覧ください。)

 

 貼り付ける場所はここです。

 

f:id:am7cinnamon:20200423220318j:plain

SEARCH

 

 ハッシュ値 (上の MD5 の場合、「38851458a7cb886708cdfdb05e61b54d」) を選択してコピー*5、上の画像の入力欄で貼り付け*6するとうまくいきます。

 

 ハッシュ値とは何かとその取得方法については、後で説明します。

 

サイトを調べる場合

ファイルの場合とは異なり、サイトを調べる場合はそのサイトの URL を直接貼り付けて大丈夫です。

 

f:id:am7cinnamon:20200423221057j:plain

URL 入力 (午前7時のしなもんぶろぐの URL を貼った状態)

ためしに「午前7時のしなもんぶろぐ」の URL を調べてみましょう。

 

上の画像の状態で Enter キーを押すと (環境やタイミングによっては時間がかかることがあります) ……

 

f:id:am7cinnamon:20200423221437j:plain

URL 検査結果 (ファイルの場合もほぼ同じ画面です)

 

 このようになりました。左上の〇の中にある大きな数字が「これを悪性と判定したセキュリティ製品の数」を示しています。

 

今回は、「79 個の製品で検査した結果、そのうち 0 個の製品がしなもんぶろぐを悪性と判定した」ことがわかります。しなもんぶろぐは別に危険なサイトではないので当たり前ですが。

 

悪性判定した製品は、緑のチェックの代わりに赤い!マークが現れます。

 

f:id:am7cinnamon:20200423222157j:plain

多数検知された例 (ファイルのハッシュ値で検査)

このように真っ赤になったらかなり怪しいと考えてよいでしょう。

 

基本的に、実行したりアクセスしたりするのはやめておいた方がいいです。

 

ハッシュ値について

ハッシュ値って何?

 さて、ファイルを VirusTotal で調べるときには「ハッシュ値」を使うと言いました。

 

ハッシュ値は専門用語の類なので、ご存じない方も多いと思います。

 

ハッシュ値とは、「元のデータをある計算手順 (これをハッシュ関数といいます) によって計算した結果出てくる、一定の長さの文字列」です。

 

ハッシュ値には次の性質があります。

  • ハッシュ関数が同じなら、元のデータが何であっても、ハッシュ値の長さは一定
  • ハッシュ値から元のデータを復元することはできない
  • 元のデータがちょっとでも (例えば、100万文字の中の 1文字だけでも)違うと、出てくるハッシュ値はまったく違うものになる
  • 計算の結果、ハッシュ値が一緒になる2つの元データを見つけるのは難しい
  • ハッシュ関数と元のデータが一緒なら、ハッシュ値いつ誰が計算しても一緒

 

 以上から、ハッシュ関数は「あるファイルを高確率で特定でき、しかも元のファイルそのものを明らかにしなくてすむ」ことがわかります。

 

アップロードしても大丈夫なのはこのためなのです。

 

ハッシュ値の求め方

計算といっても、もちろん筆算などはしません。パソコンにやってもらいます。

 

オンラインツールもありますが、ファイルをネット上にアップしては意味がないので、ここでは扱いません。

 

次の2通りの方法があります。

 

フリーツールを使う

ハッシュ値を計算してくれるフリーソフトが出回っているので、それを使う方法です。

 

例えば、ドラッグ&ドロップですぐハッシュ値を求められる「HashMyFiles

www.nirsoft.net

右クリック→プロパティからハッシュ値を確認できるようにする「HashTab

forest.watch.impress.co.jp

などが有名です。

 

便利なのですが、勝手にソフトをインストールできない会社などでは使うことができません。

 

その場合には次の方法をおすすめします。

 

OS の標準機能を使う

OS (Operating System) とは、コンピュータを動かす基本となるソフトウェアです。

 

多くの方は、Windows (Microsoft 社)か MacOS (Apple 社) のいずれかを使っていると思います。

 

実はこれらの標準機能として、ハッシュ値を計算できる機能があります。標準機能なので、追加でソフトを入手しなくてもそのまま使えます

 

そのやり方をご紹介します。

 

Windows の場合

※Windows10 で解説しますが、7 や 8 でも大差ないと思います……

 

まず、ハッシュ値を計算する元のデータをどこかのフォルダに保存します。

 

ここでは私のデスクトップ上にある「Hash」フォルダ上にある「handbook-all.pdf」*7ハッシュ値を計算します。

f:id:am7cinnamon:20200426185357j:plain

このファイルのハッシュ値を計算します

 

この状態で、上のアドレスバーに「cmd」と入力し、Enter キーを押してください。すると……

f:id:am7cinnamon:20200426185701j:plain

この状態で Enter!

 

何か黒い画面が出てきました! これが「コマンドプロンプト」です*8

f:id:am7cinnamon:20200426185917j:plain

黒い画面が!

いかにも難しそうで拒否反応を起こす方が多そうですが、今回の目的はハッシュ値を計算することです。そのためにすることはあまり難しくありません。

 

次のように入力し、Enter キーを押してください。

 

certutil -hashfile (ファイル名)」

 

f:id:am7cinnamon:20200426191033j:plain

入力した状態。ここで Enter キーを押すと……

一瞬で次のように表示されるはずです。ここに書いてある文字列こそがハッシュ値です。

f:id:am7cinnamon:20200426191337j:plain

矢印の示す文字列がハッシュ値

デフォルトでは「SHA-1」というハッシュ関数が使われます。

 

他のハッシュ関数を使いたい場合は、その関数の名前をファイル名の後ろに指定します。

 

次のハッシュ関数が使えるそうです。

  • MD2
  • MD4
  • MD5
  • SHA1
  • SHA256
  • SHA384
  • SHA512

f:id:am7cinnamon:20200426192017j:plain

「SHA256」を指定した場合

 

こうして取得したハッシュ関数VirusTotal でコピー&貼り付けしましょう。

 

MacOS の場合

MacOS でも標準機能で計算できるそうです。

 

そうですって何だよ、と思われるでしょうが、しなもんMac を持っていないので検証できないのです……

 

コマンドライン上で、次のブログに記載されているコマンドを入力してください。保証はできませんが、まず問題ないはずです。

blog.amedama.jp

 

Q&A

Q : VirusTotal でまったく検知されなかったら安全?

 

A : そうとは限りません。

 

VirusTotal は危険なファイルやサイトを 100% 検知できるわけではないのです。

 

セキュリティ製品開発者が知らない新種のマルウェアや、新しくできた危険サイトの場合、検知できないことがあります。

 

そのため、もし VirusTotal で何もなくても、「何か怪しい」と感じたら触らないでおきましょう。

 

セキュリティ製品がアップデートされて、後から検知できるようになることもあるようです。

  

もちろん、100% 検知ができないから役に立たないかというと、そうでもありません。過信できないだけで、十分参考になります。

 

Q : VirusTotal でいくつか検知しているけれど、これってマルウェア

 

A : そうとは限りません。

 

セキュリティ装置が誤って検知することもあります

 

検知した製品が1つ2つ程度のときは、間違いの場合も多いようです。

 

検知名 (!の後に出てくる、その製品が判定した分類) なども見て総合的に判断するといいでしょう。

 

Q : ハッシュ値ってたまたま別のファイルと一致することはないの?

 

A : めったにありません。

 

ハッシュ値は有限な長さの文字列なので、あらゆるファイルに対して別のハッシュ値が出てくるわけではありません。あるファイルに対して、同じハッシュ値を持つ別のファイルが存在し得ます (このことをハッシュ値の衝突といいます)。

 

しかしそうしたファイルを見つけるのは非常に困難です。特に、ハッシュ関数は「なるべくハッシュ値の衝突を起こさないように」設計されていて、やろうと思ってもなかなかハッシュ値が衝突するファイルを作り出せません。

 

そのため特に気にしなくて大丈夫です。

 

Q : どのハッシュ関数 (ハッシュ値) を使えばいいの?

 

A : 次に示すハッシュ関数ならどれでも構いません。

 

MD5」「SHA-1」「SHA-256」のいずれかがよいでしょう。

 

これらならばまず問題なく検査できますし、互いに性能の高低などもないはずです。

 

あえて言えば、この中では SHA-256 が最も衝突しにくい新世代のハッシュ関数なのでおすすめと言えばおすすめですが、前述したようにハッシュ値の衝突はめったに起こりませんので気にするほどの差にはならないです。

 

Q : ネットで「MD5SHA-1 は危険だから使うな!」って書いてある記事を見つけたんだけど……

 

A : まず問題ありません。が、心配なら新しいハッシュ関数を使いましょう。

 

MD5SHA-1 は古いハッシュ関数で、今では安全に使用できなくなったといわれています。それはそのとおりです。

 

具体的には、人為的に衝突を起こすことができることができるようになったのです。

 

しかしこれが問題になるのは、デジタル署名のように厳密さが大事な場面であって、単にファイルのハッシュ値をデータベースと照合する程度の使い方であればまず問題はありません

 

衝突を起こせるといっても、そのつもりで高度な計算をしてはじめてできることですからね。

 

しかしそれでも心配なら、SHA-256 を使うとよいでしょう。取得の手間はほとんど変わりませんし。

 

 Q : ハッシュ値って本当に絶対に元のファイルには戻せないの?

 

A : 戻せません。

 

たかが数十文字の文字列から元のファイルを復元するのは、崩れた灰から書類を再生するようなものです。できません。

 

そのため、情報漏えいを気にせずどんどん使って大丈夫なのです。

 

ただ、あなたが検査したファイルとまったく同じファイルを持っている人*9にだけは、「自分が持っているファイルと同じものを誰かが検査した」ことはわかります。

 

 普通に使う分には問題にならないでしょう。

 

まとめ

  • VirusTotal は無料で簡単に使える、ファイル・サイト検査ツール
  • ファイルを検査するときはハッシュ値を使う。絶対に業務用データや機密情報をアップロードしてはダメ
  • サイトを検査するときは URL をそのまま貼り付ければ OK

 

 危険なサイトに誘い込んだり、マルウェアに感染させようとする攻撃は、企業や組織だけでなく一般人を狙っても頻繁に起きています。

 

VirusTotal は、危険なファイルやサイトを回避するための強力な助けとなってくれるでしょう。ぜひ有効活用してください。

 

*1:いわゆる「コンピュータウイルス」など、悪さをするソフトウェアのことです。

*2:個人情報やパスワードなどを入力させてだまし取ることを目的とする詐欺・サイバー攻撃です。過去記事もご覧ください。→

https://am7cinnamon.hatenablog.com/entry/whatisphishing

*3:ものすごく高価らしいので個人で購入するのはあまり現実的ではありませんが

*4:実際には、同じ端末に同時に複数のセキュリティ製品をインストールすると、不具合が起きてかえってセキュリティが弱まるのでやめましょう。

*5:Winodws の場合、Ctrl キー+C キーのショートカットが便利です。

*6:Winodws の場合、Ctrl キー+V キーのショートカットが便利です。

*7:上で例に挙げた NISC のハンドブックです。

*8:コマンドプロンプトを起動する方法はほかにもありますが、私はこれが一番手っ取り早いと思います。

*9:もしくは何らかの理由でハッシュ値を知っている人