Skip to content

Parse Ntds DnsNode dnsRecord entries#20

Open
william-billaud wants to merge 13 commits intofox-it:mainfrom
william-billaud:dns_node
Open

Parse Ntds DnsNode dnsRecord entries#20
william-billaud wants to merge 13 commits intofox-it:mainfrom
william-billaud:dns_node

Conversation

@william-billaud
Copy link
Copy Markdown
Contributor

@william-billaud william-billaud commented Jan 28, 2026

Add function associate with the parsing of DnsNode NTDS entries. Goal is to later include this in a dissect.target plugins.

These entries allow to quickly retrieves DNS record from a Domain. E.g

<DnsNode dns_name=sevenkingdoms.local, records=|type='A' ttl_seconds=600 timestamp=2025-12-19 18:00:00+00:00 data=DnsARecord(ipv4_address='192.168.56.10')|type='NS' ttl_seconds=3600 timestamp=None data=NodeNameRecord(name_node='kingslanding.sevenkingdoms.local')|type='SOA' ttl_seconds=3600 timestamp=None data=SOARecord(name_primary_server='kingslanding.sevenkingdoms.local', refresh=900, retry=600, minimum_ttl=3600, zone_administrator_email='hostmaster.sevenkingdoms.local')|>

In terms of review difficulty I would say 3/5 : This PR does not modify existing code, and this feature mainly rely on documented structure unpacking, without difficult concepts to understand and with a good test coverage.

Some note:

  • Using dissect.cstruct, is it possible to specify that a structure member is in little endian, and other in bug endian (for the same struct, see the swap_endianess function) ?

  • I have issue with serial number of SOA records, which are not the same as observed in Lab, I can't figure out how MS handle it, I have chosen to not display this value as value is known as being wrong + this is, in my opinion not the most import information.

  • Not all DNS Record type are parsed. There is a lot of possible structure (27), some of them are nearly never found production env/obsolete or with low interest. But if someone want to, it should be easy to add a missing type.

  • closes Parse Ntds DnsNode dnsRecord entries #19

@william-billaud william-billaud marked this pull request as draft January 28, 2026 12:33
@william-billaud william-billaud marked this pull request as ready for review April 1, 2026 09:41
@william-billaud william-billaud changed the title [WIP]Parse Ntds DnsNode dnsRecord entries Parse Ntds DnsNode dnsRecord entries Apr 1, 2026
@william-billaud
Copy link
Copy Markdown
Contributor Author

@Schamper just a ping as this PR was previously in draft and I do not now what kind of notification you have, but no emergency on this topic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Parse Ntds DnsNode dnsRecord entries

1 participant