Автоматизация сканирования с помощью Nmap

NmapNmapBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабе вы научитесь автоматизировать сканирование с использованием Nmap с помощью shell-скриптов и планирования с использованием cron. Лабaratorная работа начинается с создания простого shell-скрипта scan.sh, содержащего команду Nmap SYN-сканирования, направленную на 192.168.1.1. Затем вы сделаете скрипт исполняемым с помощью chmod +x scan.sh и запустите его из терминала.

Лабараторная работа продолжается с расширением скрипта для включения нескольких сканирований с использованием текстового редактора. Наконец, вы настройте скрипт на автоматическое выполнение с использованием cron, настроив его с помощью crontab -e, и проверите автоматическое выполнение в терминале Xfce.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/scan_types("Scan Types and Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/syn_scan("SYN Scan") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/scripting_basics("Scripting Engine Basics") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") subgraph Lab Skills nmap/save_output -.-> lab-547088{{"Автоматизация сканирования с помощью Nmap"}} nmap/port_scanning -.-> lab-547088{{"Автоматизация сканирования с помощью Nmap"}} nmap/scan_types -.-> lab-547088{{"Автоматизация сканирования с помощью Nmap"}} nmap/target_specification -.-> lab-547088{{"Автоматизация сканирования с помощью Nmap"}} nmap/syn_scan -.-> lab-547088{{"Автоматизация сканирования с помощью Nmap"}} nmap/os_version_detection -.-> lab-547088{{"Автоматизация сканирования с помощью Nmap"}} nmap/service_detection -.-> lab-547088{{"Автоматизация сканирования с помощью Nmap"}} nmap/scripting_basics -.-> lab-547088{{"Автоматизация сканирования с помощью Nmap"}} nmap/script_management -.-> lab-547088{{"Автоматизация сканирования с помощью Nmap"}} end

Создайте скрипт сканирования с помощью echo "nmap -sS 192.168.1.1" > scan.sh

В этом шаге мы создадим простой shell-скрипт, который выполняет сканирование с использованием Nmap. Этот скрипт будет служить основой для автоматизации более сложных сканирований в дальнейшем. Мы будем использовать команду echo для записи команды Nmap в файл с именем scan.sh.

Сначала разберем, что делает echo. Команда echo просто выводит свои аргументы в стандартный вывод. Мы можем перенаправить этот вывод в файл с использованием оператора >.

Команда Nmap, которую мы будем использовать, выглядит так: nmap -sS 192.168.1.1. Разберем ее:

  • nmap: Это команда для запуска сканера Nmap.
  • -sS: Эта опция задает SYN-сканирование, которое является скрытым способом сканирования портов. Также это известно как "полуоткрытое" сканирование, потому что оно не завершает TCP-рукопожатие.
  • 192.168.1.1: Это целевой IP-адрес, который мы хотим отсканировать. Это обычный частный IP-адрес, но вам может потребоваться его изменить в зависимости от вашей сети.

Теперь создадим скрипт. Откройте терминал в директории ~/project (если вы там еще не находитесь) и выполните следующую команду:

echo "nmap -sS 192.168.1.1" > scan.sh

Эта команда создаст файл с именем scan.sh в вашей директории ~/project и запишет в него команду Nmap.

Для проверки того, что файл был создан правильно, вы можете использовать команду cat для отображения его содержимого:

cat scan.sh

Вы должны увидеть следующий вывод:

nmap -sS 192.168.1.1

Это подтверждает, что скрипт был создан с правильной командой Nmap.

Сделайте скрипт исполняемым с помощью chmod +x scan.sh

В этом шаге мы сделаем скрипт scan.sh исполняемым. По умолчанию новые файлы в Linux не имеют разрешения на выполнение. Мы должны явно дать это разрешение, чтобы иметь возможность запускать скрипт.

Команда chmod используется для изменения прав доступа к файлу или директории. Опция +x добавляет разрешение на выполнение к указанному файлу.

В терминале перейдите в директорию ~/project (если вы там еще не находитесь) и выполните следующую команду:

chmod +x scan.sh

Эта команда добавит разрешение на выполнение к файлу scan.sh.

Для проверки того, что скрипт теперь исполняемый, вы можете использовать команду ls -l для просмотра прав доступа к файлу.

ls -l scan.sh

Вы должны увидеть вывод, похожий на этот:

-rwxr-xr-x 1 labex labex 25 Oct 26 10:00 scan.sh

Буква x в строке -rwxr-xr-x показывает, что файл теперь исполняемый. В частности, первая тройка rwx относится к правам владельца (чтение, запись, выполнение), вторая r-x - к правам группы, а третья r-x - к правам для остальных.

Теперь, когда скрипт исполняемый, мы можем запустить его на следующем шаге.

Запустите скрипт с помощью ./scan.sh

В этом шаге мы выполним скрипт scan.sh, который мы создали и сделали исполняемым в предыдущих шагах.

Для запуска скрипта мы используем префикс ./. Это сообщает оболочке выполнить скрипт, расположенный в текущей директории.

В терминале убедитесь, что вы находитесь в директории ~/project, и выполните следующую команду:

./scan.sh

В терминале вы должны увидеть вывод Nmap. Вывод будет различаться в зависимости от того, доступен ли целевой хост (192.168.1.1), и какие сервисы на нем запущены. Если цель недоступна, вы, возможно, увидите сообщение вида "Host seems down." Если цель доступна, вы увидите список открытых портов и другую информацию о цели.

Важно: IP-адрес 192.168.1.1 - это общий стандартный адрес шлюза по умолчанию. Если это не правильный адрес устройства в вашей сети, сканирование может не дать полезных результатов. Вы можете заменить 192.168.1.1 на IP-адрес устройства в вашей сети, которое вы хотите отсканировать. Однако убедитесь, что у вас есть разрешение на сканирование цели. Сканирование сетей без разрешения является незаконным и неэтичным.

Поскольку вывод nmap может значительно различаться в зависимости от сети и цели, мы не можем надежно проверить вывод напрямую. Однако мы можем проверить, была ли команда выполнена, проверив историю команд.

Добавьте несколько сканирований в скрипт в текстовом редакторе Xfce

В этом шаге мы добавим больше команд сканирования Nmap в наш скрипт scan.sh с использованием текстового редактора Xfce. Это позволит нам выполнять несколько сканирований при одном выполнении скрипта.

Во - первых, откройте файл scan.sh в текстовом редакторе Xfce. Вы можете сделать это, щелкнув правой кнопкой мыши по рабочему столу, выбрав "Открыть терминал здесь", а затем введя следующую команду:

nano scan.sh

Это откроет файл scan.sh в текстовом редакторе nano.

В настоящее время скрипт содержит одну строку:

nmap -sS 192.168.1.1

Давайте добавим другую команду сканирования. Например, мы можем добавить пинг - сканирование (-sn), чтобы проверить, доступен ли другой хост:

nmap -sS 192.168.1.1
nmap -sn 192.168.1.2

Вы можете добавить столько команд сканирования, сколько хотите. Например, давайте добавим сканирование версии (-sV) для первого целевого адреса:

nmap -sS -sV 192.168.1.1
nmap -sn 192.168.1.2

Теперь скрипт сначала выполнит SYN - сканирование с определением версии для 192.168.1.1, а затем выполнит пинг - сканирование для 192.168.1.2.

Важно: не забудьте заменить 192.168.1.1 и 192.168.1.2 на IP - адреса устройств в вашей сети, которые вы хотите отсканировать, и убедитесь, что у вас есть разрешение на сканирование их.

Для сохранения изменений нажмите Ctrl+X, затем Y, чтобы подтвердить, а затем Enter, чтобы сохранить файл.

Теперь, когда вы запускаете скрипт с помощью ./scan.sh, он выполнит все команды Nmap, которые вы добавили.

Планирование сканирования с использованием cron с помощью crontab -e

В этом шаге мы настроим наш скрипт scan.sh на автоматическое выполнение с использованием cron. cron - это планировщик задач по времени в операционных системах, подобных Linux. Он позволяет вам планировать выполнение команд или скриптов в определенные моменты времени, даты или с определенным интервалом.

Для планирования задачи с использованием cron мы используем команду crontab. Команда crontab -e открывает файл crontab в текстовом редакторе (обычно nano в среде LabEx).

В терминале введите следующую команду:

crontab -e

Если это первый раз, когда вы используете crontab, вас может попросить выбрать редактор. Выберите nano, выбрав соответствующую цифру.

Файл crontab содержит список задач cron, каждая на отдельной строке. Каждая строка состоит из шести полей:

minute hour day_of_month month day_of_week command
  • minute: Минуты часа, когда задача будет выполняться (0 - 59).
  • hour: Часы дня, когда задача будет выполняться (0 - 23).
  • day_of_month: День месяца, когда задача будет выполняться (1 - 31).
  • month: Месяц года, когда задача будет выполняться (1 - 12).
  • day_of_week: День недели, когда задача будет выполняться (0 - 6, где 0 - воскресенье).
  • command: Команда для выполнения.

Например, чтобы выполнить скрипт scan.sh каждую минуту, добавьте следующую строку в файл crontab:

* * * * * /home/labex/project/scan.sh

Эта строка означает:

  • *: Каждую минуту
  • *: Каждый час
  • *: Каждый день месяца
  • *: Каждый месяц
  • *: Каждый день недели
  • /home/labex/project/scan.sh: Команда для выполнения (полный путь к нашему скрипту)

Важно: в реальном мире обычно не рекомендуется выполнять сканирование каждую минуту, так как это может нагружать сеть и целевые устройства. В целях тестирования в этом лабораторном стенде выполнение каждую минуту допустимо.

Для сохранения изменений нажмите Ctrl+X, затем Y, чтобы подтвердить, а затем Enter, чтобы сохранить файл.

Вы должны увидеть сообщение вида "crontab: installing new crontab". Это означает, что задача cron была успешно запланирована.

Задачи cron обычно выполняются в фоновом режиме без отображения никакого вывода. Чтобы увидеть вывод скрипта scan.sh, вы можете перенаправить его в файл. Например, чтобы перенаправить вывод в файл с именем scan.log в вашей директории ~/project, вы можете изменить запись задачи cron следующим образом:

* * * * * /home/labex/project/scan.sh > /home/labex/project/scan.log 2>&1

Часть > /home/labex/project/scan.log перенаправляет стандартный вывод в файл scan.log, а 2>&1 перенаправляет стандартную ошибку в тот же файл.

Проверьте автоматизацию в терминале Xfce

В этом шаге мы проверим, выполняется ли автоматически скрипт scan.sh с использованием cron. Поскольку мы запланировали выполнение скрипта каждую минуту, мы должны увидеть доказательства его выполнения.

Если вы перенаправляли вывод скрипта в файл (например, scan.log), вы можете проверить содержимое этого файла, чтобы убедиться, что скрипт выполняется. В терминале введите следующую команду:

tail /home/labex/project/scan.log

Эта команда покажет последние несколько строк файла scan.log. Если скрипт выполняется правильно, вы должны увидеть вывод сканирования Nmap в файле, обновляющийся каждую минуту.

Если вы не перенаправляли вывод в файл, у вас не будет файла scan.log. В этом случае вы можете создать его сейчас и перенаправить вывод задачи cron в него. Откройте снова файл crontab:

crontab -e

И измените запись задачи cron на:

* * * * * /home/labex/project/scan.sh > /home/labex/project/scan.log 2>&1

Сохраните файл crontab. Затем подождите минуту-две и проверьте снова файл scan.log с использованием команды tail /home/labex/project/scan.log.

Если вы по-прежнему не видите никакого вывода, возможно, проблема в скрипте или задаче cron. Проверьте следующее:

  • Убедитесь, что скрипт scan.sh имеет права на выполнение (chmod +x scan.sh).
  • Убедитесь, что запись задачи cron правильная в файле crontab (crontab -l, чтобы вывести список задач cron).
  • Убедитесь, что в записи задачи cron используется полный путь к скрипту (/home/labex/project/scan.sh).
  • Проверьте наличие ошибок в самом скрипте.

Важно: поскольку задача cron выполняется каждую минуту, файл scan.log быстро будет расти. Возможно, вы захотите удалить задачу cron после того, как убедитесь, что она работает правильно, чтобы избежать заполнения дискового пространства. Вы можете удалить задачу cron, отредактировав файл crontab (crontab -e) и удалив строку, которую вы добавили.

Резюме

В этом лабораторном занятии мы узнали, как автоматизировать сканирование с использованием Nmap с помощью shell-скриптов и cron. Во - первых, мы создали простой shell-скрипт под названием scan.sh, содержащий команду Nmap SYN-сканирования для определенного IP-адреса. Затем мы использовали chmod +x scan.sh, чтобы сделать скрипт исполняемым и возможность запускать его непосредственно из терминала.

Далее мы расширили скрипт для включения нескольких сканирований с использованием текстового редактора. Наконец, мы запланировали выполнение скрипта автоматически с использованием cron, настроили задачу cron с помощью crontab -e и проверили автоматизацию в терминале Xfce. Это показало, как автоматизировать задачи сканирования сети для регулярного мониторинга или безопасности.