Outline of the Hacking

Date : 2005-03-10
Author : Defolos

CONTENTS

(1.) Hack & Crackとは
(2.) ハッキングの起源
(3.) ハッカーの階級
(4.) ハッカー倫理作法
(5.) ハッキングに必要な知識
(6.) 必要な知識を習得する順番

Hack & Crackとは

 ハッキングとはコンピュータに限らず知的好奇心を満たす行為です。クラッキング(Cracking)はハッキングによって得たことを悪意に使うことです(改竄,ファイル破壊を含む)。
 また、クラッキングはCのクラッキング(Cracking)とKのクラッキング(Kracking)があります。 Krackingはアプリケーションの使用期限を延ばしたり、制限を解除したりするソフトウェアの改造行為を指す言葉です。


ハッキングの起源

 ハック(Hack)とは、元はマサチューセッツ工科大学で学生のユーモラスな創意工夫やいたずら等のユニークなことを指す語であったそうです。hackと言う言葉が使われはじめたのは1958年か らと言われています。そして人々を驚かせるような行為をする学生をハッカーといいました。関心をひきつけるため、エイプリルフールや学期終了後にいたずらを決行していたようです。

 また、昔は「効率よく物事をこなす」という意味の一般動詞を"hack"と言いました。例えば、朝パソコンの電源を入れてから起動するまでの間に朝食をすませてしまうなどの、互いに干渉し 合わない物事の並列処理を指します。

 マサチューセッツ工科大学の鉄道模型クラブの学生がコンピュータ室に夜中忍び込んで色々いじったり、そこから後輩たちが鍵開けやPCのプログラムやハードウェアの制御に熱中しだしたそ うです。彼らもハック行為を行った疑いがあり、そこからコンピュータ関連でユニークなことをする行為もハックと呼ぶようになったと思われます。

 元はこのようにいたずら好きの学生を指す言葉であったのですが、時代が変わり優秀なプログラマーの総称になりました。現代では主にコンピュータに不正に侵入し、犯罪行為をする者を指 す場合が多くなっています。


ハッカーの階級

 ハッカーにもヒエラルキーが存在し、低い順に挙げていきます(独断と偏見です)。

● ワナビー[wannabe]

ハッカーになりたいと思う人。ただし勉強はせずになりたいと思うだけ。
ハッカーの中でも最もランクが低く、軽蔑の的。
語源:"I wanna be a hacker." (I want to be a hacker.)

● スクリプトキディ[script kiddy]

ローデント[rodent]、ラマー[lamer]とも言われます。
他人の作ったツールを使ってハッキングをする者で、他人に対する破壊活動かそれに順次する行為を行う者のことです。
知識的にはNewbieと同じぐらいですが、やっかいごとを専門に行います。
クラッカーの下級職のような感じ。

● ニュービー[newbie]

ハッカーを目指す者であり、そのために勉強をする者。
他人の作ったツールでハッキングの勉強をするが、合法的に(できる限り)ハックしたり、自分のPCにハックします。
ハッカーの下級職のような感じで、スクリプトキディの対義語。

● ウィザード[wizard]

ハッカーの中でもスキルの高い階級。ありとあらゆる知識を習得しようとする者。
語源は"wizard:(良い)魔法使い"です。
ちなみに悪い魔法使いはソーサラー[sorcerer]です。
クラッカーの上級者を指す言葉にならないかな?

● グル[guru]

デミゴッド[demigod]の同義語。
ウィザードのスキルを超越してコンピュータの神のような存在となった者です。
コンピュータに限らずありとあらゆる知識を有する者でもあります。


ハッカー倫理作法

  1. いかなるシステムも意図的に破壊してはならない。破壊したならば,トラブルになるだろう。

  2. 捜査の手から逃れ、将来またアクセスできるようにする変更以外、いかなるファイルを改竄してはならない。つまり、ログ消去とバックドアの設置はOK。

  3. 不正にアクセスした結果、自分または他人のハンドルネーム等情報を残してはならない。

  4. 信用できる人以外にハッキングの計画をしているという事実を教えてはならない。犯罪は一人が一番である。複数になればなるほど漏れる可能性が高い。

  5. 知らない人物に対して実際の電話番号・住所など所在地がばれるような情報を明かしてはならない。即ち、匿名化に気を配ること。

  6. 政府のコンピュータをハッキングしてはならない。

  7. 他に手段が全く無い場合を除いてコード(プログラム)を使ってはならない。

  8. パラノイドになるのを恐れてはならない。

  9. 掲示板に自分が投稿したものを監視せよ。

  10. 質問するのをためらってはいけない。

  11. 実際にハッキングをしなければならない(自分でサーバを用意しましょう)。


ハッキングに必要な知識

 サーバ侵入ハックに必要と思われる知識をまとめてみました。何も分からないころは、どんな知識が必要なのかさえわからないと思われるので、これを参考に知識を集めてもらえれば幸いで す。私はどんな知識が必要なのか理解するのに数ヶ月以上かかってた気がします。σ( ̄▽ ̄i)

  1. 基礎的なコンピューティング知識
  2. 基礎的なハードウェアの知識
  3. UNIXかLINUXの知識(シェル/サーバプログラム等について)
  4. ネットワーク(TCP/IP)の知識
  5. セキュリティーの知識(本屋の棚にカテゴリ分けされてます)
  6. プログラミングの知識(C,Parl,シェルスクリプト)
  7. 侵入に必要なツールの知識(何がいるか,使い方,仕組み)
  8. 侵入の手口、手順についての知識
  9. 英語の知識

必要な知識を習得する順番

1.- 基礎的なコンピューティング知識

 まずはコンピュータに慣れることから初めてみましょう。恐らくWindowsを使っていることでしょうから、Windowsをいじくり倒してみましょう。
 IEを使ってWEBページを閲覧したり、串(proxy)を通したり、設定をいじくってみましょう。OutLookでメールを送る、メールを送受信できるように自分の手で設定してみる等々…とにかくPCに触って慣れましょう。どれだけいじっても物理的に壊れはしませんから(殴ったら壊れますけどね)安心してください。

2.- 基礎的なハードウェアの知識

 実はサーバーハッキングにおいては、あまり必要な知識ではありません。 しかし、PCに興味を持ってるなら必ず必要になってくる知識ですので、今のうちに習得しておきましょう。ハードウェアの知識といっても、「CPUは凡用レジスタのオペランドを演算して結果をメモリに書き出す…」とか「HDDのデータアクセス時間は平均シーク時間と平均データ転送時間と回転速度から求められる…」とかの難しい物じゃなくて、CPUのつけ方とか、どのメーカーの製品はこんな特徴があるとか、そんな程度の知識です。
 本屋にいけば自作PC参考書の棚に本が売ってますので買ってきましょう。PC関連の本としては簡単な部類に入るのですぐに理解できると思います。後はPCのフタを空けられる勇気だけです。 最低でもHDDの付け替えができるぐらいの知識を習得しましょう。

3.- UNIXかLinuxの知識

 UNIX,Linuxについては別のテキストでしっかり説明することにしましょう。簡単に説明しますとUNIXはWindowsと同じくOSの一つです。LinuxはUNIXから派生したOSです。これをインストールしましょう。
 本来ならデュアルインストールといって、一つのHDDに複数のOSをインストールする方法が勧められますが、OSの種類(カーネル)によってはエラーが発生し、起動しなくなってしまうこともあります。ですので新しく安いHDDを購入してきて、そちらにインストールし、今使ってるHDDと交換して(ここでハードウェアの知識を使うわけです)UNIXを使いましょう。
 あるいはCygwin(UNIXエミュレータ)や、KNOPPIXというLinuxを利用するのも一つの方法です。 Cygwin、KNOPPIXについては別のページで説明しましょう。

4.- ネットワークの知識

 ネットワークも沢山ありますが、現在の世界基準であるTCP/IPについて学びましょう。一通り学んだらUNIXで得たサーバプログラムとTCP/IPで得たネットワークの知識を使いながら自分でLANを組んで見ましょう。このとき新しいPCを買うことになりますが、ハードウェアで得た知識を生かしてパーツから購入して組み立てて見ましょう。
 もともとTCP/IPはUNIXで使われていた通信技術が世界的に広まったものであり、UNIX系OSはネットワーク利用に重点を置いて開発されていますので、UNIX系OSの勉強と平行してTCP/IPの勉強をするのも良いかも知れません。

5.- ツール、手口、英語の知識

 後は侵入の手口や手順、それに必要なツール、Exploitなどの知識を得ます。そして自分で作ったネットワークのサーバにハッキングをしかけてみましょう。このあたりから海外のWEBサイトも参考にすると思いますので、英語を学んでおきましょう。

6.- プログラミングの知識

 プログラミングの知識については自分が適切だと思った段階で学びましょう。ハッキングには絶対必要というわけではありませんが、プログラミングの知識無しではバッファオーバーフローやハックツールの行っている内部処理などを理解することは不可能でしょう。少なくともコンピュータを一歩踏み込んで理解するには絶対必要な知識でしょう。
 また、Exploitを使うようになれば、必然的にプログラムを学ばなければならなくなるでしょう。多くのExploitはスクリプトキディが闇雲に使い回らないように、予めバグを潜ませてあります。これらのバグをデバッグしないといけないので必要となるでしょう。
 はじめてプログラミング言語を学ぶのであれば、まずはプログラミング界の共通語、C言語を勉強してみましょう。一通り理解したら気の向くままにJavaやらアセンブリやらPrologやらをやってみるのも良いでしょう(prologは冗談です)。

7.- セキュリティについての知識

 自分で構築したサーバに他人が侵入しないようにセキュリティ設定をする必要があります。 主にセキュリティツール(ファイアウォール、パケットフィルタリング、ウィルススキャナ等)の使い方、ログの読み方やアタッカーに削除されないようにする方法やフェイクとしてのハニーポットの設置方法、修正パッチの当て方などが挙げられます。


■参考文献


go back to the TOP page of Glazheim Lykeion.