Permalink
Browse files

readme modified and notes added

  • Loading branch information...
Balazs Bucsay
Balazs Bucsay committed Aug 17, 2017
1 parent d896143 commit fcaeae9f91fa8f6f2ff6aae3195b2eaf85b597b4
Showing with 60 additions and 2 deletions.
  1. +40 −0 DNS_notes.md
  2. +20 −2 README.md
@@ -0,0 +1,40 @@
# DNS notes #
### Module ###
The module only supports three record types at the moment:
* A/CNAME
* PRIVATE
* NULL
When the client mode has been started, it starts to do auto-tuning through the DNS server. Test the following things in this order:
* Checking whether the connection can be made
* Looking for the best rate by checking different encodings for the A record name
* Looking for the maximum length that can be used for upstream
* Mapping out the usable record types. The first that works is the best (checking in prioritized order)
* Looking for the best downstream rate with different encodings
* Looking for the maximum length that can be used for downstream
After authentication the client will send a message to the server to change the 5 properties. From that point the tunnel will use those encodings, lengths and records.
### Basic setup ###
After you registered your own domain that you want to use specifically (or mostly) for DNS tunneling, you need to:
* Set the NS records pointing to the XFLTReaT server. (When that is done, all requests about your domain will be directed to your server, where the XFLTReaT server will listen.)
* The configuration must be changed
* [DNS] section **has to be** added with the "enabled = yes" line. Please see the xfltreat.conf
* The "nameserver" can be specified in the config, otherwise it will use the system default from the /etc/resolv.conf.
* The "hostname" **has to be** specified in the configuration file.
* Additionally a zonefile can be specified that is RFC1035/BIND9 standard/compliant zonefile.
### Zonefile setup ###
The standard RFC1035 or BIND9 zonefile can be copied to the directory and specified in the xfltreat.conf configuration file. If the file is in a good format then all records that are supported by the XFLTReaT server will be read and used when the server is queried.
Unlike other DNS tunnelling solutions, it acts like a DNS server and answers predefined queries.
### Tested/Bugs ###
The module was tested with the newest Bind9 DNS server. Other implementations can behave differently, may not work at all.
Unfortunately this module is still in a proof of concept state because of the diversity of the implementations and many record types.
Please note that most of the edge cases are not handled, so this module can be easily crashed.
In case you found any problems with the module, please create an issue on the Github page and let me know about this with all the information that you can gather.
@@ -8,11 +8,25 @@ This is just one thing of many things that was missing from the Internet. If you
* ICMP
* SOCKS v4, 4a, 5
* HTTP CONNECT
* DNS (A/CNAME, PRIVATE, NULL) - Proof of Concept
### Available versions ###
At the moment there are two different branches of the framework. The master branch is a somewhat stable version (v0.1) without the DNS module. The other branch is called next-version and that has the newer version (v0.2), which includes DNS support for a few records (A/CNAME, PRIVATE, NULL). This branch has not been tested thoroughly yet, please respect that before making an opinion about the source code and framework.
To have a somewhat stable release (without DNS), please use:
\# git clone https://github.com/earthquake/xfltreat/
To get the DNS support from the next version branch (which was not tested thoroughly, please keep that in mind):
\# git clone https://github.com/earthquake/xfltreat/
\# cd xfltreat
\# git checkout -b next-version v0.2
To configure DNS please check the DNS_notes.md.
### Setup ###
* \# git clone https://bitbucket.org/eqarmada/xfltreat/
* \# pip install -r requirements.txt
* \# edit xfltreat.conf
* edit xfltreat.conf
* \# server side: python xfltreat.py
* \# client side: python xfltreat.py --client
@@ -32,4 +46,8 @@ then set up iptables to do the NAT'ing for you:
### side notes to expand ##
* server and check functionality can handle all modules enabled in the config.
* client should have only one enabled.
* client should have only one enabled.
### DISCLAMER ###
The tool is not yet production grade, edge cases (and not that edge cases) are might not handled very well. There can be security issues in the code that has not been fixed. In case you manage to identify any, please contact me in private or create an issue on the Github page.
Mail: xfltreat _at_ rycon.hu

0 comments on commit fcaeae9

Please sign in to comment.