1. DNS/1/UDP

https://www.ietf.org/rfc/rfc768.txt User Datagram Protocol

(発信元IPアドレスなどを)騙り易いUDPを使えるので、信用するとまずいことが起きる。

http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch29lev1sec7.html Examining the UDP Checksum Field

そして、/fragmentationが起こせると、... (IP-IDが予測可能だと最悪)

Screenshot from 2016-01-31 15_51_48.png

1.1. FreeBSD man

/man

udp_var.h http://www.leidinger.net/FreeBSD/dox/netinet/html/d0/d4f/udp__var_8h_source.html

1.2. tcpdump

http://www.markhneedham.com/blog/2012/07/15/tcpdump-learning-how-to-read-udp-packets/

tcpdump -nvv -i eth0 port 53 

1.3. checksum

RFC 768: User Datagram Protocol (UDP checksumの説明)

padded with zero octets at the end (if necessary) to make a multiple of two octets.

checksumをしないと、危険です。

https://www.dns-oarc.net/files/workshop-201110/observations-on-checksum-errors.pdf

https://www.ietf.org/proceedings/94/slides/slides-94-dnsop-5.pdf

http://www.scs.stanford.edu/10au-cs144/notes/l3-print.pdf

http://www.freesoft.org/CIE/RFC/1122/79.htm (RFC 1122)

4.1.3.4 UDP Checksums

A host MUST implement the facility to generate and validate UDP checksums. An application MAY optionally be able to control whether a UDP checksum will be generated, but it MUST default to checksumming on.

If a UDP datagram is received with a checksum that is non- zero and invalid, UDP MUST silently discard the datagram.

An application MAY optionally be able to control whether UDP datagrams without checksums should be discarded or passed to the application.

checksumの対象がなにかが問題になる。-- ToshinoriMaeno 2016-01-29 05:47:49

no cksum query host

185.35.62.207.60041
185.35.62.231.60123

http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch29lev1sec7.html

https://tools.ietf.org/html/draft-muks-dnsop-dns-message-checksums-01

1.4. fragmentation

DNS/毒盛/2012

Fragmentation Considered Poisonous

https://ja.wikipedia.org/wiki/IPv4

https://www.iajapan.org/ipv6/summit/SAPPORO2014/pdf/JPRS_SAPPORO2014.pdf

DNS応答の同定に使える要素が、最初のフラグメントにしか存在しない

リアセンブリーにおいて使用されるIdentificationフィールド
 IPv4では16ビットしかない (RFC 791)

Identificationを予測可能な実装もある

偽フラグメントを一つ目のフラグメントよりも先に送り込む「先回り」攻撃が可能

キャッシュDNSサーバーの応答ログには、攻撃の痕跡が残らない

参考:

https://lists.dns-oarc.net/pipermail/dns-operations/2014-January/011249.html