Sign up for free

This page is intended for users in Japan(English). Go to the page for users in United States.

ネットワーク・セキュリティの面白さ

ネットワークの面白さ

 ネットワークはプログラミング以上に面白いと思っています。その理由にネットワークという分野の広さがあると思います。単にネットワークといってもOSI参照モデルにある通り7階層にもわたります。低レイヤー(物理層)から高レイヤー(アプリケーション層)までの全ての技術が組み合わされることでネットワークが成り立っていると考えれば奥深いことがよくわかります。
 私がネットワークを学んでいて特に面白いのはトラブルシューティングです。ネットワークのトラブルは「インターネットにつながらない」や「サイトにアクセス出来ない」など種類も様々です。そうした、原因が分からない問題に対して「何が原因なのか?」と考えてコマンドやツールを駆使して原因を切り分けることが「論理的なゲーム」のようで面白いです。また、原因が複合的に発生している場合は一つひとつの問題を分けて考えるなど複雑であるほど面白いです。
 さらに、ネットワーク上で何かを実現したい時に「どんな技術同士を連携させることで可能か」と考えたり、「身の回りにあるシステムを構成するネットワーク技術」について考えたりすることも面白いです。
 このようにネットワークは様々な技術が組み合わさることで成り立っており、それぞれの技術を学ぶことが非常に面白いです。また、技術を知ることで今までと違った視点で物事を考えられるので新鮮でもあります。

セキュリティ分野との出会い

 Twitterで見つけたSECCON 2015 福島大会(サイバー甲子園)に興味を持ち、友人を誘って参加しました。参加してみると思っていた以上に難しく悔しい思いをしました。それと同時に、同世代で高得点を取る参加者の存在に圧倒されました。もちろん、CTFが全てではありませんが、ネットワークを学んでいるのにキャプチャファイルが渡された時に解析できないようではまずいと思いました。自分も高得点を取れるような「スーパCTFプレーヤーになりたい」と思い、セキュリティ分野を勉強することにしました。

セキュリティ分野に興味を持ってから

 サイバー甲子園後は、Twitterでセキュリティ系の人をフォローしたり、セキュリティ記事をRSSで購読するなど情報収集をはじめました。また、過去にNHKのプロフェッショナル仕事の流儀で名和利男さんが出演されていた放送を見てセキュリティ技術者の仕事内容やその姿に強く惹かれました。

攻撃側の発想に脱帽

 セキュリティ記事を購読して情報収集していて驚き、感心してしまった記事が以下です。

遠隔操作ウイルスの制御にDNSプロトコルを使用する事案への注意喚起 | セキュリティ対策のラック

 私は、http経由でC&Cサーバと直接通信するマルウェアがあることは知っていました。しかし、この記事ではC&C通信にUDP 53を使用したり、C&CサーバにTwitterなどのSNSを利用したマルウェアが存在していると書かれていました。この記事を最初に読んだ時に「そんな発想があったのか」と驚き、それと同時に攻撃者の発想の柔軟さを恐ろしく感じました。この経験を通じて、「どうせ、〜〜だろう」といった固定観念(決め付け)を払拭したほういいことを身をもって学びました。

ネットワーク技術の理解

 セキュリティを意識してネットワークを構成する技術を学んでみると、その一つひとつがセキュリティ上も意味を持ってくるのだと感じました。例えば DHCP Snooping はホワイトリスト式(MACアドレス登録式)のDHCPサーバと組み合わせることで、許可しない端末の接続を防ぐことが出来ます。例えば、悪意を持った第三者が端末をネットワークに接続して固定IPを設定してもDHCP Snoopingによって弾かれるため通信出来ません。また、DHCPサーバからアドレス取得を試みてもホワイトリストに載っていないMACアドレスであるためIPアドレスはリリースされません。
 ほかにも、VLANやファイヤウォール、IEEE 802.1xなどセキュリティに役立つ技術が多数存在していることに気づきました。このようにセキュリティを学ぶ上でネットワーク技術の理解が重要であることが分かりました。

手を動かすことの大切さ

 公開されている情報をもとに自分で手を動かすことで、より理解が深まり発見も多いことが分かりました。
 例えば最近、話題になっているWannaCryについて検証してみると身をもって脆弱性の危険度が理解できました。実際に、EternalBlue(エクスプロイトキット)とDoublePulsar(バックドア)を入手して仮想環境マシン同士で攻撃する側、攻撃される側の環境を構築して実行してみると攻撃される側で任意の操作が実行されていることが分かりました。
 また、WannaCryの検体を入手して(隔離環境で)実行してみると調べて知っていた通りの挙動をすると同時にその増殖能力に驚きました。その際に、検証したVirtualMachine(Windows 7)のネットワーク設定をパブリックにしておくと攻撃を受けずホームにしておくと攻撃を受けることに気づきました。これはパブリックにしておくとWindowsのSMBサービスが起動しない為であると考えました。こうした事実は手を動かすことではじめて気付けたことだと思います。その為、これからも手を動かして自分で確かめていきたいと思います。

自ら積極的に学ぶ

 最近、セキュリティ系の勉強会に積極的に参加するようにしています。勉強会に参加すると知らなかった知識を吸収することができ、最新の動向や対策など参加しなければ得られない知識が多くあることを痛感しています。特に、「OSSセキュリティ技術の会 第一回勉強会」ではSELinuxが生まれた経緯やアクセス制御の方式などセキュリティの根本的な考え方や歴史的背景を知ることが出来ました。

今やっていること

 今、やろうとしていることはLinuxカーネルのソースコードを読むことです。大学の先生にキャンプのことを相談した際に、「Linuxカーネルのソースを読んでみてはどうか」と勧められました。前から読んでみたかったのですが、ハードルが高い用に感じて出来ていませんでした。そこで、kernel.orgからソースをダウンロードしてネットワークまわりから読み始めています。tcpなどは2000行近くあり大変そうなので、まずicmpを読んでいます。ネットワークまわりのソースを読むことはC言語の美しいソースを見ながらプロトコル構造を学べるという一石二鳥であり、非常に面白いです。

---

以上は「セキュリティ・キャンプ 2017 全国大会」の応募用紙から抜粋した内容です。より詳細な内容はブログ記事として公開しています。

セキュリティ・キャンプ 全国大会 2017 に通った – koyama's blog