RaspberryPi で初歩のセキュリティハンズオン その2

「オープンハードセキュリティ #5」
https://openhardsecurity.connpass.com/event/184982/
のテキストです。

深センのものづくり企業 Ideagear の社内勉強会を兼ねて、セキュリティの初歩的なハンズオンをします。

前回はこちら
「RaspberryPi で初歩のセキュリティハンズオン その1」
https://qiita.com/nanbuwks/items/1593356f3a15d7fc348f

# やること

- 19:00 オープニング、ssh 設定
- 19:05 自己紹介とIdeagear の説明
- 19:15 録画スタート、RaspberryPi にログイン、前回の復習、Linuxの 基本操作
- 19:25 John the Ripper を使ってパスワードクラッキング実習
- 19:35 過去に侵入されたRaspberryPiの解析
- 19:45 (応募があれば)ライトニングトーク
- 19:55 クロージング、次回開催のアナウンス


講師のRaspberry Pi 上にインターネット経由で ssh でログオンできるようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/ef95b884-702d-5012-e9f1-09075695d7c6.png)

写真は別勉強会でRaspberryPiを使って更に他のワンボードマイコンの実験をしているところです。今回もこのようなシステムを使ってハンズオンを行います。


# 事前準備
今回使う情報を手元にメモしておいてください。

- サーバアドレス
- ssh ポート番号
- ssh ユーザ名
- ssh パスワード
- 自分のscreenセッション名 (connpass のエントリー名を元にします)

# RaspberryPi にログイン


# サーバに接続

ssh で指定したサーバに接続してください。
接続できたら以下のように表示されます。

```
Linux raspberrypi 5.4.51+ #1327 Thu Jul 23 10:53:06 BST 2020 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Aug  5 10:03:49 2020 from 192.168.42.5
workshop@raspberrypi:~ $ 

```

と出ます。
さて、以下のように表示されているところに入力していきます。

```
workshop@raspberrypi:~ $ 
```

## プロンプトについて少し説明

今後、以下のように表示されているところを、

```
workshop@raspberrypi:~ $
```

以下のように省略して表示しますので覚えていてください。$ のマークは入力可能であることを示していて、プロンプトと言います。プロンプトは状況により $ や # , > などがあります。

今後、

```
 $
```


の表示の後にキーボードから入力してエンターを押します。＄ を含め、これより前の部分を入力する必要はありません。




## screen セッションに接続


```

$ screen -x hogehoge
```

この例では hogehoge が screen セッション名です。自分の screen セッション名に入れ替えてください。

この命令で screen セッションに接続します。 セッションを共有して、作業を講師側でモニターします。

```
There is no screen to be attached matching hogehoge.
```

のように出た方はセッション名指定などがうまくできていません。講師にお声がけください。
正常に接続すると、画面が切り替わり再度

```
hogehoge:~ $ 
```
のように表示されます。

(上記のようになるように、あらかじめ主催者がraspberry pi 上で設定しています。)


# Linux の基本操作

ファイルの一覧を見てみます。

```
 $ ls
folder  mkscreen.sh  shadow  test
```

test ファイルの中身を見てみます。

```
 $ cat test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
```

ファイルの最初10行だけを見る方法です

```
 $ head test
1
2
3
4
5
6
7
8
9
10
```

ファイルの最後10行だけを見る方法です

```
 $ tail test
11
12
13
14
15
16
17
18
19
20
```

ディレクトリの中身を確認してみます

```
 $ ls folder
test2
```

ディレクトリに移動して、中身を確認してみます

```
 $ cd folder
 $ ls
test2
```

ディレクトリを1つ上に移動します。

```
 $ cd ..
 $ ls
folder  mkscreen.sh  shadow  test

```

ディレクトリを新たに作成してみます。

hogehog は自分のセッション名に入れ替えてください。
ディレクトリを作ってみます。

```
 $ mkdir hogehoge
 $ ls
folder  hogehoge  test
```

今作ったディレクトリに移動して、中身を確認してみます

```
 $ cd hogehoge
 $ ls
```

ファイルを新たに作成してみます。

```

 $ touch hogehoge
 $ ls
hogehoge
```

今作ったファイルを消してみます。

```
 $ rm hogehoge
 $ ls
```


# John the Ripper を使ってパスワードクラッキング実習をしてみよう

今回、Raspberry Pi には以下のユーザが登録されています。

- root
- pi
- workshop
- macron
- putin
- xi
- trump
- abe

これらのパスワードを解析してみましょう。

Raspberry Pi のユーザ管理は /etc/passwd にあります。

```

 $ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
・
・
・
workshop:x:1001:1001:,,,:/home/workshop:/bin/bash
macron:x:1002:1002:,,,:/home/macron:/bin/bash
putin:x:1003:1003:,,,:/home/putin:/bin/bash
xi:x:1004:1004:,,,:/home/xi:/bin/bash
trump:x:1005:1005:,,,:/home/trump:/bin/bash
abe:x:1006:1006:,,,:/home/abe:/bin/bash
```

これを自分の作業ディレクトリにコピーしてください。

```

cp /etc/passwd .

```

さて、passwd というファイル名なのにパスワードっぽい項目が無いですね。パスワードは秘密にしなければならないので別のファイルになっています。
そのファイルは /etc/shadow です。
中身を見てみましょう。

```


 $ cat /etc/shadow
cat: /etc/shadow: Permission denied
```

これは権限がないために見えなくなっています。
今回のハンズオンのために  /home/workshop (../) に権限を付けたものをコピーしました。

```

$ ls ..
folder  mkscreen.sh  shadow  test
```

```

$ cat ../shadow
root:*:18409:0:99999:7:::
daemon:*:18409:0:99999:7:::
bin:*:18409:0:99999:7:::
・
・
・
workshop:$6$rZfzFGVFUip/7XrO$4Wqv6NYvYNsW6lumgNtbskODnwF9rNlxYeTLQwUwP14E60VuXYRSNfkxwv9t00XACr2in1C1pWv9nxQ/8AN/M1:18479:0:99999:7:::
macron:$6$jEDiUiHkSQMgA9Tp$lGQZVASpTHROQhBxaEKB7qsAZ9Dt7a3BBGtWCuSYhIyr66wIB2Z0WC8mtMVrsViW0RBZ0gr4q7QYBvb2.jz1G.:18479:0:99999:7:::
putin:$6$hD8aQGAwp1k2lb6s$9eERN1sqXAIye.lHHH5Xl0x7tm3hgU0WasxTyCo1.CsrkIymEChm34aFm4mIiAvTZyG0od8JmoOe20oZle7Di.:18479:0:99999:7:::
xi:$6$/ao21dokC/kyY8Nc$WZ3jJ.Fr8n8XU23CM8rdXchu72cVwhTznbVjPLguEc9m0y4p.PPyUBiWgTkOLRxZIhzSFC998OdyN2xR7p/730:18479:0:99999:7:::
trump:$6$4Jngo0cNMEWMPFkV$B0sZjq/8DiYBPh5mREIeMfDDWOGJ62n/bj6fs.LOiw2i8GkT.l6E8wy6SS0k/e7XVdFGapq3D5oj844KQHeJh1:18479:0:99999:7:::
abe:$6$6nLw4Cz.FIsXZEBH$PeL2uNmTqAKCdwXP7zSenlDndFpnM3./YapFnQyHedUeUNZoDU8KUbumVOdP/exGbklcOVPT0Vwfi.bC2E15W1:18479:0:99999:7:::
```

これを、作業ディレクトリにコピーしましょう。

```

$ cp ../shadow .

```

```

$ ls
passwd  shadow

```

解析にあたり、ファイルが2つだとやりにくいので1つに統合します。

```

$ unshadow passwd shadow > crack

```

解析します。


```

$ john crack

```

#  クロージング、次回開催のアナウンス

お疲れ様でした。