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.2k
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
45
プロダクトマネジメント輪読会
yutafujii0
0
300
おさらいWebAPI
yutafujii0
0
170
F8 2019に参加したシリコンバレー訪問の感想
yutafujii0
0
190
Featured
See All Featured
Bash Introduction
62gerente
608
210k
Navigating Team Friction
lara
183
15k
The Language of Interfaces
destraynor
154
24k
Mobile First: as difficult as doing things right
swwweet
222
9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Typedesign – Prime Four
hannesfritz
40
2.4k
The World Runs on Bad Software
bkeepers
PRO
65
11k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Gamification - CAS2011
davidbonilla
80
5.1k
BBQ
matthewcrist
85
9.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
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