前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内网信息搜集冷知识点:mdns

内网信息搜集冷知识点:mdns

作者头像
用户7151998
发布2023-07-24 18:57:58
2.1K0
发布2023-07-24 18:57:58
举报
文章被收录于专栏:赛博回忆录

0x00 前言

前段时间赛博群里师傅们一如既往的在那边扯淡,扯到了哪个操作系统才是最好用的。然后不知道哪个师傅提到了ubuntu,说Ubuntu垃圾,高版本ubuntu默认占用了53端口导致他的dns服务半天起不来。等一下,ubuntu默认会占用53端口?这我还是第一次听说,查了下,是一个叫做systemd-resolved的服务默认占用了53端口。这是啥玩意?参考资料(http://www.jinbuguo.com/systemd/systemd-resolved.service.html#)

这些就随便看看吧,大致上就是本地起一个类似dns的服务,提供一些更棒的体验?而且这玩意似乎在ubuntu18以上的版本默认自带的,我的直觉告诉我这个会带来一些好玩的东西。

0x01 探索一下systemd-resolved

我查了查我的aliyun的ubuntu主机,默认也运行着这个服务。我比较关心的是这个东西能提供哪些特性可能被安全利用的。我们直接看下面的描述:

这里我大概理解了一下,有那么几种有意思的地方:

  1. _gateway会解析到网关地址
  2. xxxxxx.localhost xxxx.localhost.localdomain都会解析到本地地址
  3. 支持mdns,默认应该是关闭的,如果开启,会响应mdns,主机名.local会解析对应的局域网地址

简单看一下这三个特性,我直接起一个ubuntu20的虚拟机和一个kali虚拟机做对比。

kali

ubuntu20

可以看到在ubutun上直接ping _gateway可以解析到网关地址,而kali上没有运行该服务所以并没有解析。同样的,试一下其他的

可以看到都解析到了本地地址。而kali上就不行

好了,这几个小特性记一下就行,可能没什么用。那么xxx.local是什么呢?mdns是什么呢?有趣的来了。

0x02 mdns探索

先贴一个关于mdns的简单介绍文章(https://www.cnblogs.com/yuweifeng/p/6409182.html)吧。顺便给出RFC(https://tools.ietf.org/html/rfc6762#section-5.2)的一些介绍。

简单的说,为了解决局域网内各个主机服务自动发现的需求,所以出现了mdns协议。每台运行mdns的服务会在自身的udp5353端口进行监听,同时在接入网络内时会往组播地址224.0.0.251发送对应的请求。而每一个运行mdns的主机都会通过这个组播地址发布自己的主机名、ip、运行服务等信息,同时也可以询问网络内包含xx服务的主机有谁,接到该询问的主机也都会应答。听起来挺像是arp,但与arp有很大区别:

  1. arp只有mac和ip的映射,而mdns可以获取到ip、主机名、运行的服务。
  2. arp通常不能跨网段,如果路由器支持的话mdns可以跨网段响应

mdns和dns的区别:

  1. dns通常指内网内有一台dns服务,其他客户端都去他那边查询,而mdns是每台支持mdns的主机自己都在5353udp端口上进行监听
  2. mdns通过组播进行通信,该组播地址就像一个公共频道一样大家都可以在这里告知网络自己是谁

其实我自己也是新手上路,也对这个协议一知半解,我其实就想看看通过它能在网络中找到什么。于是我直接在我们办公网里打开了wireshark,然后监听网络中的mdns流量:

ip.dst_host==224.0.0.251 and udp.port==5353

可以看到,有一大堆,都在广播这自己的主机名和ip地址,图里可以直接看到我同事的名字(因为主机名包含了名字)

也可以在A记录里找到IP地址,虽然一般来说发送的源IP就是这个A记录的IP。

那如果我没有wireshark我如何在目标主机上获取类似的信息呢?我在GitHub上找了个项目叫做zeroconfScan(https://github.com/JohnGrime/ZeroconfScan),基本上实现了类似wireshark的效果。该工具是go写的,需要自己编译一下。我们来看看演示效果:

可以看到左侧的type和dns里的type基本上是一致的,但具体的我还不太清楚,各位可以自行在学习学习。

这里再介绍几个小命令

代码语言:javascript
复制
systemd-resolve 
resolvectl
avahi-*

systemd-resolve

resolvectl(功能应该和上面的类似)

avahi-* 这个是我的ubuntu默认起的mdns服务,我们看一下有哪些命令以及可能能看什么东西

我比较在意这个browser

这里我们可以试试-a

红圈应该是中文显示有点问题,不过可以看到有点监听网络显示哪些主机支持哪些服务的意思了。我们也可以只监听某个service type 可以通过-kb列出支持的service type

然后比如我们查询ssh的

虽然上面中文解析有点问题,但是下面去解析报错的时候却正确显示了中文,emmmmm

0x03 总结

虽然ubuntu18以上会默认开启systemd-resolve,但其似乎只监听53端口,默认不会启动mdns,所以mdns这块在服务器自动发现上可能会差一些。办公环境的话搜集一些信息可能还行吧。具体我也没有深入研究过所以就不妄下定论了。为什么写这个呢?我只是觉得好玩hahahaha,有用没有用各位自己看看就好。我觉得吧,知道这些冷知识总好过不知道强一些。希望这块有师傅能深入研究研究,有更有趣的东西告诉我一下hahaha,如果文章有明显错误也请指正。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 赛博回忆录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
    • 0x01 探索一下systemd-resolved
      • 0x02 mdns探索
        • 0x03 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档