博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过BSSID和无线流量传输后门Payload
阅读量:5796 次
发布时间:2019-06-18

本文共 5616 字,大约阅读时间需要 18 分钟。

本文将探讨无线接入点(AP)和BSSID(MAC地址AP)。我们不借助文件系统加密和文件系统中(仅内存中)的硬编码Payload即可获得后门Payload,通过该方法可绕过所有的杀软,可以不使用Payload加密而在网络流量(本文中是无线流量)中传输Meterpreter Payload。

攻击者可通过为伪造AP更改BSSID(循环更改)执行此攻击,这意味着通过更改BSSID和将后门Payload逐步注入BSSID(伪造AP的MAC地址)就可以实现这一点。在客户端受感染系统(后门系统),可以在不经用户密码连接到伪造AP的情况下通过扫描AIR上的接入点MAC地址(BSSID)来转储这些Payload。因此,Payload的传输是由Wifi设备进行的,比如wlan(无线流量),在我们的例子中,通过扫描AIR上的BSSID而转储Payload后,是由Ethernet网络建立的Meterpreter会话进行(不使用Wifi /无线设备)。

因此结果是,恶意软件代码或本文中所述的简单的后门代码能以静默方式(本文中为Wlan)使用你的WIFI设备传输/转储Payload,最后可以用简单的C#代码获得meterpreter会话。

在我们的方案中,我们只在传输Payload(第1步)时使用Wifi设备,然后通过扫描Wifi设备MAC地址(BSSID)来转储这些Payload,然后我们的后门将通过eth0或以太网卡建立Meterpreter会话,因此在这个阶段(第2步),我们使用不借助WIFI设备的网络流量来建立Meterpreter会话。

注意:如果你想只通过WIFI设备实现这些(第1步和第2步),我们认为这在技术上是可行的,我们尚未对此进行测试,所以尚不确定。

这一方法的重点是什么?

重点是:恶意软件或后门Payload注入到WiFi设备的BSSID并通过无线流量传输是可以实现的。

扫描从伪造AP注入到BSSID的Payload,步骤:

比如,我们要传输以下Payload:

“fec8b00011ddc00945f1”

第1步:攻击者系统伪造一个名为“Fake”的接入点,MAC地址为00:fe:c8:b0:00:11

l 注意:Mac地址00:fe:c8:b0:00:11是我们注入的Payload,因此我们的Payload是“fec8b00011”

l 这部分的Payload是“fec8b00011ddc00945f1”

第2步:后门系统扫描Essid“Fake”并转储BSSID

l 注意:你的后门代码应该转储这些部分的BSSID或Mac地址fe:c8:b0:00:11 ==> fec8b00011

第3步:攻击者系统伪造一个名为Fake”的接入点和Mac地址00:dd:c0:09:45:f1

l 注意:Mac地址00:dd:c0:09:45:f1是我们注入的Payload,因此我们的Payload是“ddc00945f1”

l 这部分的Payload是“fec8b00011ddc00945f1

第4步:后门系统扫描Essid “Fake”并转储BSSID

l 注意:你的后门代码应该转储这些部分的BSSID或Mac地址dd:c0:09:45:f1 ==> ddc00945f1

经过这两步的扫描后,你将在被感染系统(后门系统)中获得Payload fec8b00011ddc00945f1。

现在你可能已了解了该方法的工作原理,下面我们将通过linux端命令作进一步说明(第1步和第3步)。

接下来是通过命令伪造AP。

可选命令:在创建Wlan0mon之前更改无线网卡的TXPower,这些命令可以帮助你伪造更好的AP信号,所以如果需要你可以手动使用该命令。

l 注意:在通过airmon-ng创建Wlan0Mon之前应该使用这些命令,这些命令是可选的(不是必需的)

创建无线网卡的监视模式是伪造AP的重要步骤:

使用命令“airmon-ng start wlan0”,你可以为Wlan0创建“Wlan0Mon”(监视模式)。

注意:你可以手动运行此命令仅一次,或者可以在script1.sh文件中使用此命令一次,如步骤(cmd 1-1)所示。我们是在攻击者端手动使用。

第1步:攻击者系统伪造一个名为“Fake”的接入点和Mac地址00:fe:c8:b0:00:11

l 注意:Mac地址00:fe:c8:b0:00:11是我们注入的Payload,因此我们的Payload是“fec8b00011”

cmd1-1: airmon-ng start wlan0

l 注意:创建Wlan0Mon(监视模式)

cmd1-2: airbase-ng -a 00:fe:c8:b0:00:11 –essid “Fake”-I 10 -0 wlan0mon

l 注意:你需要让该伪造AP保持15秒,这样你可在15秒后通过killall命令在(cmd 1-2)中杀死这个命令

cmd1-3: sleep 15

cmd1-4: killall airbase-ng

第2步:(无关紧要,所以作者省略了第2步)。

第3步:攻击者系统伪造一个名为“Fake”的接入点和Mac地址00:dd:c0:09:45:f1

注意:Mac地址00:dd:c0:09:45:f1是我们注入的Payload,因此我们的Payload是“ddc00945f1”

cmd3-1: airbase-ng -a 00:dd:c0:09:45:f1 –essid “Fake”-I 10 -0 wlan0mon

注意:你需要让该伪造AP保持15秒,这样你可在15秒后通过killall命令在(cmd 3-1)中杀死这个命令

cmd3-2: sleep 15

cmd3-3: killall airbase-ng

从这些步骤可以看到,我们应该使用这些命令,但对于airbase-ng我们有很大的问题。

哪里有问题?

步骤(cmd 1-2)到(cmd 1-3)有问题

在步骤(cmd 1-2)后,你不能停止该airbase-ng命令,只是使用ctrl + c或杀死这个命令,你可以将其停止。所以在我们杀死该进程一次前我们的bash脚本总是停在步骤:(cmd 1-2)。

为解决该问题,我们的解决方案是为这些步骤使用2个bash脚本文件:

l 第一个是用于步骤(cmd1-2和cmd 3-1)的bash脚本文件“Script1.sh”

注意:你可以在此bash脚本的第一行中添加一次步骤(cmd 1-1)或手动完成一次。我们是手动执行了(cmd 1-1)一次。

l 第二个bash脚本是步骤(cmd 1-3&cmd 1-4&cmd 3-2&cmd 3-3)的“Script2.sh”

所以我们应该首先运行bash脚本“Script1.sh”,然后应该立即或2-3秒后运行bash脚本“Script2.sh”。

所以我们拥有的文件是:

Script1.sh文件:

Script2.sh文件:

注意:你可以在bash脚本“Script2.sh”文件中使用循环命令,比如( for )。

如图A所示,我们有用于将Meterpreter Payload注入到BSSID的script1.sh文件。

图A

从图A中可以看到,我们的MeterpreterPayload从第3行开始。我们的Meterpreter Payload是510字节。

在这种情况下,使用airbase-ng命令,你可以向我们的名为“Fake”的伪接入的BSSID注入5字节的Payload。

因此我们应该有102行用于通过airbase-ng命令将所有Payload注入BSSID。

102 * 5= 510字节

注意:每个BSSID包含5个字节的Payload。

在这种情况下,应将两个BSSID MAC地址添加到该script1.sh文件。

从图A中可以看到,我们的脚本的第2行有MAC地址00:ff:ff:ff:ff:ff,这个Mac地址或BSSID是启动攻击和向感染系统传输流量的标志,从图B中可以看到,该文件的结尾应该是BSSID {00:ff:00:ff:00:ff}。

BSSID注入循环:更改BSSID(102 + 2)= 104次。

图B

你还可以看到第二个脚本script2.sh文件,如图C所示。在这个文件中,你可以使用循环命令,比如(For),或者如图C所示操作。

图C

在文件“script2.sh”中,你应该杀死airbase-ng至少104次。

接下来我们通过工具NativePayload_BSSID.exe逐步解释这一方法:

步骤:

第0步:创建Wlan0mon(监视模式)。

语法:airmon-ng startwlan0

第1步:你可以用这个命令为你的后门创建一个Payload:

第2步:在该步骤中,你应该在payload.txt文件中将Payload的格式从“\xfc\x48\x83\xe4”替换为“fc4883e4”。

你可以使用该工具的 “帮助”来显示所有语法,如图1所示:

图1

现在你应该复制你的Payload字符串,并通过切换NativePayload_BSSID的NULL粘贴,如图1-1所示:

图1-1

现在你应该将所有这些行复制到一个bash脚本,比如“script1.sh”文件。

注意:仅将airbase-ng命令行复制并粘贴到script1.sh文件

在这种情况下,这些行应该是102行+2 = 104行

如图A所示,你应该在脚本的第一行手动添加“#!/bin/bash”,因此该文件中应该有105行。

第3步:在这一步,你应该在Linux端运行此Script1.sh。

更改chmod并运行此脚本,如图2所示:

图2

第4步:在这一步,你应该创建script2.sh并更改该脚本的chmod,但不需要在这一步运行该脚本,如图3所示。

图3

l 注意:你应该如图C所示手动创建该bash脚本。

第5步:在这一步,你应该运行你的后门,即NativePayload_BSSID.exe工具,从图4可以看到,我们为IP地址192-168-1-50在kali linux中创建了Meterpreter监听器,“script1.sh”成功执行。

因此第5步中的步骤有:

步骤AA:Meterpreter监听器执行(linux)

步骤BB:运行script1.sh(linux)

步骤CC:运行后门“NativePayload_BSSID.exe”(Windows)

步骤DD:运行script2.sh(linux)

步骤CC:这时候应该使用如图4所示的语法执行后门NativePayload_BSSID

我们在script1.sh中的ESSID是“Fake”,因此正确的语法是:

如图4所示,步骤AA、BB及CC获得执行

图4

从图4可以看到,后门被用户“u1”执行,然后应该运行“script2.sh” (步骤DD),如图4所示。

此时后门代码尝试扫描AIR上的ESSID“Fake”,然后转储“Fake” 接入点的BSSID,因此,从图4可以看到,我们的代码转储了BSSID “00:ff:ff:ff:ff:ff”四次,该BSSID是启动攻击和传输Payload的标志。

因此我们在AIR上的步骤如下:

接下来应该运行script2.sh(步骤DD)

每运行Script2.sh 15秒后,该脚本将从Script1.sh文件中杀掉一个Airbase-ng命令。

因此,在这一步的AIR上,在运行Script2.sh后,我们有以下步骤:

如图5所示,我们的后门在运行“script2.sh”文件后尝试转储BSSID

图5:通过BSSID和无线流量传输后门Payload

如图6所示,你将在30分钟后获得meterpreter会话。

图6

可以看到,通过我们的C#代码创建了Meterpreter会话,2017版卡巴斯基杀毒软件一次又一次绕过了该方法,最终meterpreter会话成功创建。

注意:从图7可以看到,我们的代码在15秒的延迟后创建了Meterpreter会话,该延迟是由我们的代码导致的。所以,通过我们的代码检查该方法后可知,在转储所有payload后,你应该等15秒,然后你将获得Meterpreter会话。

图7

总结:

你的无线设备总有漏洞,因此你应该考虑以下威胁:

1. 恶意软件或后门Payload注入到WiFi设备的BSSID并通过无线流量传输是可以实现的。

2. 如果你想为你的客户端和网络基础设施使用WIFI设备,你应该考虑这些威胁。

3. 在该方法中,在开启无线网卡之前你的受感染的系统总是脆弱的,即使开启了无线网卡,攻击者也可能通过手机或伪造AP攻破你的客户端。

4. 在我们的例子中,我们的后门尝试扫描用于转储BSSID的ESSID(比如“Fake”),因此,该流量将以非常缓慢且静默的方式工作。

5. 你的防病毒软件无法检测到,你的LAN/WAN中的防火墙也绕过了这个,因为没有任何流量通过这些基础设施,在我们的例子中,流量是受感染系统无线网卡和AIR上攻击者系统无线网卡之间的直接流量。另外,由后门转储Payload后,我们将有从受感染系统向攻击者系统的经由LAN/WAN的Reverse_tcp Meterpreter会话(不用无线网卡),因此,我们有从后门系统向互联网或局域网中的攻击者系统的传出流量,该流量在大多数情况下不会被windows防火墙等阻止。

C#源代码:

演示视频:

参考来源:

咨询作者后的回复:

*本文作者:华为未然实验室,转载请注明来自Freebuf.COM

你可能感兴趣的文章
查看是否为归档模式
查看>>
windows server 2008 安装 Exchange 2010
查看>>
RHEL6中cacti监控系统搭建及使用
查看>>
hadoop提示权限不够
查看>>
Java开发常用正则表达式处理案例总结
查看>>
Canvas
查看>>
win7/8 下net命令无效的问题
查看>>
list<String> 向List<Integer>转化
查看>>
android学习笔记--android启动过程之init.rc文件浅析
查看>>
我的友情链接
查看>>
大湿教我写程序(1)之菜单导航篇
查看>>
移动端开发之viewport
查看>>
spark集群无法分配资源
查看>>
json与xml的比较
查看>>
欢聚时代运维工程师笔试以及初面
查看>>
MongoDB启动报错
查看>>
在Word2007中新建主题字体
查看>>
elkb+redis建立日志收集分析系统
查看>>
MongoDB JAVA-API执行mapreduce的几种方法
查看>>
[LeetCode] A Distance Maximizing Problem
查看>>