对目标主机的扫描是渗透过程中信息收集阶段的重要组成部分,由于现在大部分的网络都是基于TCP/IP协议栈的,所以根据TCP/IP协议栈的特性进行的扫描往往十分实用,nmap就是众多扫描工具中的佼佼者。
网络上不同的进程间通信常常通过具有以下的五元组,即:源IP地址、目的IP地址、协议号、源端口、目的端口,网络上提供服务的主机正是在自己的对应端口绑定特定的服务来对到来的请求进行处理并回复。由于IP和和TCP协议在整个协议栈中占据重要地位,所以这里贴出两种报文的头部格式:
基于TCP协议的通信的正常通信的过程中通常有以下的三次握手和四次挥手的过程:
在通信的过程中各个TCP报文中的控制位扮演了重要的角色,可以通过发送带有不同标志位组合的TCP报文然后通过返回报文中的被设置的标志位对目标主机和目标主机上的端口进行判断。
各标志位的作用如下:
- URG:紧急指针有效
- ACK:确认有效
- PSH:请求推送
- RST:连接复位
- SYN:同步序号
- FIN:终止连接
nmap的扫描就是巧妙的利用这些标志位的特性对目标进行扫描,下边就是一些扫描命令的分析。
环境
运行nmap的主机(centos7):192.168.66.10
被扫描主机(centos7):192.168.66.11
现成的靶机(owasp):192.168.66.13
由于linux的防火墙机制太复杂,所以这里吧里边的规则清空,只添加一条自定的规则,方便对原理的分析
清空centos的iptables
iptables -F 清空已有的规则
iptables -X 清空用用户自定义的chain
iptables -Z 清空chain的技术与流量统计
可以看到关于用户的filter表已经所有规则被清除,这时候被扫描机器相当于没有防备
为了查看防火墙对扫描的影响,这里添加一条简单的规则
iptables -I/A INPUT -p tcp --dport 1503 -j DROP
表示在INPUT链中添加tcp规则,当目标端口是1503的时候就丢掉数据包
添加了一条规则
其中被扫描主机开放了的端口和状态分别为:
1500:用socker监听,udp服务&#x