学ぶだけからサヨナラする、「社内ハッキング大会」を始めてみた
皆さん、こんにちは。
3Sunnyでセキュリティエンジニアをやっております牧野です。
弊社では先日「社内ハッキング大会」と題して、セキュリティ勉強会を開催しました。今日はその勉強会について詳しく書かせていただきます。
このような方の参考に少しでもなれば幸いです🌟
セキュリティ勉強会は、学ぶだけになりがち
皆さんは、セキュリティ勉強会に参加したことはありますか?
私はこれまでに参加側と主催側を何度か経験したことがあります。その中でいつも課題に思っていたのは、学んだことを実務に紐づけるのが難しいということでした。
一般的に多くの勉強会が講義形式ですが、単に講義を受けるだけでは実践的な知識が身につかないことがあります。一方ハンズオン形式だとしても、教材(やられサーバー)を攻撃する場合が多く、実際に自社で開発しているプロダクトとは構成が異なるため、「結局うちのプロダクトではどうなのか?」を紐付けることが難しいです。
さらに言いますと、普段の開発では、利用ライブラリやフレームワークがセキュリティ対策を肩代わりしてくれている場合も多く、一層セキュリティに関する問題意識ができなくなります。ライブラリやフレームワークが施している対策は万能ではなく、使い方を間違った場合や脆弱性が報告された時に対応する必要があります。
日頃から開発メンバー全員のセキュリティ意識を高めておきたいというのが、セキュリティ担当者の本音です。
そこで考えたのが「社内ハッキング大会」
このような課題を解決するために、社内ハッキング大会を実施してみました。
この勉強会で意識したポイントは3つあります。
1. 業界で起きた事件を紹介することで問題意識を高める
弊社は医療機関を対象としたSaaSサービスを開発しているため、医療業界で実際に起きた事件を探して紹介しました。脆弱性を悪用した攻撃をより身近なものに感じてもらうことで、セキュリティへの問題意識を高めてもらうことを狙いました。
2. 攻撃実習の後に、自社プロダクトでは攻撃が「成立しない理由」を解説する
今回の勉強会では、OWASPが公開しているJuice Shopというやられサーバーを攻撃実習に利用しました。Juice Shopには様々な脆弱性があり、ありとあらゆる攻撃が成立します。攻撃を体験するにはうってつけの教材です。
攻撃に使うツールにはBurp Suiteを用いました。
Juice ShopをBurp Suiteで攻撃して「こんな簡単に攻撃できるの?」と驚いてもらった後に、自社プロダクトでは攻撃が「成立しない理由」を解説することで、理解が深まることを狙いました。具体的には、利用ライブラリやフレームワークのセキュリティ対策について説明しました。
3. 今後起こりうる攻撃について話し合う
最後に、「自社プロダクトで今後攻撃が起こるとしたら、どの部分か?」を話し合いました。エンジニアの皆さんに「ここの部分が狙われるかもしれない」という話をしてもらうことで、セキュリティ担当者のプロダクト理解が深まるとともに、実務に直結するセキュリティ対策を話し合うことを狙いました。
【動画付き】勉強会のアジェンダの紹介
ここでは簡単に、勉強会のアジェンダをご紹介します。
Burp Suiteを用いてJuice Shopを攻撃している動画も公開しておりますので、セキュリティ勉強会開催の参考にしていただけたら幸いです。
1️⃣ ハッカーの世界へようこそ!
まず初めに、導入として以下の内容を説明しました。
事例紹介では、2022年に大阪急性期・総合医療センターで起きた事件を挙げました。この事件では、ランサムウェアによって電子カルテが使用不可になり、病院運営が完全復旧するまでに約2ヶ月を要しました。
ランサムウェアと聞くだけではピンとこない方もいらっしゃると思ったので、実際にランサムウェア感染する様子を表した動画も紹介しました。
2️⃣ アカウントハッキング(なりすまし)
アカウントハッキングとは、ログインに必要な情報(ID・パスワードなど)を不正に入手し、他者になりすますことを指します。
攻撃実習では「パスワードリスト攻撃」を皆さんに体験してもらいました。
Burp SuiteのIntruder機能を使って、Juice Shopのログイン画面でパスワードリスト攻撃を仕掛けるという攻撃です。実際の攻撃方法は動画をご覧ください。
3️⃣ 情報を盗み見る・改ざんする
次に、アクセス制御の不備を悪用する攻撃を体験してもらいました。
アクセス制御の不備とは、ユーザーに付与される権限が必要以上に与えられており、本来ならば許可されていない処理ができてしまう状態を指します。
例えば、SNSサービスを想定したとき、自分のアカウント以外にも、他者のアカウントを編集できてしまう状態を指します。
攻撃実習では、Juice Shopの商品に書かれた他人のコメントを改ざんすることを試してもらいました。
この動画では、Burp SuiteのRepeater機能を利用して、 admin@juice-sh.op というアカウントでログインした状態で、他人(stan@juice-sh.op )が書いたコメントを編集しています。
4️⃣ ライブラリの脆弱性情報を収集してハッキングする
ライブラリの存在する脆弱性情報は日々公開されており、その目的はユーザーへの注意喚起ですが、その一方で攻撃者にも情報を与えてしまう側面もあります。
勉強会では、Exploit Databaseを用いて、WordPress 4.7.1の脆弱性を検索してもらいました。この脆弱性を教材として選んだ理由は、医療業界でよく狙われるものだからです。病院のウェブサイトはWordPressで作成されていることが多く、その脆弱性で被害に遭うことが多い話も添えて説明しました。
5️⃣ コマンドを実行してハッキングする
入力データに攻撃コマンドを混入し、それを実行させてしまう攻撃手法を紹介しました。攻撃コマンドを「注入」することから、インジェクション(Injection)攻撃と呼ばれています。
攻撃実習では、Juice Shopのログイン画面でSQLインジェクションを起こしてadmin@juice-sh.op として不正ログインをしてみました。
6️⃣ ユーザーの意図しない処理を実行させる
最後に、ログイン状態のままのユーザーに、罠サイトのボタンやリンクを押させることで、意図しない処理を実行させるクロスサイトリクエストフォージェリ(CSRF)を紹介しました。
攻撃実習では、攻撃者が用意したwebサイト上のボタンをクリックすると、Juice Shopのアカウント名が変更されてしまうCSRFを体験してもらいました。webサイトのHTMLは以下の通りです。
<html>
<head>
<title>CSRF</title>
</head>
<body>
<form action="http://localhost:3000/profile" method="POST">
<input hidden name="username" value="HACKED!!!"/>
<button type="button" onclick="csrf()">クリックしてね</button>
</form>
<script>
function csrf() {
document.forms[0].submit();
}
</script>
</body>
</html>
気づき・まとめ
最後に、勉強会を実施してみて感じたことをまとめます。
🙆♀️ ビジネスサイドのメンバーにも参加してもらえた
開発メンバーを対象にしていた勉強会でしたが、当日はCS(カスタマー・サクセス)の方々にも参加していただきました!
セキュリティは会社全体で取り組んでいく必要がありますので、とてもありがたかったです。
🙆♀️ プロダクトの理解が深まった
エンジニアの皆さんと最後に「自社プロダクトで今後起こるとしたらどのような部分か?」をディスカッションすることで、私(セキュリティ担当者)のプロダクトの理解が深まりました。プロダクトをUI上で動かすだけではわからないような、データ構造や仕組みについてわかってよかったです。
🙅♀️ まだまだ「サヨナラ」しきれていない…
今回の勉強会では、Juice Shopを攻撃対象として扱いましたが、本当は自社プロダクトをみんなでハッキングする会を実施したかったです。「うちのプロダクトではどうなのか?」を考え、実務に活かすにはまだまだコンテンツとして弱いと感じました。
これは完全に裏話なのですが、自社プロダクトを診断しようとした際に、Burp Suiteでの通信にエラーが生じ、診断ができないというハプニングが起こったため、急遽Juice Shopでの実習に変更しました。
この問題を最近ようやく解決できたので、今度こそは実際に自社プロダクトをみんなでハッキングする勉強会を実施していきたいと思います💪
最後までお読みいただき、ありがとうございました。
セキュリティマガジンを連載していますので、ぜひフォローよろしくお願いします!