SlideShare una empresa de Scribd logo
1 de 21
DNS 水責め攻撃から
DNS 権威サーバを守る
たった 1つのステキな方法
2015/02/07
@otsuka752 (@twovs)
(参考) DNS 水責め攻撃
• 未熟なDNSと今後どう付き合うべきか
委任/移転通知インジェクション攻撃と
DNS Water Torture(Slow Drip)攻撃を題材として考える
http://jprs.jp/tech/material/iw2014-lunch-L3-01.pdf
• DNS水責め(Water Torture)攻撃について
http://2014.seccon.jp/dns/dns_water_torture.pdf
• DNSセキュリティの基礎
http://www.e-ontap.com/dns/ipsj-tokai.pdf
やること
QNAME = ${RANDOM}.www.example.jp
の問い合わせパケットを DROP
(攻撃パケットが DNS 権威サーバや(攻撃パケットが DNS 権威サーバや
DNS 権威サーバのプロセスに届く前に DROP)
QNAME = www.example.jp
の問い合わせパケットは DROP しない
答え
$ sudo iptables -A 'INPUT|FORWARD' -j DROP -p udp --dport 53 ¥
-m bpf --bytecode "18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0
0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 70,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7
58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3
1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0,"
--bytecode(1/6)
18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0
0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5
124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1
40529920,6 0 0 1,6 0 0 0
--bytecode(2/6)
18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0
0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5
124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1
40529920,6 0 0 1,6 0 0 0
bytecode は 18行
--bytecode(3/6)
18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0
0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5
124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1
40529920,6 0 0 1,6 0 0 0
ldx 4*([0]&0xf) ; IP Header length[Byte]
ld #20 ; UDP + DNS Header length[Byte]
add x
tax
ldx 4*([0]&0xf)
IP Header length[Byte]
UDP + DNS Header length
20[Byte]
--bytecode(4/6)
18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0
0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5
124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1
40529920,6 0 0 1,6 0 0 0
lb_0:
ldb [x + 0] ; ${RANDOM} の文字数
add x
add #1
tax ; ${RANDOM} 直後までの offset
ld [x + 0]
${RANDOM} 直後
までの offset
${RANDOM} の文字数
ここでは 0x0c = 12
--bytecode(5/6)
18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0
0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5
124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1
40529920,6 0 0 1,6 0 0 0
jneq #0x03777777, lb_1 ; 0x03www でなければ DROP
ld [x + 4]
jneq #0x07657861, lb_1 ; 0x07exa
ld [x + 8]
jneq #0x6d706c65, lb_1 ; mple
ld [x + 12]
jneq #0x026a7000, lb_1 ; 0x02jp0x00
4[Byte] ずつ比較して
一致しなければ DROP
--bytecode(6/6)
18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0
0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5
124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1
40529920,6 0 0 1,6 0 0 0
ret #1 ; accept
lb_1:
ret #0 ; drop
注意(1/2)
*.*.www.example.jp
*.*.*.www.example.jp
*.wWw.eXAMple.Jp (大文字小文字混在)*.wWw.eXAMple.Jp (大文字小文字混在)
上記は DROP されないので
それぞれ個別に filter を記述する
注意(2/2)
*.*.www.example.jp の場合
"22,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4
0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21
0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3
1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0,"
*.*.*.www.example.jp の場合
"26,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4
0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12
0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21
0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1
40529920,6 0 0 1,6 0 0 0,"
実行例(1/4)
bpf モジュール(libxt_bpf.so)は
ubuntu 14.04.1 や CentOS 7 では標準対応
$ uname -a
Linux ubu14-04-1 3.13.0-45-generic #74-Ubuntu SMP Tue Jan 13
19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/debian_version
jessie/sid
$ iptables -V
iptables v1.4.21
実行例(2/4)
*.www.example.jp の問い合わせを DROP
$ sudo iptables -A FORWARD -j DROP -p udp --dport 53 ¥
-m bpf --bytecode "18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0
0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 00 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0
0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0
12,21 0 1 40529920,6 0 0 1,6 0 0 0,”
実行例(3/4)
*.*.www.example.jp と *.*.*.www.example.jp
$ sudo iptables -A FORWARD -j DROP -p udp --dport 53 ¥
-m bpf --bytecode "22,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0
0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 00 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0
0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0
0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0
0 0,“
$ sudo iptables -A FORWARD -j DROP -p udp --dport 53 ¥
-m bpf --bytecode "26,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0
0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0
0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7
58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3
1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0,“
$ sudo iptables -nL FORWARD
実行例(4/4)
DROP udp -- 0.0.0.0/0 0.0.0.0/0
udp dpt:53match bpf 177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80
0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64
0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0
12,21 0 1 40529920,6 0 0 1,6 0 0 0
DROP udp -- 0.0.0.0/0 0.0.0.0/0DROP udp -- 0.0.0.0/0 0.0.0.0/0
udp dpt:53match bpf 177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80
0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7
0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64
0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6
0 0 0
DROP udp -- 0.0.0.0/0 0.0.0.0/0
udp dpt:53match bpf 177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80
0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7
0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7
58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3
1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0
便利ツール群
BPF Tools - packet analyst toolkit
https://github.com/cloudflare/bpftools
• ipset 対応
• iptables の追加・削除の shell script を生成• iptables の追加・削除の shell script を生成
• debug 用に tcpdump 用のフィルタを生成
• pcap ファイルからルール生成のツール群
ENDEND

Más contenido relacionado

La actualidad más candente

Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese VersionHadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese VersionCloudera, Inc.
 
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎Insight Technology, Inc.
 
CloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたCloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたYohei Azekatsu
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09MapR Technologies Japan
 
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題にmagoroku Yamamoto
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考えるchonaso
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料kasaharatt
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lispirix_jp
 
Osc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeOsc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeToshi Harada
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Toshi Harada
 
さくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたさくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたSAKURA Internet Inc.
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_TokyoKohei KaiGai
 
Hadoop splittable-lzo-compression
Hadoop splittable-lzo-compressionHadoop splittable-lzo-compression
Hadoop splittable-lzo-compressionDaiki Sato
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料Recruit Technologies
 
Parquetはカラムナなのか?
Parquetはカラムナなのか?Parquetはカラムナなのか?
Parquetはカラムナなのか?Yohei Azekatsu
 
お金をかけないDBチューニング
お金をかけないDBチューニングお金をかけないDBチューニング
お金をかけないDBチューニングKazuya Sato
 

La actualidad más candente (20)

Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese VersionHadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese Version
 
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
 
時系列の世界の時系列データ
時系列の世界の時系列データ時系列の世界の時系列データ
時系列の世界の時系列データ
 
CloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたCloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみた
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
 
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
 
V6 unix in okinawa
V6 unix in okinawaV6 unix in okinawa
V6 unix in okinawa
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lisp
 
Osc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeOsc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatype
 
V6read#4
V6read#4V6read#4
V6read#4
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 
Keynote In Japanese
Keynote In JapaneseKeynote In Japanese
Keynote In Japanese
 
さくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたさくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみた
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
Hadoop splittable-lzo-compression
Hadoop splittable-lzo-compressionHadoop splittable-lzo-compression
Hadoop splittable-lzo-compression
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
 
Parquetはカラムナなのか?
Parquetはカラムナなのか?Parquetはカラムナなのか?
Parquetはカラムナなのか?
 
お金をかけないDBチューニング
お金をかけないDBチューニングお金をかけないDBチューニング
お金をかけないDBチューニング
 

Destacado

超簡単!? Punycode 変換 ~国際化・日本語ドメイン~
超簡単!? Punycode 変換 ~国際化・日本語ドメイン~超簡単!? Punycode 変換 ~国際化・日本語ドメイン~
超簡単!? Punycode 変換 ~国際化・日本語ドメイン~@ otsuka752
 
安全な(共用)DNSサービスの提供
安全な(共用)DNSサービスの提供安全な(共用)DNSサービスの提供
安全な(共用)DNSサービスの提供causeless
 
reusable delegation set のススメ (Route53)
reusable delegation set のススメ (Route53)reusable delegation set のススメ (Route53)
reusable delegation set のススメ (Route53)@ otsuka752
 
ブルームフィルタを利用した ランダムサブドメイン攻撃(DNS水責め)からのDNSキャッシュサーバの防御
ブルームフィルタを利用した ランダムサブドメイン攻撃(DNS水責め)からのDNSキャッシュサーバの防御ブルームフィルタを利用した ランダムサブドメイン攻撃(DNS水責め)からのDNSキャッシュサーバの防御
ブルームフィルタを利用した ランダムサブドメイン攻撃(DNS水責め)からのDNSキャッシュサーバの防御hdais
 
サイバーセキュリティ勉強会2017 in 塩尻
サイバーセキュリティ勉強会2017 in 塩尻サイバーセキュリティ勉強会2017 in 塩尻
サイバーセキュリティ勉強会2017 in 塩尻Shiojiri Ohhara
 
Packet と向き合う夏 VRRP Advertisement編
Packet と向き合う夏 VRRP Advertisement編Packet と向き合う夏 VRRP Advertisement編
Packet と向き合う夏 VRRP Advertisement編@ otsuka752
 
It fin analyse_slideshare_20110915
It fin analyse_slideshare_20110915It fin analyse_slideshare_20110915
It fin analyse_slideshare_20110915@ otsuka752
 
Sara portfolio april 2011 cput 2nd yr
Sara portfolio april 2011 cput 2nd yrSara portfolio april 2011 cput 2nd yr
Sara portfolio april 2011 cput 2nd yrSara Savahl
 
IPv6冗長で差をつけよう 2011年夏の思い出作り VRRP編
IPv6冗長で差をつけよう  2011年夏の思い出作り VRRP編IPv6冗長で差をつけよう  2011年夏の思い出作り VRRP編
IPv6冗長で差をつけよう 2011年夏の思い出作り VRRP編@ otsuka752
 
DNS64 (El capitan and unbound-1.5.1)
DNS64 (El capitan and unbound-1.5.1)DNS64 (El capitan and unbound-1.5.1)
DNS64 (El capitan and unbound-1.5.1)@ otsuka752
 
raspi + soracom #pakeana33
raspi + soracom #pakeana33raspi + soracom #pakeana33
raspi + soracom #pakeana33@ otsuka752
 
萌え萌えドメイン名一覧(.moe)
萌え萌えドメイン名一覧(.moe)萌え萌えドメイン名一覧(.moe)
萌え萌えドメイン名一覧(.moe)@ otsuka752
 
about tcpreplay-edit
about tcpreplay-editabout tcpreplay-edit
about tcpreplay-edit@ otsuka752
 
a little more about CaptureFilter
a little more about CaptureFiltera little more about CaptureFilter
a little more about CaptureFilter@ otsuka752
 

Destacado (20)

超簡単!? Punycode 変換 ~国際化・日本語ドメイン~
超簡単!? Punycode 変換 ~国際化・日本語ドメイン~超簡単!? Punycode 変換 ~国際化・日本語ドメイン~
超簡単!? Punycode 変換 ~国際化・日本語ドメイン~
 
安全な(共用)DNSサービスの提供
安全な(共用)DNSサービスの提供安全な(共用)DNSサービスの提供
安全な(共用)DNSサービスの提供
 
reusable delegation set のススメ (Route53)
reusable delegation set のススメ (Route53)reusable delegation set のススメ (Route53)
reusable delegation set のススメ (Route53)
 
ブルームフィルタを利用した ランダムサブドメイン攻撃(DNS水責め)からのDNSキャッシュサーバの防御
ブルームフィルタを利用した ランダムサブドメイン攻撃(DNS水責め)からのDNSキャッシュサーバの防御ブルームフィルタを利用した ランダムサブドメイン攻撃(DNS水責め)からのDNSキャッシュサーバの防御
ブルームフィルタを利用した ランダムサブドメイン攻撃(DNS水責め)からのDNSキャッシュサーバの防御
 
サイバーセキュリティ勉強会2017 in 塩尻
サイバーセキュリティ勉強会2017 in 塩尻サイバーセキュリティ勉強会2017 in 塩尻
サイバーセキュリティ勉強会2017 in 塩尻
 
Packet と向き合う夏 VRRP Advertisement編
Packet と向き合う夏 VRRP Advertisement編Packet と向き合う夏 VRRP Advertisement編
Packet と向き合う夏 VRRP Advertisement編
 
It fin analyse_slideshare_20110915
It fin analyse_slideshare_20110915It fin analyse_slideshare_20110915
It fin analyse_slideshare_20110915
 
Sara portfolio april 2011 cput 2nd yr
Sara portfolio april 2011 cput 2nd yrSara portfolio april 2011 cput 2nd yr
Sara portfolio april 2011 cput 2nd yr
 
Islam science and morals
Islam science and moralsIslam science and morals
Islam science and morals
 
Maria X MIT presentation slides
Maria X MIT presentation slidesMaria X MIT presentation slides
Maria X MIT presentation slides
 
IPv6冗長で差をつけよう 2011年夏の思い出作り VRRP編
IPv6冗長で差をつけよう  2011年夏の思い出作り VRRP編IPv6冗長で差をつけよう  2011年夏の思い出作り VRRP編
IPv6冗長で差をつけよう 2011年夏の思い出作り VRRP編
 
DNS64 (El capitan and unbound-1.5.1)
DNS64 (El capitan and unbound-1.5.1)DNS64 (El capitan and unbound-1.5.1)
DNS64 (El capitan and unbound-1.5.1)
 
raspi + soracom #pakeana33
raspi + soracom #pakeana33raspi + soracom #pakeana33
raspi + soracom #pakeana33
 
Ahadees
AhadeesAhadees
Ahadees
 
Ceit 338
Ceit 338Ceit 338
Ceit 338
 
萌え萌えドメイン名一覧(.moe)
萌え萌えドメイン名一覧(.moe)萌え萌えドメイン名一覧(.moe)
萌え萌えドメイン名一覧(.moe)
 
about tcpreplay-edit
about tcpreplay-editabout tcpreplay-edit
about tcpreplay-edit
 
about Tcpreplay
about Tcpreplayabout Tcpreplay
about Tcpreplay
 
how to GET GET
how to GET GEThow to GET GET
how to GET GET
 
a little more about CaptureFilter
a little more about CaptureFiltera little more about CaptureFilter
a little more about CaptureFilter
 

Similar a how to defend DNS authoritative server against DNS WaterTorture

Yet another Intel Chipset Internal SMBus device’s driver: ismt(4) (and spdmem...
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem...Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem...
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4) (and spdmem...Masanobu Saitoh
 
SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価Dell TechCenter Japan
 
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiOsc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiNoriyuki Yamaguchi
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門mangantempy
 
Hadoopカンファレンス20140707
Hadoopカンファレンス20140707Hadoopカンファレンス20140707
Hadoopカンファレンス20140707Recruit Technologies
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlowToshiki Tsuboi
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704HommasSlide
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_netTomoya Hibi
 
SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用QlikPresalesJapan
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 Fujio Kojima
 
[db tech showcase Tokyo 2014] L35: 100GB クラスの SGA を眺めてみよう。Oracle Database 12c...
[db tech showcase Tokyo 2014] L35: 100GB クラスの SGA を眺めてみよう。Oracle Database 12c...[db tech showcase Tokyo 2014] L35: 100GB クラスの SGA を眺めてみよう。Oracle Database 12c...
[db tech showcase Tokyo 2014] L35: 100GB クラスの SGA を眺めてみよう。Oracle Database 12c...Insight Technology, Inc.
 
AWS Webinar 20201224
AWS Webinar 20201224AWS Webinar 20201224
AWS Webinar 20201224陽平 山口
 

Similar a how to defend DNS authoritative server against DNS WaterTorture (20)

about dakota6.7 gui
about dakota6.7 guiabout dakota6.7 gui
about dakota6.7 gui
 
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4) (and spdmem...
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem...Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem...
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4) (and spdmem...
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
Azure Search 大全
Azure Search 大全Azure Search 大全
Azure Search 大全
 
SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価
 
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiOsc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamaguti
 
Japan r.3
Japan r.3Japan r.3
Japan r.3
 
osoljp 2011.08
osoljp 2011.08osoljp 2011.08
osoljp 2011.08
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門
 
Hadoopカンファレンス20140707
Hadoopカンファレンス20140707Hadoopカンファレンス20140707
Hadoopカンファレンス20140707
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_net
 
SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用
 
SASとHadoopとの連携 2015
SASとHadoopとの連携 2015SASとHadoopとの連携 2015
SASとHadoopとの連携 2015
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
 
[db tech showcase Tokyo 2014] L35: 100GB クラスの SGA を眺めてみよう。Oracle Database 12c...
[db tech showcase Tokyo 2014] L35: 100GB クラスの SGA を眺めてみよう。Oracle Database 12c...[db tech showcase Tokyo 2014] L35: 100GB クラスの SGA を眺めてみよう。Oracle Database 12c...
[db tech showcase Tokyo 2014] L35: 100GB クラスの SGA を眺めてみよう。Oracle Database 12c...
 
計算機理論入門09
計算機理論入門09計算機理論入門09
計算機理論入門09
 
AWS Webinar 20201224
AWS Webinar 20201224AWS Webinar 20201224
AWS Webinar 20201224
 

Más de @ otsuka752

NS & NSID of Amazon Route 53
NS & NSID of Amazon Route 53NS & NSID of Amazon Route 53
NS & NSID of Amazon Route 53@ otsuka752
 
OLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLDOLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLD@ otsuka752
 
Hijack the domain name
Hijack the domain nameHijack the domain name
Hijack the domain name@ otsuka752
 
Route53 で親子同居
Route53 で親子同居Route53 で親子同居
Route53 で親子同居@ otsuka752
 
192.0.0.4 on android
192.0.0.4 on android192.0.0.4 on android
192.0.0.4 on android@ otsuka752
 
how to decrypt SSL/TLS without PrivateKey of servers
how to decrypt SSL/TLS without PrivateKey of servershow to decrypt SSL/TLS without PrivateKey of servers
how to decrypt SSL/TLS without PrivateKey of servers@ otsuka752
 
WireEdit のススメ
WireEdit のススメWireEdit のススメ
WireEdit のススメ@ otsuka752
 
毎日 dig ったら分かったこと ~新 gTLD~
毎日 dig ったら分かったこと ~新 gTLD~毎日 dig ったら分かったこと ~新 gTLD~
毎日 dig ったら分かったこと ~新 gTLD~@ otsuka752
 
パケットが教えてくれた ルートサーバが 13個の理由
パケットが教えてくれた ルートサーバが 13個の理由パケットが教えてくれた ルートサーバが 13個の理由
パケットが教えてくれた ルートサーバが 13個の理由@ otsuka752
 
IPv6SG_03_20121103
IPv6SG_03_20121103IPv6SG_03_20121103
IPv6SG_03_20121103@ otsuka752
 
IPv6冗長で差をつけよう 2011年夏の思い出作り HSRP編
IPv6冗長で差をつけよう 2011年夏の思い出作り HSRP編IPv6冗長で差をつけよう 2011年夏の思い出作り HSRP編
IPv6冗長で差をつけよう 2011年夏の思い出作り HSRP編@ otsuka752
 

Más de @ otsuka752 (13)

NS & NSID of Amazon Route 53
NS & NSID of Amazon Route 53NS & NSID of Amazon Route 53
NS & NSID of Amazon Route 53
 
OLD_LT_DNS_OLD
OLD_LT_DNS_OLDOLD_LT_DNS_OLD
OLD_LT_DNS_OLD
 
OLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLDOLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLD
 
Hijack the domain name
Hijack the domain nameHijack the domain name
Hijack the domain name
 
Route53 で親子同居
Route53 で親子同居Route53 で親子同居
Route53 で親子同居
 
192.0.0.4 on android
192.0.0.4 on android192.0.0.4 on android
192.0.0.4 on android
 
how to decrypt SSL/TLS without PrivateKey of servers
how to decrypt SSL/TLS without PrivateKey of servershow to decrypt SSL/TLS without PrivateKey of servers
how to decrypt SSL/TLS without PrivateKey of servers
 
WireEdit のススメ
WireEdit のススメWireEdit のススメ
WireEdit のススメ
 
毎日 dig ったら分かったこと ~新 gTLD~
毎日 dig ったら分かったこと ~新 gTLD~毎日 dig ったら分かったこと ~新 gTLD~
毎日 dig ったら分かったこと ~新 gTLD~
 
パケットが教えてくれた ルートサーバが 13個の理由
パケットが教えてくれた ルートサーバが 13個の理由パケットが教えてくれた ルートサーバが 13個の理由
パケットが教えてくれた ルートサーバが 13個の理由
 
#pakeana 14
#pakeana 14#pakeana 14
#pakeana 14
 
IPv6SG_03_20121103
IPv6SG_03_20121103IPv6SG_03_20121103
IPv6SG_03_20121103
 
IPv6冗長で差をつけよう 2011年夏の思い出作り HSRP編
IPv6冗長で差をつけよう 2011年夏の思い出作り HSRP編IPv6冗長で差をつけよう 2011年夏の思い出作り HSRP編
IPv6冗長で差をつけよう 2011年夏の思い出作り HSRP編
 

how to defend DNS authoritative server against DNS WaterTorture

  • 1. DNS 水責め攻撃から DNS 権威サーバを守る たった 1つのステキな方法 2015/02/07 @otsuka752 (@twovs)
  • 2. (参考) DNS 水責め攻撃 • 未熟なDNSと今後どう付き合うべきか 委任/移転通知インジェクション攻撃と DNS Water Torture(Slow Drip)攻撃を題材として考える http://jprs.jp/tech/material/iw2014-lunch-L3-01.pdf • DNS水責め(Water Torture)攻撃について http://2014.seccon.jp/dns/dns_water_torture.pdf • DNSセキュリティの基礎 http://www.e-ontap.com/dns/ipsj-tokai.pdf
  • 3. やること QNAME = ${RANDOM}.www.example.jp の問い合わせパケットを DROP (攻撃パケットが DNS 権威サーバや(攻撃パケットが DNS 権威サーバや DNS 権威サーバのプロセスに届く前に DROP) QNAME = www.example.jp の問い合わせパケットは DROP しない
  • 4. 答え $ sudo iptables -A 'INPUT|FORWARD' -j DROP -p udp --dport 53 ¥ -m bpf --bytecode "18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 70,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0,"
  • 5. --bytecode(1/6) 18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0
  • 6. --bytecode(2/6) 18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0 bytecode は 18行
  • 7. --bytecode(3/6) 18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0 ldx 4*([0]&0xf) ; IP Header length[Byte] ld #20 ; UDP + DNS Header length[Byte] add x tax
  • 8. ldx 4*([0]&0xf) IP Header length[Byte] UDP + DNS Header length 20[Byte]
  • 9. --bytecode(4/6) 18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0 lb_0: ldb [x + 0] ; ${RANDOM} の文字数 add x add #1 tax ; ${RANDOM} 直後までの offset ld [x + 0]
  • 10. ${RANDOM} 直後 までの offset ${RANDOM} の文字数 ここでは 0x0c = 12
  • 11. --bytecode(5/6) 18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0 jneq #0x03777777, lb_1 ; 0x03www でなければ DROP ld [x + 4] jneq #0x07657861, lb_1 ; 0x07exa ld [x + 8] jneq #0x6d706c65, lb_1 ; mple ld [x + 12] jneq #0x026a7000, lb_1 ; 0x02jp0x00
  • 13. --bytecode(6/6) 18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0 ret #1 ; accept lb_1: ret #0 ; drop
  • 15. 注意(2/2) *.*.www.example.jp の場合 "22,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0," *.*.*.www.example.jp の場合 "26,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0,"
  • 16. 実行例(1/4) bpf モジュール(libxt_bpf.so)は ubuntu 14.04.1 や CentOS 7 では標準対応 $ uname -a Linux ubu14-04-1 3.13.0-45-generic #74-Ubuntu SMP Tue Jan 13 19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/debian_version jessie/sid $ iptables -V iptables v1.4.21
  • 17. 実行例(2/4) *.www.example.jp の問い合わせを DROP $ sudo iptables -A FORWARD -j DROP -p udp --dport 53 ¥ -m bpf --bytecode "18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 00 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0,”
  • 18. 実行例(3/4) *.*.www.example.jp と *.*.*.www.example.jp $ sudo iptables -A FORWARD -j DROP -p udp --dport 53 ¥ -m bpf --bytecode "22,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 00 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0,“ $ sudo iptables -A FORWARD -j DROP -p udp --dport 53 ¥ -m bpf --bytecode "26,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0,“ $ sudo iptables -nL FORWARD
  • 19. 実行例(4/4) DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53match bpf 177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0 DROP udp -- 0.0.0.0/0 0.0.0.0/0DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53match bpf 177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0 DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53match bpf 177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0
  • 20. 便利ツール群 BPF Tools - packet analyst toolkit https://github.com/cloudflare/bpftools • ipset 対応 • iptables の追加・削除の shell script を生成• iptables の追加・削除の shell script を生成 • debug 用に tcpdump 用のフィルタを生成 • pcap ファイルからルール生成のツール群