id: detect-dns-over-https

info:
  name: Detect DNS over HTTPS
  author: geeknik
  severity: info
  description: |
    With DNS over HTTPS (DoH), DNS queries and responses are encrypted and sent via the HTTP or HTTP/2 protocols. DoH ensures that attackers cannot forge or alter DNS traffic. DoH uses port 443, which is the standard HTTPS traffic port, to wrap the DNS query in an HTTPS request. DNS queries and responses are camouflaged within other HTTPS traffic, since it all comes and goes from the same port.
  reference:
    - https://developers.google.com/speed/public-dns/docs/doh/
    - https://developers.cloudflare.com/1.1.1.1/dns-over-https/wireformat
  metadata:
    max-request: 1
  tags: miscellaneous,dns,doh,misc

http:
  - method: GET
    path:
      - "{{BaseURL}}/dns-query?dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB"

    headers:
      Accept: application/dns-message

    matchers-condition: and
    matchers:
      - type: status
        status:
          - 200

      - type: word
        part: header
        words:
          - "application/dns-message"

      - type: regex
        part: header
        regex:
          - "(C|c)ontent-(L|l)ength: 49"
# digest: 4a0a00473045022100bf55715009c8d4a276aee84fef982ad98240a68529feb8a7a0bbeb81f9c337b90220512041fc74fcabba1573475342f45f6681998b7740fbd680b798caaa863cd8ed:922c64590222798bb761d5b6d8e72950