This little daemon watchs a DNS record periodically, if it contains a pre-defined value or is missing, triggers a set of actions.
Currently supported triggers:
- Execute programs or scripts
- Delete files
There are precompiled binaries for Linux in the releases page.
Requires:
- Go 1.10 or later (only needed for compilation)
- Linux or Windows (other OSes are not tested; on Windows you need to figure out how to install yourself)
There is currently no formal package. A install.sh
can be used to compile from source and install to your localhost, and a package.sh
can be used to generate a binary tarball.
By default (I mean, if you use the systemd service provided) the config is at /etc/dmswitch/config.toml
, and the scripts or programs placed in /etc/dmswitch/hooks
will be run once triggered.
The config file is self-explanatory.
Caveats:
- DO NOT make the trigger string a substring of the normal string, or vice versa
- All relative paths in the config is relative to the config file itself.
- Programs will be executed in alphabet order.
- File deletion happens after program execution.
There is a systemd service installed by default. You can use systemctl enable --now dmswitch
to start it on boot.
If you prefer launching the binary directly, use -conf path/to/config/file
to point it to the config file. If this parameter is missing, it searches for a config.toml
in its working directory.
DNS is a perfect one-way channel for C&C. It doesn't require the program to connect to a specific server (recursion works most of the time), there are many free providers available, and there are APIs everywhere.