[HACK.LU CTF 2017](Web)DnSoSecure


[HACK.LU CTF 2017](Web)DnSoSecure_第1张图片
image.png
[HACK.LU CTF 2017](Web)DnSoSecure_第2张图片
image.png
[HACK.LU CTF 2017](Web)DnSoSecure_第3张图片
image.png
[HACK.LU CTF 2017](Web)DnSoSecure_第4张图片
image.png
git reset --hard 94067e4502a5134d912b6964de7f23a438b7f814

在历史提交中找到文件 :

├── Ksecret+007+11537.key
├── Ksecret+007+11537.private
├── Ksecret+007+26883.key
└── Ksecret+007+26883.private

在接下来的DNS服务器配置中会用到

分析代码逻辑可以得知 :
我们 POST 的 数据 , 会被当做 IP
服务器会将这个 IP 作为 DNS 服务器
然后请求某一个域名的A记录 , 并且这个服务器要支持 DNS SEC
如果服务器返回的结果经过了公钥的验证
然后将 flag 发送到这个域名指向的服务器的某一个端口 (TCP)

根据上述分析可以得到 , 目前需要解决这几个问题

  1. 如何得到将被解析的域名
  2. 如何搭建 DNS 服务器
  3. 如何配置 DNS SEC
  4. 如何得到端口来接收 flag

  1. 使用命令 :
nc -lu 53

即可得到目标服务器查询的域名为 :

otherside.earth.flux
  1. 在 Linux 下搭建 DNS 服务器可以参考以下文章 :
http://blog.csdn.net/colourzjs/article/details/44491479
http://www.linuxidc.com/Linux/2015-04/116350.htm
  1. 配置 DNS SEC
http://www.cnblogs.com/anpengapple/p/5879363.html

这里需要用到在 Git 仓库中发现的那两对公私钥

  1. 一旦配置成功 , 输入你的 DNS 服务器的地址 , 目标服务器就会连接要查询的域名的A记录的某一个端口
  • 首先我们可以肯定的是请求肯定是目标服务器发出的 , 那么可以根据这个特点对流量进行过滤
PING dnsosecure.flatearth.fluxfingers.net (149.13.33.84) 56(84) bytes of data.
64 bytes from 149.13.33.84 (149.13.33.84): icmp_seq=1 ttl=128 time=272 ms
  • 参考 tcp 的三次握手 , 由于我们并没有监听那个端口 , 那么 tcp 的三次握手就不会建立 , 并且我们会给源主机回复一个RSET包
[HACK.LU CTF 2017](Web)DnSoSecure_第5张图片
image.png
http://www.jellythink.com/archives/705

然后执行 tcpdump

tcpdump -XX -s 0 'tcp[tcpflags] & tcp-ack != 0 and tcp[tcpflags] & tcp-rst != 0 and host 8.8.8.8'
[HACK.LU CTF 2017](Web)DnSoSecure_第6张图片
image.png

可以看到端口是 1337

[HACK.LU CTF 2017](Web)DnSoSecure_第7张图片
image.png

最后说一些在配置 DNS 服务器的时候遇到的坑

  1. 如果修改完成配置 , 发现并没有报错 , 但是这并不代表服务一定启动成功 , 需要查看日志确保没有报错
systemctl status bind9.service

配置文件 :

/var/cache/bind/db.otherside.earth.flux

$TTL    604800
$ORIGIN otherside.earth.flux.
@   IN  SOA otherside.earth.flux. root.otherside.earth.flux. (
            2006080401  ;   Serial
            604800  ;   Refresh
            86400   ;   Retry
            2419200 ;   Expire
            604800  )   ;   Negative    Cache   TTL

@   IN  NS  ns1
@   IN  A   138.68.86.32
@   IN  A   138.68.86.32
@   IN  A   138.68.86.32
@   IN  A   138.68.86.32
ns1 IN  A   138.68.86.32
www IN  A   138.68.86.32

$INCLUDE    "/etc/bind/views/dnssec_keys/Kotherside.earth.flux.+007+11537.key"
$INCLUDE    "/etc/bind/views/dnssec_keys/Kotherside.earth.flux.+007+26883.key"

/etc/bind/named.conf.local

// domain -> ip 
zone "otherside.earth.flux" in {
    type master;
    auto-dnssec maintain;
    update-policy local;
    key-directory "/etc/bind/views/dnssec_keys";
    file "/var/cache/bind/db.otherside.earth.flux";
};

include "/etc/bind/sec-trust-anchors.conf";

/etc/bind/sec-trust-anchors.conf

trusted-keys {
    otherside.earth.flux. 256 3 7 "AwEAAeJd3Xyd8l3rWDx46UwPMyLOSVcbuwDgEvt2iEWTAghVbpw5M2YN 0GxUqa6vWI/RAhSynF4fxSvp1z3PnKBFle/Qxz7MzfPgH0spzriWsP8k qjs0Y9/xJU0tzZJ2TrIypdmEqpKtMbs3gRrrADz8pr/AdI7bjvX4r6Oh ty04lG8zyj1wwuWXi/oVfk1rTD9I2aq7SWK9REnueUFRsshMLQK5Vgpo Row0HmrE7Peg59lFFSi54rSJivb/4Tb0P8AtIlIUW0ZZOR9E/MsswWFZ Qw56A0Z5LJK4t8RmV5+vAhflNn/uTSEOpC08vUqkNQbOBXr1Ie/t57H6 ywvsKwEYo9s=";
    otherside.earth.flux. 257 3 7 "AwEAAdth+HteT0kUim5+hOkyTpMU1FbNfxjn7otvpcA0ZSb/37Tr+WRJ l1nmzHkmrW+gJuzj5M+1QPEv41CujWe8EdGOyA3jM2KENj7NMdiNjh1G puzQa7YFxR4z5SG8+M5zvO5F3CTFWU5tZCTzkvk4Zbs5aJ3RZ6Zk1EBK xwoKz1CGCoedBM1VcKwJ2H+NT15m1cb/AfsSEljTyvruUUiJo84+MRPh luYtPrVKIwnHe6qxvhLSvpG0HFNNkBudy/TOf7C51zmdkpW+3hvbzp/I 79LEuXyYwXft4vpxKNv4zTGOoXNrBAxHcfmvAJsplIzSGcM84yRD+oWm Pu/WF+ESuPv9bmws0hZ2L2+dLpKZjDjb8ppxFS/zJFfWqqErRWssQo64 4lET6m2qET1g22YeB5iLAhVfAmTMZtxnhLqSHJ1EdQIwKm3RJfUsr+z+ Wxb9BZS/P2OSUsSzLOQ7hWjViCE45JMW0gGnMrvSeloAePtvYasfBjaT IDhW2knhKVr2ZoJ6I7pvZBrc/hLB2NGiFaN2otLwIX6InRTT8zrndDY8 uXwVsrBH/4UXy0CIf0PNwjqyFTALSx2DYGW1aU9y0wiZbX5h3msJGRO3 eiHP6QNv+bQJ3f1isMuaAFXT07gcfrAVYT72clU5Nep1Dp6hBfmkfnGT jhiPj16+cfJerrIP";
};

/etc/bind/views/dnssec_keys

# 这个目录下放置在 Git 仓库中找到的两对公私钥文件
├── Ksecret+007+11537.key
├── Ksecret+007+11537.private
├── Ksecret+007+26883.key
└── Ksecret+007+26883.private
# 记得改名
mv Ksecret+007+11537.key Kotherside.earth.flux.+007+11537.key
mv Ksecret+007+11537.private Kotherside.earth.flux.+007+11537.private
mv Ksecret+007+26883.key Kotherside.earth.flux.+007+26883.key
mv Ksecret+007+26883.private Kotherside.earth.flux.+007+26883.private

你可能感兴趣的:([HACK.LU CTF 2017](Web)DnSoSecure)