ブルームフィルタを利用したランダムサブドメイン攻撃(DNS水責め攻撃)の対策
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

ブルームフィルタを利用したランダムサブドメイン攻撃(DNS水責め攻撃)の対策

  • 399 views
Uploaded on

某BoFで発表したかったけど時間切れで間に合わなかったネタ

某BoFで発表したかったけど時間切れで間に合わなかったネタ

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
399
On Slideshare
337
From Embeds
62
Number of Embeds
1

Actions

Shares
Downloads
1
Comments
0
Likes
1

Embeds 62

https://twitter.com 62

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ブルームフィルタを利用した ランダムサブドメイン攻撃 (別名:DNS水責め攻撃)の対策 東 大亮(平会員) 1
  • 2. ランダムサブドメイン攻撃 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? awfbh.victim.com? uscz8.victim.com? abqce.victim.com? qpdks.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への 問い合わせを すべてブロック BIND9: ローカルゾーン、RPZ Unbound: ローカルゾーン 3
  • 4. 攻撃対象ドメインへのクエリ をブロックすると・・・ • そのドメイン名はキャッシュサーバでDoS状態になる • 攻撃者の思う壺 • 有名ドメイン名が攻撃されたら? “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? 正規クエリのみ 権威サーバに問い 合わせしたい 5
  • 6. 正規クエリと不正クエリの 判定 www.victim.com? mail.victim.com? awfbh.victim.com? uscz8.victim.com? abqce.victim.com? qpdks.victim.com? 正規クエリは存在するドメイン名へ のクエリ: 結果はNOERROR 不正クエリは存在しないドメイン名 へのクエリ: 結果はNXDOMAIN 6
  • 7. 正規クエリと不正クエリの 判定 www.victim.com? mail.victim.com? 過去12時間 (24時間、48時間)に名前解決がNOERRORになったド メイン名(QNAME)のみ受ければよいのでは? →NOERRORならば、次回クエリ以降はキャッシュヒットする awfbh.victim.com? uscz8.victim.com? abqce.victim.com? qpdks.victim.com? 正規クエリは存在するドメイン名へ のクエリ: 結果はNOERROR 不正クエリは存在しないドメイン名 へのクエリ: 結果はNXDOMAIN NXDOMAINになる(であろう)名前解決はブロック(REFUSE) 7
  • 8. 過去N時間のNOERRORなQNAMEを どうやって覚えておくか? • DNSのクエリは超大量にある • ISP環境なら数万クエリ/秒以上 • 記録しておくだけでも大変 • 防御時に高速検索するのも大変 8
  • 9. NOERRORなドメイン名を Bloom Filterで記憶 • Bloom Filterとは • 検索キーが、検索対象の集合に属しているか否か を、少ないメモリ量で記憶し、高速に判定可能な 確率的データ構造 • Wikipediaの同名記事の解説がわかりやすい 9
  • 10. Bloom Filterの特徴 • 使用メモリが少ない • 1%の偽陽性率ならば、9.6ビット/要素のメモリ量でよい。10億個のQNAMEな ら1.2Gバイトでよい。 • 記録・検索が高速 • 記録・検索いずれもO(1) • 一定の確率で偽陽性が発生する • 偽陽性(false positive)とは、検索キーが検索対象の集合に存在しないのに「存在 する」と誤って判定してしまうこと。 • なお、BFでは偽陰性(存在するのに「存在しない」と誤判定)は発生しない 10
  • 11. Unboundに実装してみた(1) • 通常時の動作 • NOERRORとなったQNAMEを、ひたすらBFに入力 • 攻撃時の防御 $ unbound-control local_zone victim.com softblock • 上記のコマンドを実行すると、victim.comへのクエリのう ち、BFに引っかかる(過去にNOERRORとなった QNAME)のみ受け付けて名前解決 参考:Unboundでは、softblockではなくrefuseとすれば単に名前解決拒否(全てREFUSED返送) 11
  • 12. Unboundに実装してみた(2) • ユーザクエリのキャッシュミス時、かつそのQNAME の解決結果がNOERRORの時のみBFに入力 • BFの実装 • ハッシュ値推測による衝突攻撃を避ける[1]ため、 BFに使用するハッシュ関数は暗号学的ハッシュ関 数であるSiphash24[2]を使用 [1] 攻撃者がBFのビットマップを推測可能だと、偽陽性を大量発生させるクエリを意図的に生成可能 [2] SipHash: a fast short-input PRF <https://131002.net/siphash/> 12
  • 13. Bloom Filterによる victim.com宛クエリの防御 victim.com 権威サーバ キャッシュ サーバ 正規ユーザ www.victim.com? mail.victim.com? 攻撃者(踏み台) ❌❌❌❌ www.victim.com? awfbh.victim.com? uscz8.victim.com? abqce.victim.com? qpdks.victim.com? mail.victim.com? 13 veryrarename.victim.com? ❌ ugjks.victim.com? BFにマッチしない QNAMEは正規・不正ク エリに関わらずブロック BFの偽陽性のため、 不正クエリもわずかに 「漏洩」する BFにマッチする QNAMEは再帰検索処理 を行う
  • 14. 名前解決速度への影響 • 通常時 (cache miss 100%時) • BFに学習なし: 15863 qps • BFに学習あり: 14810 qps ▲6.64% • victim.com防御時 テストマシン: Core2Duo 1.6GHz(2core) / Mem 2GB BFサイズ: 1GB / キャッシュサイズ1GB • victim.com refuse: 135617 qps • victim.com softblock: 113953 qps ▲16.0% • (参考) victim.com キャッシュヒット: 95371 qps 通常時のBF学習のペナルティは、100%キャッシュミスの最悪時でも6~7%程度。 softblock防御時のペナルティは、REFUSEよりも16%悪いが、キャッシュヒットよりは高速 14
  • 15. 課題 • そもそも、有効なのか未検証 • 有効だとしても、過去どれだけの期間・個数の NOERRORなドメイン名を集めればよいか? • ワイルドカードなゾーン (tumblr.comとか blogspot.jp)が攻撃された時は無力かもしれない • 攻撃されているドメインの自動判定 15