Contents
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が予測可能だと最悪)
1.1. FreeBSD man
udp_var.h http://www.leidinger.net/FreeBSD/dox/netinet/html/d0/d4f/udp__var_8h_source.html
- udps_nosum にカウントされているようだが、見るにはどうするのか。
1.2. tcpdump
http://www.markhneedham.com/blog/2012/07/15/tcpdump-learning-how-to-read-udp-packets/
tcpdump -nvv -i eth0 port 53
- ubuntu : eth0; freebsd : em0
1.3. checksum
RFC 768: User Datagram Protocol (UDP checksumの説明)
- Checksum is the 16-bit one's complement of the one's complement sum of
- a pseudo header of information from the IP header, the UDP header, and the data,
padded with zero octets at the end (if necessary) to make a multiple of two octets.
- Source Port(16bits)が含まれているので、random化されていれば、複雑化は増す。
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
- IPアドレスは分かっているから、port, txid が含まれているかどうかが鍵だ。
https://www.iajapan.org/ipv6/summit/SAPPORO2014/pdf/JPRS_SAPPORO2014.pdf
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
Fragmentation Considered Poisonous
https://ja.wikipedia.org/wiki/IPv4
- IPパケットの識別子(16ビット)のランダム性も問題に。
https://www.iajapan.org/ipv6/summit/SAPPORO2014/pdf/JPRS_SAPPORO2014.pdf
- この時点ではchecksumについての考察は見当たらない。
DNS応答の同定に使える要素が、最初のフラグメントにしか存在しない リアセンブリーにおいて使用されるIdentificationフィールド IPv4では16ビットしかない (RFC 791) Identificationを予測可能な実装もある
偽フラグメントを一つ目のフラグメントよりも先に送り込む「先回り」攻撃が可能 キャッシュDNSサーバーの応答ログには、攻撃の痕跡が残らない
参考:
https://lists.dns-oarc.net/pipermail/dns-operations/2014-January/011249.html