初めてHacking（入門）したンゴ

# 最初に

MakeITアドベントカレンダー2019年14日目は@ahetaroが担当します！
去年は「Pythonを始める準備をしよう」というPycharm導入の記事を書かせていただきました。
今年はHacking関連の記事を書きます。
#### なぜHacking関連なのか？
2週間前ゼミの先生から「ハッキング・ラボのつくりかた」という本を勧められ、内容が自分の興味分野とぴったりだったので「これで学んだことを記事に書いたらいいんじゃね！アウトプットにもなるし」と思ったからです。

## 紹介の流れ

- ハッキング・ラボとは何か
- なぜハッキング・ラボを作るのか？
- この本で何ができるのか？
- やってみての感想

この3つの柱で書いていきます。
※環境などの細かい設定は長くなってしまいますので省いています。
また行ったことやこれを見て体験できるような記事ではありません。
あくまで何をやったのかこの本で何ができるのかや感想を記事にしてます。

## ハッキング・ラボとはなにか

**ハッキング**：コンピュータに対する攻撃の総称
※「Hacking」の本来の定義など気になった方ぜひ調べてみて下さい。
ここでは特に書きません

**ラボ ”laboratory”**: 実験室、研究室といった意味。

直訳では「ハッキングの実験室」。
つまり**ハッキングの実験が行える環境**のことです。


## なぜハッキング・ラボを作るのか

科学者や生物学者にとって実験は必須ですよね？それを行うにも実験室が必須です。
同様にセキュリティの専門家にとってもハッキング・ラボはなくてはならないものなのです。
ハッキング・ラボをある程度完成してしまえば、ハッキングの実験のハードルが下がり、「いつでも」ハッキングができます。
特に、勉強会やCTFに参加するたびに、持参するノートPCの環境構築に時間を費やすこともなくなります。

又、ハッキング・ラボを作っていくにあたって**仮想環境**というものを使っていきます。
仮想環境の中で攻撃端末とターゲット端末を構築し、攻撃と防御を自分で体験することはセキュリティの理解を深めるために大変有効です。

※仮想環境
パソコンやサーバーなどのハードウェア内で、「仮想化」の技術を使って創り出されたヴァーチャルな世界を意味します。 また、「仮想化」の技術とは、ハードウェアを構成するCPUやメモリを、理論上で分離または統合する技術です

## 実際にハッキングを行ってみた

#### 実践環境の説明

今回ハッキングを行うにあたって使ったものを雑に紹介していきます。

- VirtualBox
- KaliLinux
- Windows7
- netcat
- Metasploit

※ VirtualBox
VirtualBoxとは仮想化ソフトウェア

※ KaliLinux
LinuxOS

※Windows7
windowsOS

※netcat
接続先IPアドレスとポート番号を指定することにより、その接続先の該当するポートで待ち受けているサーバソフトウェアと通信することができる汎用TCP/UDP接続コマンドラインツール

※Metasploit
セキュリティーを大幅に高める、脆弱性スキャニングと攻撃作成のためのツール

### どんなことをしたのか？

～netcatによるバインドシェルとリバースシェル～

#### バインドシェル

netcatというツールを使ってターゲット端末のコマンドプロンプトを攻撃端末から操作することができます。

netcatを使ってターゲット端末のコマンドプロンプトで下記のように待機。
windowsでnetcatをサーバとして動作させるときに、**-e**オプションを使い、-eオプションに接続後実行するプログラムを指定している（※今回はコマンドプロンプト）

![netcat_wait.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321715/22d3a214-80fc-2868-2221-10712fcb562e.png)

そして攻撃端末で待ち状態になっているターゲット端末にアクセスします。
するとターゲット端末のコマンドプロンプト起動時の表示内容が攻撃端末側のTerminalに表示されます。これでターゲット端末のネットワーク設定なども見ることができてしまいます。

![netcat_windows_kali_hacking.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321715/c5a8cc12-d725-f3eb-d420-c623abf3cd14.png)

![netcat_kali_windows_ipconfig.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321715/500bc8d0-83fe-e928-eb00-ffae43b07c65.png)

この時、これって相手が今回のようにわざわざ待機していることなんてあるのか？
って思いました。この謎は後に解けました。

#### リバースシェル

先ほどのバインドシェルは攻撃端末からターゲット端末に対して接続して、遠隔操作を実現していました。これだと通信路の途中でファイアーウォールやルータなどにブロックされてしまいます。
これはインバウンドを制限しているからです。
せっかく遠隔操作を実現できるバックドアを設置できてもこれでは意味がありません。
これを解決するためにリバースシェルはさっきの逆をします。

それでは攻撃端末側が今度はポート番号を指定して、ターゲット端末からのアクセスを待ちます。
バインドシェルとは違い、攻撃端末が待ち受けています。

![reverse_wait.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321715/fbac955c-55b9-288e-aa78-622752eb33b6.png)

準備された場所にターゲット端末はアクセスをします。

![reverse_access.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321715/31a156c5-a27e-b221-521e-33715ade994c.png)

この時、待機している攻撃端末の表示にターゲット端末がアクセスしたことが確認できます。
これで先ほどと同じくターゲット端末のコマンドプロンプトが表示されました。
今回もターゲット端末のネットワーク情報を見てみます。

![reverse_hacking.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321715/5235999b-5f32-6f54-a97d-155b6312acbb.png)

![reverse_ipconfig.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321715/3ca4e0de-44bd-34a0-bf08-7fd6ae6a12c0.png)

はい。できましたね。
でもこれもバインドと同じくこれ単体じゃ引っかかる馬鹿なんていないだろう？って思いました。


※インバウンド　
外部から内部へのアクセス

※バインドシェル
攻撃端末からターゲット端末に接続するタイプのシェル

※リバースシェル
ターゲット端末から攻撃端末に対して接続するタイプのシェル

### Metasploitによるハッキング

最後にMetasploitです。先ほどのバインドシェル、リバースシェルの応用です。
これはあまりにも説明が多いので今回はサクッと記述します。

Metasoloitを使ってペイロードを作成します。
ペイロードにファイルを追加し、ターゲットが踏み込むページを作成します。
説明は簡単になってしまうんですがこの作成したページにターゲットがアクセスすることによって先ほどのバインドシェル、リバースシェルが実行されます。

これで後は遠隔操作です。
Metasploitを使ってパスワードを解析し、さらにはユーザの特権なども奪取していくことができます。
そのまま自分のユーザを作成し本格的にターゲットのpcを支配できます。

説明が簡単で短かったですが、また別の記事でこの部分の詳しい実施内容を記載していこうと思います。

※ペイロード
悪意のある動作をする実行コード。

# 感想

実際ハッキングラボの入り口の部分ではあったけれど、個人的にすごい楽しかった。
ハッキングってなるとすごい難しいイメージがあるしなかなか手を付けれないし、「ハッキング＝悪行」のような感覚があったので、この本によって身近にハッキングの体験ができたのはすごい良かった。
ハッキングの体験をしながらネットワークなどの勉強もできるし、やってみてもっとネットワーク勉強しなきゃ！とかも思いましたし、なによりも**「セキュリティ」をやってる感がある！**
難易度的にそこまで高くはないので、セキュリティ興味あるけどなかなか踏み出せない、難しいそうなど私のような人はぜひハッキングラボ本を買ってハッキングの体験をしてみてはいかがでしょうか！
まだまだこの本でできることがあるので引き続き勉強していこうと思います。

今回は「初めてのHacking」というタイトルで書かせていただきました。
感想にも書いたようにセキュリティの勉強の手助けとなる記事になればと思います。
Metasploitの部分がもっと詳しく説明できなかったのが心残りです、続きは本を是非買ってご自身で体験してみてください！
バタバタではありましたがありがとうございました。
それでは来年のアドベントカレンダーでまた会いましょう！