Skip to main content

· 7 min read

前言#

Antenna项目:https://github.com/wuba/Antenna

使用文档:http://blog.antenna.cool/docs/intro

Antenna当前已经提供了白帽子经常用到的DNS/HTTP等协议的监听能力,其中关于DNSLOG功能的支持虽是老生常谈但还是有一些细节想拿出来唠叨一下的。

为什么要有自己的DNSLOG#

其实这个问题应该换成为什么不用公开的DNSLOG服务更恰当,白帽子使用DNSLOG的核心需求是通过其请求日志判断自己 的目标是否存在漏洞,公用的DNSLOG无论上从便捷性还是可溯源性上来看确实是白帽子使用的首选 ,但是在作者看来,有些白帽子没有挖掘到漏洞的原因可能正是用了公用的DNSLOG服务。 在具有安全建设能力的企业内,已经早早地通过DNS污染或者反制等方法对这些域名加上了黑名单策略 常见DNS服务域名


".dnslog.cn",".ceye.io",".burpcollaborator.net",".interact.sh",".dnslog.link",".imgcdnns.com",".ns.dns3.cf",".tu4.org",".dnslog.cool",".yunzhanghu.co",".1433.eu.org",".dnslog.run",".dnslog.io",".s0x.cn",".awvsscan119.autoverify.cn",".360-cert.com",".interactsh.com",".microcoft.cyou",".mauu.me",".oast.me",".oastify.com",".oast.fun",".0x557.wang",".cybertunnel.run"

所以当你看到自己的dns请求日志上空空如也或者请求多得让你喘不过来气(反制策略) 的时候,你可能真的需要考虑搭建一个自己的拥有DNSLOG能力的平台了(强烈暗示)

DNSLOG为什么需要隐匿#

因为溯源,你要知道你的所有DNS请求行为在目标方看来都是具有入侵性质的,虽然域名已经暴露了,但是你要尽可能地做到暴露的信息真的只有一个域名。那么接下来我们就可以看一下有哪些可以帮助我们匿名的方法。

隐匿方法#

域名信息隐藏-Godaddy 域名购买#

国内的域名注册都是需要实名认证的,所以这里推荐使用国外的Godaddy购买域名。 选择好域名添加购物车,不需要选择任何的附加的服务 img.png

点击继续购物车,然后选择购买年限,然后点击准备好付款,紧接着他需要填写购买者信息 这里我推荐使用匿名信息生成,因为他不需要验证信息真实性 使用 http://tools.jb51.net/aideddesign/rnd_userinfo 网站,选择一个国家立即生成 img.png

填写一些必要信息就好了 img.png

结账方式选择alipay(支付宝),点击继续购买,这样域名就搞定了,去查询一下购买的域名的WHOIS,并不会出现个人信息 img.png

真实IP隐藏-Cloudflare替换DNS#

cloudflare 是一家国外的 CDN 加速服务商,提供免费和付费的加速和网站保护服务。这样你的域名绑定解析的IP通过CDN也进行了完美的隐藏。 首先注册Cloudflare账号,进入首页,点击新增网站 img.png

选择免费服务

img.png

进入后可看到cloudflare会提供给你两个dns服务器

img.png

返回Godaddy,点开自己的域名进入DNS Management 界面,选择下方Nameservers 点击change然后选择输入个人的nameserver img.png

将cloudflare提供的域名服务器输入进行并保存,接下来前往cloudflare按照正常A记录配置自己的域名以及ns域名,但是这里需要将你DNSLOG域名(自域名)配置NS记录指向ns域名 img.png

这样你的真实IP在解析过程中就会替换成cloudflare的IP,但是还是存在找到真实IP的方法的。加入溯源人员指定cloudflare的DNS服务器去进行DNS解析,其实还是会暴露。

资产与入口隐藏-路径设置#

溯源人员免不了访问你的域名或尝试找到登录界面,关于Antenna的客户端与服务端分离部署在我们后面的文章进行讲解,如果你按照我们推荐的方式部署,不妨设置一下域名登录界面的路径 根据你的部署方式,打开docker-compose或者.env文件进行配置 img.png

这样只有访问特定的路径才会暴露你的登录界面,也就进一步避免了溯源人员发现Antenna的存在 结尾-关于域名污染 其实上述方法只是帮助自己尽可能减少被溯源的可能性,但是依旧避免不了目标的安全团队识别出你的域名在内部实行DNS污染,那有没有好的办法避免自己的域名被污染掉呢。目前来看是没有的,但是确实还是有一些其他的技巧可以给反入侵与溯源人员造成一定困扰的。这些技巧后续也会更新再Antenna的博客上.如果当前您对Antenna的使用遇到一些问题,欢迎大家提 交issue,或者进入交流群进行讨论。 如有问题或者一些建设性的想法想与技术同学沟通,请联系并添加微信号:bios_000

· 3 min read

更新内容#

  1. 优化监听组件管理,将DNS等监听组件进程通过supervisor统一管理
  2. 优化平台管理配置界面,新增保存平台七天内请求消息DNS解析配置功能
  3. 平台支持DNS_REBINDING能力(仅对平台管理员开放)

新版使用注意#

  1. v1.3.0 版本通过supervisor去管理各种协议监听的进程,所以选择源码部署新版本的同学需要查看 /conf/antenna.ini文件中的 directory值是否为与实际项目地址一致,个人推荐将项目下载到 根目录下
  2. 旧版本更新至新版的同学需要重新按照.env.example文件进行填写并将其修改为.env文件。这是因为 新版本新增加了一些配置项
  3. (部署及安装教程)[http://blog.antenna.cool/docs/intro]已更新,如有相关问题可参考文档

DNS_REBINDING 功能演示#

Antenna 的系统设置-平台管理(管理员权限) 新增协议设置模块,在这里可以自定义 设置DNS监听组件的解析配置,当前只提供A记录配置管理(其他的记录如果有需求可以提到issue,作者 看情况增加) img.png

在这里我们新增一条A记录 解析域名rebinding.test.cn 解析内容为1.1.1.12.2.2.2,如下图配置 img.png

点击保存按钮,这里在本地演示需要指定解析DNS服务器地址(127.0.0.1) img.png 作者通过代码将DNS应答的TTL设置成了0,当DNS的TTL设置为0时,它将永远不会被缓存,每次查询都会发送到DNS服务器。 所以可以稳定复现,同学们可以安心的尝试绕过各种安全策略。但这也意味着我们的DNS监听组件会受到更多的请求, 可能会影响服务的性能。

目前在做#

  1. 允许用户组件配置多种自定义格式链接
  2. 制作Antenna python标准库

如果对Antenna有更多的需求以及各种想法,欢迎在issue上提交

· 6 min read

前言-如何让Antenna向"好的产品"靠近#

Antenna项目:https://github.com/wuba/Antenna

使用文档:http://blog.antenna.cool/docs/intro

"什么样的产品才算是一款好的产品?"以及"如何让Antenna成为一款好的产品?"这是作者一直在想的问题,经过不断地学习和调研, 作者认为,一款好的产品,必须满足以下几个特点:

  • 解决用户的需求
  • 良好的用户体验
  • 有黏性
  • 平衡好商业模式和用户体验

第三点和第四点对于Antenna来说太过于抽象与遥远,所以不如目前把重心放在第一点和第二点上。 Antenna的核心需求一直都是以通过产品辅助用户验证各种漏洞的真实存在于可利用性。那 明确了需求我们便知道我们要努力优化的点在哪里

如何让用户在收到消息通知上拥有更好的体验#

在Antenna开源后,我们一直在优化OPENAPI与CALLBACK两个消息通知依赖模块,我们也参考了其他的一些 工具与产品,通知方式无外乎邮件、微信、钉钉等,但是这些通知方式都需要用户需要打开媒介 去接受信息,或者更通俗的讲,用户都需要查看另一个界面,要知道此时的用户都在显示屏幕前面对着自己的目标 进行验证,让用户摆脱目标的界面去查看另一个界面。我们觉得这其实应该有优雅的解决方案。如何让用户在同一个 界面(不需要跳转页面)就能接收到消息?于是便有了antenna-tools的试用版本

chrome-tools 使用教程#

以前的antenna如果接收到消息或者使用利用链接,其实依旧需要用户跳转至系统界面去操作,我们认为这并不优雅,于是我们尝试 制作了基于Antenna个人APIKEY的chrome扩展,目前Antenna-tools只支持右键菜单点击复制利用payload以及监听消息请求 功能(自Antenna v1.1版本开始支持扩展,所以您需要将之前的Antenna进行更新),接下来就让我们看看怎样来使用

安装 chrome-tools#

首先下载或者更新Antenna至V1.1版本以上。保证您有一个可使用的Antenna系统后,并将Antenna项目下的plugin目录下载到本地。打开您的chrome浏览器, 在地址搜索栏输入chrome://extensions/ 您会来到chrome扩展管理页面,并点击右键改为开发者模式

img.png

点击左上角加载已解压的扩展程序 选择加载您下载的plugin目录,这样就完成了Antenna扩展的安装,您可以在浏览器的右上角找到它 img.png img.png

配置与payload的使用#

点击antenna扩展后还需要您点击插件配置,进入配置页面 img.png

填写Antenna用户的个人apikey以及您的Antenna系统域名(tips:不需要输入您配置的隐藏登录界面的路径)

img_1.png 保存后来到您的扩展页面重新刷新插件(目前需刷新插件进行数据重写) 点击右键,查看是否已有payload菜单,后续如果你在Antenna更新payload也需 刷新插件(当前正在优化的地方)

img.png 点击您的payload,他便会保存到您的粘贴板上,使用的时候直接 control + V就轻轻松松使用

关于message监听#

关于同界面接收到数据请求才是我们最想实现的功能,只需您打开插件的监听按钮,插件会每五秒监听一次最新消息 这样,就更加方便的接收消息,从而不会遗漏任何一个漏洞的触发。 img_1.png img.png

问题解答#

1、为啥安装会有错误显示#

回答:当前chrome扩展由于manifest v2版本开发,所以会有一些兼容性的错误,目前测试并不影响功能使用,如出现不能正常使用的情况 请在issue留言

2、消息监听,插件徽章显示有新消息数,但没有通知提醒#

回答:这可能是因为您的chrome没有开启notifications的权限 解决方案: 1、在Chrome浏览器中访问地址:chrome://flags。 2、搜索栏中搜索:notifications,找到 Enable system notifications 选项, 将其选项值改为 Disabled,重启浏览器就能正常使用

· 3 min read

关于server与client#

Antenna的v1.0版本支持了前端源码单独部署,并增加了docker-compose.yml 文件方便用户docker部署 这是因为部分用户对于前端代码单独部署的声音越来越多。所以我们将前端代码放入了项目的templates目录中 这样做我们可以将后端源码作为server单独部署到远程服务器上,而前端只要在配置文件中填写后端的地址就 可以直接在本地进行部署控制远程server。前端也就可以看做client。 那接下来,我们看一下关于这种方式的部署教程

前端本地部署教程#

源码部署#

如果您选择了前端在本地进行源码部署,你必须拥有node环境以及安装yarn等依赖 您可以选择执行下面的命令保证后续本地部署的顺利

npm config set registry https://registry.npm.taobao.org \    && npm install -g vue-cli \    && PATH=$PATH:./node_modules/.bin \    && npm install -g pm2  \    && yarn config set registry https://registry.npm.taobao.org \    && yarn config set ignore-engines true

安装好所需依赖后,您需进入到项目的templates 目录下

cd templates 

打开目录下的 .env.example文件,填写您部署在远程的server地址

填写示例

SERVER_URL="http://test.com"

然后将 .env.example 改成 .env 文件

接下来需要执行启动命令

yarn \&& yarn prepare&& yarn start

接下来访问本地的8000端口,就可以访问到sever端

Docker 部署#

打开 templates目录下的docker-compose.yml**文件

version: '3'
services:  antenna_client:    build: ./    image: antenna_client    container_name: antenna_client    volumes:      - ./:/antenna    ports:      - "80:8080"   #如果前端想开启在本地的其他端口,请填写其余    environment:      SERVER_URL: "http://test.com"  # SERVER接口地址    networks:      - antenna_client
networks:  antenna_client:    driver: bridge

填写SERVER_URL 的环境变量地址后,运行命令

docker-compose up 

访问本地的80端口,便可以进行使用