DNS改ざん検知ツールの実装とDNSパケットの世界
市川@cakephper
2020/12/12 PHPCON2020
自己紹介
今日伝えたいこと
目次
IPとDNS
DNSの仕組み
ROOTサーバ
TLD(.com, .jp)
権威サーバ
ns1.bitforest.jp
route53, etc
フルリゾルバ
(キャッシュサーバ)
www.bitforest.jpは?
www.bitforest.jpは?
jpの権威サーバ(a.dns.jp)に問い合わせて!
www.bitforest.jpは? (a.dns.jp宛)
ns1.bitforest.jpサーバに問い合わせて!
www.bitforest.jpは?(ns1.bitforest.jp宛)
www.bitforest.jp は 169.254.1.3
169.254.1.3
ドメイン登録
ROOTサーバ
TLD(.com, .jp)
権威サーバ
ns1.bitforest.jp
route53, etc
レジストラ
ドメイン取得
bitforest.jpはns1.bitforest.jp
bitforest.jpはns1.bitforest.jp
レコード登録
A www 169.254.1.3
フルリゾルバ
(キャッシュサーバ)
www.bitforest.jpは?
ドメイン名
ハイジャック
ROOTサーバ
TLD(.com, .jp)
権威サーバ
ns1.bitforest.jp
レジストラ
ドメイン改竄
bitforest.jpはns99.example.jp
bitforest.jpはns99.example.jp
ns99.example.jp
フルリゾルバ
(キャッシュサーバ)
www.bitforest.jpは?
目次
ドメイン名ハイジャックの恐ろしさ
ドメイン名ハイジャック事件 1
ドメイン名ハイジャック事件 1
ドメイン名ハイジャック事件 2
防御方法
目次
DNS改ざん検知ツール NSchecker
改ざん検知ツール NSchecker
NSchecker 7月
NSchecker 8月
NSchecker 9月
目次
DNSは面白いぞ!
DNSプロトコル
DNSヘッダ(バイトなんて贅沢だ!)
DNSプロトコルフォーマット
ヘッダ (トランザクションID, 再帰クエリフラグなど)
Question (NAME, Type(NS, A), CLASS)
Answer (AレコードのIP、NSサーバ名など)
Authority (委任先サーバのレコード)
Additional (NSのIPアドレス)
NAME
Type
Class
TTL
Length
Data
目次
見えるDNSデータ (dig NS vaddy.net)
DNSレスポンス
オフセットでデータ量を無駄にしない
ラベル文字数かオフセットかの判定
まとめ
ありがとうございました
PHPのUDPパケット送信例
socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)
socket_sendto()
socket_recvfrom()