Slide 1

Slide 1 text

Linuxのパスワードクラッキングで 学べること 2021.06.03

Slide 2

Slide 2 text

※あたりまえですが 本資料はハッキングを推奨する意図はありません

Slide 3

Slide 3 text

@__yutafujii__ ● パスワードクラッキングとは ● ハッシュ,エンコーディング,暗号化 ● 誕生日のパラドックス ● John the Ripper ● 実際に使ってみる ● ハッキング手法としての特徴 Contents

Slide 4

Slide 4 text

パスワードクラッキングとは

Slide 5

Slide 5 text

@__yutafujii__ コンピュータシステムで保存あるいは伝達されるデータからパス ワードを割り出すクラッキング手法 出所:Wikipedia パスワードクラッキング Answer

Slide 6

Slide 6 text

@__yutafujii__ ● 辞書攻撃 ● パスワードリスト攻撃 ● ブルートフォース攻撃 パスワードクラッキング

Slide 7

Slide 7 text

ハッシュ,エンコーディング,暗号化

Slide 8

Slide 8 text

@__yutafujii__ A hash function is any function that can be used to map data of arbitrary size to fixed-size values. 出所:Wikipedia ハッシュ関数 Answer

Slide 9

Slide 9 text

@__yutafujii__ ハッシュ関数に求められる性質

Slide 10

Slide 10 text

@__yutafujii__ ● 一方向性 ● 第2原像計算困難性 ● 衝突困難性 ハッシュ関数に求められる性質

Slide 11

Slide 11 text

@__yutafujii__ message ● 一方向性 ● 第2原像計算困難性 ● 衝突困難性 ハッシュ関数に求められる性質 hash message hash message message hash message

Slide 12

Slide 12 text

@__yutafujii__ ランダムに見える文字列にも種類がある eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0d2l0dGVyIjoi QF9feXV0YWZ1amlpX18iLCJuYW1lIjoiWXV0YSBGdWppaSIsImlhd CI6MTUxNjIzOTAyMn0.k8k4uQ-bgpbqvq6-SG247NztutFuw0xWta Dtx4pPgJQ

Slide 13

Slide 13 text

@__yutafujii__ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0d2l0dGVyIjoi QF9feXV0YWZ1amlpX18iLCJuYW1lIjoiWXV0YSBGdWppaSIsImlhd CI6MTUxNjIzOTAyMn0.k8k4uQ-bgpbqvq6-SG247NztutFuw0xWta Dtx4pPgJQ ランダムに見える文字列にも種類がある Base64 encode decode

Slide 14

Slide 14 text

@__yutafujii__ ランダムに見える文字列にも種類がある TLS Record protocol

Slide 15

Slide 15 text

@__yutafujii__ ランダムに見える文字列にも種類がある HMAC SHA256 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0d2l0dGVyIjoi QF9feXV0YWZ1amlpX18iLCJuYW1lIjoiWXV0YSBGdWppaSIsImlhd CI6MTUxNjIzOTAyMn0.k8k4uQ-bgpbqvq6-SG247NztutFuw0xWta Dtx4pPgJQ

Slide 16

Slide 16 text

@__yutafujii__ Devise gem | password ランダムに見える文字列にも種類がある

Slide 17

Slide 17 text

@__yutafujii__ Certificate ランダムに見える文字列にも種類がある

Slide 18

Slide 18 text

@__yutafujii__ ランダムに見える文字列にも種類がある ● ハッシュ(Hash) ○ 一方向,ハッシュから元の値を出すのは原理的に不可能 ● エンコード(Encode) ○ アルゴリズムがわかれば元に戻せる ● 暗号化(Encrypt) ○ アルゴリズムだけではなく鍵がわかっていないと元に戻せない

Slide 19

Slide 19 text

誕生日のパラドックス

Slide 20

Slide 20 text

@__yutafujii__ 誕生日のパラドックス 253人いると確率50%以上で あなたと同じ誕生日の人がいる

Slide 21

Slide 21 text

@__yutafujii__ 誕生日のパラドックス 23人いると確率50%以上で 誕生日被りが起きる

Slide 22

Slide 22 text

@__yutafujii__ ハッシュ関数に求められる性質 ● 第2原像計算困難性(強衝突耐性) ○ 与えられたmessageに対して同じhashになる別のmessageを見つける ● 衝突困難性(弱衝突耐性) ○ なんでもいいから同じhashになる2個のmessageを見つける message hash message message hash message

Slide 23

Slide 23 text

@__yutafujii__ パスワードクラッキングでやっていることは ● 第2原像計算困難性(強衝突耐性) ○ 与えられたmessageに対して同じhashになる別のmessageを見つける ● 衝突困難性(弱衝突耐性) ○ なんでもいいから同じhashになる2個のmessageを見つける message hash message message hash message

Slide 24

Slide 24 text

John the Ripper

Slide 25

Slide 25 text

@__yutafujii__ ● オープンソースのパスワードセキュリティ監査ツール ● Unix, Mac, WindowsなどさまざまなOSに対応 ● Wordpress,SSHなどにも使える John the Ripper

Slide 26

Slide 26 text

@__yutafujii__ ● /etc/shadowに保存されている Linuxのパスワード └─# ls /etc/passwd -rw-r--r-- 1 root root 3.3K Jun 3 11:34 /etc/passwd └─# ls /etc/shadow -rw-r----- 1 root shadow 1.9K Jun 3 11:34 /etc/shadow

Slide 27

Slide 27 text

@__yutafujii__ ● /etc/shadowに保存されている Linuxのパスワード └─# cat /etc/shadow … test1:$6$coolsalt$lBwFVYyzAmmx6k3N5shu4OFCnLmzNjuFhrZLwbch8r uVxelHjD7Kl8bArJd.Ncc3nbf.4xvaEGEjolJGMp6Xf/:18781:0:99999:7 :::

Slide 28

Slide 28 text

@__yutafujii__ ● /etc/shadowに保存されている Linuxのパスワード $6$coolsalt$lBwFVYyzAm...Mp6Xf/ アルゴリズム ソルト Hashed password

Slide 29

Slide 29 text

実際に使ってみる

Slide 30

Slide 30 text

@__yutafujii__ ● インストールしたら2コマンドで実行できる Localで実行してみる └─# unshadow /etc/passwd /etc/shadow > crackme.txt └─# john --wordlist=/usr/share/john/password.lst --rules crackme.txt

Slide 31

Slide 31 text

@__yutafujii__ ● g4dn インスタンスを利用 ● CUDAインストール ● John the Ripperインストール AWSで豪快にGPUを使ってみる

Slide 32

Slide 32 text

@__yutafujii__ AWSで豪快にGPUを使ってみる

Slide 33

Slide 33 text

@__yutafujii__ AWSで豪快にGPUを使ってみる

Slide 34

Slide 34 text

@__yutafujii__ AWSで豪快にGPUを使ってみる

Slide 35

Slide 35 text

@__yutafujii__ AWSで豪快にGPUを使ってみる

Slide 36

Slide 36 text

ハッキング手法としての特徴

Slide 37

Slide 37 text

@__yutafujii__ ● オフラインでクラッキングされうる ○ WiFiパスワードも同様 ハッキング手法としての怖さ

Slide 38

Slide 38 text

@__yutafujii__ References ● パスワードクラッキング ○ https://ja.wikipedia.org/wiki/%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%82%AF%E3%83%A 9%E3%83%83%E3%82%AF ● ハッシュ関数 ○ https://en.wikipedia.org/wiki/Hash_function ○ https://gchq.github.io/CyberChef/#recipe=SHA3('256') ● 誕生日のパラドックス ○ https://ja.wikipedia.org/wiki/%E8%AA%95%E7%94%9F%E6%97%A5%E6%94%BB%E6%92%83 ● JWT token ○ https://jwt.io/ ● How Devise keeps your Rails app passwords safe ○ https://www.freecodecamp.org/news/how-does-devise-keep-your-passwords-safe-d367f6e816eb/ ● John the Ripper ○ https://www.openwall.com/john/ ○ https://www.cyberciti.biz/faq/understanding-etcshadow-file/ ● 実装Memo ○ https://zenn.dev/yutafujii/scraps/1d76606e9ce389