Submit Search
Upload
ブルームフィルタを利用した ランダムサブドメイン攻撃(DNS水責め)からのDNSキャッシュサーバの防御
•
17 likes
•
11,139 views
hdais
Follow
ソース公開しました: https://github.com/hdais/unbound-bloomfilter
Read less
Read more
Technology
Report
Share
Report
Share
1 of 21
Download now
Download to read offline
Recommended
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
株式会社サードウェア
秋のVim祭り Rubyを添えて
秋のVim祭り Rubyを添えて
Yuta Ogura
BHyVeってなんや
BHyVeってなんや
Takuya ASADA
Bhyve Internals
Bhyve Internals
Takuya ASADA
BHyVe: The BSD Hypervisor
BHyVe: The BSD Hypervisor
Takuya ASADA
軽快なBHyVe
軽快なBHyVe
Takuya ASADA
Bhyve code reading
Bhyve code reading
Takuya ASADA
濱せっく出張版 #3 LT
濱せっく出張版 #3 LT
hama7230
Recommended
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
株式会社サードウェア
秋のVim祭り Rubyを添えて
秋のVim祭り Rubyを添えて
Yuta Ogura
BHyVeってなんや
BHyVeってなんや
Takuya ASADA
Bhyve Internals
Bhyve Internals
Takuya ASADA
BHyVe: The BSD Hypervisor
BHyVe: The BSD Hypervisor
Takuya ASADA
軽快なBHyVe
軽快なBHyVe
Takuya ASADA
Bhyve code reading
Bhyve code reading
Takuya ASADA
濱せっく出張版 #3 LT
濱せっく出張版 #3 LT
hama7230
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
株式会社サードウェア
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
Takuya ASADA
Kyoto.pm 20120818-hogem
Kyoto.pm 20120818-hogem
hogem
InfiniBand on Debian
InfiniBand on Debian
Taisuke Yamada
Free bsd jail入門
Free bsd jail入門
Tsubasa Nomura
Vagrant intro
Vagrant intro
t9md
暗号技術入門
暗号技術入門
MITSUNARI Shigeo
openSUSEで作る仮想化環境 -KVM,Xen,Docker 仮想化技術選択のポイント -. /oscnagoya2018
openSUSEで作る仮想化環境 -KVM,Xen,Docker 仮想化技術選択のポイント -. /oscnagoya2018
zgock
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
独学道場アセンブリの会
独学道場アセンブリの会
Ryota Suenaga
勉強会0614 vagrant
勉強会0614 vagrant
Yu Ito
軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -
Go Saito
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main
Shotaro Uchida
サバフェスLT(元うなぎ屋)
サバフェスLT(元うなぎ屋)
snicker_jp
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
More Related Content
What's hot
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
株式会社サードウェア
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
Takuya ASADA
Kyoto.pm 20120818-hogem
Kyoto.pm 20120818-hogem
hogem
InfiniBand on Debian
InfiniBand on Debian
Taisuke Yamada
Free bsd jail入門
Free bsd jail入門
Tsubasa Nomura
Vagrant intro
Vagrant intro
t9md
暗号技術入門
暗号技術入門
MITSUNARI Shigeo
openSUSEで作る仮想化環境 -KVM,Xen,Docker 仮想化技術選択のポイント -. /oscnagoya2018
openSUSEで作る仮想化環境 -KVM,Xen,Docker 仮想化技術選択のポイント -. /oscnagoya2018
zgock
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
独学道場アセンブリの会
独学道場アセンブリの会
Ryota Suenaga
勉強会0614 vagrant
勉強会0614 vagrant
Yu Ito
軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -
Go Saito
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main
Shotaro Uchida
サバフェスLT(元うなぎ屋)
サバフェスLT(元うなぎ屋)
snicker_jp
What's hot
(14)
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
Kyoto.pm 20120818-hogem
Kyoto.pm 20120818-hogem
InfiniBand on Debian
InfiniBand on Debian
Free bsd jail入門
Free bsd jail入門
Vagrant intro
Vagrant intro
暗号技術入門
暗号技術入門
openSUSEで作る仮想化環境 -KVM,Xen,Docker 仮想化技術選択のポイント -. /oscnagoya2018
openSUSEで作る仮想化環境 -KVM,Xen,Docker 仮想化技術選択のポイント -. /oscnagoya2018
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
独学道場アセンブリの会
独学道場アセンブリの会
勉強会0614 vagrant
勉強会0614 vagrant
軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main
サバフェスLT(元うなぎ屋)
サバフェスLT(元うなぎ屋)
Recently uploaded
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Recently uploaded
(9)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
ブルームフィルタを利用した ランダムサブドメイン攻撃(DNS水責め)からのDNSキャッシュサーバの防御
1.
ブルームフィルタを利用した ランダムサブドメイン攻撃から のDNSキャッシュサーバの防御 東 大亮 1 (更新版)
2.
ランダムサブドメイン攻撃 (に巻き込まれたキャッシュサーバ) victim.com 権威サーバ キャッシュ サーバ 正規ユーザ 攻撃者(踏み台) www.victim.com? mail.victim.com? awfbh.victim.com? uscz8.victim.com? abqce.victim.com? qpdks.victim.com? qpdks.victim.com? abqce.victim.com? uscz8.victim.com? awfbh.victim.com? www.victim.com? mail.victim.com? 2
3.
キャッシュサーバにおける 一般的な防御 victim.com 権威サーバ キャッシュ サーバ 正規ユーザ 攻撃者(踏み台) www.victim.com? mail.victim.com? awfbh.victim.com? uscz8.victim.com? abqce.victim.com? qpdks.victim.com? ❌ ❌ ❌ ❌ ❌ ❌ victim.comゾーンへの問 い合わせをすべてブロッ ク or レートリミット BIND9:
ローカルゾーン、fetch-per-zone、fetch-per-server Unbound: ローカルゾーン、ratelimit (ver1.5.4∼) 3
4.
攻撃対象ゾーンへのクエリを ブロックすると・・・ • 確かにキャッシュサーバは防御できるが、そのゾーンはキャッシュサー バで完全に解決不可(DoS)状態になる • ある意味、攻撃者の思う壺! •
有名ドメイン名への攻撃に巻き込まれたら? google.com や twitter.com をブロックするのか? • 自動的に攻撃対象ゾーンを検出する機構を運用していた場合、攻撃で ないものを攻撃と誤検知し、ブロックすべきでないゾーンをブロック 対象にしてしまったら? • 攻撃クエリはブロックし、正規クエリは受けつけて名前解決したい! 4
5.
防御の理想形 victim.com 権威サーバ キャッシュ サーバ 正規ユーザ 攻撃者(踏み台) www.victim.com? mail.victim.com? awfbh.victim.com? uscz8.victim.com? abqce.victim.com? qpdks.victim.com? ❌ ❌ ❌ ❌ www.victim.com? mail.victim.com? victim.comゾーンへのク エリのうち、正規クエリ のみ受け付けしたい! 5
6.
正規クエリと攻撃クエリの 判定 www.victim.com? mail.victim.com? awfbh.victim.com? uscz8.victim.com? abqce.victim.com? qpdks.victim.com? 正規クエリは存在するドメイン名 へのクエリ: 結果はNOERROR 攻撃クエリは存在しないドメイン名 へのクエリ: 結果はNXDOMAIN 6 正規クエリ 攻撃クエリ キャッシュサーバ(リゾルバ)が、権威サーバに問い合 わせる前に、NOERRORになりそうなクエリかどうか 判定できればよい(さもなくばブロック)
7.
「NOERRORになりそうな クエリ」 • そのキャッシュサーバで、過去N時間までにNOERROR になったドメイン名(QNAME)へのクエリは、今度のク エリも「NOERRORになりそう」と仮定して受け付ける • 逆に、過去N時間までにNXDOMAINになった/ユーザ からのクエリが無かったQNAMEは、今回も NXDOMAINになる/正規ユーザも関心が無いドメイン 名とし仮定し、攻撃中はブロックしても問題ないと仮定 •
Nは比較的長時間 (N=24時間 or 48時間 etc) 7
8.
過去24時間のNOERRORなQNAMEを どうやって覚えておくか? • DNSのクエリは超大量にある • (主に攻撃を受けやすい)ISP環境では、数千∼数 万クエリ/秒 •
記憶には大量のメモリが必要 • 防御時に高速検索が必要 8
9.
NOERRORなドメイン名を ブルームフィルタで記憶 • ブルームフィルタ(Bloom filter)とは •
検索キーが、検索対象の集合に属しているか否か を、少ないメモリ量で記憶し、高速に判定可能な 確率的データ構造 • Wikipediaの同名記事の解説がわかりやすい 9
10.
ブルームフィルタの特徴 • 使用メモリが少ない • 1%の偽陽性率ならば、9.6ビット/要素のメモリ量でよい。 •
8.6億個 ( 毎秒1万個 24時間) の QNAMEなら1Gバイトでよい • 記憶・検索が高速 • 記憶・検索いずれもO(1) • 記憶済の要素数・メモリ量に応じ、偽陽性が発生する • 偽陽性(false positive)とは、検索キーが検索対象の集合に存在しないのに 「存在する」と誤って判定してしまうこと。 • なお、BFでは偽陰性(存在するのに「存在しない」と誤判定)は発生しない 10 ※BF記憶・検索の時間計算量は記憶済の要素数や使用メモリ量には依存しない。厳密には偽陽 性率を決めるパラメータkに比例はするが、偽陽性率1%で固定すればO(1)と見なせる
11.
Unboundに実装してみた • 通常時の動作 • ユーザからのクエリのうち、NOERRORとなったQNAMEを、ひたす らBFに入力 •
攻撃時の防御 • 攻撃対象ゾーンへのクエリのうち、BFにヒットするもの(過去に NOERRORになったもの)を受け付け。ヒットしないものはブロック。 • 攻撃対象ゾーンは、手動指定の他、自動判定+BF自動適用が可能 11 Githubで公開してます: https://github.com/hdais/unbound-bloomfilter
12.
Bloomfilterによる victim.comゾーン宛クエリの防御 victim.com 権威サーバ キャッシュ サーバ 正規ユーザ 攻撃者(踏み台) www.victim.com? mail.victim.com? awfbh.victim.com? uscz8.victim.com? abqce.victim.com? qpdks.victim.com? ❌ ❌ ❌ ❌ www.victim.com? mail.victim.com? 12 veryrarename.victim.com? ❌ ugjks.victim.com? BFにマッチしない QNAMEは正規・不正ク エリに関わらずブロック BFの偽陽性のため、 攻撃クエリもわずかに 「漏洩」する BFにマッチする QNAMEは受け付け・再 帰検索処理を行う
13.
unbound-bloomfilterの 使用法 • BF有効化・使用するメモリ量・BFのリセット時間間隔の設定 (unbound.conf) server: bloomfilter-size:
1024m bloomfilter-interval: 86400 →BF学習が有効になる。使用するメモリは 1GBx2=2GB。86400秒毎にBFをリセット • 手動指定:ランダムサブドメイン攻撃時に、BF適用対象ゾーンを手動指定 (CLI) $ unbound-control local_zone victim.com bloomfilter →victim.comゾーンへのクエリにBF適用 13 $ unbound-control local_zone_remove victim.com →victim.comゾーンへのBF解除
14.
unbound-bloomfilterの 攻撃ゾーン自動判定① 14 • ゾーン毎に、requestlist (BIND9のrecursive
clientsに相当) に長時間居座るクエリ数を制限 server: bloomfilter-size: 1024m bloomfilter-interval: 86400 bloomfilter-threshold: 100 → requestlistに長時間(2秒以上)居座るクエリが 100個を超えたゾーンにBF適用 (一定時間後、自動解除) ゾーンの分類にはpublicsuffixlistを使用。 QNAME クライアントから受信して からの経過時間 nwdw.victim.com 3.2 msdfw.victim.com 0.1 sdjef.victim.com 2.3 dmsfg.victim.com 2.4 www.example.com 1.3 mail.example.com 0.2 ゾーン 2.0秒以上「居座っている」 クエリ数 victim.com 3 example.com 0 クエリ数がbloomfilter-threshold指定値を超 えているゾーンを自動的にブルームフィルタ requestlistの内容 名前解決に時間がかかっているクエリ数を ゾーン毎に集計
15.
saywc.victim.com unbound-bloomfilterの 攻撃ゾーン自動判定② • ゾーン毎に、BFマッチしないキャッシュミスクエリをレートリミット server: bloomfilter-size: 1024m bloomfilter-interval:
86400 bloomfilter-ratelimit: 1000 → ゾーン毎にキャッシュミスは1000qpsに制限。 超えたものはBF適用。ゾーンの分類には publicsuffixlistを使用 キャッシュ サーバ ❌ ❌ ❌ 1000qps BFにマッチするクエリは ratelimit非適用 victim.com 権威サーバ mail.victim.com www.victim.com nsjkf.victim.com kjsvd.victim.com ujekc.victim.com ejsdv.victim.com ijkac.victim.com 正規ユーザ 攻撃者 正規ユーザ example.com 権威サーバ BFにマッチせず、 キャッシュミスしたクエリはゾーン毎にratelimit www.example.com ratelimit値に達しないゾーンへのクエリには影響なし 2000qps
16.
課題 • そもそも「過去N時間にNOERRORになったクエリのみ受け付ける」が正 規クエリのみ受付けるために有効なのか? • まったく未検証! •
有効だとしても、どのようなチューニングをすべきか? 特に、過去どれ だけの期間・個数のNOERRORなドメイン名を集めればよいか • ワイルドカードなゾーン (tumblr.comとかblogspot.jp)が攻撃された時は 無力かもしれない • 通信の秘密!攻撃時はともかく、平常時でもユーザクエリを分析してBFに漬け込むの はどうなのよ etc 16
17.
現状 • unbound-users MLでbloomfilterを紹介したら、海外某ISPの方 から色々問い合わせ。使ってくれてるらしい。 •
Unbound本家も、unbound-bloomfilterやBIND9を意識したのか、 実験的なランダムサブドメイン攻撃対策が入った (ver 1.5.4∼) • ゾーン毎にキャッシュミス数をratelimit • ratelimit超えたキャッシュミスクエリはブロックするが、1/10 (設定変更可能)の確 率で受付ける。正規ユーザから人気があるQNAMEなら、いずれブロックをすり抜け て受付けられキャッシュに乗るだろうとの仮定。 • 「ゾーン毎」を分類するのにPublic Suffix Listは使用していない(これはGood) 17
18.
END
19.
backup slides
20.
unbound-bloomfiter 名前解決速度への影響 • 通常時 (キャッシュミス
100%の最悪時) • BFに学習なし: 15,863 qps • BFに学習あり: 14,810 qps ▲6.64% • victim.com防御時 (victim.comへのクエリ100%の最悪時) • victim.com refuse: 135,617 qps • victim.com bloomfilter: 113,953 qps ▲16.0% • (参考) victim.com キャッシュヒット: 95,371 qps 通常時のBF学習のペナルティは、100%キャッシュミスの最悪時でも6∼7%程度。 bloomfilter防御時のペナルティは、REFUSEよりも16%悪いが、キャッシュヒットよりは高速 テストマシン: Core2Duo 1.6GHz(2core) / Mem 2GB BFサイズ: 1GB / キャッシュサイズ1GB 20
21.
攻撃対象ドメインへのクエリ をブロックすると・・・ 21 cloudflare.comへの水責め攻撃に巻き 込まれた某ISPのキャッシュサーバ そのISPはcloudflare.comへのクエリ をすべてブロックした clouldflare.comへの正規クエリと攻撃クエリを、キャッシュサーバが機械的に 識別することは、普通は困難のため、全クエリをブロックせざるを得ない (そうしなければ、サーバが過負荷で停止してしまう)
Download now