0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

笔记
nmap范围扫描
格式法
192.168.0.1-255 //指定范围
192.168.0.1/24 //对整个子网进行扫描
192.168.0.1,192.168.0.50,192.168.0.30 //对多个主机进行扫描
nmap [目标] --exclude [指定不扫描的主机] //排除主机扫描
-iL a.txt //指定a.txt 文件内容进行扫描
-iR [数量] //要指定的随机ip扫面
探测存活主机
nmap发送的那些数据包可以用--packet-trace
来查看
ARP扫描探测存活主机
交换机里面中每个接口都有寻址寄存器,里面存放这物理地址表
ARP扫描原理就是,向内网送ARP包如果主机给我相应了,就说明主机存活
注意:这个ARP扫描很难防御,在内网扫描ARP扫描是最佳的扫描
列
nmap -PR [目标]
## ICMP探测探测存活主机
请求和响应应答探测存活主机
发送ICMP响应请求,如果得到目标主机发回的ICMP响应,则说明该主机处于活跃状态,就和ping命令一样
nmap -PE [目标地址]
列
时间戳请求和响应探测存活主机
nmap -sn -PP [目标]
地址俺码请求和响应探测存活主机
nmap -sn -PM [端口,或多个端口] [目标]
TCP探测存活主机
SYN探测存活主机
原理是客户端发送SYN目标会返回SYN ACK创建连接,如果端口没有开放就断开连接回RST数据包,如何有一个返回就说明目标存活
格式
nmap -sn -PS [端口,或多个端口] [目标]
ACK探测存活主机
这个被防火墙过滤
原理客户端发送一个ACK数据包给服务器,如果服务器存活就发送RST数据包,如果没有存活就没有都不响应
格式
nmap -sn -PA [端口,或多个端口] [目标]
UDP探测存活主机
当目标收到UDP数据包如果这个端口是关闭的,就返回ICMP端口不可达数据包,
这个扫描不太准
格式
nmap -sn PU [端口,或多个端口] [目标]
SCTP探测存活主机
SCTP用的比较少
流控制传输协议(SCTP,Stream Control Transmission Protocol)是一种在网络连接两端之间同时传输多个数据流的协议。SCTP提供的服务于UDP和TCP类似
SCTP是可以确保数据传输的,和TCP类似,也是通过确认机制来实现的。和TCP不同的是:
TCP是以字节为单位传输的,SCTP是以数据块为单位传输的
TCP接收端确认的是收到的字节数,SCTP接收端确认的是接收到的数据块。SCTP的这种数据块(被称为DATA CHUNK)通常会携带应用的一个数据包,或者说是应用要发送的一个消息。
在实际的应用中,TCP发送方的可以将应用程序需要发送的多个消息打包到一个TCP包里面发出去。比如,应用程序连续调用两次send()向对端发送两条消息,TCP协议可能把这两条消息都打包放在同一个TCP包中。接收端在收到这个TCP包时,回给对端的ACK只是表明自己接收到了多少个字节,TCP协议本身并不会把收到的数据重新拆散分成两条应用层消息并通知应用程序去接收。事实上,应用程序可能只需要调用一次receive(),就会把两条消息都收上来,然后应用需要根据应用程序自己定义的格式去拆成两条消息。
与TCP不同,SCTP是将应用程序的每次调用sendmsg()发送的数据当作一个整体,放到一个被称为DATA CHUNK的数据块里面,接收端也是以DATA CHUNK为单位接收数据,并重新组包,通知应用程序接收。通常,应用程序每次调用recvmesg()都会收到一条完整的消息。
在SCTP的发送端,多条短的应用层消息可以被SCTP协议打包放在同一个SCTP包中,此时在SCTP包中可以看到多个DATA CHUNK。另一方面,一条太长(比如,超过了路径MTU)的应用层消息也可能被SCTP协议拆分成多个片段,分别放在多个DATA CHUNK并通过不同的SCTP包发送给对端。这两种情况下,SCTP的接收端都能重新组包,并通知应用程序去接收。
格式
nmap -sn -PY [端口,多个端口] [目标]
使用IP进行主机发现
ICMP为1
IGMP为2
TCP为6
UDP为7
GRE4为7
ESP为50
格式
nmap -sn PO 号 [目标]
如果不指定号默认是1
这个方法容易被被目标检查出来
可以加上--data-length
添加随机数据包
DNS活跃主机发现和DNS相关选项
在对一台主机扫描的时候,如果它有域名的话,nmap会向域名服务器提出请求,显示ip对映的域名,扫描的时候可以指定范围
无论是活跃的主机和不活跃的主机都叫域名给列出来
-R
列
nmap -R 192.168.1.1-20
这个扫描可能会消耗大量的时间
端口扫描技术
1. nmap对端口的状态的定义
open:如果目标端口的状态为open,这表明在该端口有应用程序接收TCP连接或者UDP报文。
closed:如果目标端口的状态为closed,这里要注意closed并不意味着没有任何反应,状态为closed的端口是可访问的,这种端口可以接收Nmap探测报文并做出响应。相比较而言,没有应用程序在open上监听。
filtered:产生这种结果的原因主要是存在目标网络数据包过滤,由于这些设备过滤了探测数据包,导致Nmap无法确定该端口是否开放。这种设备可能是路由器、防火墙甚至专门的安全软件。
unfiltered:这种结果很少见,它表明目标端口是可以访问的,但是Nmap却无法判断它到底是open还是closed的。通常只有在进行ACK扫描时才会出现这种状态。
open | filtered:无法确定端口是开放的还是被过滤了,开放的端口不响应就是一个例子。
closed|filtered:无法确定端口是关闭的还是被过滤了。只有在使用idle扫描时才会发生这种情况。
端口扫描
SYN扫描
nmap默认就是SYN扫描,扫描速度快
nmap会像主机发送一个SYN数据包,目标会返回SYN加ACK进行应答。然后nmap会返回给服务器RST数据包断开连接,没有建立三次握手,目标主机是不记录的
响应状态
扫描语法
nmap -sS [目标]
Connect扫描
和SYN扫描方式一样,只是完成三次握手了
格式
nmap -sT [目标]
UDP扫描
响应状态
格式
nmap -sU [目标]
TCP FIN扫描
发一个FIN数据包目标端口返回RST就说明端口是关闭的
格式
nmap -sF [目标]
NULL扫描
NULL扫描发送一个没有包含任何数据的数据包,目标端口返回RST就说明端口是关闭的
格式
nmap -sN [目标]
Xmas Tree 扫描
是向目标端发送一个含有FIN,URG和PUSH标志的数据包,目标端口返回RST就说明端口是关闭的
格式
nmap -sX [目标]
idle扫描
僵尸机扫描端口开发
1.攻击端给僵尸机发一个SYN/ACK僵尸机回RST/包里面有IPID=x
2.攻击端发服务器端口SYN是伪造僵尸机ip服务器发给僵尸 机SYN/ACK,应为没有建立连接僵尸机就回RST/IPID=x+1
3.攻击端在给僵尸机发一个SYN/ACK僵尸机回RST/IPIF=x+2
僵尸机扫描端口开发
1.攻击端给僵尸机发一个SYN/ACK僵尸机回RST/IPID=x
2.攻击端发服务器端口SYN是伪造僵尸机ip服务器发给僵尸机没有建立连接服务器回发僵尸机RST
3.攻击端在给僵尸机发一个SYN/ACK僵尸机回RST/IPIF=x+1
判断是否是僵尸机--script是使用脚本
nmap -p端口 要判断是僵尸机的ip --script=ipidseq.nse
使用僵尸机扫描目标端口 -sI是僵尸扫描
nmap 目标ip -sI 僵尸机ip -Pn -p 0-100
指定扫描的端口
指定常见的100个端口
格式
nmap -F [目标]
指定一个端口扫描
格式
nmap -p [端口] [目标]
使用名字指定扫描端口
格式
nmap -p U:53 [目标]扫描所有的端口
格式
nmap -p * [目标]
常用的端口扫描
格式
nmap --top-ports [目标]
远程系统与服务探测
主机探测
查看返回的ttl值查看主机的系统
ttl值Windows 是128(65——128)
Linux 和 Unix = 64 (1-64) Unix = 255
nmap -O [目标]
版本探测
发送探针报文,得到返回确认值,得到服务的版本
探测服务器版本参数-sV
nmap -sV [目标]
1.如果想对全端口扫描可以加上--allport
2.设置版本扫描的强度加上--version-intensity [1到9]
3.如果轻量级模式扫描可以加上--version-light
4.尝试每个探测相当于--version-intensity 9
加上--version-all
6.--version-trace
这个参数将会打印出关于正在进行的扫描的详细调试信息
7.-sR(RPC扫描)
这个方法和许多端口扫描方法联合使用。它对所有的被发现的开发的TCP/UDP端口执行SunRPC程序NULL命令试图确定他们是否RPC端口,如果是,可以确定是什么程序和版本号
nmap -sP [目标]
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)