SlideShare uma empresa Scribd logo
1 de 26
辞書攻撃をする人は何をど
う使っているのか
1
123456
12345
password
password1
123456789
12345678
1234567890
abc123
computer
tigger
1234
qwerty
money
carmen
mickey
secret
summer
internet
a1b2c3
123
service
canada
hello
ranger
辞書攻撃 (@ozuma5119)
2013/10/6 すみだITセキュリティ勉強会 @ozuma5119
自己紹介
• @ozuma5119
• ネット企業でセキュリティサービスを
やっているエンジニア
• http://d.hatena.ne.jp/ozuma/
• 科学写真家(と名乗っている)
辞書攻撃 (@ozuma5119) 2
はじめに
• パスワード、流行ってますよね
– よそのサイトのを使い回すなとか
– 短すぎるのを使うなとか
– 定期変更しようとか、いやそれ意味ないとか
– 安易なパスワードをやめようとか
– 辞書に載っているのをやめようとか
• 辞書って何? 広辞苑? 岩波国語辞典?
辞書攻撃 (@ozuma5119) 3
辞書とパスワード
• 辞書に載っているパスワードは良くな
い、の根拠は?
– 辞書攻撃されるから使わない方が良い
– じゃぁその攻撃に使われている辞書を見た方
が早い
• 広辞苑や岩波国語辞典でパスワード攻撃
する人はたぶんいない
– そもそも海外からだから。
辞書攻撃 (@ozuma5119) 4
辞書その1 passwdの
辞書攻撃 (@ozuma5119) 5
辞書その1 passwdの
• 最近のLinuxのpasswdコマンドは、裏で
cracklibを使って辞書チェックをしている
– /etc/pam.d/passwd を覗いてみましょう
– /usr/share/dict/linux.words
– もう少し正確に言うとここからcreate-cracklib-
dictしてる
• 48万単語、5MBほど
辞書攻撃 (@ozuma5119) 6
辞書その2OpenWallの
辞書攻撃 (@ozuma5119) 7
辞書その2OpenWallの
辞書攻撃 (@ozuma5119) 8
• OpenWall
– 古典的な /etc/passwd クラックツール、John
the ripperの開発元
– 有償版と無償版のパスワード辞書
• http://download.openwall.net/pub/wordlists/
– まずは password.gz がオススメ (John the ripper
にも同梱されている)
password.gz
辞書攻撃 (@ozuma5119) 9
• よく使われるパ
スワードがラン
ク順に載ってい
る
• 3500個ほどと手
頃で使いやすい
• 有償版はデカす
ぎてむしろ使い
にくい(残念)
123456
12345
password
password1
123456789
12345678
1234567890
abc123
computer
tigger
1234
qwerty
money
carmen
mickey
secret
summer
internet
a1b2c3
123
service
canada
hello
ranger
shadow
baseball
donald
harley
辞書その3 BackTrackやKaliに付
属のもの
辞書攻撃 (@ozuma5119) 10
• BackTrack Linux
– ペネトレーションテスト(侵入テスト)に用い
られるLinuxディストリビューション
– でも悪い人たちも使ってるけど。
– 後継が Kali Linux 、今後はこっちが主流
• BackTrackなら /pentest/passwords/wordlists/
• Kali Linuxなら /usr/share/wordlists
• どっちもオフライン攻撃用でデカすぎる
ので割愛(数百万単語以上もある)
辞書が手に入ったので
辞書攻撃 (@ozuma5119) 11
• さっそく辞書攻撃してみよう
– ただし、絶対に、インターネット上の他人の
サーバにはしないでください。
– VirtualBoxなどローカルのVMでやりましょう
• 他人のサーバにパスワードアタックをし
て不正ログインすることは、マナー違反
というレベルではなく犯罪です。
• 不正アクセス禁止法
– 3年以下の懲役又は100万円以下の罰金
もう一回注意
辞書攻撃 (@ozuma5119) 12
• 他人のサーバにはしないこと。
• では何故ここでツールを使ってみるのか
– 攻撃してくる人がどんなことをしてくるの
か、セキュリティをやる上で学ぶことは必要
– 敵の動き・作戦を知らずして城を守ることは
できない
– 攻撃ツールが分かれば、それを守りに生かす
ことができる
辞書攻撃ツール
辞書攻撃 (@ozuma5119) 13
• 業界では以下2種類が人気かつ有名です
• THC-Hydra
– http://www.thc.org/thc-hydra/
– 単にhydraとも呼ばれる
• Medusa
– http://foofus.net/goons/jmk/medusa/medusa.html
– hydraの対抗。名前からしてパロディ的になっ
てますね(どちらもギリシア神話から)
hydraの使い方
辞書攻撃 (@ozuma5119) 14
• adminというログインIDを、password.lstで辞
書攻撃する
– lとpオプションでIDとパスワード指定
– lとpオプションは大文字LとPでファイルを指定
• 宛先の指定のしかた
– [対象IPアドレス] [プロトコル]
– プロトコルは色々対応
(telnet, POP3, ftp, smb, http, vnc, mysql, ssh, ....など
など)
$ hydra –l admin –P password.lst ¥
192.168.2.1 ssh2
hydraでWebのBASIC認証をア
タック
辞書攻撃 (@ozuma5119) 15
• ここではWebのBASIC認証をやってみます
– 他のプロトコルに比べて手軽で利用されてい
る場所も多い
– httpという性質上、アタックもとても早い
• はじめて使うときは安全のため、LANケー
ブルを抜いてから試すこと
BASIC認証をアタック
辞書攻撃 (@ozuma5119) 16
• http://localhost/~ozuma/pass/
– id: guest
– pass: ??????
• URLの指定のしかた
– [IPアドレス] [メソッド] [パス]
– 回りくどい書き方なのは、マルチプロトコル対応
だから。(ssh, ftp, etc...)
– これは古い書き方で、最近のhydraは普通に
http://..../と書けるそうだ。
$ hydra –l guest –P password.lst localhost ¥
http-get '/~ozuma/pass/'
実演
• BASIC認証をhydraでアタック
辞書攻撃 (@ozuma5119) 17
HTTPは攻撃しやすい
• 元々、多数から大量にアクセスがあるプ
ロトコルだから。
• sshもブルートフォースは多いけど、ア
タックごとのTAT(TurnArroundTime)が比較
的大きいのでやりにくい
– でも攻撃は来まくるのでsshも気を抜いてはい
けない
辞書攻撃 (@ozuma5119) 18
sshをアタック
辞書攻撃 (@ozuma5119) 19
• localhost に ssh
– id: guest
– pass: ??????
$ hydra –l guest –P password.lst localhost ¥
ssh2
辞書攻撃はわかった
• 守りに生かそう
辞書攻撃 (@ozuma5119) 20
攻撃される側が辞書を生かす
• たとえば:Webアプリでパスワードを設定
する際、辞書を参照する
– 辞書にあるパスワードは設定拒否する
– ただし、辞書が「強すぎ」ると何を入れても
登録できない! とユーザ脱落が増える
• すでにTwitterでは、「password」というパ
スワードは設定できません
辞書攻撃 (@ozuma5119) 21
Twitterは、もうやってる
辞書攻撃 (@ozuma5119) 22
Twitterは、もうやってる2
辞書攻撃 (@ozuma5119) 23
Joeアカウント
辞書攻撃 (@ozuma5119) 24
• ログインIDと同じパスワード
– Joeアカウント
– ユーザIDと同じパスワードのこと
• 攻撃者が真っ先に試すので、そもそも登
録できないようにした方がいい
– 脆弱なパスワードを設定させない、のはサー
ビス側にもユーザ側にも嬉しい
Joeアカウントをhydraで
辞書攻撃 (@ozuma5119) 25
• hydraで –e ns するのはジョーシキ
– マジで。(悪い人たちの間では)。
– -e nはnull password(空のパスワード)
– -e sはIDとパスが同一(Joe アカウント)
$ hydra –l guest –P password.lst –e ns
localhost ssh2
まとめ
• 普段言われるセキュリティ対策、自分で
攻撃してみるとよく理解できる
– 安易なパスワード付けるなとか
– 辞書に載っているのを付けるなとか
• セキュリティ勉強会を通して、悪い人が
「攻撃しにくい」方法を学びあえたらい
いな
辞書攻撃 (@ozuma5119) 26

Mais conteúdo relacionado

Mais procurados

2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
Enpel
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 

Mais procurados (20)

マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
小さなサービスも契約する時代
小さなサービスも契約する時代小さなサービスも契約する時代
小さなサービスも契約する時代
 
猫でもわかるDirectConnect.pdf
猫でもわかるDirectConnect.pdf猫でもわかるDirectConnect.pdf
猫でもわかるDirectConnect.pdf
 
2015-10-31 クラウドネイティヴ時代の運用を考える 〜 ドキュメント駆動運用へ
2015-10-31 クラウドネイティヴ時代の運用を考える  〜 ドキュメント駆動運用へ2015-10-31 クラウドネイティヴ時代の運用を考える  〜 ドキュメント駆動運用へ
2015-10-31 クラウドネイティヴ時代の運用を考える 〜 ドキュメント駆動運用へ
 
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
 
普通の人でもわかる Paxos
普通の人でもわかる Paxos普通の人でもわかる Paxos
普通の人でもわかる Paxos
 
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
 
Datadog による Container の監視について
Datadog による Container の監視についてDatadog による Container の監視について
Datadog による Container の監視について
 
Apache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsApache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once Semantics
 
レガシーコード改善のススメ
レガシーコード改善のススメレガシーコード改善のススメ
レガシーコード改善のススメ
 
概念モデルって難しいですよね
概念モデルって難しいですよね概念モデルって難しいですよね
概念モデルって難しいですよね
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
Norikra + Fluentd + Elasticsearch + Kibana リアルタイムストリーミング処理 ログ集計による異常検知
Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知
Norikra + Fluentd + Elasticsearch + Kibana リアルタイムストリーミング処理 ログ集計による異常検知
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
 
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
Linuxカーネル超入門
Linuxカーネル超入門Linuxカーネル超入門
Linuxカーネル超入門
 
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
 

辞書攻撃をする人は何をどう使っているのか