![見出し画像](https://assets.st-note.com/production/uploads/images/27433314/rectangle_large_type_2_08b0608177c2e66387294ed3def6072c.png?width=1200)
ペネトレーションテストの重要性
今回はちょっと真面目にエンジニアっぽい話題です。
突然ですが、みなさんハッカー (正確にはクラッカー) という人種をどのように想像されていますか?
映画「スノーデン」のようなクラッカーからハッカーへ転身したような人を想像されますか?あるいは漫画「BLOODY MONDAY」のようなホワイトハッカーを想像されますか?有名なAnonymouseというハッカー集団を想像されますか?
恐らくそのような人はいると思いますが、世間一般でイメージされているハッカーはわりと普通な人だったりします。
なぜだと思いますか?理由は簡単でインターネットが非常に発達しているからです。少し調べればそのようなツールはご丁寧に使い方まで教えてくれますし、もう少し深掘りすればコピペでハッキングですることが可能です。そのくらい誰でも身近にハッキングができてしまう時代です。
では我々エンジニアはどのようにしてその脅威からシステムを守るかを綴っていきたいと思います。
手の内を知る
システムを守る方法として手取り早いのは相手の手段を知るということです。セキュリティを導入するとききっと色々なワードで調べると思います。DDoS攻撃やリスト型攻撃などは既に有名だと思いますし、割と汎用的に使うことができるので一度ファイアウォールやWAFなど構築したことがあればなんとなく対処法はご存知かと思います。
IP制限や特定国ブロックなどあげればキリがないですが、おそらく普通のシステムであれば入れているはずです。
この対処法を構築した先人たちは、どのような点にクラッカーが注目してどのようなことをされると困るのかに視点で考えていたそうです。
DDoS攻撃をざっくりと例にとってあげると、
- 攻撃用のホストを用意する
- ツールを準備する
- IPを偽装する
- ツールを実行する
といった感じのフローを踏みます。上から順を追って潰していくとホスト、つまりPCの入手を制限するのは難しいので却下になります。
ツールのダウンロード制限などは全く無理ではないですが、自国領域のみなど限定的になってしまうためあまり効果的とは言えません。
IP偽装に関しては、ここはみなさん聞いたことはあると思いますが特定IPのアクセスをブロックしたり、Tor経由でのアクセス元となっている第三国からのアクセスを制限したりすることでブロックが可能です。
実行ツール経由でのアクセス制限は、今はあまりないのですが特定プロトコルでのアクセスなどは昔はあったようでそういった部分でブロックすることが可能です。
このあたりは割とレガシーな手法なので対処方法が確立されています。
しかし日々手法は進化していて、手の内の知りきるのは難しいです。
最近の手法
これは比較的新しいかつ誰でもできてしまい、システムを運用する上で注意すべきという意味合いで紹介するものです。
したがってこの記事を読んで悪用をすることは絶対にしないという事だけは肝に念じておいて頂けると助かります。
ペネトレーションテスト (侵入テスト) 用に開発されたKali LinuxというOSがあります。Dockerの公式イメージもありますし、フル機能を通常のLinuxディストリビューションにインストールすることができます。
あらゆる場面を想定して作られているため標準で搭載されているツールが多いです。
これを開発している人の中に私の知人はいますし、私自身コントリビューターとして活動をしていた時期がありました。彼らは性善説のもと人の役に立てばという志を持って日々開発をしています。
特になんのガードもしていないLAMP構成のサービスであればDBに侵入するのは数分で可能です。そのくらい優秀なOSです。
彼らは公式にオープンコミュニティを持っており、その中でこんなシステムのテストをしてみたレポートや機能についての議論を日々実施しています。
ただ悲しいことにこれらを逆手に取って悪用する人が多いです。非常に残念です。
ダークウェブなんて呼ばれることもありますが、非公式のコミュニティが確かに存在します。その中には社名が実名で表示されていて、どのように侵入したかが書いてあります。
開発者はこれらの情報を見ています。そして苦しみながらも該当機能を削るか残すかの決断をして、日々開発に勤しんでいます。
私にはその時の繋がりで自分が関わっているサービスがここに漏洩すると善意で教えてくれるコミュニティメンバーが何人かいます。非常に助けられていますし、感謝しています。
少し熱がこもってしまいましたが、このような便利なツールを悪用してしまえばたとえPCの知識がなくてもググればできてしまいます。
ここに手順を載せるのは簡単です。しかしそれは彼らの本意に反するので記載はしません。ただ容易にできてしまうのは事実です。
悪意のある攻撃から守る
私自身自分の担当しているプロダクトにペネトレーションテストを実施したことが何度もあります。そして何度も助けられました。
冒頭の繰り返しになりますが、システムを守る上でどこが脆弱でどんな攻撃がされるのかを知ることが重要です。
知るためには自分でやってみると言うことをおすすめします。
ググってでてくる情報は決して悪用のためでなく、そういったセキュリティテストや安全性の担保といった側面でのものが多いです。
テストして改善して、穴がなくなるまで繰り返せばよいのです。
しかしそれで終わりではありません。彼らは日々アップデートを続け細かなテストができるようになっています。そのため定期的なペネトレーションテストを実施することが最も重要です。
一度やって終わりでは、後続のバージョンに破られることはざらにあります。もしもここまで読んだ方でやったことないという方がいれば、是非一度やることをおすすめします。思わぬ形で穴が露呈すると思います。
そしてもしも知らなかったという方がいれば、厳しい言い方になりますがシステムを運用する上でのリスク管理への意識が弱すぎます。そういったツールやOSがあり、いかに簡単に悪用できてしまうかを知ってください。
最後に
今回の記事では概念的な部分のみしか記述しませんでした。
上述した通り、開発者の意図に反して悪用する人が後を経たないですし、それを書いたところで悪用される可能性があるためです。
私自身あまりこの件に関してはほぼ公言しません。
理由は同上ですが今回はちょっと色々あって周囲の方々に迷惑をかけてしまったため書きました。
これを読んだ方々は願わくば悪用することなく有用に使っていただき、可能であればコントリビュートなどしてもらえれば非常に嬉しいです。
ダークウェブなんて…みたいな気持ちの方もいらっしゃると思うので、それらの被害にあった実例を紹介させてもらい本記事の締めくくりとさせていただきます。