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.6k
Linuxパスワードクラッキングで学べること
※あたりまえですが
本資料はハッキングを推奨する意図はありません
社内勉強会資料の展開です.
Yuta Fujii
June 08, 2021
Tweet
Share
More Decks by Yuta Fujii
See All by Yuta Fujii
【しくじり先生】 RailsのAutoloadingとReloadingの仕組みとやってしまったバグ
yutafujii0
2
2k
configの設定をちょっと変えたら Autoloading and Reloadingのエラーに 思いっきりハマってしまった話
yutafujii0
0
48
プロダクトマネジメント輪読会
yutafujii0
0
310
おさらいWebAPI
yutafujii0
0
180
F8 2019に参加したシリコンバレー訪問の感想
yutafujii0
0
200
Featured
See All Featured
Building Applications with DynamoDB
mza
95
6.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
KATA
mclloyd
29
14k
Six Lessons from altMBA
skipperchong
28
3.8k
Code Review Best Practice
trishagee
68
18k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Visualization
eitanlees
146
16k
Building an army of robots
kneath
306
45k
Scaling GitHub
holman
459
140k
Practical Orchestrator
shlominoach
188
11k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
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