端口扫描伪装技术实践
- 1.-f(分段传输)
- 2.-mtu(使用指定的MTU)
- 3.-D(使用诱饵主机隐蔽扫描)
- 4.--source-port(源端口欺骗)
- 5.--data-length (发送报文时附加随机数据)
- 6.--spoof-mac(MAC地址欺骗)
1.-f(分段传输)
使用-f
选项可以对Nmap发送的探测数据包进行分段。这样将原来的数据包分成几个部分,目标网络的防御机制例如包过滤、防火墙等在对这些数据包进行检测的时候就会变得更加困难
Nmap -f 10.16.39.8
使用Wireshark抓包获得的数据,可以清楚地看到大量的数据包上面都含有Fragmented IP protocol
的标识。这一点说明这些数据包都是分段的报文
2.-mtu(使用指定的MTU)
最大传输单元(MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小)。一般来说,以太网的MTU值默认是1500 bytes,这个含义就是指当发送者的协议高层向IP层发送了长度为2008 bytes的数据报文,则该报文在添加20 bytes的IP包头后IP包的总长度是2028 bytes,因为2028大于1500,因此该数据报文就会被分片
在Nmap中使用--mtu
选项可以指定MTU的大小
Nmap --mtu 目标
同样使用Wireshark捕获发送的数据包并查看详情,捕获的数据包中Data字段长度为16bytes
3.-D(使用诱饵主机隐蔽扫描)
Nmap中支持使用诱饵主机,在扫描时,使用选项-D
来指定诱饵主机,使用逗号分隔每个诱饵IP地址,也可用自己的真实IP作为诱饵,自己的IP地址可以使用ME选项
如果在第6个位置或更后的位置使用ME选项,一些常用端口扫描检测器就不会报告这个真实IP🥊
在初始的ping扫描(ICMP、SYN、ACK等)阶段或真正的端口扫描,以及远程操作系统检测(-O)阶段都可以使用诱饵主机选项。但是在进行版本检测或TCP连接扫描时,诱饵主机选项是无效的
示例:
使用Wireshark捕获的诱饵数据包可以看到Nmap伪造了大量的诱饵主机对目标进行扫描:
4.–source-port(源端口欺骗)
网络安全控制中有一种访问控制列表技术,这种技术主要是依靠IP地址和端口来对数据包进行限制,例如有时如果需要保证DNS和FTP协议正常工作,注意到DNS响应来自于53端口,FTP连接来自于20端口,很多新手管理员会犯下一个错误,他们经常会直接允许来自于这些端口的数据进入网络
Nmap提供了-g
和--source-port
选项(它们是相同的),用于利用上述弱点。只需要有一个被目标检测机制遗忘的端口号,Nmap就可以从这个端口发送数据
例如将扫描的源端口指定为8888
同样使用Wireshark抓取发送出去的数据包,抓取到的数据包如图所示,可以通过“Source port
”字段来查看源端口
5.–data-length (发送报文时附加随机数据)
默认情况下,Nmap发送的报文中只包含头部,内容部分是空的。这种内容为空的报文很容易被目标网络检测机制所发现,因此在试图通过这些目标网络的检测机制时,可以在数据包上附加指定数量的随机字节
例如在Zenmap中指定数据包data部分长度为25:
使用Wireshark查看发送数据包data部分的长度:
6.–spoof-mac(MAC地址欺骗)
例如:伪造MAC地址的扫描方法
参数部分:
- 如果简单地使用字符串“
0
”, Nmap选择一个完全随机的MAC地址 - 如果给定的字符是一个使用分号分隔的十六进制偶数,Nmap将使用这个MAC地址
- 如果是小于12的十六进制数字,Nmap会随机填充剩下的6个字节
- 如果参数不是0或十六进制字符串,Nmap将通过Nmap-mac-prefixes查找厂商的名称,如果找到匹配,Nmap将使用厂商的OUI(3字节前缀),然后随机填充剩余的3个字节