gophish を使ったお手軽な標的型攻撃メール訓練

freee株式会社 土佐です。今年の7月からCISOとして、全社セキュリティ・プロダクトセキュリティを担当しております。

この記事は、 freee developers Advent Calendar 2017 の 22日目の記事になります。

標的型攻撃メール訓練やってますか?

f:id:teppei-studio:20171222011938j:plain

IPAが毎年発表している 情報セキュリティ10大脅威 で、2014年 から 4年連続で1位となっているのが「標的型攻撃による情報流出」です。

当社でも、たまたま素晴らしく注意深い社員が受信したことで被害を未然に防ぐことができましたが、実際にかなり巧妙な標的型攻撃メールを受信しました。

もちろん様々にシステム的な防御策をとってはいますが、如何せん人を狙った攻撃である以上、人が強くならないといけないのが、この攻撃の厄介なところです。

ということで、多くの企業も実践済みだとは思いますが、当社でも標的型攻撃メール訓練を実施しました。

この訓練は、取引先からの仕事のメールを装った攻撃メールを実際に従業員宛に送付し、その従業員の行動として適切な行動がとれるよう、従業員に対する啓発を行うものです。

gophish とは

標的型攻撃メール訓練の実施には、様々なセキュリティベンダーからソリューションとして提供されています。しかし、この記事 で gophish の存在を知り、まずは gophish を活用して内製で実施してみたら、コストメリットあるのではないかと考えました。

gophish というのは、フィッシングメールや、標的型攻撃メールの訓練を簡単に行えるオープンソースのツールキットです。

結論から言ってしまうと、非常に構築も簡単だし、使い勝手もよく、素晴らしいものでした。

この記事では gophish の紹介と使う上でわずかながらつまづいたポイントについて、そして、標的型攻撃メール訓練をやるに当たって、特に気をつけたことについて共有させていただきたいと思います。

gophish の環境構築

gophish の環境構築は非常に簡単です。 gophish は go言語で書かれていますので、 go言語の環境設定ができていることを前提に説明します。

まずは go get でソースコードを取得して

go get github.com/gophish/gophish

そのディレクトリに移動して

cd $GO_HOME/src/github.com/gophish/gophish

ビルドして、

go build

起動する。

sudo ./gophish

すると、もう画面を開いてログインをすることができます

f:id:teppei-studio:20171221134053p:plain
ログイン画面

デフォルトのID/PWは以下の通りです。

id: admin / pw: gophish

これに加えて、今回は AWS EC2 にインスタンスを立てて、そこに環境構築したので、SecurityGroupの設定を適宜修正しています。

それに合わせて、httpsのURLになる管理画面のポートを修正するために config.json を修正しています。

{
        "admin_server" : {
                "listen_url" : "0.0.0.0:443",
                "use_tls" : true,
                "cert_path" : "gophish_admin.crt",
                "key_path" : "gophish_admin.key"
        },
        "phish_server" : {
                "listen_url" : "0.0.0.0:80",
                "use_tls" : false,
                "cert_path" : "example.crt",
                "key_path": "example.key"
        },
        "db_name" : "sqlite3",
        "db_path" : "gophish.db",
        "migrations_prefix" : "db/db_"
}

また、インスタンス起動後、サービスとして上がってきてもらいたいので、以下のように /etc/init.d/gophish を作成して chkconfig で rc登録しました

#!/bin/bash
# /etc/init.d/gophish
# initialization file for stop/start of gophish application server

processName=Gophish
process=gophish
appDirectory=/home/ec2-user/go/src/github.com/gophish/gophish
logfile=/var/log/gophish/gophish.log
errfile=/var/log/gophish/gophish.error

start() {
    echo 'Starting '${processName}'...'
    cd ${appDirectory}
    nohup ./$process >>$logfile 2>>$errfile &
    sleep 1
}

stop() {
    echo 'Stopping '${processName}'...'
    pid=$(/usr/sbin/pidof ${process})
    kill ${pid}
    sleep 1
}

status() {
    pid=$(/usr/sbin/pidof ${process})
    if [[ "$pid" != "" ]]; then
        echo ${processName}' is running...'
    else
        echo ${processName}' is not running...'
    fi
}

case $1 in
    start|stop|status) "$1" ;;
esac

はい。本当に簡単ですね。素晴らしい。

gophish の使い方

送信先の設定

「User & Group」のメニューから送信先をグループに追加していきます。

f:id:teppei-studio:20171222121256p:plain

送信するメールのテンプレートを設定

「Email Templates」のメニューから送信するメールのテンプレートを設定します。このテンプレートでは、既存のメールをインポートして、実在するメールに限りなく似せることを簡単にする機能もあります。

また、{{.FirstName}} のような記法で動的に値を設定させることもできます。この辺りの記法は、マニュアルサイトにまとまってます。

「+Add Files」からメールに添付するファイルを指定することもできます。

f:id:teppei-studio:20171222115504p:plain
Email Templates

フィッシングサイトの登録

「Landing Pages」のメニューで、メール上のリンクで開かせるページを登録することができます。ここも、「Import Site」のボタンから既存のページを取り込んで、簡単に本物そっくりのフィッシングサイトを登録することができます。主にログインページを登録して、パスワードを盗み取るフィッシングサイトを作ることを想定しているようです。

また「Capture Submitted Data」にチェックを入れると、ログイン画面で訓練対象者が実際に入力した値を取得することができます。ただ、その下の「Capture Passwords」のチェックを入れない限り、パスワードを取得することはありません。訓練と言えども従業員のパスワードを取得するのはやばいですからね。

さらに「Redirect To」 には、ログインボタンが押下された後に遷移するサイトのURLが指定できます。ここに本物のログイン画面のURLを指定すると、訓練対象者はたまたまパスワードの入力などが間違ってしまっただけに見えて、完全に騙すことができるでしょう。やばいですね。

f:id:teppei-studio:20171222115510p:plain
Landing Pages

送信元メールアドレスの設定

「Sending Profile」のメニューからは、訓練メールの送信元アドレスを設定することができます。この画面には「Send Test Mail」というボタンがあって、ここから設定された送信元メールアドレスから実際にメールを飛ばしてみて、設定が正しいか確認することもできます。便利。

f:id:teppei-studio:20171222115515p:plain
Sending Profiles

訓練の設定

「Campaigns」のメニューから、訓練設定を登録することができます。上述で設定した各種登録を組み合わせて、訓練設定の登録を行います。

「URL」の入力欄は、フィッシングサイトのURLを登録します。

f:id:teppei-studio:20171222115856p:plain

実際にやってみた

さて、キャンペーンを稼働させると、こちらのようなメールが届きます。

f:id:teppei-studio:20171222120114p:plain

これは、当社のプロダクトである 会計freee から送信される スマート請求書 のメールとそっくりに作ったメールになります。

スマート請求書 とは、freeeのユーザ企業同士でfreeeの請求書機能を使って請求書を送受信した場合に、受け取った請求書の経理データ入力までの作業をワンクリックで処理できる、非常に便利な機能です。

実際の訓練では、送信元企業名には、日本でもっとも多い企業名を使いました。

f:id:teppei-studio:20171221172744p:plain

メールにあるボタンリンクを開くと、会計freee のログイン画面が表示されます。本物のログインページを取り込んで作ったものなので、メールアドレスの形式チェック処理なども本物と同じように動くので、訓練対象者をかなり騙すことができてしまいます。

今回の訓練では、このページのURLが直IPアドレスのままになるようにしたので、URLを見ておかしいと気づくことができるようになっていました。

そして、ログインボタンを押してしまうと、種明かしとばかりにこのようなDocが開くことになります。

f:id:teppei-studio:20171221172802p:plain

最大の難関は Gmail

非常に簡単に構築できて、使い勝手のいい gophish ですが、一点非常にハマった問題がありました。

それは、Gmail のフィルタ機能をどう掻い潜るかです。当社はグループウェアやOffice製品代替、メールサービスとして、G Suite を使っています。 G Suite に置けるメール機能である Gmail は、不正メールの検知機能が非常に高性能です。当社の CSIRT では、警視庁のTwitterアカウントが、最近拡散中の標的型攻撃メールの情報を公開して警戒を促しているのを受けて、そこで報告されている件名のメールを受信している従業員がいないかどうか都度調査しています。それを見ると、ほぼほぼ全て Gmail の方で不正なメールを検知して、自動的に reject してくれています。高度な不正メール検知機能をどう掻い潜るかが一番難しいポイントでした。

色々試した結果、訓練用にドメインを取得して、Office365のアカウントを作成して、それを gophish に登録することで実現できました。

本当はやりたくなかった標的型メール訓練

実は、私、標的型攻撃メール訓練をやるのがずっと嫌でした。やりたくありませんでした。

というのも、前職で同じような訓練をやらされて、メールを開いてしまった経験があるからです。

そのメールのタイトルは「昇給通知」というものでした。

あれ〜?昇給の季節じゃないはずなんだけどなぁ、俺ってなんか特別なのかなぁ、とか、

この送信者の人の名前、こんな名前の人が人事にいたようないなかったような、、、

などなど、おかしいなおかしいなと思いながら開けました。

でも、昇給通知なんて言われたら、開けちゃうのが人情ってもんですよね!?

そして訓練と知って、なんだかとっても会社に裏切られた気分でした。 (自分が悪いのに)

みんなにそんな思いをさせる立場に私がなるなんて、絶対嫌だったんです。

しかし、いくつかの記事などで、「開封率に捕らわれるな」という論調に触れて、確かに開封率より大事にすべき本質があるはずだ、それをちゃんとみんなにコミュニケーションすれば、誤解なくやれるのではと考えました。

一番大事にしないといけないのは開封率ではなく、連絡率

今回実施した訓練でもっとも大事にした指標は連絡率です。

メールを開こうが開くまいが、何かおかしいと思った時に CSIRT に連絡をもらうことが大事なのです。仮にメールに気づいて開かなかったとしても、他の誰かが開いていてマルウェアに感染しているかもしれません。それをCSIRTは調査することができますし、しないといけないです。

訓練を実施するにあたり、全社ミーティングなどでそれを事前に周知しましたし、前述の偽ログイン画面でログイン操作をしてしまった後に表示するドキュメントでも、そのことを説明しました。また、開いた開かなかったに関わらず、連絡をくれた人には感謝の言葉を忘れませんでしたし、訓練の総括として、連絡率に対する評価を社内に共有しました。

今の所、これといった不満の声は届いていませんし、連絡率も8割を超える結果となったので、悪くないアプローチだったのかなと思います。

最後に

いかがでしたでしょうか。

標的型攻撃は人が狙われるものなので、人を強くすることが大事です。 gophish を使って、お手軽に訓練をやってみてはいかがでしょう。

freee では Hack Evertything の精神で、セキュリティ向上に取り組む仲間を募集しています。興味のある方は、ぜひお気軽に話を聞きにお越しください。

jobs.freee.co.jp

さて、いよいよアドベントカレンダーも大詰め。明日からは freee が誇る 最強豪腕エンジニア達の記事が三日続きます。明日はその一番手、米川さん です。孤高のスーパーエンジニアに授けられたポジションは、 Change The World ... !!。お楽しみに!!