标签:mon 精准 概率 1.2 管理 imageview 技术分享 不可 2.4
Nmap是由Gordon Lyon设计并实现,在1997年开始发布并开源的一个安全扫描软件,Gordon Lyon最初设计Nmap的目的只是打造一个端口扫描工具。但随着时间的推移,Nmap的功能越来越全面,在2009年Nmap发布了标致未来趋势的一个版本5.0版本。这个版本代表着Nmap从最开始的扫描软件变成一个全面的网络安全工具组件。
Nmap使用其实特别简单,只需咋需要下输入nmap +目标地址就可以执行扫描任务,如下:
~~~
nmap 192.168.0.1
~~~
~~~
Starting Nmap 7.30 ( https://nmap.org ) at 2018-11-25 14:21 CST
Nmap scan report for 192.168.0.1
Host is up (0.0049s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 1.50 seconds
~~~
在扫描的结果中,生成了关于192.168.0.1主机的报告信息。包括;主机是up的,说明这台主机目前处于联网状态,并且有一个80端口是处于开放状态并可以提供http服务进行访问。
nmap -sn 192.168.0.1-255
备注:sn参数表示主机是否活跃
~~~
Starting Nmap 7.30 ( https://nmap.org ) at 2018-11-25 15:26 CST
Nmap scan report for 192.168.0.1
Host is up (0.0077s latency).
Nmap scan report for 192.168.0.103
Host is up (0.049s latency).
Nmap done: 250 IP addresses (2 hosts up) scanned in 20.02 seconds
~~~
命令语法:nmap [ip地址/子网掩码]
nmap -sn 192.168.0.1/24
命令语法:nmap 【扫描段1 扫描段2 扫描段3】
nmap -sn 192.168.0.1 192.168.0.99 192.168.0.111
命令语法:nmap 【目标地址】 --exclude [目标地址]
nmap -sn 192.168.0.0/24 --exclude 192.168.0.111
命令语法:nmap -iL [文本文件]
nmap -sn -iL ip.txt
备注:ip.txt 需要制定路径
命令语法:nmap -iR [目标的数量]
nmap -sn -iR 5
备注:随机的对互联网5个地址进行扫描
ARP协议位于TCP/IP协议的数据链路层和网络层中间的协议,该协议主要目的是物理地址和逻辑地址的转换工作。我们都在 知道在网络上同一网段的主机进行通讯使用逻辑地址(mac地址),不同网段的主机通讯需要使用逻辑地址通讯(IP地址)。而ARP在中间起到桥梁的作用。
nmap基于ARP活跃主机探测的原理:通过构造ARP广播数据包,如果得到对方的回应说明主机为活跃主机。
这种方式的优点是精准度高,几乎没有噪音。缺点是:扩展性差,不能对扩网段主机进行扫描
ARP探测命令语法:nmap -PR [目标主机]
ARP探测实例:nmap -PR 172.16.1.
icmp不管是运维还是开发人员应用最为广泛的协议,几乎每天都在使用。icmp报文可以分为两类:1是差错。2是查询。而查询是我们应用非常多的。包括请求和应答
请求和应答又包括响应请求和应答,时间戳请求和应答,地址掩码请求和应答。
该种方式主要是使用icmp协议。发送请求,如果得到对方主机的回应,说明主机处于活跃状态。其实就是使用的ping命令来完成的。
这种方式的优点是:方便、快捷,系统集成工具,缺点是:在互联网上基本被防火墙过滤造成准确度很低
~~~
基于ICMP协议探测命令语法:nmap -PE 【目标】
实例:nmap -PE 172.16.26.55
~~~
这种方式的优点是:方便、快捷,缺点是:在互联网上基本被防火墙过滤造成准确度很低
~~~
命令语法:nmap -PP [目标]
实例:nmap -PP -sn 172.16.26.55
~~~
命令语法:nmap -PM 【目标】
实例:nmap -PM 172.16.1.55
tcp是面向连接的、基于字节流的传输层通讯协议,tcp之所以是连接可靠的协议是因为基于三次握手协商。
在nmap中常用的tcp扫描有两种,分别是tcp ack扫描和tcp syn扫描。
nmap中使用 -PS选项向目标主机发送一个syn标志的数据包,默认探测的目标端口是80(端口可以更改),内容为空。如果收到数据包说明目标主机在线,如果没有收到数据包,说明主机不在线。
基于tcp扫描是最强的扫描技术,服务器,可能会过滤icmp协议。但是几乎没有服务器会屏蔽tcp的syn数据包,因为这是网络通讯所必须使用的协议。
~~~
命令语法:nmap -PS 【端口1,端口2,端口3】【目标主机IP】
案例:nmap -PS 172.16.1.55
备注使用默认的端口进行探测
~~~
tcp ack扫描使用的是tcp三次握手中的ACK标志位,而tcp syn 使用的是SYN标志位。在实际环境中只有A向B发送syn之后,B才会回应ACK数据包。这种方式是A直接发送ACK给B,B因为没有收到syn一般回复RST,这种通讯模式不符合tcp通讯的逻辑规律,所以该种模式非常容易被防火墙拦截。
~~~
命令语法:nmap -PA 172.16.1.55
~~~
UDP协议是一个传输层协议,与TCP相反,UDP是一个面向无连接的协议。该协议简单很多,没有tcp协议的三次握手,导致业务中经常出现的对udp端口无法进行扫描,不能确定其是否开放。但是nmap的强大之处是可以使用nmap对主机进行发现和探测,当一个udp端口收到一个udp数据包时候,如果该端口是关闭的,就给源发送一个icmp端口不可达数据包,如果该端口是开放的,就丢弃数据包,不返回任何信息。这种方式就可以完成udp主机探测,缺点是扫描结果可靠性非常低。
命令语法:nmap -PU 【目标】
案例:nmap -sn -PU 10.10.26.55
IP协议是tcpip协议的载体,tcp、udp、icmp以及应用层协议都是封装成IP数据包在网络上进行传输。ip数据包的格式如下:
在ip协议中有一个协议部分,用于标识是哪个协议向ip传送数据,比如:tcp、udp、icmp等。
在nmap中允许向目标主机发送IP数据包来探测对方主机是否处于活跃状态。
~~~
命令语法:nmap -sn -PO 【协议编号】 【目标IP地址】
案例:nmap -sn -PO 1,6 10.10.26.55
~~~
这种形式发送的数据包内容是空的,非常容易被防火墙等安全设备检测并过滤,为了解决这个问题,可以指定数据大小添加随机生成的数据
~~~
命令语法:nmap --data-length [长度数值] [目标IP地址]
案例:nmap --data-length 66 172.16.36.6
~~~
nmap是一个非常强大的工具,以上是我看了《诸神之眼 nmap网络安全审计技术解密》之后写下的一点总结吧。以后还会持续的更新。
其实研究nmap一点要研究他的本质,在nmpa中提供了一种方法--pachket-trace
选项,通过它可以观察nmap发出去那些包,收到哪些数据包,可以让你更深入的研究nmap。
使用sctp的PY选项对目标主机进行扫描
~~~
root@ubuntu1:/# nmap -sn -PY 122.114.9.2
Starting Nmap 7.01 ( https://nmap.org ) at 2018-11-27 02:48 UTC
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 2.06 seconds
~~~
通过扫描发现该主机是不活跃的,但是真实的情况这台主机是处于活跃状态的,导致原因是目标主机不支持sctp协议。如下源主机发送的请求但是没有收到对方的回复数据包。
~~~
root@ubuntu1:/# nmap -sn -PY 122.114.9.2 --packet-trace
Starting Nmap 7.01 ( https://nmap.org ) at 2018-11-27 02:59 UTC
SENT (0.0244s) SCTP 172.16.36.185:44449 > 122.114.19.242:80 ttl=48 id=25483 iplen=52
SENT (1.0255s) SCTP 172.16.36.185:44450 > 122.114.19.242:80 ttl=44 id=15676 iplen=52
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 2.05 seconds
~~~
使用同样的方法对内网主机进行扫描,被扫描的主机也没有安装sctp协议。但是结果却大大出乎我们的意料之外
~~~
root@ubuntu1:/# nmap -sn -PY 172.16.36.6
Starting Nmap 7.01 ( https://nmap.org ) at 2018-11-27 03:02 UTC
Nmap scan report for bogon (172.16.36.6)
Host is up (0.00046s latency).
MAC Address: FA:16:3E:18:4B:2F (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds
~~~
同时是没有安装sctp协议,为什么内网主机就有回复的数据包呢,可以使用--packet-trace
看一下究竟是什么原因导致的。
~~~
root@ubuntu1:/# nmap -sn -PY 172.16.36.6 --packet-trace
Starting Nmap 7.01 ( https://nmap.org ) at 2018-11-27 03:02 UTC
SENT (0.0272s) ARP who-has 172.16.36.6 tell 172.16.36.185
RCVD (0.0277s) ARP reply 172.16.36.6 is-at FA:16:3E:18:47:2F
Nmap scan report for bogon (172.16.36.6)
Host is up (0.00048s latency).
MAC Address: FA:16:3E:18:4B:2F (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds
~~~
通过以上分析,你就更加明白nmap的原理了。
nmap不管在何种情况下都会探测是否属于统一子网环境,如果是处于统一子网环境nmap直接使用arp进行探测,因为nmap认为在局域网中arp是最为精准的。
下一次介绍nmap端口扫描
参考书籍:《诸神之眼 nmap网络安全审计技术解密》--李华峰
在nmap给出6中端口的不同状态。
| 状态 | 描述 |
|---|---|
| open |表明该端口处于开放状态,可以接收相应的报文数据包|
|closed|表明该端口是不可访问的,没有程序在监听|
|filtered|存在防火墙等设备对目标数据包进行了过滤,无法判断是否开放状态|
|unfiltered|表明目标端口是不可访问的,无法判断是否开放相应端口,一般ack扫描会出这种情况|
|open or filtered|无法确定端口是开放还是被过滤|
|closed or filtered|无法确定端口是开放还是被过滤,一般只在idle扫描中会出现|
扫描方法 | 描述 |
---|---|
-sS/sT/sA/sW/sM | 指定使用tcpsyn/connect()/ack/window/maimon scans的方式对目标主机进行扫描 |
-sU | UDP方式扫描端口 |
-sN/sF/sX | 使用tcp Null、FIN/Xmas scans等方式协助探测对方tcp端口状态 |
-scanflags | 定制tcp包的flags |
-sI<zombie host[:probeport]> | 指定使用Idle scan扫描目标主机 |
-sY/sZ | 使用sctp init/cookie-echo扫描sctp协议端口情况 |
-sO | 使用ip协议扫描目标主机支持的协议 |
-b | 使用ftp扫描方式 |
-p | 扫描指定端口 |
-F | 快速扫描,仅仅扫描top100端口 |
-r | 随机扫描,不容易被安全设备检测到 |
--top-ports | 扫描开放概率最高的端口个数 |
在nmap进行端口扫描中,syn扫描是一种非常好的扫描方式,这种扫描非常准确而且速度快。更重要的是这种扫描方式不会在目标网络的安全设备上被报警,
~~~
syn扫描语法:nmap -sS 【目标地址】
实例:nmap -sS 122.114.19.242
~~~
connect扫描语法:nmap -sS 【目标地址】
实例:nmap -sS 122.114.19.242
connect 扫描
connect 扫描方式语SYN扫描方式非常相似,只是在tcp三次握手阶段,syn扫描没有完成三次握手,而connect扫描完成类三次握手,这种方式缺点是容易被对端防火墙拦截或检测。优点是不需要使用管理员权限就可以执行命令。
命令语法:nmap -sT [目标主机]
实例:nmap -sT 10.10.36.55
UDP扫描
udp扫描方式因协议无连接,不可靠性,造成udp扫描到准确率非常低。
~~~
命令语法:nmap -sU [target]
案例:nmap -sU 10.10.36.55
~~~
FIN扫描放送
tcp fin扫描方式是向目标主机直接发送Fin数据包,对于目标端口如果处于关闭状态,会发送一个RST数据包,表明该端口处于关闭状态
~~~
命令语法:nmap -sF [target]
案例:nmap -sF 10.10.36.55
~~~
NULL扫描
tcp null扫描方式是想目标系统发送一个不包含任何标志到数据包,目标系统会向源主机发送一个RST
数据包,表明该端口处于关闭状态。
~~~
命令语法:nmap -sN [target]
案例:nmap -sN 10.10.36.55
~~~
xmas tree扫描
tcp xmas tree扫描方式是向目标端口发送一个含有FIN/URG/PUSH标志位到数据包,对于关闭的端口目标主机返回RST数据包,表示改端口是处于关闭状态。
~~~
nmap -sX [target]
nmap -sX 10.10.36.55
~~~
idle扫描
该种方式非常隐蔽,扫描着不需要相目标主机发送任何数据包,需要依靠第三方主机对目标进行扫描。
- 检测第三方ip.id的值并记录下来
2.在本机伪造一个源主机为第三方主机到数据包,兵将数据包发送到目标主机端口
3.查看第三方主机到ip id值是否有变化。
在这个工程中,需要伪造第三方数据包,在nmap中可以使用decoy scanning (-D)
的功能,可以隐藏字自己到身份。通过这种方式目标日志服务器上记录的是第三方地址,这样就可以达到隐藏自己信息到目的。
nmap指定扫描得端口
|端口选项|描述|
|---|---|
|-F[target]|扫描常见到100个端口|
|-p[port]|指定一个端口|
|-pU:[udp ports],T:[tcp ports]|使用协议扫描指定端口|
|-p|扫描所有端口|
|--top-ports[number]|扫描常用端口|
扫描常见到100个端口
~~~
command:nmap -F [target]
case:nmap -f 172.16.36.55
~~~
指定一个端口
~~~
command:nmap -p [port or portname] [target]
case: nmap -p 8080,90 172.16.36.55
~~~
使用协议指定端口
~~~
command:nmap -p U:[udp ports],T:[tcp ports] [target]
case: nmap -sU -sT -p U:4500,T:22 172.16.36.55
~~~
扫描所有端口
~~~
command:nmap -p "" [target]
case: nmap -p * 172.16.36.55
~~~
如上是最经常使用到nmap扫描技术。
标签:mon 精准 概率 1.2 管理 imageview 技术分享 不可 2.4
原文地址:https://www.cnblogs.com/bravexz/p/10069371.html