Суть проблемы и решение
Большинство популярных инструментов для пентестинга и баг-баунти (например, Nikto, Nmap, sslscan) работают в одном потоке. При сканировании сотен или тысяч хостов это создает узкое горлышко. Interlace от разработчиков Michael Skelton (@codingo_) и Sajeeb Lohani (@sml555_) решает эту проблему, выступая оберткой, которая автоматически распараллеливает выполнение любых команд над списком целей. Инструмент написан на Python 3 и устанавливается стандартным методом: python3 setup.py install.
Ключевые возможности и метрики
Interlace не требует переписывания скриптов. Он поддерживает сложные нотации целей и портов, а также переменные подстановки, которые заменяются в runtime. По умолчанию инструмент запускает 5 потоков, но это значение легко настраивается через флаг -threads. Таймаут по умолчанию составляет 600 секунд, что позволяет обрабатывать медленные ответы без зависания всего процесса.
Синтаксис и переменные
Гибкость инструмента обеспечивается системой переменных, которые подставляются в команды. Ниже приведена таблица основных переменных, доступных для использования в аргументах -c или -cL:
| Переменная | Описание замены |
|---|---|
_target_ |
Расширенный список целей (хост/CIDR) |
_cleantarget_ |
Цель без префиксов http:// или https:// |
_safe-target_ |
Цель с экранированием для безопасного запуска в shell |
_port_ |
Расширенный список портов (например, 80, 443) |
_output_ |
Путь к папке вывода, указанной через -o |
_proxy_ |
Список прокси, указанных через -pL |
Управление потоками: Blocker и Blocks
Одной из самых мощных функций является контроль порядка выполнения команд на уровне отдельной цели. Это критично для сценариев, где результат одной команды зависит от подготовки, сделанной другой.
- Blocker: Останавливает выполнение команд, идущих после него, пока не завершатся все команды, идущие до него, для текущего хоста. Например, создание директории перед запуском Nmap.
- Blocks (именованные блоки): Позволяют группировать команды. Команды внутри блока
_block:name_выполняются последовательно для цели, но другие потоки могут параллельно обрабатывать другие цели или блоки. Это максимизирует использование CPU при сложных рабочих процессах.
Примеры использования
Для сканирования списка хостов из файла targets.txt с использованием 5 потоков и сохранением результатов Nikto в отдельные файлы, команда выглядит так:
interlace -tL ./targets.txt -threads 5 -c "nikto --host _target_ > ./_target_-nikto.txt" -v
Если нужно просканировать несколько портов (80 и 443) для тех же целей, используется переменная _port_:
interlace -tL ./targets.txt -threads 5 -c "nikto --host _target_:_port_ > ./_target_-_port_-nikto.txt" -p 80,443 -v
Инструмент поддерживает ввод целей через STDIN, CIDR-нотацию (автоматическое раскрытие в отдельные IP) и глобусы, что делает его универсальным решением для масштабирования любых однопоточных Linux-утилит.
Источник: Github ↗
