サーバーインフラの勉強にホワイトハッカー入門が役に立った話

# はじめに
今回、サーバーインフラのパフォーマンス調査するにあたり、
インフラ全般の知識が必要になり、
特にネットワーク関連の知識が必要になったので、キャッチアップする方法を
探していました。

対象読者は以下を想定しています。
・インフラ（特にネットワーク）の勉強をしたい人
・インフラ（特にネットワーク）の勉強をしたくない人

ん？


# 過去の挫折
過去に私も、ネットワークの勉強をしようとしました。でも、その際は、
関心を持てなくて挫折してしまいました。

そのときの勉強方法はこれです。

**基本情報や応用情報の過去問を解く！**

その場合、まず直面する文章はこれです。

    問1.Webサーバを使ったシステムにおいて，インターネット経由でアクセスしてくるクライアントから
    受け取ったリクエストをWebサーバに中継する仕組みはどれか。（応用情報 平成31年春季）
*1

解く→わからない→解説読む、調べる→イマイチわからない、しっくりこない
→辞めよう！

これは悪くはないのですが、続きませんでした。

# なぜホワイトハッカー入門か→ネットワークに対する別のアプローチ

上記の取り組み方はなぜ問題でしょうか。
以下のように分解しました。
①関心をもてない、おもしろくない
②用語が中々しっくりこない、腹落ちしない
③範囲が広く、続かない。終わりが見えない。

これらを解決できたのが、今回取り組んだ
[Udemy【情報セキュリティ】Ethical Hacking：ホワイトハッカー入門](https://www.udemy.com/course/ethical-hacking-jpn1/)
です。

# 魅力的なポイント
以下で上記の3つの問題点がなぜ解消できたのかを説明します。

## 1.おもしろい
①関心をもてない、おもしろくない
→おもしろい

・ホワイトハッカーとは？
ハッカーの種類
ブラックハット　悪用
ホワイトハット　守る
グレーハット　悪用と守ると、行き来するハッカー
*2

このうち、ホワイトハットとして、ふるまうのがホワイトハッカーです。

しかし、講座内では、
**どのように攻撃するか？**
を学びます。
攻撃手法を理解することがホワイトハッカーにおいて重要だからです。

例えば、以下の例です。

例１.

    ネットワーク盗聴に使えるルーティング3選
    ・Wi-Fi不正AP（アクセスポイント）
    ・不正プロキシサーバ
    ・ネットワーク設定の変更
    これらを使ってどのように攻撃するか？を見ていきます。
*2

これが教科書的な説明だと、
1.アクセスポイントとは何か？
2.プロキシサーバとは何か？
となってしまいます。

実際に**如何にしてネットワークに侵入し**、攻撃するか？そのために**どういう知識を使って**いくか？という観点はおもしろく、興味をもちやすいと思います。


例2.
セッションハイジャックの説明は以下のようなものでした。

    ・Webアプリケーションは基本的にセッションIDでユーザを識別している。
    他人のセッションIDを入手すれば簡単に他人になりすましができる。

    入手方法：ブルートフォース、推測、セッション固定の脆弱性をつく、盗み出す
    PHPSESSIDはランダムで長い文字列。よってブルートフォースや推測は不可能。
    セッション固定：次の脆弱性がすべて揃った場合。URL引き数からセッションIDを付け替えられる。
            ログイン成功時にセッションIDを変更しない。フィッシングの成功。
    盗み出す：Webサーバから、通信経路上から、クライアントPCから。
*2


これが、教科書的な説明だと、
ブルートフォースの説明、セッションID、セッション固定の説明となります。
**如何にしてネットワークに侵入するか**という観点および
**実際に侵入してみる実演**のほうが興味深くないでしょうか？
簡単に侵入されるのを目の当たりにすることで、**当事者意識**も持つことができます。

このように、**おもしろい**
という特徴があります。



## 2.用語を使いながら学べる。
②用語が中々しっくりこない、腹落ちしない
→用語が定着する。

用語を使って、様々な事例や、技術について説明するので、
勝手に用語が記憶に定着する。

例として、Netcatの説明を見てみましょう。

    ・Netcat・・・TCP/UDP接続コマンドラインツール（Linux標準搭載）
    　　　　→バックドアポートを待ち受け状態にする。
        ・Xinetdなどのスーパーサーバ型デーモン
        →サービスを常駐させず、特定のタイミングだけ起動させるもの。
        ex.7777/tcpにアクセスがあったら、root権限で/bin/shを起動
*2

この中で、
・TCP/UDP
・バックドアポートを待ち受け状態
・7777/tcp
といったネットワーク関連の用語が、登場しています。
このように、各ハッキング手法の説明のために、
ネットワーク用語、サーバー用語が登場しています。
こうした説明を大量に聞き、実行例を見ていくうちに、
TCP、ポート、といったネットワーク用語に対する抵抗がなくなってきます。
また、デーモンといった、サーバー用語の馴染んできます。

> 1.おもしろい

で挙げた例にもこれは当てはまりますよね。

このように、**用語に対する理解が深めやすい**です。

## 3.網羅的
③範囲が広く、続かない。終わりが見えない。
→講座を終えると網羅的に完了している。

なぜ網羅的か？
**ハッカーに対抗するためには、ネットワーク経路すべてにおいて対策を取れるようにする必要があるからです。**
必要性からおのずと網羅的に説明がなされています。

**物理層からアプリケーション層まで網羅的**です。

ルータからもハッカーは侵入します。
もちろんアプリケーション層からも攻撃されます。

また、基本情報や応用情報ではあまり触れられない、
**ネットワークのコマンドについても**、説明がされます。
（実際にコマンドを使って、ハッキングする実演がなされます。）


このように、
**網羅的**
です。


# まとめ

>・インフラ（特にネットワーク）の勉強をしたい人
・インフラ（特にネットワーク）の勉強をしたくない人

と初めに記載しました。
なぜお勧めなのかをまとめる形で本記事を締めさせていただきます。

・インフラ（特にネットワーク）の勉強をしたい人
→勉強を効果的に進められるのでお勧めです。

・インフラ（特にネットワーク）の勉強をしたくない人
→新しくネットワークに興味を持てるかも！？お勧めです。

ネットワークだけでなく、加えてサーバー全般の知識や、コマンドの知識など
**総合的なインフラ知識**がつきました。

**もちろん、セキュリティの勉強にもなります。**
ホワイトハッカー入門したあと、私は以下のような記事を読んで、以前よりも、理解できるようになりました。
[Twillo blog インシデントのご報告〜Twilio従業員およびお客様のアカウント情報流出について〜2022年8月4日](https://www.twilio.com/blog/august-2022-social-engineering-attack-jp)


# 補足
・基礎の知識（ネットワークとは何か？など）は持ったうえで取り組みました。
書籍を読む、ググるなどで基礎的なキャッチアップを行いました。

# 参考文献
1.応用情報技術者試験ドットコム
https://www.ap-siken.com/kakomon/31_haru/q35.html
2.Udemy【情報セキュリティ】Ethical Hacking：ホワイトハッカー入門
https://www.udemy.com/course/ethical-hacking-jpn1/