min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

自分のDropboxやGmailのパスワードが流出していないかをPythonで調査する → 成功

 

スマホを見ていたらなかなか面白そうな記事。パスワードが流出済みかを検索できるサイトがあるようだ。

forbesjapan.com

f:id:min117:20180304101217p:plain f:id:min117:20180304101224p:plain

 

f:id:min117:20180304101228p:plain f:id:min117:20180304101233p:plain

f:id:min117:20180304101237p:plain

このサイトらしい。Have I Been Pwned?(私って今まで流出したことある?)、略して HIBP というサイトだ。

haveibeenpwned.com

 

上記記事の見出しが「流出済みパスワードが検索できる」とあるがこれは記事を書いた人の(わざとの?)間違いと思われる。

パスワードが検索できるのではなく、あくまでパスワードが漏れたことがあるか履歴を検索できるのみのようだ。

記事の中でも「履歴が」と言ってるだけで、パスワードそのものが検索できるとは言っていない。見出しがミスリードな気はする。

 

とはいえ、非常に有用なサイトであることには変わりない。使い方は簡単で流出しているか調べたいアドレスemail address欄に入れて「pwned?」ボタンを押すだけ。

Have I been pwned? Check if your email has been compromised in a data breach

早速やってみる

f:id:min117:20180304102258p:plain

ガッツリ流出していた

英語表記だが内容はカンタン。要は dailymotion と Dropbox で流出していたよ、と言う結果が出ている。

まあ、使っていたのは捨てアドレスだったから問題ない。Webで使うサービスは、いつハッキングされても捨てられるダミーでやるのは当然だから。

HIBPの使い方はこのサイトが詳しい。

www.bousaid.com

今回の結果をもう少し具体的に見てみる。

f:id:min117:20180304103139p:plain

dailymotion

 Eメールアドレス、パスワードユーザ名が流出した

Dropbox

 Eメールアドレス、パスワード が流出した

と分かる。しかし、

f:id:min117:20180304103613p:plain

no pastes となっているので、流出したデータはもう残っていないという結果になっている。

これが

f:id:min117:20180304103547p:plain

のように、3 pastes (3件 pastsesに残っているよ)だとヤバい流出したうえに、公開されてしまっているということだ。そんなIDやパスワードの場合は、もしかしたら「3 pastes」の文字のすぐ下くらい表示されてしまうのかもしれないが、そんなIDは持っていないので今回は試しようがない。良識あるWebサイトはそんなことしないと思うけど。

pastes について>

  おそらくだけど「pastebin」のことを言っているのだろう。以前 Hotmail のアカウントをハッキングされかけたことがありネットを漁ったが、どうやら流出したアドレスは paste(貼付け)bin(バイナリ)という掲示板サービスに貼り付けられることが多いようだ。HIBPはこの pastebin の最新情報を見に行って流出しているかを調べているらしい。

なお、pastebin掲示板サービスは今でも(ググれば)普通に出てくるだろうが、知識がないまま行くとウイルスが仕込まれていたりするので興味本位では近づかないほうがいいと思う。今なら bitcoin のマイニングを仕込まれちゃうとか、充分ありそうだ。開発等の都合で訪れるとしても充分注意が必要だろう。念のため 仮想端末+捨て回線 を使うとか。

 

話が逸れたが、ここからが本題

HIBPによると、流出したIDパスワードHIBPのAPIを経由して読みだせるようだ。

haveibeenpwned.com

しかも。このAPIを使った AndroidアプリやiOSアプリがすでに公開されている。

haveibeenpwned.com

f:id:min117:20180304110316p:plain

しかしだ。Androidアプリは全く信用できない。とくにセキュリティに関するものは。今回も「パスワードが流出したかを確認するアプリ」を装って「パスワードを入力させて盗み取る」アプリである可能性は否定できない。基本的に「ネットに転がっているアプリはオレオレ詐欺だ」と思っているので。ATMに誘導される老人のようにリンクを踏む気にはなれないのだ。

その点iOSアプリはまだ信用できる。OSの強固なセキュリティがあるし、さらにはAppleアプリ開発ルール(必ず審査がある)によって、安全であることがほぼ担保されるからだ。

しかし今回は、アプリは使わない。なぜなら、Python スクリプトが公開されていたから。

 f:id:min117:20180304110800p:plain

使うならやはりPythonソースから何をしているか(ある程度は)追うことができるし、自分で実装もできる。何より RaspberryPi の閉じた環境で実行させられるから、何かしらのウイルスであってもネットから切り離してしまえば対処できるからだ。

ということで、一つ目のリンクのPythonスクリプトを早速試してみる。

f:id:min117:20180304111030p:plain

スクリプト作成者は「caseydunham」という人らしい。うーむ。見た目は怪しい気もするが。人のこと言えないか。

github.com

「clone or download」からソースを取得する。今回は zip でダウンロードした。

f:id:min117:20180304111426p:plain

落としたzipをRaspberryPiに移動して解凍。pwnedcheck というフォルダができた。中にある README.rst を読んでみると、サンプルスクリプトが書いてある。

f:id:min117:20180304111630p:plain

print文にカッコがないところからすると python2.7 で書かれているようだ。手元のRaspberryPiの環境は python3 になってしまっているので、pyenvを使って2.7環境に変える。

f:id:min117:20180304111552p:plain

ダウンロードした PwnechCheck をpipからインストールする。なぜかsudoしないとうまくインストールできなかった。pyenvまわりの設定がおかしいんだろう。

$ sudo pip install PwnedCheck

f:id:min117:20180304112740p:plain

サンプルのとおりのスクリプトを書いてみる。

$ vim myPwnedCheck.py

f:id:min117:20180304113002p:plain

実行もsudoをつけてやる(そうでないと moduleなしエラーになってしまう)。

$ sudo python myPwnedCheck.py

f:id:min117:20180304113117p:plain

上記 README.rst によると、戻り値が[]の場合は流出なしだ。流出はしたものの、pastebinに残っている情報は無いとのことで、安全と判断できる。

あとはテスト用にたくさん持っているダミーアドレスがのうち流出してるのはないかこのスクリプトに食わせて確認してみよう。来週でもやってみる。

追記)

調査の途中で面白そうなサイトも見つけた。

楽しいPwn入門 · GitHub 

後で読む。