Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linuxパスワードクラッキングで学べること
Search
Yuta Fujii
June 08, 2021
0
6.4k
Linuxパスワードクラッキングで学べること
※あたりまえですが
本資料はハッキングを推奨する意図はありません
社内勉強会資料の展開です.
Yuta Fujii
June 08, 2021
Tweet
Share
More Decks by Yuta Fujii
See All by Yuta Fujii
【しくじり先生】 RailsのAutoloadingとReloadingの仕組みとやってしまったバグ
yutafujii0
2
1.9k
configの設定をちょっと変えたら Autoloading and Reloadingのエラーに 思いっきりハマってしまった話
yutafujii0
0
48
プロダクトマネジメント輪読会
yutafujii0
0
300
おさらいWebAPI
yutafujii0
0
170
F8 2019に参加したシリコンバレー訪問の感想
yutafujii0
0
200
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Writing Fast Ruby
sferik
628
61k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Statistics for Hackers
jakevdp
797
220k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Site-Speed That Sticks
csswizardry
4
420
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.4k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
Transcript
Linuxのパスワードクラッキングで 学べること 2021.06.03
※あたりまえですが 本資料はハッキングを推奨する意図はありません
@__yutafujii__ • パスワードクラッキングとは • ハッシュ,エンコーディング,暗号化 • 誕生日のパラドックス • John the
Ripper • 実際に使ってみる • ハッキング手法としての特徴 Contents
パスワードクラッキングとは
@__yutafujii__ コンピュータシステムで保存あるいは伝達されるデータからパス ワードを割り出すクラッキング手法 出所:Wikipedia パスワードクラッキング Answer
@__yutafujii__ • 辞書攻撃 • パスワードリスト攻撃 • ブルートフォース攻撃 パスワードクラッキング
ハッシュ,エンコーディング,暗号化
@__yutafujii__ A hash function is any function that can be
used to map data of arbitrary size to fixed-size values. 出所:Wikipedia ハッシュ関数 Answer
@__yutafujii__ ハッシュ関数に求められる性質
@__yutafujii__ • 一方向性 • 第2原像計算困難性 • 衝突困難性 ハッシュ関数に求められる性質
@__yutafujii__ message • 一方向性 • 第2原像計算困難性 • 衝突困難性 ハッシュ関数に求められる性質 hash
message hash message message hash message
@__yutafujii__ ランダムに見える文字列にも種類がある eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0d2l0dGVyIjoi QF9feXV0YWZ1amlpX18iLCJuYW1lIjoiWXV0YSBGdWppaSIsImlhd CI6MTUxNjIzOTAyMn0.k8k4uQ-bgpbqvq6-SG247NztutFuw0xWta Dtx4pPgJQ
@__yutafujii__ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0d2l0dGVyIjoi QF9feXV0YWZ1amlpX18iLCJuYW1lIjoiWXV0YSBGdWppaSIsImlhd CI6MTUxNjIzOTAyMn0.k8k4uQ-bgpbqvq6-SG247NztutFuw0xWta Dtx4pPgJQ ランダムに見える文字列にも種類がある Base64 encode decode
@__yutafujii__ ランダムに見える文字列にも種類がある TLS Record protocol
@__yutafujii__ ランダムに見える文字列にも種類がある HMAC SHA256 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0d2l0dGVyIjoi QF9feXV0YWZ1amlpX18iLCJuYW1lIjoiWXV0YSBGdWppaSIsImlhd CI6MTUxNjIzOTAyMn0.k8k4uQ-bgpbqvq6-SG247NztutFuw0xWta Dtx4pPgJQ
@__yutafujii__ Devise gem | password ランダムに見える文字列にも種類がある
@__yutafujii__ Certificate ランダムに見える文字列にも種類がある
@__yutafujii__ ランダムに見える文字列にも種類がある • ハッシュ(Hash) ◦ 一方向,ハッシュから元の値を出すのは原理的に不可能 • エンコード(Encode) ◦ アルゴリズムがわかれば元に戻せる
• 暗号化(Encrypt) ◦ アルゴリズムだけではなく鍵がわかっていないと元に戻せない
誕生日のパラドックス
@__yutafujii__ 誕生日のパラドックス 253人いると確率50%以上で あなたと同じ誕生日の人がいる
@__yutafujii__ 誕生日のパラドックス 23人いると確率50%以上で 誕生日被りが起きる
@__yutafujii__ ハッシュ関数に求められる性質 • 第2原像計算困難性(強衝突耐性) ◦ 与えられたmessageに対して同じhashになる別のmessageを見つける • 衝突困難性(弱衝突耐性) ◦ なんでもいいから同じhashになる2個のmessageを見つける
message hash message message hash message
@__yutafujii__ パスワードクラッキングでやっていることは • 第2原像計算困難性(強衝突耐性) ◦ 与えられたmessageに対して同じhashになる別のmessageを見つける • 衝突困難性(弱衝突耐性) ◦ なんでもいいから同じhashになる2個のmessageを見つける
message hash message message hash message
John the Ripper
@__yutafujii__ • オープンソースのパスワードセキュリティ監査ツール • Unix, Mac, WindowsなどさまざまなOSに対応 • Wordpress,SSHなどにも使える John
the Ripper
@__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
@__yutafujii__ • /etc/shadowに保存されている Linuxのパスワード └─# cat /etc/shadow … test1:$6$coolsalt$lBwFVYyzAmmx6k3N5shu4OFCnLmzNjuFhrZLwbch8r uVxelHjD7Kl8bArJd.Ncc3nbf.4xvaEGEjolJGMp6Xf/:18781:0:99999:7
:::
@__yutafujii__ • /etc/shadowに保存されている Linuxのパスワード $6$coolsalt$lBwFVYyzAm...Mp6Xf/ アルゴリズム ソルト Hashed password
実際に使ってみる
@__yutafujii__ • インストールしたら2コマンドで実行できる Localで実行してみる └─# unshadow /etc/passwd /etc/shadow > crackme.txt
└─# john --wordlist=/usr/share/john/password.lst --rules crackme.txt
@__yutafujii__ • g4dn インスタンスを利用 • CUDAインストール • John the Ripperインストール AWSで豪快にGPUを使ってみる
@__yutafujii__ AWSで豪快にGPUを使ってみる
@__yutafujii__ AWSで豪快にGPUを使ってみる
@__yutafujii__ AWSで豪快にGPUを使ってみる
@__yutafujii__ AWSで豪快にGPUを使ってみる
ハッキング手法としての特徴
@__yutafujii__ • オフラインでクラッキングされうる ◦ WiFiパスワードも同様 ハッキング手法としての怖さ
@__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