Kali Ashes. Закаляем Kali и учимся не шуметь в сети
Дистрибутив Kali Linux невероятно популярен среди пентестеров. Однако при проникновении в сеть с настройками по умолчанию он может создать много шума в эфире, который не останется незамеченным.
В этой статье я расскажу о харденинге Kali и о том, как научить Linux работать в наиболее тихом режиме. Чтобы можно было автоматизировать настройку, я недавно зарелизил инструмент F31, написанный на Bash. Дальше мы подробно разберем, что именно он делает. Эта статья и F31 не гарантируют тебе стопроцентный обход систем, за которыми приглядывает SOC, но ты значительно снизишь вероятность спалиться. Каждый пентест сети уникален, и написать универсальное решение вряд ли возможно. Уверен, что есть и другие способы уменьшить шум в эфире. Но мы сосредоточимся на главных моментах.
ABOVE
Above — еще один мой инструмент, это сетевой сниффер протоколов для поиска уязвимостей в сетевом оборудовании. Его работа основана только на анализе трафика, что не создает никакого шума в эфире. Он охватывает следующие протоколы:
- L2: CDP, LLDP, DTP, 802.1Q Frames;
- L3: OSPF, EIGRP, VRRP, HSRP;
- L7: LLMNR, NBT-NS, MDNS, SSDP, MNDP.
Кстати говоря, Above недавно включили в Kali Linux! Ты можешь установить его прямо из репозиториев Kali:
Код:sudo apt update && sudo apt install above above --help
Чтобы начать анализировать трафик:
Код:sudo above --interface eth0 --timer 250 --output-pcap vettel.pcap
Здесь
- --interface eth0 — интерфейс системы;
- --timer 250 — время, в течение которого будет проводиться анализ;
- --output-pcap — файл дампа трафика, куда Above запишет все, что сможет найти.
ОБРАЩЕНИЕ К РЕПОЗИТОРИЯМ
Если во время работы в сети в рамках пентеста ты обратишься к репозиториям Kali, имей в виду, что SOC может сразу обнаружить это действие. Даже если включить обращение к репозиториям через HTTPS, ты все равно можешь спалиться по DNS-запросу.
ОПЕРАЦИИ С ХОСТНЕЙМОМ СИСТЕМЫ
Да‑да‑да, совет менять хостнейм Kali — это страшный баян. Тем не менее дефолтный хостнейм Kali так и остается главным индикатором обнаружения этого дистра в сети.Решение простое до безобразия. Мы не только поменяем имя системы, но и заодно запретим передачу хостнейма в пакетах DHCP, которые уходят, когда атакующий пытается получить адрес в сети.
Код:sudo hostnamectl set-hostname DESKTOP-HNA2AEVS sudo sed -i "s/127.0.1.1.*/127.0.1.1\tDESKTOP-HNA2AEVS/" /etc/hosts
Отключить передачу имени системы по DHCP можно в connection-файлах NetworkManager, добавив параметр dhcp-send-hostname=false:
Код:sudo sed -i '/\[ipv4\]/a dhcp-send-hostname=false' /etc/NetworkManager/system-connections/Wired\ connection\ 1
TTL
Для дистрибутивов Linux значение TTL равно 64. Можно изменить стандартное значение TTL в системе. Если хочешь прикинуться Windows, выбирай TTL 128.
Код:sudo sysctl -w net.ipv4.ip_default_ttl=80
Если у тебя планы проводить MITM в сети, то можешь скрыть свой адрес в трассировке со стороны легитимных хостов. Очень простой трюк в виде смещения TTL с инкрементом +1:
Код:sudo iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 1
ОТКЛЮЧЕНИЕ NTP
Твоя система может периодически обращаться к NTP-серверу для синхронизации актуального времени. В Kali периодически происходит обращение к NTP по имени DNS.
Зато отключить синхронизацию времени в Kali очень просто:
Код:sudo systemctl stop systemd-timesync
РАБОТА С NETFILTER
Нам нужно разрешить установленные и связанные между собой соединения, блокировать некорректные и блокировать TCP-сегменты с неожиданными значениями TCP MSS. А также фильтровать ICMP-трафик и выключить пинги. Однако будь осторожен: не заблокируй случайно ICMP Type 3, который позволяет системе PMTUD избегать избыточной фрагментации.
Код:sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -t mangle -A PREROUTING -m conntrack --ctstate INVALID -j DROP sudo iptables -A INPUT -p icmp --icmp-type 0 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A INPUT -p icmp --icmp-type 3 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A INPUT -p icmp --icmp-type 11 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A INPUT -p icmp -j DROP sudo iptables -t mangle -A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss ! --mss 536:65535 -j DROP
Ограничение ICMP-трафика на твоем хосте может повлиять на корректную работу ICMP-сканирования. Имей это в виду, если будешь его использовать. Отслеживай типы ICMP-сообщений, которые фильтруются.
ОТКЛЮЧЕНИЕ ICMP REDIRECT
Редиректы ICMP случаются при MITM-атаках. На сообщения ICMP redirect могут стриггериться системы IDS/IPS, что скомпрометирует действия атакующего. Давай выключим эти сообщения.
Код:sudo sysctl -w net.ipv4.conf.all.accept_redirects=0 sudo sysctl -w net.ipv6.conf.all.accept_redirects=0
РАНДОМИЗАЦИЯ MAC-АДРЕСА
Классика жанра: смена MAC-адреса на своем интерфейсе. Думаю, пояснять этот пункт нет необходимости.
Код:sudo ifconfig eth0 down sudo macchanger -r eth0 sudo ifconfig eth0 up
Также можно настроить NetworkManager так, чтобы при каждом подключении к сети MAC-адрес менялся на случайный.
Код:echo -e "\n[connection]\nwifi.cloned-mac-address=random\n\n[connection]\nethernet.cloned-mac-address=random" | sudo tee -a /etc/NetworkManager/NetworkManager.conf
МИНИМИЗАЦИЯ ШУМА
Пентестеры вынуждены в своей работе использовать сканеры (Netdiscover, Nmap и прочие), однако при запуске с установками по умолчанию эти сканеры создают очень большой шум в эфире. Мало того что повышается риск компрометации действий атакующего, так еще есть вероятность перегрузить сетевой коммутатор (особенно если мы говорим о быстром ARP-сканировании). Тревогу может забить и система Storm Control, которая управляет ограничениями лимитов UCAST/MCAST/BCAST-трафика. Я нашел возможность минимизировать шум в эфире с помощью ограничения скорости на интерфейсе системы. Можно резать скорость на интерфейсе до 30 Кбит/с, выставив задержку 800 мс, чтобы тот же Netdiscover не вызывал перегрузку в эфире. Разумеется, такой фикс повлияет на скорость работы сканера и скорость передачи данных, но все это только ради избежания перегрузки. Значения я определил в своих наблюдениях, однако не стесняйся регулировать их при необходимости. Для шейпинга я использовал утилиту tc (traffic control):
Код:sudo tc qdisc add dev eth0 root tbf rate 30kbit burst 30kbit latency 800ms
Обращай внимание на Outgoing — утилита nload показывает этот исходящий трафик (когда ты что‑то сканируешь — это исходящий трафик).
ВЫВОДЫ
Я рассказал об основных идеях по поводу минимизации шума в эфире и харденинга Kali Linux. Акцент всех этапов настройки Kali Linux сделан именно на сетевом уровне. Написать полноценный мануал по обходу SOC вряд ли возможно, тем более всё не уместить в одну статью.