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.1k
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
43
プロダクトマネジメント輪読会
yutafujii0
0
300
おさらいWebAPI
yutafujii0
0
170
F8 2019に参加したシリコンバレー訪問の感想
yutafujii0
0
190
Featured
See All Featured
The Invisible Side of Design
smashingmag
297
50k
For a Future-Friendly Web
brad_frost
175
9.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Bash Introduction
62gerente
608
210k
A Tale of Four Properties
chriscoyier
156
23k
Measuring & Analyzing Core Web Vitals
bluesmoon
3
78
A designer walks into a library…
pauljervisheath
202
24k
Building Applications with DynamoDB
mza
90
6.1k
GraphQLとの向き合い方2022年版
quramy
43
13k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
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