网络安全工具-通过nmap扫描网络端口

椰子ya Linux 2020-08-13

nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。
Nmap 常被跟评估系统漏洞软件Nessus 混为一谈。Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。
功能编辑
其基本功能有三个,一是探测一组主机是否在线;其次是扫描 主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的ping操作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。

进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):
nmap -sP 192.168.1.0/24
仅列出指定网络上的每台主机,不发送任何报文到目标主机:
nmap -sL 192.168.1.0/24
探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):
nmap -PS 192.168.1.234
使用UDP ping探测主机:
nmap -PU 192.168.1.0/24
使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:
nmap -sS 192.168.1.0/24
当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:
nmap -sT 192.168.1.0/24
UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:
nmap -sU 192.168.1.0/24
确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):
nmap -sO 192.168.1.19
探测目标主机的操作系统:
nmap -O 192.168.1.19
nmap -A 192.168.1.19
另外,nmap官方文档中的例子:
nmap -v scanme.
这个选项扫描主机scanme中 所有的保留TCP端口。选项-v启用细节模式。
nmap -sS -O scanme./24
进行秘密SYN扫描,对象为主机Scanme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。
nmap -sV -p 22,53,110,143,4564 188.116.0-255.1-127
进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。
nmap -v -iR 100000 -P0 -p 80
随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。
nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20
扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。
host -l | cut -d -f 4 | nmap -v -iL -
进行DNS区域传输,以发现中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。
其他选项:
-p (只扫描指定的端口)
单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口又扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。
-F (快速 (有限的端口) 扫描)
———-摘自百度百科


通过nmap使用-sT参数尝试同目标的每个TCP端口建立连接,观察那些端口处于开放状态,以及正在运行哪些服务


[root@liukai ~]# nmap -sT  www.liukai.asia
Starting Nmap 7.70 ( https://nmap.org ) at 2020-08-13 19:13 CST
Nmap scan report for www.liukai.asia (39.105.28.140)
Host is up (0.0052s latency).
Not shown: 994 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   open   http
443/tcp  closed https
3306/tcp open   mysql
3389/tcp closed ms-wbt-server
8080/tcp closed http-proxy

Nmap done: 1 IP address (1 host up) scanned in 4.90 seconds

如果由于防火墙干扰而无法干扰而无法探测到该端口,那么在STATE一栏中显示filtered。可以通过-O参数(探测主机操作系统)和-sV(探测端口上运行的软件)


[root@liukai ~]# nmap -O -sV  www.liukai.asia
Starting Nmap 7.70 ( https://nmap.org ) at 2020-08-13 19:18 CST
Nmap scan report for www.liukai.asia (39.105.28.140)
Host is up (0.0054s latency).
Not shown: 994 filtered ports
PORT     STATE  SERVICE       VERSION
22/tcp   open   ssh           OpenSSH 8.0 (protocol 2.0)
80/tcp   open   http          nginx 1.18.0
443/tcp  closed https
3306/tcp open   mysql?
3389/tcp closed ms-wbt-server
8080/tcp closed http-proxy
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port3306-TCP:V=7.70%I=7%D=8/13%Time=5F3521B4%P=x86_64-redhat-linux-gnu%
SF:r(NULL,4E,"J\0\0\0\n8\.0\.21\0\x15\x16\0\0\x16%p\x07%@\]Y\0\xff\xff!\x0
SF:2\0\xff\xc7\x15\0\0\0\0\0\0\0\0\0\0\x1e\x17fj\.\x18K<O\]\x19m\0caching_
SF:sha2_password\0")%r(GenericLines,73,"J\0\0\0\n8\.0\.21\0\x15\x16\0\0\x1
SF:6%p\x07%@\]Y\0\xff\xff!\x02\0\xff\xc7\x15\0\0\0\0\0\0\0\0\0\0\x1e\x17fj
SF:\.\x18K<O\]\x19m\0caching_sha2_password\0!\0\0\x01\xff\x84\x04#08S01Got
SF:\x20packets\x20out\x20of\x20order")%r(GetRequest,73,"J\0\0\0\n8\.0\.21\
SF:0\x17\x16\0\0xbHz9\x10`\x08\0\xff\xff!\x02\0\xff\xc7\x15\0\0\0\0\0\0\0\
SF:0\0\0G\x11\x14%:pQ;Nn\x06H\0caching_sha2_password\0!\0\0\x01\xff\x84\x0
SF:4#08S01Got\x20packets\x20out\x20of\x20order")%r(HTTPOptions,73,"J\0\0\0
SF:\n8\.0\.21\0\x18\x16\0\0{\x012i~\x20np\0\xff\xff!\x02\0\xff\xc7\x15\0\0
SF:\0\0\0\0\0\0\0\0\.Ub\(!hS\\h\x01\+@\0caching_sha2_password\0!\0\0\x01\x
SF:ff\x84\x04#08S01Got\x20packets\x20out\x20of\x20order")%r(RTSPRequest,73
SF:,"J\0\0\0\n8\.0\.21\0\x19\x16\0\0s\x02hV\*\x17\+-\0\xff\xff!\x02\0\xff\
SF:xc7\x15\0\0\0\0\0\0\0\0\0\0\x7f\)\"\x15q\x7f8\x0345G~\0caching_sha2_pas
SF:sword\0!\0\0\x01\xff\x84\x04#08S01Got\x20packets\x20out\x20of\x20order"
SF:)%r(RPCCheck,73,"J\0\0\0\n8\.0\.21\0\x1a\x16\0\0%=a!1R_\t\0\xff\xff!\x0
SF:2\0\xff\xc7\x15\0\0\0\0\0\0\0\0\0\0WK\n:i\x1b\x14\x1dkdL\x06\0caching_s
SF:ha2_password\0!\0\0\x01\xff\x84\x04#08S01Got\x20packets\x20out\x20of\x2
SF:0order")%r(DNSVersionBindReqTCP,73,"J\0\0\0\n8\.0\.21\0\x1b\x16\0\0\x11
SF:9\x1b2X\n,\x12\0\xff\xff!\x02\0\xff\xc7\x15\0\0\0\0\0\0\0\0\0\0\x7fp\x1
SF:em!o\*u\"B{~\0caching_sha2_password\0!\0\0\x01\xff\x84\x04#08S01Got\x20
SF:packets\x20out\x20of\x20order")%r(DNSStatusRequestTCP,73,"J\0\0\0\n8\.0
SF:\.21\0\x1c\x16\0\0;_\x11G\]\|_F\0\xff\xff!\x02\0\xff\xc7\x15\0\0\0\0\0\
SF:0\0\0\0\0n3KzO#\x0f\x10w\]LR\0caching_sha2_password\0!\0\0\x01\xff\x84\
SF:x04#08S01Got\x20packets\x20out\x20of\x20order")%r(Help,73,"J\0\0\0\n8\.
SF:0\.21\0\x1d\x16\0\0F/6\x1e\r7ji\0\xff\xff!\x02\0\xff\xc7\x15\0\0\0\0\0\
SF:0\0\0\0\0\x08\x0e\x05\x01\^y\x015\^\x0fx\)\0caching_sha2_password\0!\0\
SF:0\x01\xff\x84\x04#08S01Got\x20packets\x20out\x20of\x20order")%r(SSLSess
SF:ionReq,73,"J\0\0\0\n8\.0\.21\0\x1e\x16\0\0\x19\x06\x01\x07-7`\|\0\xff\x
SF:ff!\x02\0\xff\xc7\x15\0\0\0\0\0\0\0\0\0\0z\"\(#Kq\x06ro\x05M\\\0caching
SF:_sha2_password\0!\0\0\x01\xff\x84\x04#08S01Got\x20packets\x20out\x20of\
SF:x20order");
Device type: general purpose
Running: Linux 3.X|4.X           //Linux内核版本
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9

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 37.08 seconds

可以看到nmap检测到 运行的操作系统是3.X|4.X版本内核的Linux,并且准确的推断出了每个端口上运行的服务器程序。


nmap在扫描之前会首先ping一下目标主机,咋时候到回应时才之行扫描程序,很多服务器出于安全考虑,设置防火墙丢弃这样的探测包,遇到这种情况,可以使用-PN参数强制nmap对这类主机进行扫描。


[root@liukai ~]# nmap -sT -PN  www.liukai.asia
Starting Nmap 7.70 ( https://nmap.org ) at 2020-08-13 19:26 CST
Stats: 0:00:04 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan
Connect Scan Timing: About 89.30% done; ETC: 19:26 (0:00:01 remaining)
Stats: 0:00:04 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan
Connect Scan Timing: About 99.15% done; ETC: 19:26 (0:00:00 remaining)
Nmap scan report for www.liukai.asia (39.105.28.140)
Host is up (0.0055s latency).
Not shown: 994 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   open   http
443/tcp  closed https
3306/tcp open   mysql
3389/tcp closed ms-wbt-server
8080/tcp closed http-proxy

Nmap done: 1 IP address (1 host up) scanned in 4.72 seconds

nmap同样也可以使用-p参数指定nmap去扫描哪些端口

[root@liukai ~]# nmap -sT -PN -p-3389 www.liukai.asia
Starting Nmap 7.70 ( https://nmap.org ) at 2020-08-13 19:28 CST
Nmap scan report for www.liukai.asia (39.105.28.140)
Host is up (0.0052s latency).
Not shown: 3384 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   open   http
443/tcp  closed https
3306/tcp open   mysql
3389/tcp closed ms-wbt-server

Nmap done: 1 IP address (1 host up) scanned in 10.55 seconds 
PREV
Linux的防火墙——IP Tables 续
NEXT
主机访问控制host _access