Linuxパスワードクラッキングで学べること
by
Yuta Fujii
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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