本記事は『ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習』の「第1章 ハッキング・ラボでできること」を抜粋し、掲載にあたって編集したものです。
1-1 ハッキング・ラボとは
ハッキング・ラボの「ラボ」とは"laboratory"の略称であり、「実験室」「研究室」といった意味を持ちます。また、本書における「ハッキング」という用語は、コンピュータに対する攻撃の総称として使用します(*1)。例えば、サーバー侵入、遠隔操作、ネットワーク盗聴、パスワード解析などが該当します。
単純に訳すと、ハッキング・ラボは「ハッキングの実験室」という意味になります。たくさんのPCやネットワーク機器が並んでいる部屋を想像してしまうかもしれません。しかしながら、本書でいうハッキング・ラボとは、そういった物理的な環境にとらわれず、ハッキングの実験を行える環境のことです。例えば、次のケースはすべてハッキング・ラボに該当します(図1-1)。
ケース1
部屋に複数台のPCが設置されており、ネットワークに接続されている。
ケース2
1台のノートPCの上に、複数の仮想マシン(*2)が起動され、仮想のネットワークでつながっている。
ケース3
外出先から自宅のLANに接続している。
*1:ハッキングの本来の定義は、コンピュータの動作を解析したり、プログラムを改造・改良したりすることです。この定義では不正の有無は関係ありません。特に、不正な行為をクラッキングと呼びますが、現在ではハッキングとクラッキングを区別することなく使用する場面が多くなっています。こうした用語の使われ方は日本だけでなく、海外でも同様です。そのため、本書では便宜的にクラッキングに相当する行為をハッキングと呼ぶことにします。
*2:仮想マシン(Virtual Machine:VM)とは、仮想的なPC環境のことです。
PCが1台しかなくても、仮想環境でネットワークが組まれていれば、ハッキングの実験をすることが十分に可能です。端的にいえば、1台のPCのみであってもハッキングの実験は可能です。1台だけで、ログインパスワードを解析したり、暗号データを解析したりできます。よって、ハッキングの実験を行う場であれば、すべてハッキング・ラボといえます。
1-2 本書を読むにあたって
本書で実現できること
- セキュリティの基礎を理解できる。
- 移動可能なハッキング・ラボを構築できる。
- すぐに役立つWindowsの基本テクニックを身につけられる。
- プログラムを一元管理できる。
- C言語やPythonなどのプログラミング環境を構築できる。
- OS(WindowsとKali Linux)やネットワークの知識が身につく。
- 仮想環境により、安全にハッキングを実習できる。
- Windows、Android、Linuxへの攻撃手法を習得できる。
- 無線LANに対する攻撃手法(パスワード解析、ネットワーク盗聴)を習得できる。
- Webアプリに対する、基本的な攻撃手法を習得できる。
想定する読者層
- セキュリティの初学者
- ハッカーにあこがれている人
- CTFに興味がある人、または参加している人
- WindowsとLinuxの混在環境を構築したい人
- コンピュータ愛好家
- Linux初心者
前提知識
- Windowsの基本操作(ファイルの圧縮・解凍、アプリのインストールなど)ができる。
- Linuxの基本的なコマンドを操作できる。
- 自宅に小規模なLANを構築できる。
1-3 ハッキング・ラボの移り変わり
PCやインターネットの環境の変化は、ハッキングにも大きな影響を与えています。つまり、ハッキングを取り巻く環境が変化しており、同時にハッキング・ラボの状況も進化していきます。
ここでは、簡単にPCの歴史を振り返りながら、どのようにハッキング・ラボが進化したのかについて説明します。
インターネットの普及(1995年~)
Windows 95の登場によって、一般家庭にインターネットが普及し始めます。PCは高額であり、自宅にハッキング・ラボを構築するには非常にコストがかかりました。そのため、多くのアタッカーたちは、インターネット上の他人のPCを攻撃することで、ハッキングのスキルを向上させていました。当時はセキュリティが非常に甘く、簡単に侵入したり、遠隔操作したりできたのです。ある意味では、他人のPCをハッキング・ラボの一部として不正に利用していたといえます。
自作PCの普及(1998年~)
自作PCとは、PCを構成する部品(CPU、メモリ、マザーボード、HDD、ケースなど)を自分の好みに組み合わせたPCのことです。メーカー製のPCを購入するより、自作PCの方が安価であったため、PC好きにとっては自作があたりまえとなりました。
自作PCを作り続けると余ったパーツが出てくるので、それで別の1台を組めるようになります。その結果、自宅には複数のPCが揃い、ネットワークを組むことが自然な発想となりました。
また、余った自作PCにLinuxをインストールしてみるというコンセプトから、Linuxの特集も雑誌で取り上げられ始めます。この頃から、一般ユーザーにLinuxが普及し始めました。メインPCにWindowsとLinuxの両方をインストールしてデュアルブートできるようにしたり、HDDケースを付け替えることで起動するOSを切り替えたりといった方法も一般化します。
こうしたPC環境の変化により、ハッキング・ラボも複雑化しました。複数の物理PCやOSがあたりまえとなり、ネットワークが組まれるようになりました。これはハッキング・ラボの拡張を意味しています。
常時接続の普及(2000年~)
昔から常時接続サービスはありましたが、非常に高額でした。この頃になると、比較的安価で常時接続サービス(ADSLなど)に加入できるようになります。すると、自宅にサーバーを設置して、インターネットに公開することが流行しました。
また、インターネット上のWebサービスも多機能化していき、今のブログの前身ともいえるWebアプリケーションが登場しました(*3)。このように、インターネット上のハッキング対象も多岐にわたるようになりました。
この頃になると、セキュリティが謳われるようになり、2000年には不正アクセス禁止法が施行されます。
*3:多機能掲示板のphpBB、CMS(Contents Management System)のPHP-Nuke、Xoops、Drupalなどが挙げられます。
無線LAN・仮想環境の普及(2005年~)
無線LANの普及により、物理的なケーブルに束縛されることなく、ネットワークを構築できるようになりました。また、小型のノートPCが流行し、安価で流通し始めました。結果として、ハッキング・ラボのネットワークが物理的な意味で広がりました。
ところで、複数の物理PCがある場合、PC1台に対してモニターとキーボードを接続すると、場所を占有し、コストもかかります。そのため、1組のモニターとキーボードだけを用意して、PC切替器で操作を切り替えるという運用がかつては採られていました。この頃になると、PCのスペックが向上したことにより、仮想環境が実現し始めます。これにより、1台のPCの中に仮想マシンを作成できるようになりました。結果として、ハッキング・ラボの物理的なスリム化が進みます。
スマートフォンの普及(2010年~)
2008年にはソフトバンクが日本でiPhoneを発売し、2009年にはドコモがAndroid搭載スマートフォン(スマホと略す)を発売します。2011年にはKDDIがiPhoneの取り扱いを開始し、2013年にはドコモもiPhoneを取り扱うようになりました。それにより、スマホは爆発的に普及します。
スマホの普及により、PCユーザー以外もインターネットを使用するようになりました。同時に、TwitterやFacebookなどのSNSを使用するユーザーが急増します。多くのユーザーが個人情報をスマホで管理し、そのスマホでインターネットに接続していることになります。
スマホを利用することで、出先からインターネットにアクセスできます(*4)。テザリング機能でスマホを無線LANのアクセスポイント(AP)にすれば、PCはスマホを介してインターネットにアクセスできます。ハッキング・ラボの観点からいえば、出先から自宅のLANに存在するハッキング・ラボに接続できることになります。結果として、ハッキング・ラボには、物理的な制限がほとんどなくなったといえます。
*4:それ以前から、出先からインターネットに接続できるサービスは色々ありました。しかし、通信料金や通信スピードの課題がありました。例えば、AirH"は2001年にサービスを開始しており、完全定額でしたが、32Kbpsあるいは128Kbpsの通信スピードしかありませんでした。
クラウドストレージの普及(2014年~)
クラウドストレージとは、インターネット上にファイルを保存できるサービスです。クラウドストレージを提供するサービスは多々ありますが、Dropboxが特に有名です。2014年に日本語のDropboxが提供されています。
クラウドストレージの普及以前でも、レンタルサーバーやWebスペースを借りれば、そこにファイルを保存できました。しかし、そのためにはファイルをアップロードするという作業が必要です。一方、クラウドストレージでは、クラウドストレージと任意の端末(PC、スマホ、タブレットなど)の間でデータを簡単かつ自動的に同期できます。つまり、ほとんど意識せずにファイルのバックアップを実現できます。
ただし、クラウドストレージは容量が限られているので、動画などの大容量ファイルの保存場所にはあまり向いていません。こうしたファイルを端末の間で共有するには、自宅のネットワークにファイルサーバーやNASを設置して対応します。現在販売されているNASの場合、ネットワーク機器に特別な設定をすることなく、インターネット側からアクセスできる仕組みを備えています。つまり、外出先でスマホやタブレットから、自宅に保存した動画ファイルを再生して楽しめます。
ハッキング・ラボの観点からいえば、ノートPCを持たずに外出しても、いつも持ち歩くスマホを使ってクラウドストレージやNASにアクセスすることで、ハッキング用のプログラムを即座に入手できます。
1-4 なぜハッキング・ラボを作るのか?
化学者や生物学者にとって実験室は必須といえます。同様に、セキュリティの専門家にとってもハッキング・ラボはきわめて重要です。しかし、ハッキング・ラボは専門家だけのためのものではありません。本書では、初学者にこそハッキング・ラボを構築してもらいたいと考えています。初学者がハッキング・ラボを構築することで、次に紹介する2つの目標を達成できるでしょう。
本書の目標
本書の主な目標は、次の2つを実現することです。
●I.「いつでも」「どこでも」利用できるハッキング・ラボを構築する
本書では、主に仮想環境を駆使することで、メインPCをベースにしてハッキング・ラボを構築します。その構築を通じて、OSやネットワークの知識を吸収します。ネットワークに接続するというだけでなく、逆に「制限する」という観点を考えられるようになります。ハッキング・ラボがある程度完成すれば、ハッキングの実験のハードルが下がり、「いつでも」ハッキングできます。
さらに、外出先でもハッキング・ラボを利用できるようすることで、「どこでも」ハッキングできます。特に、勉強会やCTFに参加するたびに、持参するノートPCの環境構築に時間を費やすこともなくなります。
●II.ハッキング・ラボを活用して、ハッキングのスキルを身につける
ハッキング・ラボは活用してこそ意味があります。そこで、仮想環境の中で攻撃端末とターゲット端末を構築します。攻撃と防御を自分で体験してみることは、セキュリティの理解を深めるために大変有効です。
ハッキングを指南する書籍は数多く存在しますが、そのハッキングを試す環境の構築に言及する書籍は現在のところ少ないといえます。ハッキング関連の書籍を通じてコンピュータに興味を持った若者たちが、そのハッキングを試した結果、逮捕されてしまったのでは非常にもったいないといえます。本書では、健全にハッキングの実験を試せる環境を構築します。
ハッキング・ラボの心得
- 日常用途のPC環境に悪影響を与えないようにする。
- 仮想環境により実験対象の仮想マシンを削除したり、巻き戻したりできるので、恐れずにいじり倒せる。
- 場所の制約がなく、気軽にハッキングを試す環境を構築する。
- 完璧なハッキング・ラボは存在しない。
1-5 本書が目指すハッキング・ラボの構成例
PC環境は各々の読者によって異なりますが、本書では次のような環境を仮定します。
- 自宅にLANを構築している。
- 無線LANのAPが存在し、各端末(ノートPC、スマホ、タブレットなど)が接続できる。
- メインPCは、仮想環境を利用できるスペックを備えている。
仮想環境を構築するという観点からは、ノートPCとデスクトップPCのどちらでも問題ありません。しかし、ノートPCは外出先に持ち出せるという特徴を持つため、出先でハッキング・ラボを活用する場面で状況が違ってきます。
メインPCがノートPCの場合
本書と自身の構成の違いについては、その都度読み替えてください。ここではメインPCにWindows 10、仮想化ソフトにVirtualBoxを用います。
図1-2では、ルーターと無線LANのAPは別にしていますが、APが内蔵されたWiFiルーターでも問題ありません。また、NASが存在すればより便利になりますが、必須の端末というわけではありません。
Raspberry Piは手のひらサイズのコンピュータです。5千円前後と非常に安価であり、実験用のサーバーを構築するのにもってこいといえます。仮想環境で実現しにくい実験は、実機を用いて対応することもあります。
ノートPCであれば、外に持ち出せます。そのノートPC内に仮想環境を構築しているので、外出先でインターネットに接続しなくても、仮想環境のネットワーク内だけでハッキングの実験ができます(図1-3)。
メインPCがデスクトップPCの場合
図1-4では、デスクトップPCであることを明示するために、有線でLANに接続しています。デスクトップPCでも無線LANに接続しているという状況もありえるでしょう。
外出先ではサブのノートPCを用います。しかし、サブであるため、メインPCよりもスペックが低いかもしれません。また、サブマシンにまでメインPCと同等の環境を構築するのは、非常に手間がかかるだけでなく、二重管理という意味でも好ましくありません。
そこで、ノートPCを何らかの方法でインターネットに接続して(図1-5ではスマホのテザリングを利用)、自宅のネットワークあるいは端末に接続します。本書ではVPNとChromeリモートデスクトップを紹介しています。VPNを使えば、出先から自宅のLANに接続でき、LAN内の端末にアクセスできます。
LAN内のデスクトップPCにリモートデスクトップでログインすれば、Windows 10を遠隔操作でき、そこで仮想環境を立ち上げてハッキングの実験ができます。また、Chromeリモートデスクトップを使えば、出先のChromeブラウザから、LAN内のメインPCであるWindows 10を遠隔操作できます。Chromeブラウザがあれば接続できるので、スマホやタブレットからも操作できます。
以上より、出先でもハッキング・ラボを活用、すなわちいつでもどこでもハッキングの実験を実現できることがわかりました。
本書におけるネットワーク構成の例
本書には様々な端末が登場します。ネットワーク構成は表1-1のように設定します。IPアドレスに関しては、自分の環境に合わせて置き換えてください。
続きは本書で
このあと、本書『ハッキング・ラボのつくりかた』では実際にハッキング・ラボの構築方法を解説していきます。WindowsやLANのハッキング、ログオン認証のハッキングも体験できます。ぜひお試しあれ。