表紙と裏表紙

カバーデザイン

カバーデザイン

実物

『ハッカーの学校』実物

カバーデザインでは表紙と裏表紙にうっすらとイトミミズのような文字が見えますが、実物ではよりはっきり見えます。

これは私の手書きのノートから抜粋したものです。

「確かIPUSIRONの文字は汚なくて他人には読み取れないものだったはず。これを使えば表紙がよりカッコ悪くなるから、スキャンして送ってくれ」とMAD氏から要望がありました。

そこで、数学のノートから平方剰余の相互法則に関するところをスキャンして送った結果がこれです。

ページ数について

『ハッカーの学校』の厚さ

『ハッカーの学校』の文字数は348,352文字、画像点数は235ファイルです。本来このぐらいの規模になると、500ページぐらいになります。しかし、ページ数が多くなると、値段も上がってしまいます。

そこで、今回は画像に本文を回り込むようにしたり、文字のフォントを小さくしたり、行間や改行をなるべく減らしたりすることで、なんとかページ数を440ページに縮めることができました。こうすることで、値段を下げつつ、多くの情報を詰め込むことに成功しました。

『ハッカーの教科書 完全版』と比べて、『ハッカーの学校』は1ページに文字が詰まっているように感じるはずです。

裏話

『ハッカーの学校』の執筆・製作における裏話をいくつか紹介します。

  • 『ハッカーの学校』の執筆が終わった段階で、約106万文字ありました。その当初はネットワークのハッキング、ローカルのハッキング、個人情報取得、物理的侵入の4章構成でした。しかし、これでは文字数が多すぎて書籍にすることは不可能ということで、今回の『ハッカーの学校』にはネットワークのハッキングだけを載せることになりました。なお、文字数の内訳は次の通りです。ネットワークのハッキングが約34.7万文字、ローカルのハッキングが約19.7万文字、個人情報取得が約12.4万文字、物理的侵入が約34.8万文字です。
  • お蔵入りとなった章のごく一部は、現在Kindle本として出版しています。まだまだ残された部分はありますので、それらについてはいずれ書籍あるいはKindle本で出版する予定です。特に物理的侵入については自信作なので、近いうちに出版できればと思います。
  • 執筆のモチベーションを維持するために、rewriteのラジオCDこいそみなこいのラジオCDをずっと聴いていました。
  • 執筆期間は約3ヶ月(2014/6/23〜2014/9/24)、執筆時間は587時間です(実験・検証の時間も含む)。毎日仕事をしたと仮定すると、1日約6.5時間執筆したことになります(土日を休んだと仮定すると、1日約9.8時間になります)。なお、この期間には『ハッカーの学校』から漏れたネットワークのハッキングの章以外の執筆も含まれています。

目次

本書は解説編と実践編で構成されています。

第1章:ネットワークのハッキング・解説編

■はじめに
■ネットワーク
 ●LAN
 ●WAN
■IPアドレス
 ●IPアドレスの確認方法
 ●プライベートIPアドレスとグローバルIPアドレス
 ●ループバックアドレス
 ●ブロードキャストアドレス
 ●IPアドレスのクラス
 ●CIDR
 ●CIDRの特徴
 ●自身のIPアドレスを知らないホストがIPアドレスを獲得する方法
■サブネットマスク
 ●サブネットマスクの値でサブネット内のホスト数が決まる
■MACアドレス
 ●最初に読み込むオクテット
 ●MACアドレスによって受け取るデータを判別する
 ●ネットワーク管理でMACアドレスを管理する理由
 ●MACアドレスを変更する
 ●IPアドレスとMACアドレスが必要な理由
 ●アドレス解決
■プロトコル
■ポート番号
 ●ポート番号の種類
 ●代表的なサービスプロトコルとポート番号
■クライアントとサーバー
 ●ネットワーク上における通信のやり取り
■UDPクライアントの動作
 ●名前解決
 ●ソケット・オブジェクトの作成
 ●データの送信
 ●レスポンスデータの受信
■TCPクライアントの動作
 ●名前解決
 ●ソケット・オブジェクトの作成
 ●データの送信
 ●レスポンスデータの受信
■サーバーの動作
 ●クライアントとサーバーの動作の違い
■NIC
 ●NICの構成コンポーネント
 ●NICの動作の仕組み
■ネットワーク機器
 ●リピーター
 ●ブリッジ
 ●ルーター
 ●ゲートウェイ
■デフォルトゲートウェイ
■プロトコルスタック
 ●プロトコルスタックのレイヤー構造
 ●OSI参照モデル
 ●TCP/IPモデル
 ●TCP/IPモデルとOSI参照モデルの比較
■Ethernet
 ●DIX Ethernetと802.3 Ethernet
 ●Ethernetの種類
 ●Ethernetの転送方式
 ●パケットとフレーム
 ●Ethernetの構成要素
 ●Ethernetフレームの拡張
■UDP
 ●UDPのフォーマット
 ●TCPとUDPの比較
■TCP
 ●TCPのフォーマット
 ●TCPの機能
■ICMP
 ●ICMPのフォーマット
 ●主なICMPメッセージ
■IP
 ●IPのフォーマット
 ●IPの機能
■ARP
 ●ARPの仕組み
 ●ARPのフォーマット
■RARP
 ●RARPの仕組み
 ●RARPの問題点
■BOOTP
■DHCP
 ●DHCPの仕組み
 ●DHCPメッセージのフォーマット
■DNS
 ●DNS名前空間
 ●DNSのサーバーとクライアント
 ●トップドレベルメイン
 ●ドメインとゾーン
 ●問い合わせ
 ●正引き
 ●逆引き
 ●リソースレコード
 ●ゾーン転送(ゾーントランスファー)
 ●DNSメッセージのフォーマット
■ルーター
 ●ルーティング
 ●パケットフォワーディング
 ●ポートフォワーディング
 ●DMZ
■ファイアウォール
 ●ファイアウォールの機能
 ●ファイアウォールの設置形態
■syslog
 ●システムログ
 ●システムログの出力の仕組み
 ●ログファイルの書式
 ●syslogの設定ファイル

第2章:ネットワークのハッキング・実践編

■はじめに
■サーバー侵入のプロセス
■Kali Linux
 ●Kaliのダウンロード
 ●KaliのためのVMware Playerの設定
 ●Kaliの起動
 ●Kaliの基本設定
 ●Kaliを探検してみる
■光海底ケーブルに対する攻撃によるネットの破壊
 ●サメによる光海底ケーブルの破損事故
 ●漁業による破損事故
 ●船舶活動による破損事故
 ●自然災害による破損事故
 ●陸揚局に対する攻撃の可能性
■陸上ケーブルに対する攻撃によるネットの破壊
■Ping
 ●pingの書式
 ●Windows版pingのオプション
 ●Linux版pingのオプション
 ●Windows版ping利用によるアクセス可能の確認
■traceroute
 ●tracerouteの原理
 ●tracerouteの書式
 ●tracertのオプション
 ●tracerouteのオプション
 ●traceroute利用によるファイアウォールの有無の確認
 ●tracerouteの効率化
■nslookup
 ●nslookupのコマンド
 ●setコマンドのオプション
 ●nslookupコマンド利用によるリソースレコードの取得
 ●nslookupコマンド利用によるIPアドレスからドメイン名の問い合わせ
■whois
 ●whoisサーバー
 ●JPNIC利用によるネットワーク情報の調査
 ●whoisコマンド利用によるネットワーク情報の調査
■host
 ●hostの書式
 ●hostのオプション
 ●hostコマンド利用によるドメイン名からIPアドレスの検索
 ●hostコマンド利用によるIPアドレスのリストの作成
 ●hostコマンド利用によるDNSサーバーのリソースレコードの検索
■Nmap
 ●NmapをWindowsにインストールする
 ●NmapをLinuxにインストールする
 ●Kali上におけるNmapの起動
 ●Nmapに認識されるポート状態
 ●Nmapの書式
 ●ホスト発見のオプション
 ●スキャンタイプのオプション
 ●ポート指定と順番のオプション
 ●サービスとバージョンのオプション
 ●OS特定のオプション
 ●タイミングやパフォーマンスのオプション
 ●ファイアウォール・IDSの回避とスプーフィングのオプション
 ●出力のオプション
 ●ターゲット指定
 ●その他のオプション
 ●Nmap利用によるポートスキャン
 ●Nmap利用によるHeartbleedの脆弱性のスキャン
■Zenmap
 ●ZenmapをWindowsにインストールする
 ●Zenmap利用によるポートスキャン
 ●Zenmapのスキャンモード
 ●WinPcapのインストール時のエラー対策
■Googleハッキング
 ●Googleの検索演算子
 ●Googleの基本コマンド
 ●Googleハッキングによる情報収集
 ●Googleハッキングを実践するうえでの注意事項
■Netcraft
 ●Netcraft利用の特徴
 ●Netcraft利用による情報収集
■Sniffing
 ●プロミスキャスモード
 ●キャプチャドライバ
 ●さまざまな環境下におけるSniffing
■tcpdump
 ●tcpdumpの書式
 ●tcpdumpのオプション
 ●tcpdumpの条件式
 ●tcpdump利用による特定マシン間のパケットの盗聴
■Wireshark
 ●Wiresharkの特徴
 ●初めてのWireshark
 ●Wiresharkのメイン画面の各ペイン
 ●Wiresharkのフィルタ
 ●表示フィルタ
 ●キャプチャフィルタ
 ●Wiresharkと無線LAN
 ●WiresharkでEthernetのFCSを表示
 ●Decode As機能
 ●パケットのマーキング
 ●pcapファイルを読みやすいダンプデータに変換する
 ●ダンプデータの手動解析
 ●Wireshark利用によるダウンロードファイル抽出
■Cain & Abel
 ●Cainのインストール
 ●Cain利用によるARPキャッシュポイゾニング
■Fiddler
 ●Fiddler利用によるリクエストとレスポンスの確認
 ●Fiddler利用によるリクエストの編集
■SecurityFocusのCVEデータベース利用によるExploitの入手
■SSH
 ●sshコマンド
 ●sshコマンドの書式
 ●sshコマンドのオプション
 ●SSH利用によるファイル転送
 ●SSH利用によるミラーサイトの作成
 ●多段に踏み台を利用する
■辞書ファイル
 ●デフォルトのものを使用する
 ●ダウンロードした辞書ファイルを使用する
 ●生成した辞書ファイルを使用する
■crunch
 ●crunchの起動
 ●crunchの書式
 ●crunchのオプション
 ●crunchが用意している文字セット
 ●crunch利用による辞書ファイルの生成
 ●crunchの使用例
■THC-Hydra
 ●Hydraの起動法
 ●Hydraの書式
 ●Hydraのオプション
 ●Hydra利用によるBASIC認証アカウントの解析
 ●Hydra利用によるFTPアカウントの解析
 ●Hydra利用によるSSHアカウントの解析
 ●Hydra利用によるログインフォームの解析
 ●Tamper Data利用によるLocal Proxy化
■Metasploit
 ●Metasploitインタフェース
 ●ペイロードとExploit
 ●Metasploitのアップデート
 ●Metasploit利用によるHeartbleedの攻撃
 ●MS08-067利用による遠隔操作
 ●MS14-017利用によるリモートシェルの獲得
 ●Meterpreterの基本的なコマンド
■wまたはwho
 ●wコマンド
 ●whoコマンド
 ●wコマンドまたはwhoコマンド利用によるログインユーザーの確認
■UNIXシステムにおけるログ消し
 ●lastlog(/var/adm/lastlog、/var/log/lastlog、/usr/adm/lastlog)
 ●utmp(/var/adm/utmp、/var/log/utmp、/var/run/tmp、/usr/utmp)
 ●wtmp(/var/adm/wtmp、/var/log/wtmp、/usr/adm/wtmp)
 ●lastlogin
 ●TELNETクライアントを利用したlastlogの上書き
 ●lastlogの削除
■ファイルの時刻情報の改竄
 ●ファイルの時刻情報
 ●lsコマンド利用による時刻表示
 ●i-node番号の表示
 ●touchコマンド利用によるatimeとmtimeの改竄
 ●debugfsコマンド利用によるctimeの改竄
 ●timestomp利用によるタイムスタンプの改竄
■古典的なUNIX用のバックドアの考察
 ●ファイルのアクセス権限
 ●/bin/sh利用によるSUIDバックドア
 ●初期化ファイル利用によるバックドア
 ●SUIDバックドアのデーモン化
 ●cronベースのバックドア
■Netcat
 ●Hobbit版Netcatの導入方法
 ●Netcatの書式
 ●UNIX版Netcatのオプション
 ●Windows版Netcat
 ●Netcat利用によるバナー情報を表示
 ●Netcat利用によるバナー情報をHEX形式で保存
 ●Netcat利用によるバックドア
 ●Netcat利用によるファイル送信
 ●Windows版Netcatのファイル名の変更
 ●PC起動時にWindows版Netcatを自動起動する
■Cryptcat
 ●Cryptcat利用によるバックドア
 ●Cryptcat利用によるファイアウォール回避
■デジタル複合機の原版データの保存機能の悪用
 ●LAN内から複合機に保存された原版データの奪取
 ●インターネットからのプリンタジョブ履歴の参照