暇人の英語雑記ブログ

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

2018.10.022018.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 の場合「便利な機能はどんどん取り入れていく」というような雰囲気を持つので、それが一部のプログラマには、「確固たる思想のない適当な言語」と映るのかもしれません。

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%程度でしょう。

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

question-icons

結論から述べます。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によるペネトレーションテスト~』という書籍がいいでしょう。

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

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

多くのプログラミング初学者は初めで挫折する

ハッカーになるにはプログラムを書けることが大前提です。ハッキング自体がプログラミング技術の応用(悪用)なので当たり前ですね。

ただし多くの人たちは初めの時点で挫折してしまう傾向にあります。

以下のようなことが主な原因です。

  • コードを書くために必要なソフトウェアが分からない
  • コードを書く手順が分からない
  • 発生したエラーが英語で意味不明

これでは元も子もありません。

ただし一度基礎さえ学んでしまえば、後はひとりで習得できるというのがプログラミングの大きな特徴でもあります。

つまり出だしが非常に重要なのです。

そこであなたのモチベーションが高い現在の状態を潰してしまわないために、3つほどおすすめのサービスを紹介しておきます。

TechAcademy

tech-academy

TechAcademy は「第13回 日本e-Learning大賞 プログラミング教育特別部門賞」を受賞したこともあるプログラミング講座です。

Webアプリケーションコース、フロントエンジニアコース、PHP/Laravelコースと充実しています。

tech-academy-trial

コース自体は有料ですが、現在ブートキャンプの無料体験を実施しており、こちらならコストゼロでプログラミングを体験することが可能です。

なによりも上で挙げたようにコードを書くときに必要なツールや手順など、多くの人たちがつまずいてしまうところを無料で教えてくれるというところが大きいです。

プログラミングの事始めだけをサラッと学んでみたい人にはおすすめです。

プログラミング無料体験コースを見てみる

CodeCamp

code-camp

CodeCamp は現役のプログラマ(エンジニア)の方たちによるオンライン家庭教師サービスです。

code-camp-topics

こちらのサービスも HTML、CSS、JS、PHP などプログラミングを学ぶ上で重要な言語をいくつも提供しています。

本来は企業のプログラミング研修などで使用されるサービスですが、コードを学ぶ上で個人が利用しても全く問題ありません。

なんといっても右も左も分からない人は、プロの手を借り基礎だけを学んでおくことは非常に有益です。プログラムを書く上での基本さえつかんでしまえば、後は自分ひとりで腕を磨くことは可能です。

code-camp-document-download

こちらもコース自体は有料ですが、サービスの内容を記した資料は無料でダウンロードが可能なので、興味のある人は一度目をとおしてみることをおすすめします。

無料の資料をダウンロードしてみる

WebCamp

webcamp-logo

WebCamp はその名のとおり Webプログラミングに焦点を当てたサービスです。

全くの未経験者でも安心して利用できるサポート体制が用意されているので心強いです。

webcamp-pro

またプログラマとしての「転職保証付きコース」という、非常にユニークなコースも持ち合わせています。

無料で参加できる説明会を開催しているので、興味のある人は参加しているといいでしょう。

WebCampを見てみる

おわりに

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

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

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

author

Post image for Facebook Like