Содержание статьи
info
Эта статья — часть серии публикаций о практических приемах взлома и атак с использованием подручных устройств, которые можно собрать дома. В этих материалах мы раскрываем простые способы получения несанкционированного доступа к защищенной информации и показываем, как ее оградить от подобных атак. Предыдущая статья серии: «Опасный модем. Закрепляемся в атакованной системе при помощи USB-модема».
Сколько раз ты замечал, что где‑то в публичном месте стоит принтер, 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 directionsudo ebtables -t nat -A POSTROUTING -o eth0 -s $(getmac -i br0) -j snat --to-src "$victim_mac" --snat-arpsudo ebtables -t nat -A PREROUTING -i eth0 -d "$victim_mac" -j dnat --to-dst $(getmac -i br0)#victim directionsudo ebtables -t nat -A POSTROUTING -o eth1 -s $(getmac -i br0) -j snat --to-src "$gw_mac" --snat-arpsudo 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" # То же самое, но в сторону victimroute 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->victimsudo iptables -A OUTPUT -o eth0 -p tcp --tcp-flags SYN,ACK,RST,FIN RST -j DROP # Игнорировать ACK-пакеты и не слать на них RST, чтобы не рвать соединения victim
С такими настройками устройство может вклиниться в легитимное физическое подключение, прозрачно зеркалируя трафик в обе стороны и отправляя в это же самое время пакеты от имени жертвы.
Это позволит злоумышленнику обойти защиту Port Security и вообще стать полностью невидимым в сети.
Пассивный сниффинг
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»