Салют 👋,
Данная лабораторная работа посвящена изучению nmap и как с ним работать. Эта лабораторная работа послужит подпоркой для старта в выявлении и определении уязвимостей на уровне сканера портов, что бы освоить базовые методы сканирования.
Nmap — первый этап разведки в AppSec: определение attack surface (какие сервисы доступны извне), выявление устаревших версий ПО с известными CVE и обнаружение мисконфигураций (открытые порты, незащищённые сервисы). Результаты nmap — входные данные для анализа рисков (Lab 04) и последующего DAST-тестирования (Lab 08).
Для сдачи данной работы также будет требоваться ответить на дополнительные вопросы по описанным темам.
lab03
├── exmp_targets.txt
├── nmapres.txt
├── nmapres_new.txt
└── README.mdNmap Network Mapper open-source утилита для исследования и анализа сетей, в которой основная цель выявление активных устройств, открытых портов, сервисов, версий ПО, ОС и других характеристик, которые способствуют определению вектора атаки и влияния, а также перехвата управления инфраструктурой или отслеживания. Фактически она рассматривается как виртуальная сетевая карта
-
Методы:
- TCP - connect,
- TCP SYN - stealth-сканирование,
- UDP
- FIN
- ACK
- Xmas tree
- NULL-сканирование
- ICMP ping
- FTP-proxy
- idle scan - невидимое сканирование
- и т.д.
-
Возможности:
- Определение ОС удалённых хостов с помощью отпечатков TCP/IP-стеков - OS fingerprinting
- Определение версий сервисов на открытых портах
- Сканирование сетей с динамическим управлением временем отправки пакетов
- Выявление пакетных фильтров, межсетевых экранов, маршрутизации и IP-фрагментации
- Nmap Scripting Engine позволяет автоматизировать поиск уязвимостей SQL Injection и т.д.
- Может избегать обнаружения, используя ложные хосты и изменение поведения сканера, и т.д.
- Может сканировать диапазон IP-адресов и множества целей
- Помогает определить, что открытый порт указывает на то, что служба запущена и ожидает соединений
-
Команды
$ nmap -iL targets.txt # множественные цели сканирований
-sL # List Scan
-sn # Ping Scan (обнаружение хостов без сканирования портов)
-Pn # all hosts online
-PS/PA/PU/PY[portlist] # TCP SYN/ACK, UDP or SCTP
-PE/PP/PM # ICMP echo, timestamp, netmask request
-PO[protocol list] # IP Protocol Ping
-n/-R # Не для DNS resolution
--dns-servers <serv1[,serv2],...> # custom DNS
--system-dns # Используйте OS
--traceroute- Типы сканирований
- Основные порты
nmap scan report for 10.1.1.10
Host is up, received echo-reply ttl 62 (0.024s latency).
Scanned at 2023-03-06 13:31:28 CET for 573s
Not shown: 993 closed tcp ports (reset)
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 62 OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
53/tcp open domain syn-ack ttl 62 dnsmasq 2.86
80/tcp open http syn-ack ttl 62 Apache httpd 2.4.52 ((Ubuntu))
139/tcp open netbios-ssn syn-ack ttl 62 Samba smbd 4.6.2
445/tcp open netbios-ssn syn-ack ttl 62 Samba smbd 4.6.2
631/tcp open ipp syn-ack ttl 62 CUPS 2.4
3306/tcp open mysql syn-ack ttl 62 MySQL (unauthorized)- 1. Опишите используемые методы по их назначению, как они функционируют и какие результаты могут дать для оценки. Используйте сноску из материалов выше по флагам команд.
- 2. Выведите на терминале и проанализируйте следующие команды консоли
$ nmap localhost
$ nmap -sC localhost
$ nmap -p- localhost
$ nmap -O localhost
$ nmap -p 80 localhost
$ nmap -p 443 localhost
$ nmap -p 8443 localhost
$ nmap -p "*" localhost
$ nmap -sV -p 22,8080 localhost
$ nmap -sn 192.168.1.0/24
$ nmap --open 192.168.1.1
$ nmap --packet-trace 192.168.1.1
$ nmap --packet-trace scanme.nmap.org
$ nmap --iflist
$ nmap -iL exmp_targets.txt
$ nmap -A -iL exmp_targets.txt
$ nmap -sA scanme.nmap.org
$ nmap -Pn scanme.nmap.org- 3. Запустите NSE-скрипты для поиска уязвимостей и сохраните результат
$ nmap --script=vuln localhost -vv
$ nmap -sV --script vuln -oN nmapres_new.txt localhost
$ grep "VULNERABLE" nmapres_new.txt- 4. Экспортируйте результаты в XML и конвертируйте в HTML-отчёт
$ mkdir -p ~/project/reports
$ nmap -sV -p 22,80,443,8080 --script vuln -oN ~/project/reports/nmapres_new.txt -oX ~/project/reports/nmapres_new.xml localhost
$ xsltproc ~/project/reports/nmapres_new.xml -o ~/project/reports/nmapres_new.htmlОткройте HTML-отчёт в браузере и опишите найденные уязвимости: порт, сервис, CVE (если есть), уровень критичности.
- 5. Используйте команду
treeи выведите все вложенные файлы по директориям. - 6. Найдите IP сетевой карты
Ethernet, которая соответствует вашей виртуальной машине используяifconfig(илиip addr) и выполните команду
$ nmap -sn inet_addr- 7. Определите ОС, данные ssh, telnet с помощью
nmapи выведите о них информацию. - 8. Результаты из
nmapres_new.txtперенесите вnmapres.txtи оставьте оба файла в локальном репозитории
$ cp nmapres_new.txt nmapres.txt- 9. Защитите результаты сканирования — файл
nmapres.txtсодержит информацию об уязвимостях и не должен быть доступен другим пользователям. Используйте навыки из Lab 02:
# Установите права: только владелец может читать и писать
$ chmod 600 nmapres.txt
$ ls -la nmapres.txt
# Проверьте от другого пользователя (smallman из Lab 02)
$ su - smallman
$ cat /path/to/nmapres.txt # ожидается: Permission denied
$ exit
# Добавьте ACL: только группа readgroup может читать (не писать)
$ setfacl -m g:readgroup:r nmapres.txt
$ getfacl nmapres.txt
# Убедитесь: пользователь вне readgroup не может прочитать файл
$ su - smallman
$ cat /path/to/nmapres.txt # если smallman в readgroup — OK, иначе — denied
$ exitОпишите в отчёте: почему результаты nmap-сканирования — это конфиденциальная информация. Что может сделать злоумышленник, получив ваш
nmapres.txt?
- 10. Добавьте
nmapres.txtиnmapres_new.txtв.gitignore— результаты сканирования не должны попадать в публичный репозиторий
$ echo "nmapres*.txt" >> .gitignore
$ git add .gitignore
$ git commit -S -m "chore: ignore nmap scan results"- 11. Оформить
README.mdпо аналогии и использоватьshield, etc. - 12. Составить
gistотчет и отправить ссылку личным сообщением
- Лаб. №2 — Linux — права доступа и ACL, используемые для защиты результатов
- Лаб. №4 — Risk Analysis — анализ рисков по результатам nmap
- Лаб. №8 — DAST — динамическое тестирование найденных сервисов
- CheatSheet: Docker — контейнеры для изоляции тестовых стендов
Если столкнулись с проблемами — смотрите Troubleshooting.