# Nmap Сканирование и идентификация сервисов
## Общий Обзор
Сканирование сети при помощи пинг скана
```
nmap -n -sn 192.168.56.0/24
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-05 06:54 EST
Nmap scan report for 192.168.56.103
Host is up (0.00012s latency).
Nmap scan report for 192.168.56.105
Host is up (0.0027s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 8.38 seconds
```
**Сканирование единичного хоста**
```
$ nmap 192.168.56.104
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-05 07:16 EST
Strange read error from 192.168.56.104 (104 - 'Connection reset by peer')
Nmap scan report for 192.168.56.104
Host is up (0.50s latency).
Not shown: 989 closed tcp ports (conn-refused)
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-secs
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
Nmap done: 1 IP address (1 host up) scanned in 15.28 seconds
```
**Сканирование определенного порта**
```
nmap 192.168.56.105 -p 22 -n
tarting Nmap 7.93 ( https://nmap.org ) at 2023-03-05 08:59 EST
Nmap scan report for 192.168.56.105
Host is up (0.00032s latency).
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
```
**Сканирование диапазона портов**
```
$ nmap 192.168.56.104 -p 1-1024 -n
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-05 09:02 EST
Nmap scan report for 192.168.56.104
Host is up (0.00038s latency).
Not shown: 1015 closed tcp ports (conn-refused)
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
Nmap done: 1 IP address (1 host up) scanned in 1.94 seconds
```
**Определение ОС**
Во время сканирования, с определением ОС, nmap не смог определить опрерационную систему, и отдал так называемый TCP/IP fingerprint:
В документации написано,что такое бывает и они просят писать им в таких случаях, если известна версия операционки, также в доке есть информация
чтобы разобартьсяс этим отпечатком, также рекомендуют сканировать
с флагом -sV , но вообще странно, что он не смог идентифицировать Windows Server 2019

```
sudo nmap -O 192.168.56.104
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-05 07:23 EST
Nmap scan report for 192.168.56.104
Host is up (0.00044s latency).
Not shown: 989 closed tcp ports (reset)
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
MAC Address: 08:00:27:E4:71:55 (Oracle VirtualBox virtual NIC)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.93%E=4%D=3/5%OT=53%CT=1%CU=38100%PV=Y%DS=1%DC=D%G=Y%M=080027%TM
OS:=640489E6%P=x86_64-pc-linux-gnu)SEQ(SP=106%GCD=1%ISR=10C%TI=I%CI=I%II=I%
OS:SS=S%TS=U)OPS(O1=M5B4NW8NNS%O2=M5B4NW8NNS%O3=M5B4NW8%O4=M5B4NW8NNS%O5=M5
OS:B4NW8NNS%O6=M5B4NNS)WIN(W1=FFFF%W2=FFFF%W3=FFFF%W4=FFFF%W5=FFFF%W6=FF70)
OS:ECN(R=Y%DF=Y%T=80%W=FFFF%O=M5B4NW8NNS%CC=Y%Q=)T1(R=Y%DF=Y%T=80%S=O%A=S+%
OS:F=AS%RD=0%Q=)T2(R=Y%DF=Y%T=80%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=)T3(R=Y%DF=Y%T=
OS:80%W=0%S=Z%A=O%F=AR%O=%RD=0%Q=)T4(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD=0%
OS:Q=)T5(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=80%W=0%S=
OS:A%A=O%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=
OS:Y%DF=N%T=80%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%
OS:T=80%CD=Z)
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.45 seconds
```
А вот сканирование с -sV, тут он уже определил хостнейм и ОС и расширенную информацию о запущенных сервисах
```
sudo nmap -O -sV 192.168.56.104
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-05 07:27 EST
Nmap scan report for 192.168.56.104
Host is up (0.00052s latency).
Not shown: 989 closed tcp ports (reset)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2023-03-05 23:27:17Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: mydc.local0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: mydc.local0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
MAC Address: 08:00:27:E4:71:55 (Oracle VirtualBox virtual NIC)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.93%E=4%D=3/5%OT=53%CT=1%CU=40767%PV=Y%DS=1%DC=D%G=Y%M=080027%TM
OS:=64048AB7%P=x86_64-pc-linux-gnu)SEQ(SP=FD%GCD=1%ISR=10B%TI=I%CI=I%II=I%S
OS:S=S%TS=U)OPS(O1=M5B4NW8NNS%O2=M5B4NW8NNS%O3=M5B4NW8%O4=M5B4NW8NNS%O5=M5B
OS:4NW8NNS%O6=M5B4NNS)WIN(W1=FFFF%W2=FFFF%W3=FFFF%W4=FFFF%W5=FFFF%W6=FF70)E
OS:CN(R=Y%DF=Y%T=80%W=FFFF%O=M5B4NW8NNS%CC=Y%Q=)T1(R=Y%DF=Y%T=80%S=O%A=S+%F
OS:=AS%RD=0%Q=)T2(R=Y%DF=Y%T=80%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=)T3(R=Y%DF=Y%T=8
OS:0%W=0%S=Z%A=O%F=AR%O=%RD=0%Q=)T4(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q
OS:=)T5(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=80%W=0%S=A
OS:%A=O%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y
OS:%DF=N%T=80%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T
OS:=80%CD=Z)
Network Distance: 1 hop
Service Info: Host: ARD01F; OS: Windows; CPE: cpe:/o:microsoft:windows
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 33.30 seconds
```
Быстрое сканирование отработало быстрее примерно на 2 секунды,чем обычное за счет обхода меньшего кол-ва портов.
```
nmap -F 192.168.56.104
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-05 08:11 EST
Nmap scan report for 192.168.56.104
Host is up (0.0015s latency).
Not shown: 94 closed tcp ports (conn-refused)
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
Nmap done: 1 IP address (1 host up) scanned in 13.13 seconds
```
Интерфейсы и маршруты
```
nmap --iflist
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-05 08:32 EST
************************INTERFACES************************
DEV (SHORT) IP/MASK TYPE UP MTU MAC
lo (lo) 127.0.0.1/8 loopback up 65536
lo (lo) ::1/128 loopback up 65536
eth0 (eth0) 192.168.56.103/24 ethernet up 1500 08:00:27:B1:9D:67
eth0 (eth0) fe80::cf9:c12:3ef1:1de4/64 ethernet up 1500 08:00:27:B1:9D:67
**************************ROUTES**************************
DST/MASK DEV METRIC GATEWAY
192.168.56.0/24 eth0 100
::1/128 lo 0
fe80::cf9:c12:3ef1:1de4/128 eth0 0
::1/128 lo 256
fe80::/64 eth0 1024
ff00::/8 eth0 256
```
## Попробуем провести следующие типы сканирования Syn,Fin,Ack,Xmas,Maimon,Idle
SYN сканирование `sudo nmap -sS 192.168.56.104 -p 443,44`5

ACK сканирование `sudo nmap -sA 192.168.56.104 -p 443,445`

FIN сканирование `sudo nmap -sF 192.168.56.104 -p 443,445`

Xmas сканирование `sudo nmap -sX 192.168.56.104 -p 443,445`

Maimon сканирование sudo nmap -sM 192.168.56.104 -p 443,445
Этот тип сканирования носит имя своего первооткрывателя, Уриела Мэймона
Техника практически такая же как и при FIN и Xmas сканированиях, только в качестве запросов используются
запросы FIN/ACK. Согласно RFC 793 (TCP), в ответ на такой запрос должен быть сгенерирован RST пакет, если порт открыт или
закрыт. Тем не менее, Уриел заметил, что многие BSD системы просто отбрасывают пакет, если порт открыт.
Сканирование Windows показывает, что пакет отбрасывается

На Debian тоже пришли RST

Попробую установить FreeBSD

`sudo nmap -sM 192.168.56.106 -p 22,80 -n`
и...

К сожалению, сканирование фряхи, также отдает RST, а так хотелось, чтобы его не было =)
Idle сканирование aka Zombie Scan
Подробно о сканировании написано в документации https://nmap.org/book/idlescan.html
Если коротко, то idle при сканировании происходит спуфинг ip адреса на адрес хоста, который мы укажем как вспомогательный,а также
используется одна замечательная особенность, что при отправке пакета с tcp RST , поля идендификатора этого пакета увеличивается на один.
Если смотреть в wireshark, то этот идентификатор находится именно в части заголовков IP.

`sudo nmap -n -v -Pn -sI 192.168.56.104 192.168.56.105 -p 445`
После начала сканирования, мы отправляем несколько пакетов на вспомогательный хост, чтобы проверить как будет изменяться поле id
После мы отправляем несколько пакетов имитируя целевой хост в моем случае, всегда отправлялось 4 пакета.

Далее идет контрольная отправка на зомби хост, для контрольной проверки id
И собственно сканирование, мы отправляем от IP зомби хоста и порта, который мы использовал, обычный syn пакет на целевую машину.

Далее проверяем результат, если на 105 хосте открыт 445 порт он отправит SYN/ACK и 104 хост отреагирует RST и у 104 увечилится id на 1
Мы отправляем пакет SYN/ACK на 104 и проверяем результат если id увеличен на 2 , то порт открыт если на 1 то закрыт или фильтруется.
**Ping Scan**
Сканирование при помощи SYN, после флага -PS указывается порт сканирования. Использую параметры -sn для включения режима
без сканирования портов, а также параметр --send-ip для принидительного использования ip протокола, иначе используется arp игнорируя указанные флаги и при сканировании не использует ip протокол, если искомые хосты находятся в одной канальной среде.
**TCP SYN Ping ( ) -PS <port list>**
Опция -PS отправляет пустой TCP-пакет с установленным флагом SYN. Порт назначения по умолчанию — 80
`nmap -n -sn --send-ip -PS445 192.168.56.105`

**Пинг TCP ACK ( ) -PA <port list>**
`sudo nmap -n -sn --send-ip -PA445 192.168.56.105`

**UDP-пинг ( ) -PU <port list>**
`sudo nmap -n -sn --send-ip -PU445 192.168.56.105`

**ICMP-пинг -PE**
`sudo nmap -n -sn --send-ip -PE 192.168.56.105`

Есть и другие типы ICMP, их можно посмотреть в документации и соответствующих RFC
**ARP-сканирование ( -PR)**
`sudo nmap -n -sn -PR 192.168.56.105`

Если добавить опцию --send-ip он отправит несколько пакетов которые у него заданы по умолчанию(-PE -PS443 -PA80 -PP)
`sudo nmap -n -sn --send-ip -PR 192.168.56.105`

**Пинг IP-протокола ( ) -PO <protocol list>**
Если протоколы не указаны, по умолчанию отправляется несколько IP-пакетов для ICMP (протокол 1), IGMP (протокол 2) и IP-in-IP (протокол 4).
Протоколы по умолчанию можно настроить во время компиляции, изменив DEFAULT_PROTO_PROBE_PORT_SPEC в nmap.h. Обратите внимание,
что для ICMP, IGMP, TCP (протокол 6) и UDP (протокол 17) пакеты отправляются с соответствующими заголовками протокола, в то время как
другие протоколы отправляются без дополнительных данных, кроме заголовка IP (если только --data-length опция указана).
`sudo nmap -n -sn --send-ip -PO6 192.168.56.105`

`sudo nmap -n -sn --send-ip -PO10 192.168.56.105`

## Проведение сканирования с помощью скрипта vulners.nse
Намучался с запуском, но после apt update все таки запустил скриптец =)
Проверял на metasploitable2 , чтобы вывод какой то уж точно был, ну его тут слишком много, добавлю лишь часть.
```
──(root㉿kali)-[~]
└─# sudo nmap -n -sV --script=vulners --script-args=mincvss=1.0 192.168.56.102
sudo: unable to resolve host kali: Name or service not known
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-27 15:17 EDT
Nmap scan report for 192.168.56.102
Host is up (0.013s latency).
Not shown: 977 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| vulners:
| cpe:/a:openbsd:openssh:4.7p1:
| SECURITYVULNS:VULN:8166 7.5 https://vulners.com/securityvulns/SECURITYVULNS:VULN:8166
| CVE-2010-4478 7.5 https://vulners.com/cve/CVE-2010-4478
| CVE-2008-1657 6.5 https://vulners.com/cve/CVE-2008-1657
| SSV:60656 5.0 https://vulners.com/seebug/SSV:60656 *EXPLOIT*
| CVE-2010-5107 5.0 https://vulners.com/cve/CVE-2010-5107
| CVE-2012-0814 3.5 https://vulners.com/cve/CVE-2012-0814
| CVE-2011-5000 3.5 https://vulners.com/cve/CVE-2011-5000
| CVE-2008-5161 2.6 https://vulners.com/cve/CVE-2008-5161
| CVE-2011-4327 2.1 https://vulners.com/cve/CVE-2011-4327
|_ CVE-2008-3259 1.2 https://vulners.com/cve/CVE-2008-3259
23/tcp open telnet Linux telnetd
25/tcp open smtp Postfix smtpd
53/tcp open domain ISC BIND 9.4.2
| vulners:
| cpe:/a:isc:bind:9.4.2:
| SSV:60184 8.5 https://vulners.com/seebug/SSV:60184 *EXPLOIT*
| CVE-2012-1667 8.5 https://vulners.com/cve/CVE-2012-1667
| SSV:60292 7.8 https://vulners.com/seebug/SSV:60292 *EXPLOIT*
| CVE-2014-8500 7.8 https://vulners.com/cve/CVE-2014-8500
| CVE-2012-5166 7.8 https://vulners.com/cve/CVE-2012-5166
| CVE-2012-4244 7.8 https://vulners.com/cve/CVE-2012-4244
| CVE-2012-3817 7.8 https://vulners.com/cve/CVE-2012-3817
| CVE-2008-4163 7.8 https://vulners.com/cve/CVE-2008-4163
| CVE-2010-0382 7.6 https://vulners.com/cve/CVE-2010-0382
| EXPLOITPACK:D6DDF5E24DE171DAAD71FD95FC1B67F2 7.2 https://vulners.com/exploitpack/EXPLOITPACK:D6DDF5E24DE171DAAD71FD95FC1B67F2 *EXPLOIT*
| EDB-ID:42121 7.2 https://vulners.com/exploitdb/EDB-ID:42121 *EXPLOIT*
| CVE-2017-3141 7.2 https://vulners.com/cve/CVE-2017-3141
| CVE-2015-8461 7.1 https://vulners.com/cve/CVE-2015-8461
| CVE-2021-25216 6.8 https://vulners.com/cve/CVE-2021-25216
| CVE-2015-8704 6.8 https://vulners.com/cve/CVE-2015-8704
| CVE-2009-0025 6.8 https://vulners.com/cve/CVE-2009-0025
| CVE-2015-8705 6.6 https://vulners.com/cve/CVE-2015-8705
| CVE-2010-3614 6.4 https://vulners.com/cve/CVE-2010-3614
| SSV:4636 5.8 https://vulners.com/seebug/SSV:4636 *EXPLOIT*
| SSV:30099 5.0 https://vulners.com/seebug/SSV:30099 *EXPLOIT*
```
## Stealth Scan
К техникам скрытного сканирования можно отнести Xmas scan, который был показан чуть раньше.
Так же в эту категорию можно добавить , null сканирование -sN, или скрытое SYN сканирование опция -sS, отправлять пакеты от 53 порта и вообще есть пространство для творчества, отправляя не стандартные пакеты, можно обходить правила firewall или IDS/IPS.
```
sudo nmap -n -p 23 --data-length 666 -sS --scanflags SYNFIN 192.168.56.102
PORT STATE SERVICE
23/tcp open telnet
MAC Address: 08:00:27:B0:64:84 (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.29 seconds
```
nmap определил порт как открытый, а в wireshark можно видеть, что пакет состоит из какого то трэша.
