编辑“︁
DNS
”︁
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{Ctf_Wiki}} <span id="dns"></span> = DNS = == 简介 == <code>DNS</code> 通常为 <code>UDP</code> 协议,报文格式 <syntaxhighlight lang="sh">+-------------------------------+ | 报文头 | +-------------------------------+ | 问题 (向服务器提出的查询部分) | +-------------------------------+ | 回答 (服务器回复的资源记录) | +-------------------------------+ | 授权 (权威的资源记录) | +-------------------------------+ | 额外的 (额外的资源记录) | +-------------------------------+</syntaxhighlight> 查询包只有头部和问题两个部分, <code>DNS</code> 收到查询包后,根据查询到的信息追加回答信息、授权机构、额外资源记录,并且修改了包头的相关标识再返回给客户端。 每个 <code>question</code> 部分 <pre> 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | / QNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | QTYPE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | QCLASS | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+</pre> * <code>QNAME</code> :为查询的域名,是可变长的,编码格式为:将域名用.号划分为多个部分,每个部分前面加上一个字节表示该部分的长度,最后加一个 <code>0</code> 字节表示结束 * <code>QTYPE</code> :占 <code>16</code> 位,表示查询类型,共有 <code>16</code> 种,常用值有:<code>1</code> ( <code>A</code> 记录,请求主机 <code>IP</code> 地址)、<code>2</code> ( <code>NS</code> ,请求授权 <code>DNS</code> 服务器)、<code>5</code> ( <code>CNAME</code> 别名查询) == 例题 == <blockquote>题目:<code>BSides San Francisco CTF 2017</code> : <code>dnscap.pcap</code> </blockquote> 我们通过 <code>wireshark</code> 打开发现全部为 <code>DNS</code> 协议,查询名为大量字符串<code>([\w\.]+)\.skullseclabs\.org</code> 我们通过 <code>tshark -r dnscap.pcap -T fields -e dns.qry.name > hex</code>提取后,利用 <code>python</code> 转码: <syntaxhighlight lang="python">import re find = "" with open('hex','rb') as f: for i in f: text = re.findall(r'([\w\.]+)\.skull',i) if text: find += text[0].replace('.','') print find</syntaxhighlight> 我们发现了几条关键信息: <pre>Welcome to dnscap! The flag is below, have fun!! Welcome to dnscap! The flag is below, have fun!! !command (sirvimes) ... IHDR gAMA bKGD pHYs IHDR gAMA bKGD pHYs tIME IDATx ... 2017-02-01T21:04:00-08:00 IEND console (sirvimes) console (sirvimes) Good luck! That was dnscat2 traffic on a flaky connection with lots of re-transmits. Seriously, Good luck! That was dnscat2 traffic on a flaky connection with lots of re-transmits. Seriously, d[ good luck. :)+</pre> <code>flag</code> 确实包含在其中,但是有大量重复信息,一是应为<code>question</code> 。在 <code>dns</code> 协议中查询和反馈时都会用到,<code> -Y "ip.src == 192.168.43.91"</code>进行过滤后发现还是有不少重复部分。 <pre>%2A} %2A} %2A}q %2A}x %2A} IHDR gAMA bKGD pHYs tIME IDATx HBBH CxRH! C1%t ceyF i4ZI32 rP@1 ceyF i4ZI32 rP@1 ceyF i4ZI32 rP@1 ceyF i4ZI32 rP@1</pre> 根据发现的 <code>dnscat</code> 找到 https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md 这里介绍了 <code>dnscat</code> 协议的相关信息,这是一种通过 <code>DNS</code> 传递数据的变种协议,题目文件中应该未使用加密,所以直接看这里的数据块信息 <pre>MESSAGE_TYPE_MSG: [0x01] (uint16_t) packet_id (uint8_t) message_type [0x01] (uint16_t) session_id (uint16_t) seq (uint16_t) ack (byte[]) data</pre> 在<code>qry.name</code>中去除其余字段,只留下 <code>data</code> 快,从而合并数据,再从 <code>16</code> 进制中检索<code>89504e.....6082</code>提取<code>png</code>,得到 <code>flag</code> 。 <syntaxhighlight lang="python">import re find = [] with open('hex','rb') as f: for i in f: text = re.findall(r'([\w\.]+)\.skull',i) if text: tmp = text[0].replace('.','') find.append(tmp[18:]) last = [] for i in find: if i not in last: last.append(i) print ''.join(last)</syntaxhighlight> ''flag'' [[File:./figure/dnscat_flag.png|dnscat_flag]] == 相关题目 == * [https://mrpnkt.github.io/2016/icectf-2016-search/ IceCTF-2016:Search] * [https://github.com/susers/Writeups/blob/master/2017/EIS/Misc/DNS%20101/Write-up.md EIS-2017:DNS 101] == 参考文献 == * https://github.com/lisijie/homepage/blob/master/posts/tech/dns%E5%8D%8F%E8%AE%AE%E8%A7%A3%E6%9E%90.md * https://xpnsec.tumblr.com/post/157479786806/bsidessf-ctf-dnscap-walkthrough
摘要:
请注意,所有对gamedev的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gamedev:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
Template:Ctf Wiki
(
编辑
)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息