KaliLinuxを使えるようになるのだ（基礎編）

# 概要
「KaliLinuxを使えるようになるのだ（準備編）」に続いて「基礎編」です。
基礎編では、KaliLinuxの特徴とともに、使い始めでやっておくことなどを中心に記載します。

https://qiita.com/TAKANEKOMACHI/items/08877332056c8ca1ae58

# KaliLinuxってなに？
「準備編」で書けよ！という内容を敢えて「基礎編」で書きます。

WindowsやmacOSのように日常で利用するLinuxには、「Ubuntu」などがあります。
KaliLinuxは、このUbuntuのようなものなのか？というと、答えはNOです。
(最近は、日常利用をしてる人もいますけど・・・）

KaliLinuxのIntroductionには下記のように書いてあります。
https://www.kali.org/docs/introduction/what-is-kali-linux/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/2a95fc34-2b7b-2138-0b73-4d088e2cc4f7.png)

要約すると、DebianベースのLinuxで、下記の用途のためのツールをめっちゃたくさん積み込んでます。しかもオープンソースやで！
+ 侵入テスト
+ セキュリティ検査
+ コンピュータ分析/解析
+ リバースエンジニアリング

一言でいえば、「ハッキングツール」の宝箱。
ただ、開発者からすると自分たちで脆弱性のチェックを簡易的にできたり、脆弱性が報告されたときに再現をしてみたりできる貴重なツール群です。
ホワイトハッカーだけが使えば良いのですが、悪意を持ったクラッカーも使える（使っている）ので、「普通にこの程度のことはガキでもしてくるぞ」という前提で理解するツール群というところでしょうか・・・

```
┌──(root㉿kali)-[~]
└─# cat /etc/os-release 
PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
ID=kali
VERSION="2022.2"
VERSION_ID="2022.2"
VERSION_CODENAME="kali-rolling"
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="https://www.kali.org/"
SUPPORT_URL="https://forums.kali.org/"
BUG_REPORT_URL="https://bugs.kali.org/"
```

# KaliLinuxを最初に起動したらやること

## TimeZoneをJSTに変更する
KaliLinuxを起動すると、時間がJSTではないことに気づくと思います。
どうやら、EDT（米国東部標準時『夏時間』）のようです。

```                                                                                                                                                                                                                       
┌──(root㉿kali)-[~]
└─# timedatectl
               Local time: Mon 2022-06-13 10:46:21 EDT
           Universal time: Mon 2022-06-13 14:46:21 UTC
                 RTC time: Mon 2022-06-13 14:46:19
                Time zone: US/Eastern (EDT, -0400)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no
```

ということで、JSTに変更します。
```                                                                                                                                                                                                                                
┌──(root㉿kali)-[~]
└─# timedatectl set-timezone Asia/Tokyo
```

確認してみます。
```                                                                                                                                                                                                                            
┌──(root㉿kali)-[~]
└─# timedatectl                        
               Local time: Mon 2022-06-13 23:47:17 JST
           Universal time: Mon 2022-06-13 14:47:17 UTC
                 RTC time: Mon 2022-06-13 14:47:15
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no
                                                                                                                                                                                                                                 
┌──(root㉿kali)-[~]
└─# 
```
無事、JSTになりました。

## 日本語環境を整える
大抵の人は日本語キーボードを使っていると思いますが、初期状態は日本語キーボードじゃないんですね・・・
なので「"」とか「_」とか入力しようとすると、違う記号が入力されます。
```
┌──(root㉿kali)-[~]
└─# localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
                                                                                                                                                                      
┌──(root㉿kali)-[~]
└─# localectl set-locale "LANG=ja_JP.UTF-8"
    ↑これで、いろいろ日本語化されます
                                                                                                                                                                  
┌──(root㉿kali)-[~]
└─# localectl set-x11-keymap jp
    ↑これで日本語キーボード106が設定されます
                                                                                                                                                                  
┌──(root㉿kali)-[~]
└─# localectl                  
   System Locale: LANG=ja_JP.UTF-8
       VC Keymap: jp106
      X11 Layout: jp

┌──(root㉿kali)-[~]
└─# reboot                  
　　↑キーボードは再起動しないと反映されないので・・・
```

日本語入力は、あまり必要ないのですが、興味あれば下記を実行します。
```
┌──(root㉿kali)-[~]
└─# apt install task-japanese task-japanese-desktop

```
一応、再起動すると画面の右下に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/d024d429-f285-82cb-3ac5-1a302addbec5.png)

Firefoxで検索するときに、いつもの「半角/全角 漢字」キーを押すと日本語入力ができるようになります。

# KaliLinuxを起動したら毎回すること
## OSを更新する
KaliLinuxは、LTSといった形式はなく、ローリングリリースしています。
つまり、定期的に最新状態をリリースするわけです。
このため、ダウンロードしたイメージには「2022.2」などのリリース年月が付与されます。

KaliLinuxは、使うときには「最新にしておく」作業がまずは必要になります。
（Ubuntuとか結構放置してたりするんですけどね・・・）

ということで、最新にする手順です。
メニューのTerminalアイコンの右側をクリックすると、下記のように表示されるので「Root Terminal Emulator」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/e5087360-4382-7df0-b5f6-a321679eba22.png)

```
# apt update
# apt upgrade
```

これで、OSとしては最新になります。
ローリングリリースされているものが最新になると思ってください。
（なので、VirtualBoxに最新のイメージをインポートしても、更新すると山ほど更新分が取得されます・・・）

# KaliLinuxを触り始める
さて、いよいよKaliLinuxを使い始めます。

## どんなツールがあるのか？
KaliLinuxに同梱されているツールは、下記に一覧があります。
https://www.kali.org/tools/

または、KaliLinuxのメニューから下記をクリックしても同じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/7cd2c477-b693-d165-2bc5-cbbd5826fafb.png)

Kali Toolsのページが開いたら、「source」アイコンのものがToolの紹介だと思ってください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/c2fc47b2-c9a9-a55e-f12e-e812c54c324e.png)

例えば、0traceのsourceアイコンをクリックすると、下記のページが表示されます。
https://www.kali.org/tools/0trace/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/2b2771e9-d1b1-25d6-4682-4038d9e70d40.png)

最初のマーク箇所は、0traceのWebページになります。
詳細な使い方などは、このリンク先から探すことになります。

2つ目のマーク箇所が、このToolの機能を説明しているところです。
```
The package is traceroute tool that can be run within an existing,
open TCP connection, therefore bypassing some types of stateful 
packet filters with ease.
```
このパッケージは、tracerouteツールで、うんぬんかんぬん・・・

いろいろあるので、まずはこれらを１つずつみていくのもアリですね。

## KaliLinuxのメニューはツールをカテゴライズしている
前述の一覧を見ても、Apache（一般的なWebサーバー）やBind9（一般的なDNSサーバ）なども記載されているので、どれがツールなのかちょっとわかりづらいですよね。

また、GUIのアプリなのか、コマンドベースのアプリなのかも分からないので、ヤキモキしてきます。

そこで、KaliLinuxのメニューを表示すると、ありがたいことにカテゴライズされているんですね。
メニューに表示されているToolは、GUIアプリならGUIで表示され、CUIならターミナルが起動して表示されるので、徐々にアプリやツールの機能の知識を増やしていくとエンジニアとしては利用頻度も増してくると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/e1aef01a-17ad-d686-341f-dd8e9d66fbf6.png)

見てみましょう。
※全てのツールが、どこかのカテゴリに唯一で存在するわけではありません。
　ツールの機能が複数のカテゴリに属していれば、複数回出てきますし、代表的なツールであれば、展開される中だけでなく外にも表示されます。

### 01 - Information Gathering
「情報収集」
主に、現状の設定状態を確認するためのツールです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/b24ed9fe-fee6-2c05-4aa6-84ff0ae52e28.png)


### 02 - Vulnerability Analysis
「脆弱性分析」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/614264ee-d6fd-a22b-25cf-936fc36d41bc.png)

### 03 - Web Application Analysis
「Webアプリケーション分析」
burpsuiteは、結構使いますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/1535bdd1-3154-6967-a652-4e628b465744.png)

### 04 - Database Assessment
「データベース評価」
SQLite database browserは、普通に使いますね・・・単に中を見ようとするぐらいですけど。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/6f81972f-6ef4-7d6a-c207-19fa355c968f.png)

### 05 - Password Attacks
「パスワード攻撃」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/d4ddf6fa-a867-8eaa-51ac-1e04cdf77ad9.png)

### 06 - Wireless Attacks
「ワイヤレス攻撃」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/e39c85c9-bee4-d195-7159-3e4f5aa1ffe6.png)

### 07 - Reverse Engineering
「リバースエンジニアリング」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/a77a00a7-d6ad-cf28-e9b8-20301332f531.png)

### 08 - Exploitation Tools
「悪用ツール」
metasploit frameworkは、脆弱性問題が騒がれたときに、自社のWebアプリのペネトレーション環境で試したりするときに使いますね・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/94078b8f-e2d7-dd5d-529e-e4f6e5d9333e.png)

### 09 - Sniffing & Spoofing
「盗み見 ＆ なりすまし」
wiresharkは鉄板アプリですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/e9d6f575-bb82-9c28-bf8d-9ec9957ae673.png)

### 10 - Post Exploitation
「侵入後の行動」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/c88b8df4-fe1b-7251-a372-11492d689399.png)

### 11 - Forensics
「鑑識」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/2e34a424-639e-df11-0e9d-0a332390f517.png)

### 12 - Reporting Tools
「報告ツール」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/7dd36dd7-1a4b-3d02-bb33-2453167d26dd.png)

### 13 - Social Engineering Tools
「ソーシャルエンジニアリングツール（人間の心理的な隙をついた機密情報取得）」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/1596b4b7-28af-0cbd-9b37-a91686eeec5a.png)

----

「基礎編」はここまでです。
次回は数回に分けて「実践編」を書いてみたいと思います。