WordPressのオリジナルテンプレート完成!

ハッカーになるには何を覚え、どのような勉強をすればいいのか?オススメの本を紹介

2018.05.162018.03.27その他

hacker-atm

WindowsやMacのようなマウスで操作するタイプのコンピュータしか使用したことのない人は、ハッキングがどのようにして可能なのか全く意味不明な状態だと思います。

そこでハッカーと呼ばれるにはどのような知識が最低限必要か、素人の方でもわかるようごくごく簡単に記しておきます。

ちなみに、この記事を読んだところでハッカーになれるわけではありません。

言うまでもありませんがハッキングは犯罪です。実体験をしたいのであれば、自身でサーバを構築して試してださい。

他人が所有するサーバを攻撃するなど言語道断です。

「ハッカーになるには、ハッカー文化に身を投じよ」のような抽象的なことは言わず、最低限必要な技術だけをサラッと紹介します。

CUIとGUIの違いを簡単に知る

gui・GUI

GUIとは皆さんが普段使用している、スクリーン上のマウスを操作するタイプのインターフェースです。

cui・CUI

CUIとはスクリーン上で文字のみを相手にコンピュータを操作するタイプのインターフェースです。

結論から先に言うとCUIのほうがGUIよりも、はるか深くコンピュータの内部を操作することが可能です。

では試しにひとつCUIのパワーを実感してみましょう。

Windowsを使用している方は以下の説明に従いコマンドを実行してみてください。

cmd

まずスタートメニューで cmd と打ち込みEnterボタンを押してください。

すると怪しげな黒いスクリーンが出現したと思います。これをコマンドプロンプトと言います。

これがWindowsにデフォルト(標準という意味)で搭載されているCUIです。ここで以下のコマンドを実行してください。

cd Desktop

簡単に説明すると、これでCUI上でデスクトップ画面に移動したということです。

試しに dir と打ち込んでEnterを押すと、皆さんのデスクトップに存在するファイルなどがプロンプト上に列挙されるはずです。

では次に以下のコマンドを実行してみてください(文字に間違いが無いよう注意してください)。

for /L %i in (1,1,5) do (mkdir FOLDER_%i)

実行後、普段利用しているGUI上のデスクトップを確認してみてください。

どうでしょうか。

folders

以上が作成されているでしょう。ほんの一部ですが、これがCUIのパワーです。

GUIで同じことをしようとした場合、フォルダを一つひとつマウスとキーボード操作で作成していく必要があります。同様のことはCUIであれば、コマンドで一瞬でできてしまいます。

GUIでは想像もできないようなことがCUIでは可能なのです。

ハッキングの対象となるサーバの多くはこのようなCUIで操作することが必須になります。さらに世の中に流通しているハッキングツールの多くもCUIで扱うものです。

ハッカーに必要な技術

Linux

linux-logo

コンピュータハッカーでLinuxを操作できない人などこの世の中に存在しないでしょう。

Unixベースで作られているOSなので、Unix系と言われたりもします。必ず操作できるようになりましょう。

世の中のサーバのかなりの部分はUnix・Linuxで運用されています。それらサーバに侵入するのにLinuxの知識が無いなどということはあり得ません。

Linux初学者用には新しいLinuxの教科書という書籍がいいでしょう。

世界に存在するハッカー文化の中心もUnix・Linuxであり、彼らが作成しているハッキングツールもLinux上で操作するタイプのものが数多くあります。

コンピュータのお勉強はどこから始めていいか分からないという人たちが多く存在します。

後で改めて説明しますが、サーバ構築をそのものを目的とするのではなくWebアプリケーションを作成という中でLinuxサーバの構築も学んでいくというのがベストだと思います。

※Webアプリケーションとは皆さんが普段閲覧しているインターネット上のサイトと考えてもらえれば分かりやすいでしょう

Bash(シェルプログラミング)

スクリプトを作成するスキルは必須です。BashスクリプトとはLinux上で使用するプログラムコードだと考えてください。

Bashで作成されたハッキングツールは数多く存在します。

bash-script

自身で作成することができなければ、いつまで経っても他人が作成したツールに依存することになります。

そういった人たちはハッカーではなくスクリプトキディと呼ばれ、正真正銘のハッカーとは言えません。

シェルプログラミングを学びたいのであれば入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界という書籍がオススメです。

C言語

c-language

ネットワークなどのインフラはC言語や、その後継ともいえるC++で記述されています。

そのため、ネットワークを攻撃するタイプのコードはこれら言語で記述されていることが多々あります。必須の技術でしょう。

新・C言語入門 シニア編 (C言語実用マスターシリーズ)という書籍は「シニア」という題名がついていますが、C言語の文法についての記述もありオススメです。

基礎からわかるTCP/IP ネットワーク実験プログラミング―Linux/FreeBSD対応は C言語で書かれたネットワークアプリケーションのコードが紹介されていていい参考になると思います。

少し応用すれば悪用できてしまえるようなコードも掲載されています。ただしC言語を解説するタイプの書籍ではないので、全くの素人にはオススメしません。

C言語の基本を心得てから購入したほうがいいでしょう。

PHP

Webアプリケーションの脆弱性を付いた攻撃というのはよく聞きますが、そのWebアプリケーションのどこにどのようなセキュリティーホールが存在するかは、書籍だけで勉強するのではなくハンズオン(体験学習)で、実際に作成してみるほうが身に付くでしょう。

世界中のWebアプリケーションの多くがPHPで記述されています。

php

この言語の習得は必須でしょう。

PHPに関しての書籍はパーフェクトPHPがオススメです。

PHPは数あるコンピュータ言語の中では容易に習得できる部類であり、初学者にも敷居が低いのが特徴です。

その容易さからセキュリティーホールだらけのコードが出回り、それにより「PHPを扱う人は技術力が低い」というような風潮がいまだに存在しています。

それはPHP扱うその人自身の問題であり、実際は大規模で強固なアプリケーションも構築できる立派なコンピュータ言語です。

コンピュータ言語にはそれぞれ思想のようなものがありますが、PHPの場合「便利な機能はどんどん取り入れていく」というような雰囲気を持つので、それが一部のプログラマには、「確固たる思想のない適当な言語」と映るのかもしれません。

HTML・CSS

昨今Webアプリケーションはハッカーの一番の標的でしょう。

HTMLとCSSはそれらの見た目とデザイン表現するマークアップ言語と呼ばれるものです。

html-css

基礎部分であれば習得はかなり容易です。HTML・CSSを知らずしてWebアプリケーションは語れません。必須の技術です。

HTML5&CSS3デザインブックなどがオススメです。

ネットワーク

ハッカーはよく「ネットワークに対して深い知識を有する者」と言われたりします。ネットワークを介して対象物を攻撃するので、当たり前と言えば当たり前です。

network

ネットワークと一言で言っても、DHCPNATIPv4IPv6DNSと様々です。

ただしそれらの動作について深い知識を有することは、ハッキングを行う上で必須と言ってもいいでしょう。

ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識という書籍はネットワークの基礎の部分を抽象的に述べています。

初めから技術的なことに手を出すのではなく、こういった基本を知識として有しておくと後々役に立つので読んでおくといいでしょう。

またネットワーク関連ではマスタリングTCP/IP 入門編がこの分野では聖典のような立ち位置にあります。必ず一度目を通しておきましょう。

少し古めの書籍ですが、ネットワークなどのインフラの基礎となる技術はその時々の時代に左右されにくいので読んでおいて損はありません。

SQL

SQLとはデータベースを操作する言語です。理解ができなければデータベースをハックすることはできないので、必須の技術です。

ただしSQLのみならず、データベースのアーキテクチャ(構造)そのものを理解しておく必要があるでしょう。

database

基礎からのMySQL (基礎からシリーズ)はデータベースを扱った、初学者用の書籍として人気があります。

英語

少し視点が変わりますが、必須ではないにしろ英語も知っておいたほうがいいことは間違いないでしょう。少なからず英語に拒否感がある人はハッカーには向いていません。

word-card

そもそもコンピュータシステム自体が英語が元として成り立っていますし、新しい技術のドキュメントはたいてい英語で書かれています。

世界中の数多くのハッカーの人たちは出身国はどこであれ、やり取りするときは英語です。

日本国内にも優秀なプログラマやエンジニアの方はたくさんいます。英語に対して苦手意識のある人はたくさんいますが、少なからず英語は見るのも嫌という方はほとんどいないと思います。

必須ではありませんが、知っていれば特ということは覚えておいてください。

その他

はっきり言って本当に最低限のことしか述べていません。

PHPは取り上げましたがPerlやPythonはどうなのか、Webアプリケーションを語るのであればJavaScriptは、などと話は尽きません。

本来であれば暗号化技術やリバースエンジニアリングなど、そういったことも述べるべきでしょう。ただし深堀するとキリがないので、ここで止めておきます。

天才ハッカーなどと称賛されている素晴らしい技術力を持った人たちも実際は全てを理解しているわけではありません。

その個人の得意分野と、そうでない分野が存在します。

腕が立つエンジニアの人でもコンピュータシステムという巨大なカテゴリーで述べたとき、理解のある範囲はせいぜい20%~30%程度でしょう。

結局なにから始めればいいのか?

questions

結論から述べます。Webアプリケーションを作成するというところから始めてみてはどうでしょうか。つまりはサイトの構築です。

その過程でおのずとサーバサイドで走らせるスクリプト言語(PHPなど)や、見た目を整えるHTML・CSSが学べますし、サーバ構築でLinuxの技術も習得できます。

これらを経験する中でハッカーになるには何が必要かということが自然と見えてくると思います。

何も分からないという初心者の方には「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのかという書籍をオススメします。

またWebアプリケーションを作成する際には必ずセキュリティを意識しましょう。ハッカーとは言ってしまえばセキュリティのエキスパートです。

そもそもセキュリティを意識できない人はプログラマ失格です。

Webアプリケーションの脆弱性を説明した書籍としては体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践PHPサイバーテロの技法―攻撃と防御の実際の2点をオススメします。

これらはWebサイトに存在する脆弱性に対する攻撃に関する書籍であって、ハッキングとは根本的には違います。

hooded-hacker

ハッキングとは権限を持たないサーバへの侵入です。

素人向けのではないのではじめから手を出すのは現実的ではありませんが、正真正銘本物のハッキング手法を知りたいのであれば、Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際をオススメします。

ハッカーの学校も参考になるでしょう。

サーバが持つ脆弱性を診断する際に使用するツールであるMetasploitに関する書籍は実践 Metasploit ―ペネトレーションテストによる脆弱性評価がいいでしょう。

Metasploitはハッカーの人たちも実際に使用しています。

ペネトレーションテストとは契約の元でハッキングを依頼し、サーバのセキュリティ強度を測るテストのことです。

そのテストの際によく使用されるLinuxディストリビューションにKali Linuxなるものが存在します。

数多くのハッキングツールを兼ね備えたOSです。

Kali Linuxに関してはサイバーセキュリティテスト完全ガイド ~Kali Linuxによるペネトレーションテスト~という書籍がいいでしょう。

あくまでサーバのセキュリティ強度を測るツールですので悪用は厳禁です。

どのみちこういった他人が作成したツールに頼ってばかりでは、いつまで経ってもハッカーにはなれないでしょう。

おわりに

何度も言いますがハッキングは犯罪です。実際に体験したい方は自身が所有するサーバに限定してください。

皆さんが正義のハッカー、ホワイトハットとして将来活躍することを期待しています!

DoS攻撃の仕組みを超簡単に説明するとこうなる


どんなささいなコメントでもウエルカムです。全てに返答いたします。
  • はてなブックマーク share button
  • Pinterest share button
  • Pocket share button
  • LINE share button
  • Instagram follow button
  • Feedly follow button
  • RSS follow button