Перед тем как перейти к уязвимостям IPv6 и атакам на них, неплохо бы посмотреть, какие есть инструменты в арсенале пентестера на этот счёт. До недавнего времени существовал только один набор утилит для проведения атак на протоколы IPv6 и ICMPv6. Это THC-IPV6 от незабвенного Марка ван Хаузера, того самого автора брут-форсера THC-hydra и массы других незаменимых инструментов. Именно он в 2005 году серьёзно заинтересовался темой IPv6 и вплотную занялся изучением этого протокола и до недавнего времени оставался первопроходцем, но в последнее время ситуация стала меняться.
Всё больше исследователей сетевой безопасности обращают своё внимание на IPv6, и, соответственно, стали появляться и новые утилиты, такие как Loki и новые сканеры сетей, но на сегодня THC-IPV6 по-прежнему остаётся лучшим набором утилит для проникновения в сеть. В комплект его входит уже более 60 инструментов, разделённых на различные категории - от сканирования и MiTM до флудинга и фаззинга, но не будем забывать и реальную утилку scapy, позволяющую вручную создавать пакеты, с любыми заголовками, даже если таковые вариации не предусмотрены ни в одной RFC.
Перед тем, как атаковать цель, нужно её хоть как-то обнаружить, поэтому стандартный пентест обычно начинается с поиска живых хостов, но здесь появляется проблема: мы не можем просканировать весь диапазон. Сканирование всего одной подсети затянется на годы, даже если отправлять миллион пакетов в секунду. Причина в том, что всего лишь одна подсеть /64 (или их ещё называют префиксами) больше, чем весь интернет сегодня, причём значительно больше. Поэтому самая серьёзная проблема с IPv6 - это обнаружение целей.
К счастью, выход есть. Вначале нужно будет найти подходящую AS (автономную систему), которая принадлежит цели (объекту пентеста). Сервисов, позволяющих искать по AS их владельцев, вполне достаточно, можно это делать прямо на сайтах региональных регистраторов (европейский регистратор - это RIPE NCC). Затем, зная номер AS, принадлежащей конкретной компании, можно уже искать выделенные ей IPv6 префиксы.
Самый удобный такой поисковый сервис предоставляет Hurricane Electric (bgp.he.net). В итоге можно найти несколько огромных подсетей, которые как мы убедились, нереально просканировать на предмет живых хостов. Поэтому нужно составлять список часто используемых адресов и проводить сканирование уже точно по ним.
Каким образом можно собрать такой словарь? Если проанализировать, как в компаниях, которые уже внедрили IPv6, назначаются адреса клиентам, то можно выделить три основные группы: автоконфигурация, ручное назначение адресов и DHCPv6.
Автоконфигурация может осуществляться тремя способами: на основе MAC адреса, с использованием privacy option (то есть в случайном порядке и, например, меняться раз в неделю) и fixed random (полностью случайным образом). В данной ситуации возможно сканировать только те адреса, что строятся на основе MAC адреса. В результате могут выйти подсети, сравнимые по размеру с IPv4 класса А, процесс работы с такими сетями не очень быстрый, но всё равно это уже вполне реально. Например, зная, что в целевой компании массово используются ноутбуки определенного производителя, можно строить сканирование, основываясь на знаниях о том, как будет формироваться адрес.
Если адреса задаются вручную, то они могут назначаться либо случайным образом, либо по некоему шаблону. Второе, естественно, в жизни встречается гораздо чаще. А шаблон вполне может быть ::1, ::2, ::3 или ::1001, ::1002, ::1003. Также иногда в качестве адреса используются порты служб, в зависимости от сервера: например, работающий Web-сервер может иметь адрес ::2:80.
Если же брать DHCPv6, то в этом случае обычно адреса раздаются последовательно из пула (точно такое же поведение можно наблюдать и с обычным DHCPv4 сервером). Зачастую в DHCPv6 можно встретить пул вроде ::1000-2000 или ::100-200. Поэтому в итоге берём утилиту alive6 (она включена в комплект THC-IPV6 и, как и все рассматриваемые сегодня инструменты, по умолчанию входит в Kali Linux) и запускаем в таком виде:
При таком обнаружении живых машин будет меняться только часть, отвечающая за адрес хоста. Используя такой подход, можно достаточно эффективно и в разумные временные рамки находить живые хосты в обнаруженных ранее подсетях IPv6.
Но и это ещё не всё - естественно, можно использовать и DNS. С приходом IPv6 никуда не делись трансферы DNS-зоны и брутфорсы DNS по словарю. Применив все эти техники вместе, можно обнаружить до 80% всех включенных в сеть хостов в заданном IPv6 префиксе, что очень даже хорошо. В случае же компрометации одного лишь хоста обнаружитьвсех его соседей не составит никакого труда при помощи мультикаста. Достаточно будет запустить ту же утилиту alive6, только уже с ключом -l или воспользоваться пакетом LOKI как показано на скриншоте.
Из свежих фич THC-IPV6, и в частности утилиты alive6, можно отметить возможность искать живые хосты, передавая в качестве шаблона для перебора целую IPv4 подсеть:
Если же брать классическое сканирование, то здесь практически ничего не изменилось. Тот же Nmap, те же самые варианты сканирования портов, единственное отличие в том, что теперь сканировать можно только один хост за раз, но это вполне очевидное решение.
Пожалуй, единственная дополнительная техника при сканировании портов - это сканирование IPv4 вначале, а затем получение IPv6 информации по этим хостам. То есть некое расширение поверхности атаки. Для этого можно использовать как вспомогательный модуль метасплоита ipv6_neighbor, так и отдельные сценарии ipv6_surface_analyzer. Работают они по схожему принципу - принимают на входе префикс IPv4, сканируют его, находят живые хосты, проверяют порты на открытость, а затем, определив MAC адрес, высчитывают по нему IPv6 адрес и уже пробуют работать по нему. Иногда это действительно помогает, но в некоторых случаях (privacy option) IPv6 адреса обнаружить не удается, даже несмотря на то, что они есть.
Comments
Post a Comment