
Одитиране на локална мрежа с Nmap и Wireshark Това е един от най-ефективните начини да разберете какво наистина се случва във вашата инфраструктура, да откриете свръхекспонирани услуги и да видите каква информация би могъл да види атакуващ, ако проникне във вашия мрежов сегмент. Това са два добре установени инструмента, широко използвани както от администратори, така и от тестери за проникване. Когато се комбинират ефективно, те ви позволяват да преминете от обикновен моментен преглед на отворените портове към подробен анализ на всеки пакет в транзит.
В тази статия ще съберем Всичко необходимо, за да организирате пълен одит От локална мрежа: от концепциите за сканиране на портове, TCP флагове и типове сканиране в Nmap, до разширено филтриране с Wireshark за откриване на тези сканирания и игра на котка и мишка с техники за избягване. Ще видите и примери за учебни среди с виртуални машини, типични лабораторни упражнения (ping sweep, SYN scan, NULL scan, MITM с Bettercap) и няколко допълнителни инструмента, които допълват Nmap и Wireshark.
Какво е сканиране на портове и защо е важно при одит?
Сканиране на портове Това е автоматизиран процес, който изпраща пакети до всички или някои от 65 535 TCP/UDP порта на един или повече компютри, за да види кои от тях отговарят и как. От тези отговори можем да заключим кои услуги са активни, каква операционна система може да се изпълнява и дори дали има защитни стени, филтриращи данните.
За нападателя, доброто сканиране на портове е начинът да локализирайте „входни точки“ и слаби местаТова включва неправилно конфигурирани услуги, остарели версии с известни уязвимости или протоколи в обикновен текст, като Telnet, FTP или HTTP. За администратор или одитор, същото сканиране разкрива какво е изложено на риск, какво трябва да бъде спряно и какво се нуждае от по-добра защита.
Важно е да е ясно, че Не е добра идея да отваряте повече портове, отколкото е необходимо.Много рутери, сървъри или приложения могат да оставят портовете отворени „просто така“ или защото някой ги е отворил за тестване и никой никога повече не ги е затворил. Сканирането на вашата собствена мрежа с Nmap ви помага да получите точен опис на това, което е достъпно отвътре или отвън.
В допълнение към инвентара, важно е Използвайте защитни стени и системи за откриване на проникване които филтрират нежелан достъп и регистрират подозрителни опити за свързване. И, разбира се, поддържайте системите, рутерите и услугите актуализирани, за да намалите въздействието на всички портове, които по бизнес причини е абсолютно необходимо да държите отворени.

Какво е Nmap и какво може да прави в локална мрежа?
Nmap (мрежов картограф) Това е безплатна програма с отворен код, предназначена да открива устройства в мрежа, да анализира кои портове са отворени и кои услуги слушат във фонов режим. Тя работи чрез командния ред в Linux, Windows и macOS и има опционален графичен интерфейс, наречен Zenmap.
С Nmap можете откриване на хостове както в локалната мрежа, така и през интернет: компютри, рутери, комутатори, IoT устройства, сървъри и др. В допълнение към изброяването на отворените или филтрираните портове, той може да се опита да идентифицира операционната система, версията на услугите и да стартира скриптове за сигурност (NSE), които автоматизират тестовете за проникване.
Сред най-важните му характеристики е поддръжката на различни видове сканиранияПоддържа TCP (SYN, connect, FIN, NULL, Xmas…), UDP, ICMP и някои по-напреднали методи, които се опитват да заобиколят определени защитни стени. Също така позволява работа с IPv4 и IPv6 и сканиране на отделни хостове, IP диапазони или цели подмрежи.
Една от силните страни на Nmap е, че Позволява сканиране на големи обеми цели. доста ефективно. Може да контролира нивото на агресивност, скоростта на предаване на пакети и степента на паралелизъм. Това е полезно както за планирани одити на корпоративни мрежи, така и за симулации в учебни лаборатории.
Състояния на портове и видове сканиране в Nmap
Когато Nmap завърши сканиранетоТой класифицира всяко пристанище в едно от няколко състояния, които е важно да се разберат, тъй като тяхната интерпретация е от основно значение за одита:
- отворенИма приложение, което приема връзки на този порт (TCP или UDP). Това е очевидна повърхност за атака.
- затворенПортът отговаря, но никоя услуга не слуша. Хостът е активен, но този конкретен порт не предоставя трафик. В идеалния случай той трябва да бъде блокиран от защитна стена.
- филтриранЗащитна стена или филтър не позволяват на Nmap да определи дали е отворен или затворен (няма ясен отговор).
- отворен|филтриранНе е възможно да се знае дали е отворен или филтриран, което е типично за някои специални UDP или TCP сканирания (FIN, NULL, Xmas).
- затворен|филтриран: двусмислено състояние, използвано в много специфични техники, като например сканиране на IP при неактивност.
При истински одит обикновено започваме с бързо сканиране на най-често срещаните портове за да получите първата снимка:
nmap 192.168.1.2
Ако искаме да дадем всичко от себе си, е възможно принудително сканиране на всички 65 535 порта от домакин:
nmap -p 1-65535 192.168.1.2
Също така е много често срещано да се ограничава диапазонът до конкретни портове или блокове, които ни интересуват. Например, от 20 до 200:
nmap -p 20-200 192.168.1.2
В допълнение към състоянието на порта, Nmap ви позволява да правите откриване на версия на операционната система и услугата с една единствена команда, с цената на малко по-шумно изпълнение:
nmap -A -v 192.168.1.2
Това откриване на операционна система не е перфектно, но обикновено е доста точно като цяло. В света на Linux, определянето на точния модел и конкретна версия е съвсем различна история.
TCP флагове, видове сканиране и как да ги открием
Nmap се възползва от различните TCP флагове (SYN, ACK, FIN, RST, PSH, URG…) за извършване на повече или по-малко скрито сканиране. В предизвикателства от типа CTF, например, е обичайно да се използва „скрито“ SYN сканиране. В защитни среди е полезно да се разпознават тези модели в лог файлове или Wireshark.
За да разберете сканиранията, трябва да сте наясно с Класическо TCP ръкостисканеSYN → SYN/ACK → ACK. Оттам нататък могат да се възпроизведат вариации, които изпращат или не изпращат определени флагове и прекъсват връзката с RESET, вместо цикълът да завърши нормално.
Много обяснения присвояват числови стойности на TCP флаговете, така че те да могат да бъдат сумирани и филтрирани. Например:
| глава | доблест |
|---|---|
| СИН | 1 |
| SYN/ACK | 2 |
| ACK | 4 |
| ДАННИ | 8 |
| FIN | 16 |
| RESET | 32 |
С този метод на кодиране е възможно например да се използва полето в Wireshark tcp.completeness и филтрирайте по сбора от флаговете, които се появяват в конкретен поток, за да локализирате модели на сканиране.
Пълно TCP ръкостискане (сканиране за свързване)
При „пълно“ сканиране с Nmap (т.нар. Сканиране на TCP връзка, опция -sT), клиентът установява цялата връзка със сървъра: SYN → SYN/ACK → ACK и след обмен на трафик, тя се затваря с RESET или нормален FIN.
Ако заснемете тази последователност във Wireshark и сумирате стойностите на флаговете според таблицата по-горе (например SYN + SYN/ACK + ACK + RESET), можете да филтрирате с tcp.completeness = 39 да се локализират установени и напълно прекъснати връзки.
Този тип сканиране е най-лесният за откриване, тъй като Това оставя следа в сервизните логове. (уеб, FTP, Telnet, IMAP и др.) и в системните лог файлове. В типична лаборатория, ако имате работещ rsyslog, ще видите съобщения в /var/log/syslog, /var/log/auth.log, /var/log/daemon.log и подобни услуги, когато Nmap завърши ръкостискането към услуги като in.fingerd, inetd, telnetd, ftpd, dovecot o postfix/smtpd.
SYN „скрито“ сканиране
El SYN сканиране или „скрито“ сканиране (опция -sSТова е един от най-често използваните методи, защото е бърз и по принцип по-малко забележим. Тук Nmap изпраща SYN сигнал. Ако портът е отворен, сървърът отговаря със SYN/ACK и вместо да отговори с ACK за завършване на връзката, скенерът прекъсва връзката с RESET.
От гледна точка на Wireshark, типичната последователност на отворен порт ще бъде SYN → SYN/ACK → RST, чиято сума от флаговете съгласно предишната схема би била (1 + 2 + 32) = 35. Филтрирането по тази стойност на tcp.completeness Възможно е да се локализират връзки, които изглеждат като SYN сканирания, без пълно ръкостискане.
На ниво лог на приложението този метод е по-дискретен, защото Повечето услуги не успяват да регистрират сесияАко обаче системата има правила за защитна стена, които регистрират SYN пакети за иницииране на връзка, ще се появят записи за опити за връзка.
NULL сканиране и други „странни“ сканирания
Друга класическа техника е НУЛЕВО сканиране (опция -sN), при което Nmap изпраща TCP пакети без активни флагове. Въпреки че може да звучи странно, някои TCP стекове реагират различно на отворени или затворени портове, което позволява на Nmap да заключи състоянието на порта.
При NULL сканиране, Ако портът е затворен, обикновено връща RST.Въпреки че ако е отворен или филтриран, може да не реагира. За да откриете това с Wireshark, можете да използвате филтри върху... tcp.flags и оставете само онези сегменти, чиито всички флагове са зададени на нула.
По същия начин имаме сканирания като Коледно сканиране (FIN + PSH + URG), FIN сканирането или подобни комбинации, които се опитват да използват нюансите на TCP стандарта или специфични имплементации, за да открият портове, без да следват типичните модели на ръкостискане.
Контролиране на размера на прозореца като подсказка на Nmap
Друга функция, която може да се използва за откриване на сканирания, е Размер на прозореца TCPРазмерът на прозореца е количеството данни, които хостът обявява, че може да получи. Някои версии на Nmap използват фиксирани стойности за някои видове сканирания.
Например, при стандартно Nmap SYN сканиране е обичайно да се открие SYN пакетите имат размер на прозореца от 1024 байта, докато при „нормални“ връзки на конкретна система се използват различни стойности (като 64240 или 65535, в зависимост от операционната система и конфигурацията).
В Wireshark можете да приложите филтър като tcp.window_size == 1024 комбинирано с определени флагове за локализиране на подозрителни модели. Като атакуващ или тестер за проникване, Nmap ви позволява да променяте това поведение с параметри като --win за да се избегне оставянето на такъв очевиден подпис.

Откриване и анализ на Wireshark сканирания и „необичайни“ портове
Wireshark Това е протоколният анализатор par excellence В света на мрежовата сигурност, той улавя пакети, декодира ги слой по слой (Ethernet, IP, TCP/UDP, HTTP, TLS и др.) и ви позволява да прилагате много фини филтри, за да запазите само трафика, който ви интересува да разследвате.
Много практичен начин за откриване на сканирания е филтрирането по дейност в необичайни пристанищаАко имате легитимен уеб сървър, е нормално да виждате трафик към портове 80 или 443. Не толкова нормално е да виждате много опити за произволно подбиране на портове като 1234, 31337 или 4444.
В корпоративна мрежа можете да създадете списък с „Подозрителни“ портове, свързани със злонамерени рамки или често използвани инструменти за атака и филтриране в Wireshark по тези портове, за да се види дали има сонди или неочаквани връзки. Това може да се подпомогне от публични електронни таблици, които компилират портове, свързани със злонамерен софтуер и рамки за експлоатация.
От защитна гледна точка, Wireshark също позволява Вижте как се държат различните видове Nmap сканирания които сами пускате в лабораторията си, за да се научите да ги разпознавате: брой пакети на порт, флагове, време между пакетите, системни отговори и т.н.
Комбиниране на филтри като например tcp.completeness, tcp.flagsБроят на различните портове, докоснати за кратко време, и размерите на прозорците ви позволяват да изградите ръчни правила или да получите вдъхновение за IDS/IPS правила.
Типична лабораторна работа: сканиране с Nmap и заснемане с Wireshark
В много образователни среди, a виртуализирана мрежова среда с VirtualBox да се практикува безрисково сканиране и анализ на трафика. Типичен пример включва три GNU/Linux машини във вътрешна мрежа: interno1 (192.168.100.11), interno2 (192.168.100.22) и observador (192.168.100.33), всеки с фиксиран MAC адрес.
Услугите, които се изпълняват по подразбиране на тези машини, обикновено са многобройни: Apache 2, Telnet, SSH, FTP, Finger, MySQL, SMTP (Postfix), POP3 и IMAP (Dovecot), DNS (BIND)... идеално за скенер като Nmap, за да може да намери добър брой портове.
Първата стъпка в тази лаборатория обикновено е Активиране на rsyslog на internal1 за записване на всичко, което се случва: активира се с systemctl enable rsyslog y systemctl start rsyslogПо този начин лог файловете започват да се запълват /var/log като syslog, auth.log, daemon.log o kernel.log.
От наблюдателната машина, a пинг сканиране Използвайте Nmap, за да откриете кои устройства са активни в мрежата 192.168.100.0/24:
nmap -sP 192.168.100.0/24
След като активните хостове бъдат идентифицирани (с изключение на самия наблюдател), сканиранията от типа TCP връзка срещу всеки от тях, за да видите кои портове са отворени и кои услуги работят:
nmap -sT -v -T4 192.168.100.11
nmap -sT -v -T4 192.168.100.22
След това се повтаря срещу internal1, добавяйки откриване на операционна система и версия на услугите:
nmap -sT -O -sV -T4 192.168.100.11
След това се консултират лог файловете на interno1, например с tail -200 /var/log/syslog | lessда проверя Как са били записани тези сканирания? в различните демони и услуги и оценете следата, оставена от TCP connect сканиране.
Сравняване на шумни и „скрити“ сканирания със защитни стени и регистрационни файлове
За да се види разликата в проследяването между различните Nmap техники, в същата лаборатория a правилото на iptables за internal1 който записва всеки опит за иницииране на TCP връзка (SYN пакети със статус NEW) с лесно разпознаваем префикс:
iptables -A INPUT -i enp0s3 -p tcp \
--tcp-flags SYN SYN -m state --state NEW \
-j LOG --log-prefix "INICIO CONEXION:"
Докато файлът се наблюдава /var/log/syslog с tail -fОт наблюдателя, три различни сканирания се тестват спрямо internal1:
- Сканиране на TCP връзки (
-sT). Генерира записи „START CONNECTION:“ и освен това регистрира услугите, които завършват ръкостискането. - SYN сканиране (
-sS). Това генерира записи „START CONNECTION:“, но повечето услуги не регистрират сесия, защото връзката не е завършена. - NULL сканиране (
-sNНе повдига SYN флага, следователно не съответства на правилото на защитната стена и Префиксът не се показва в лог файловете, което го прави по-дискретно в очите на тази конкретна политика.
Това сравнение ни помага да разберем, че Не всички видове сканирания се откриват, използвайки едни и същи правила. И че като защитници трябва да отидем отвъд „само SYN“, ако искаме да видим повече замаскирани опити.
От сканиране до MITM: Bettercap, Wireshark и криптирани услуги
Във втората част на практиката, машината за наблюдение се използва за Извършване на ARP и MITM атаки за отравяне с Bettercap и след това анализирайте заснетия трафик с Wireshark или със самия модул net.sniff от Bettercap. Целта е да се сравни излагането на ясни протоколи (Telnet, HTTP) спрямо криптирани алтернативи (SSH, HTTPS).
Преди това, SSL поддръжката е активирана в Apache на interno2, генерирайки самоподписан сертификат с make-ssl-cert за /etc/apache2/ssl/apache.pem, конфигуриране default-ssl.conf За да използвате този файл като сертификат и ключ, активирайте SSL модула с a2enmod ssl и SSL сайтът по подразбиране с a2ensite default-sslи рестартиране на Apache.
Първата проверка се извършва акула в наблюдател Слуша се във вътрешния мрежов интерфейс, а междувременно се отварят Telnet и HTTP сесии от internal1 към internal2. Тъй като няма атака „човек по средата“, трафикът протича директно между internal1 и internal2 и tshark почти не вижда този поток. Това показва, че без допълнителни трикове, трети хост в същата мрежа не винаги вижда външен трафик.
Ако прегледате ARP таблиците за internal1 и internal2 (arp -n), наблюдава се как всеки от тях свързва IP адреса на другия с реалния си MAC адрес, вече само като наблюдател със своя IP и MAC адрес, без смущения.
ARP отравяне и заснемане на трафик
Следващата стъпка е да стартирате Bettercap в режим на наблюдател и да активирате модулите net.recon y net.probe За откриване на устройства в мрежата и проверка дали 192.168.100.11, 192.168.100.22 и 192.168.100.33 се показват със съответните им MAC адреси. По желание може да се активира уеб интерфейсът на Bettercap, въпреки че това не е задължително за практически цели.
Успоредно с това се стартира отново акула в наблюдател за да видите кои ARP рамки се появяват. Целите на модула се конфигурират от конзолата на Bettercap. arp.spoof (internal1 и internal2) и атаката се активира с:
set arp.spoof.internal true
set arp.spoof.targets 192.168.100.11,192.168.100.22
arp.spoof on
В този момент Bettercap започва да изпраща фалшиви ARP отговори гарантиране на всяка машина, че IP адресът на другия хост (internal1 или internal2) съответства на MAC адреса на наблюдателя. Вземайки предвид Въпрос 1Изпратените ARP съобщения са по същество „безплатни“ (непоискани) отговори, които актуализират ARP кеша на жертвите. В резултат на това, в ARP таблиците на internal1 и internal2, IP адресът на другия компютър започва да сочи към MAC адрес 08:00:27:33:33:33 (на наблюдателя), което ефективно го превръща в човек по средата.
Сравняване на Telnet, SSH, HTTP и HTTPS под MITM
Когато MITM е активен, модулът се използва net.sniff от Бетъркап За да прехвърлите трафика между internal1 и internal2 в различни .pcap файлове в зависимост от тестваната услуга, изключвайки ARP с филтър:
set net.sniff.filter "not arp"
set net.sniff.output /tmp/telnet.pcap
net.sniff on
Междувременно, от internal1 се отваря Telnet сесия към internal2 с потребителско име „потребителско име“ и парола „потребителско име“, изброяват се файловете и сесията приключва. Файлът /tmp/telnet.pcap След това се анализира с Wireshark и е лесно да се види идентификационни данни и команди в обикновен текст следвайки съответния TCP поток.
Експериментът се повтаря, използвайки SSH, като се запазва в /tmp/ssh.pcapИ този път, въпреки че може да се наблюдава установяването на SSH връзката и обменът на ключове, Данните за потребителското име и паролата са криптирани.Не е възможно да се видят идентификационни данни в Wireshark, само криптирани рамки.
Същото важи и за HTTP спрямо HTTPS: с net.sniff дъмпване към /tmp/http.pcap, навигация с Lynx или графичен браузър към http://interno2.ssi.net Това оставя HTTP заявките и отговорите напълно четливи (заглавки, бисквитки, параметри и др.). Въпреки това, когато се повтаря с https://interno2.ssi.net и анализиране /tmp/https.pcap, наблюдава се, че TLS ръкостискане (ClientHello, ServerHello, сертификати и др.) и след това само криптиран трафик, обозначен като TLS 1.3.
С филтъра в ръка можете да фокусирате погледа си върху tls В Wireshark следвайте съответния TCP поток и проверете дали, въпреки че целият трафик преминава през атакуващия, няма достъп до съдържанието в открит текст освен ако не успее да разбие или злоупотреби с криптирането по някакъв начин.
Персонализиране, Nmap NSE и интеграция с други решения
Една от причините Nmap да остава толкова мощен днес е високата му степен на персонализация и автоматизацияНа ниво команден ред почти всичко е конфигурируемо: специфични портове, времеви ограничения, брой повторни опити, степен на паралелизъм, ниво на скритост (профили от T0 до T5), фрагментация на пакети, фалшифициран IP и MAC адрес на източника и др.
Има и Nmap скриптов енджин (NSE)Тази екосистема от скриптове ви позволява да отидете далеч отвъд просто проверка на „порт отворен/затворен“. Има скриптове за груба атака на SSH или FTP, откриване на несигурни конфигурации, проверка за известни уязвимости, получаване на подробни банери, тестване срещу уеб сървъри, Samba, DNS и други.
Например, за да се опитате да извършите атака с груба сила върху SSH порт 22 на конкретен хост, използвайки два речника, можете да използвате:
nmap -p 22 --script ssh-brute --script-args userdb=usuarios.txt,passdb=claves.txt,ssh-brute.timeout=4s 99.99.99.99
По подобен начин, за да проверите дали даден FTP сървър позволява анонимен достъп или да използвате brute force идентификационни данни, има скриптове като например ftp-anon o ftp-brute. Те се изстрелват, привързани към -sV -sC или поотделно, според случая.
Друго предимство е това Nmap се интегрира много добре с други инструменти. Резултатите могат да бъдат запазени в множество формати (обикновен текст, XML, grep-съвместим, комбиниран с -oA) и след това да подават данни за последваща обработка, табла за управление или дори инструменти като Metasploit, системи за инвентаризация или механизми за корелация на събития.
На корпоративно ниво, внедряването на Nmap като част от програма за сигурност включва дефиниране на правила за употреба, планиране на сканиране, анализ на резултатите и непрекъснати актуализацииЕднократното сканиране и прибирането му в чекмедже не е много полезно; трябва да повтаряте, сравнявате и да действате въз основа на откритията.
Взети заедно, използването на Nmap и Wireshark за одит на локална мрежа, допълнено от други инструменти, предоставя много пълна картина за това как се държат услугите, какво всъщност е изложено на риск и каква информация може да види или манипулира атакуващият, което ясно показва защо си струва да се инвестира в криптиране (SSH, HTTPS), затваряне на ненужни портове, добра конфигурация на защитна стена и постоянно наблюдение на лог файловете и мрежовия трафик.