Kali Ashes. Закаляем хакерский дистр и учимся не шуметь в сети
Дистрибутив Kali Linux невероятно популярен среди пентестеров. Однако при проникновении в сеть с настройками по умолчанию он может создать много шума в эфире, который не останется незамеченным. В этой статье я расскажу о харденинге Kali и о том, как научить Linux работать в наиболее тихом режиме.
Чтобы можно было автоматизировать настройку, я недавно зарелизил инструмент F31, написанный на Bash. Дальше мы подробно разберем, что именно он делает.
Эта статья и F31 не гарантируют тебе стопроцентный обход систем, за которыми приглядывает SOC, но ты значительно снизишь вероятность спалиться. Каждый пентест сети уникален, и написать универсальное решение вряд ли возможно. Уверен, что есть и другие способы уменьшить шум в эфире. Но мы сосредоточимся на главных моментах.
ABOVE
Above — еще один мой инструмент, это сетевой сниффер протоколов для поиска уязвимостей в сетевом оборудовании. Его работа основана только на анализе трафика, что не создает никакого шума в эфире.
Он охватывает следующие протоколы:
Кстати говоря, Above недавно включили в Kali Linux! Ты можешь установить его прямо из репозиториев Kali:
sudo apt update && sudo apt install above above --help
Чтобы начать анализировать трафик:
sudo above --interface eth0 --timer 250 --output-pcap vettel.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 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
Ниже скриншоты с работой сканеров Netdiscover и Nmap. Команды запуска были следующие:
sudo netdiscover -i eth0 sudo nmap -n 10.10.100.0/24
Обращай внимание на Outgoing — утилита nload показывает этот исходящий трафик (когда ты что‑то сканируешь — это исходящий трафик).
Если нужно удалить параметры ограничения трафика, то для этого есть вот такая команда:
sudo tc qdisc del dev eth0 root
F31
Итак, я написал скрипт F31 для автоматизации всего процесса настройки. Скрипт полностью настраивается, и запускать его нужно со специальными аргументами.
sudo bash F31.sh --interface eth0 --new-hostname DESKTOP-HNA2AEVS --noise-reduction
На случай, если понадобится откатить все изменения, я написал скрипт reset.sh
, ты сможешь его найти в этом репозитории:
sudo bash reset.sh --interface eth0 --old-hostname kali
ВЫВОДЫ
Я рассказал об основных идеях по поводу минимизации шума в эфире и харденинга Kali Linux. Акцент всех этапов настройки Kali Linux сделан именно на сетевом уровне. Написать полноценный мануал по обходу SOC вряд ли возможно, тем более всё не уместить в одну статью. Думаю, в будущем ты можешь ждать новые части Kali Ashes.