nathanvy/dnsbbs

GitHub: nathanvy/dnsbbs

一个完全通过DNS协议运行的极简BBS系统,利用DNS TXT记录实现消息的发布与读取,展示了基于DNS隐蔽信道的通信技术。

Stars: 0 | Forks: 0

# DNS BBS 这是一个极简的 BBS,或者说是 web 2.0 风格的论坛,唯一不同的是它完全通过 DNS 运行。我是在深入研究现代恶意软件使用的各种隐蔽信道通信技术后产生这个想法的。这个 BBS 的特点是: - 无状态(无会话) - 匿名,用户名可选 - 仅追加 - 笨重 - 有趣! ## 构建 这个 BBS 仅在 Debian `amd64` 上测试过。**完全没有考虑**与其他架构或操作系统的兼容性。理论上,它应该可以在任何运行 Docker 和 SBCL 的地方运行。 ## 什么情况 根据你阅读此页面的时间,可能有一个演示正在 `bbs.stackgho.st` 上运行。可以尝试: ``` $ dig @bbs.stackgho.st -p 31337 wtf.bbs.stackgho.st TXT ``` ## 主题 可以通过以下方式获取主题列表: ``` index.bbs.example.org TXT ``` 返回的主题以分号分隔。例如,"dev" 和 "misc" 主题会返回为:`t=dev,misc`。可以通过以下方式获取主题信息: ``` meta.misc.bbs.example.org TXT ``` 这将返回主题描述和最新消息的 ID,例如:`desc=General discussion;latest=1` ## 读取消息 获取消息 ID 后,可以这样检索消息: ``` msg...bbs.example.org TXT ``` 或者,对于因太长而被分块的响应式消息: ``` msg....bbs.example.org TXT ``` 消息以 base64 编码返回(因为只有真正的黑客才用 base64) ## 发布消息 发布消息的方法是 Base32 编码消息内容。 ``` post...bbs.example.org TXT ``` 如果消息太长,必须分块: ``` post....bbs.example.org TXT ``` 在最后一个查询中,`` 是一个从 0 开始的整数序列号。最后一个块通过传递字符串 `end` 作为序列号来表示,而不是整数。
标签:Base32, Base64, BBS, Common Lisp, Covert Channel, DNS, Docker, IP 地址批量处理, SBCL, TXT记录, 内核驱动, 匿名通信, 安全防御评估, 恶意软件技术, 无状态, 极简主义, 编码传输, 网络协议, 论坛系统, 请求拦截, 隐写术, 隐蔽信道