関連サイト
本書の関連ページが用意されています。
内容紹介
本書は、広範な「情報セキュリティ」という分野について、基礎的な部分を一通り網羅して学べるようにした本です。既存のツールやソフトの使い方を紹介するのではなく、できるだけ自分の手を動かして理解しながら読み進めていく形式にしました。具体的には、Web、暗号、ネットワークなど、情報セキュリティにおいて取り扱われることの多いトピックについて、プログラミング言語Pythonによる実装を交えながら、攻撃手法や防御技術の原理を理解していきます。本書で攻撃者の手の内を知ることができ、またそれを防御に生かすという意味で非常に役に立つでしょう
世の中には既に便利なツールやライブラリがあるのに、「ファジングツールの自作」や「簡易サンドボックスの実装」をあえて行う目的は、その原理をより深く理解するためです。このことがきっかけとなって、情報セキュリティをさらに深く学んだり、「これは面白い!」と感じられる興味分野を見つけるきっかけになってくれたら幸いです。本書を読み終えたならば、新しい技術を創造できるエンジニアになるための一歩を踏み出したといえるでしょう。
書誌情報
- 著者: 森幹太, SecHack365, 坂井 弘亮
- 発行日: 2019-02-27 (紙書籍版発行日: 2019-02-27)
- 最終更新日: 2019-02-27
- バージョン: 1.0.0
- ページ数: 304ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
森幹太
東京都町田市出身。中学生のときにLinuxを使いはじめたのをきっかけに、コンピュータの虜になる。休日に自宅ラックのメンテナンスをするのが生きがい。情報セキュリティスペシャリスト(2016)。
SecHack365
国立研究開発法人 情報通信研究機構(NICT)による若手セキュリティイノベーター育成プログラム。学生や社会人から公募選抜する受講生を対象に、サイバーセキュリティに関する開発や研究、実験、発表を一年間継続し、多様性あるテーマの下で様々なモノづくりをする機会を提供する長期ハッカソン。全国の一流研究者・技術者や受講生等との交流をするなかで、自ら手を動かし、セキュリティに関わるモノづくりができる人材(セキュリティイノベーター)を育てる。本書もSecHack365による人材育成の成果である。
坂井 弘亮
富士通株式会社 ネットワークサービス事業本部、富士通セキュリティマイスター(ハイマスター領域)、SecHack365トレーナー。幼少の頃よりプログラミングに親しみ、趣味での組込みOS自作、アセンブラ解析、イベントへの出展やセミナーでの発表などで活動中。代表的な著書は『12ステップで作る 組込みOS自作入門』(カットシステム)、『31バイトでつくるアセンブラプログラミング -アセンブラ短歌の世界-』『0と1のコンピュータ世界 バイナリで遊ぼう!』(マイナビ出版,共著)、『大熱血!アセンブラ入門』(秀和システム)。セキュリティ・キャンプ講師、SECCON実行委員、アセンブラ短歌 六歌仙の一人、バイナリかるた発案者、技術士(情報工学部門)。
目次
0章 環境構築
- 0.1 Windowsでのセットアップ
- 0.2 macOSでのセットアップ
- 0.3 Linuxでのセットアップ
1章 Pythonチュートリアル
- 1.1 インタラクティブシェル
- 1.2 算術演算
- 1.2.1 基本的な演算
- 1.2.2 ビット演算
- 1.2.3 数値の色々な表記
- 1.3 変数
- 1.4 文字列
- 1.5 リスト
- 1.6 関数
- 1.7 クラス
- 1.8 組み込み関数、メソッド
- 1.8.1 文字列操作
- 1.8.2 リスト操作
- 1.9 フロー制御
- 1.9.1 if 文
- 1.9.2 while 文
- 1.9.3 for 文
- 1.10 スクリプト実行
- 1.11 import文
- 1.12 コマンドライン引数
2章 基礎知識
- 2.1 ネットワークに関する基礎知識
- 2.1.1 通信プロトコル
- 2.1.2 OSI参照モデル
- 2.1.3 IP
- 2.1.4 TCP
- 2.1.5 HTTP
- 2.2 本書で利用するPythonライブラリ
- 2.2.1 scapyモジュール
- 2.2.2 bottleフレームワーク
- 2.2.3 Numpyモジュール
3章 ネットワークセキュリティ
- 3.1 情報収集
- 3.1.1 ポートスキャン
- 3.1.2 ステルススキャン
- 3.2 内部探索
- 3.2.1 Pingスキャン
- 3.2.2 ARPスキャン
4章 Webセキュリティ
- 4.1 XSS
- 4.1.1 Reflected XSS
- 4.1.2 Persistent XSS
- 4.1.3 DOM-based XSS
- 4.2 CSRF
- 4.2.1 脆弱なWebサイトを作ってみる
- 4.2.2 罠サイトを構築する
- 4.2.3 攻撃を検証してみる
- 4.2.4 対策
- 4.3 Clickjacking
- 4.3.1 ハンズオン
- 4.3.2 ハンズオン対策
5章 暗号
- 5.1 暗号の基礎知識
- 5.2 共通鍵暗号
- 5.2.1 RC4
- 5.2.2 RC4のアルゴリズム
- 5.2.3 RC4の実装
- 5.2.4 AES(Advanced Encryption Standard)
- 5.2.5 AES暗号の実装
- 5.2.6 AESの暗号化モード
- 5.3 公開鍵暗号
- 5.3.1 RSA暗号
- 5.3.2 RSA暗号の実装
- 5.3.3 RSA暗号に対する解読手法
6章 ファジング
- 6.1 ファジングとは
- 6.2 ファジングの種類
- 6.2.1 ファズの生成方法
- 6.2.2 ファジングが対象とするプラットフォーム
- 6.3 ファザーの仕組み
- 6.4 簡易ファザーの実装
- 6.4.1 コマンドラインのプログラムに対するファジング
- 6.4.2 Webアプリケーションに対するファジング
7章 無線技術とセキュリティ
- 7.1 無線LAN
- 7.1.1 無線LANの通信規格
- 7.1.2 無線LANのセキュリティ
- 7.2 Bluetooth
- 7.2.1 プロトコルの概要
- 7.2.2 暗号化と認証
- 7.3 その他の無線通信技術
- 7.3.1 LPWA
- 7.3.2 RFID
- 7.4 無線LANにおける通信の盗聴の検証
- 7.4.1 アクセスポイントの構築
- 7.4.2 アクセスポイントを流れるパケットを監視してみよう
8章 仮想化技術とセキュリティ
- 8.1 仮想化とは
- 8.1.1 仮想化の利点と欠点
- 8.2 仮想化技術の種類
- 8.2.1 ホストOS型
- 8.2.2 ハイパーバイザ型
- 8.2.3 その他の仮想化技術
- 8.3 情報セキュリティへの応用
- 8.4 仮想化技術の仕組み
- 8.4.1 ハイパーバイザの仕組み
- 8.4.2 コンテナの仕組み
- 8.4.3 サンドボックスの仕組み
- 8.5 仮想環境の判別
- 8.5.1 システム情報を読み取る
- 8.5.2 プロセス情報を読み取る
- 8.6 サンドボックスを自作してみよう
- 8.6.1 Pythonからシステムコールを呼び出してみよう
- 8.6.2 システムコールを監視してみよう
- 8.6.3 システムファイルへのアクセスを制限してみよう
9章 総合演習
- 9.1 問題
- 9.2 情報収集
- 9.3 任意コード実行
- 9.4 フラグの取得