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
7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linuxパスワードクラッキングで学べること
※あたりまえですが
本資料はハッキングを推奨する意図はありません
社内勉強会資料の展開です.
Yuta Fujii
June 08, 2021
More Decks by Yuta Fujii
See All by Yuta Fujii
【しくじり先生】 RailsのAutoloadingとReloadingの仕組みとやってしまったバグ
yutafujii0
2
2.3k
configの設定をちょっと変えたら Autoloading and Reloadingのエラーに 思いっきりハマってしまった話
yutafujii0
0
60
プロダクトマネジメント輪読会
yutafujii0
0
330
おさらいWebAPI
yutafujii0
0
180
F8 2019に参加したシリコンバレー訪問の感想
yutafujii0
0
220
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
600
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
380
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
The Language of Interfaces
destraynor
162
27k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
The browser strikes back
jonoalderson
0
1.2k
Making Projects Easy
brettharned
120
6.7k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
280
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
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