• 通过BSSID和无线流量传输后门Payload


    本文将探讨无线接入点(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信号,所以如果需要你可以手动使用该命令。

    图1.png

    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文件:

    图2.png

    Script2.sh文件:

    图3.png

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

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

    图4.png

    图A

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

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

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

    102 * 5= 510字节

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

    图5.png

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

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

    图6.png

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

    图7.png

    图B

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

    图8.png

    图C

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

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

    步骤:

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

    语法:airmon-ng startwlan0

    图9.png

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

    图10.png

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

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

    图11.png

    图1

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

    图12.png

    图13.png

    图1-1

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

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

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

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

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

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

    图14.png

    图2

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

    图15.png

    图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

    图16.png

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

    图17.png

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

    图18.png

    图4

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

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

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

    图19.png

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

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

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

    图20.png

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

    图21.png

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

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

    图22.png

    图6

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

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

    图23.png

    图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#源代码:https://github.com/DamonMohammadbagher/NativePayload_BSSID

    演示视频:https://youtu.be/W0dJGln3tls

    参考来源:https://www.linkedin.com/pulse/transferring-backdoor-payloads-bssid-wireless-traffic-mohammadbagher?trk=mp-reader-card

    咨询作者后的回复:

    第二步省略.png

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

  • 相关阅读:
    Promise 解决回调地狱问题
    同步 异步 API 区别
    静态资源 读取方法
    路由
    HTTP 协议 get post 请求方式
    linux 查看日志
    putty完全使用手册--多窗口---git提交---连接数据库--自动日志显示
    strpos 返回0时 ,比较false 不能加单引号
    禁止使用test类的就是禁止使用本来的$this对象.可以调用父类的对象
    大D实例化model-->调用自定义类方法,大M调用原声model方法
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/6649573.html
Copyright © 2020-2023  润新知