「オープンハードセキュリティ #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 でログオンできるようにしています。
写真は別勉強会で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
クロージング、次回開催のアナウンス
お疲れ様でした。