
Криминалистический анализ отравления кэша DNS на устаревшем оборудовании. Включает анализ PCAP-пакетов с несанкционированными вставками записей размером 839 байт, привязку к CVE-2025-40778 и устранение уязвимости с помощью усиленного Unbound (DoT) на Arch Linux.
Образовательное упражнение по анализу пакетов и усилению резолвера, выполненное на рабочей станции Arch Linux.
Область применения: Этот репозиторий — учебный проект. Включенный захват полезен для практики анализа DNS и ARP, но сам по себе он не доказывает реальную атаку отравления кэша, вредоносное оборудование, эксплуатацию конкретной CVE или причинную связь с метрикой маршрутизации NetworkManager.
Мой первый отчет трактовал несколько наблюдений как подтвержденные причины. Это было слишком сильным утверждением. DNS-кадр размером 839 байт не является автоматически некорректным или вредоносным, а DNS-over-TLS защищает DNS-трафик до настроенного вышестоящего резолвера — он не останавливает ARP-спуфинг или любую атаку уровня 2/3.
Пересмотренная версия сохраняет полезные части лабораторной работы, разделяя:
Это различие является частью хорошей работы по инцидентам. Лучше сузить вывод, чем утверждать больше, чем подтверждают доказательства.
tshark.tsharkdigТочные версии пакетов следует записывать при повторном запуске лабораторной работы. Текущий репозиторий не содержит достаточных метаданных версий, чтобы приписать трафик уязвимости продукта.
sha256sum evidence/incident_triage_snippet.pcap
capinfos evidence/incident_triage_snippet.pcap
Сохраните хэш и метаданные захвата вместе с вашими заметками. Не называйте захват «полным доказательством инцидента»; это фрагмент.
tshark -r evidence/incident_triage_snippet.pcap -Y arp \
-T fields -e frame.number -e frame.time_relative \
-e arp.opcode -e arp.src.proto_ipv4 -e arp.src.hw_mac \
-e arp.dst.proto_ipv4 -e arp.dst.hw_mac
Ищите повторяющиеся или конфликтующие утверждения IP/MAC. Конфликт — это зацепка для расследования, а не автоматическое доказательство злоумышленника. Проверьте, являются ли адреса синтетическими лабораторными значениями, изменилось ли устройство легитимно и поддерживает ли временная привязка гипотезу.
tshark -r evidence/incident_triage_snippet.pcap -Y dns \
-T fields -e frame.number -e frame.time_relative \
-e ip.src -e ip.dst -e udp.srcport -e udp.dstport \
-e dns.id -e dns.flags.response -e dns.qry.name \
-e dns.count.answers -e frame.len
Полезные последующие фильтры:
dns && frame.len == 839
dns.flags.response == 1
dns.qry.name == "."
arp.duplicate-address-detected || arp.duplicate-address-frame
Размер пакета сам по себе не является вердиктом. Размеры DNS-ответов могут варьироваться из-за количества записей, EDNS, DNSSEC и поведения транспорта. Проверьте декодированные записи и сравните их с эталонным образцом.
chmod +x scripts/checkdns.sh
./scripts/checkdns.sh example.com
Скрипт правильно помечает прямой запрос dig @1.1.1.1 как обычный DNS на порту 53. Когда доступен kdig, он также выполняет отдельный TLS-тест.
Проверьте configs/unbound.conf, адаптируйте пути к сертификатам для локальной системы и проверьте перед использованием:
sudo unbound-checkconf configs/unbound.conf
sudo ss -tnp | grep ':853'
dig @127.0.0.1 example.com
Успешный запрос и установленное соединение через TCP/853 поддерживают более узкий вывод о том, что Unbound пересылает запросы настроенному вышестоящему резолверу через TLS. Это не доказывает, что несвязанная проблема ARP или маршрутизации была устранена.
Используйте инструменты захвата пакетов и тестирования сети только на системах и сетях, которыми вы владеете или которые уполномочены тестировать. Перед публикацией проверяйте захваты на наличие частных адресов, имен хостов, токенов, учетных данных и личной информации.
| Путь | Назначение |
|---|
evidence/incident_triage_snippet.pcap | Небольшой образец захвата пакетов, используемый для проверки DNS/ARP |
evidence/wireshark_anomoly.png | Имя файла скриншота сохранено для истории репозитория; правильное написание — anomaly |
reports/ANALYSIS.md | Обзор на основе доказательств и ограничения |
scripts/checkdns.sh | Сравнивает вывод резолвера и четко указывает транспорт |
configs/unbound.conf | Пример конфигурации пересылки Unbound с использованием DNS-over-TLS |
logs/remediation_validation.txt | Пример вывода проверки с исправленными выводами |
CVE_RESEARCH.md | Объясняет, почему имеющиеся доказательства не поддерживают атрибуцию CVE |