Skip to content

Latest commit

 

History

History
246 lines (192 loc) · 21.8 KB

File metadata and controls

246 lines (192 loc) · 21.8 KB

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

Nmap — первый этап разведки в AppSec: определение attack surface (какие сервисы доступны извне), выявление устаревших версий ПО с известными CVE и обнаружение мисконфигураций (открытые порты, незащищённые сервисы). Результаты nmap — входные данные для анализа рисков (Lab 04) и последующего DAST-тестирования (Lab 08).

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


Структура репозитория лабораторной работы

lab03
├── exmp_targets.txt
├── nmapres.txt
├── nmapres_new.txt
└── README.md

Материал

Nmap 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
  • Типы сканирований
TCP Connect
-sT
Полное TCP-соединение (3-way handshake). Надёжный, но заметный — логируется на стороне сервера. Работает без root.
TCP SYN (stealth)
-sS
Отправляет SYN, получает SYN/ACK, но не завершает handshake (RST). Быстрый, менее заметный. Требует root.
TCP NULL
-sN
Пакет без флагов. Открытый порт не отвечает, закрытый — RST. Обходит простые файрволы, не работает на Windows.
TCP FIN
-sF
Только флаг FIN. Аналогично NULL — закрытый порт ответит RST, открытый промолчит. Обход stateless файрволов.
TCP XMAS
-sX
Флаги FIN+PSH+URG одновременно (как «ёлочная гирлянда»). Та же логика: закрытый → RST, открытый → тишина.
TCP Idle (zombie)
-sI
Невидимое сканирование через «зомби»-хост. Ваш IP не виден жертве — трафик идёт от третьей машины.
UDP
-sU
Сканирование UDP-портов. Медленное (нет handshake), но находит DNS (53), SNMP (161), DHCP (67) — часто забытые сервисы.
OS Detection + Scripts
-A
Агрессивный режим: OS fingerprint, версии сервисов, traceroute и NSE-скрипты. Полная картина, но шумный.
  • Основные порты
20/21FTP (File Transfer Protocol)
TCP
Передача файлов. Данные и пароли в открытом виде — уязвим к перехвату. Заменяется на SFTP/SCP.
22SSH (Secure Shell)
TCP
Защищённый удалённый доступ. Шифрованный канал. Основная цель brute-force атак — проверяйте версию и конфиг.
23Telnet
TCPнебезопасный
Всё в открытом тексте — пароли, команды. Открытый порт 23 — критическая находка. Должен быть закрыт.
25SMTP (Mail Transfer)
TCP
Отправка почты. Open relay на порту 25 — спам-рассылки от вашего имени. Проверяйте аутентификацию.
53DNS (Domain Name System)
TCP/UDP
Разрешение имён. DNS zone transfer (AXFR) раскрывает всю инфраструктуру. DNS amplification — DDoS вектор.
80HTTP
TCP
Веб без шифрования. Основная поверхность атаки: XSS, SQLi, SSRF. Вход в DAST-тестирование (Lab 08).
443HTTPS
TCP
Веб с TLS. Проверяйте: версию TLS (≥1.2), срок сертификата, слабые шифры. `nmap --script ssl-enum-ciphers`.
3306MySQL Database
TCP
СУБД доступна извне — критическая мисконфигурация. Должна быть только на 127.0.0.1 или в приватной сети.

Пример результата

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 отчет и отправить ссылку личным сообщением

Смотри также


Troubleshooting

Если столкнулись с проблемами — смотрите Troubleshooting.

Links