转载修改自: https://blog.youkuaiyun.com/whatday/article/details/45504961
0. TCP的三次握手
上图是wirkshark抓到的tcp三次握手的过程,符合第一张图描述的过程,首先主机81向88发送同步指令SYN(具体包见上上图,flags中SYN置位),主机88收到请求后,置位SYN,描述该包为同步包,ACK标识该包为回应包,
主机81收到88的回应后通知上层已经建立好连接,seq(Sequence number)字段强调这个包是我发送给你的第几 个包。ack字段强调描述: 我已经收到之前你发送的seq=y个数目的数据包,我期待下一个是y+1个序列的数据包,那么下一个你发给我的数据包seq应该是y+1。
主机88收到81的回复后,告诉上层建立好了TCP连接,可以按双方约定好的参数进行数据传输。
1.扫描方式分析
因为没有包含TCP3次握手建立连接,所以日志系统不记录相关信息,秘密扫描类型有:TCP FIN扫描,TCP ACK扫描,NULL扫描, XMAS扫描, SYN/ACK扫描。
1. TCP connect扫描
该扫描client和server建立tcp连接,完成三次握手后,client主动关闭连接。server日志会记录下连接的内容。
2. SYN扫描
置位SYN标识flag,发送同步包,因为没有建立连接,所以扫描目标不会有任何记录。
若端口开放, 扫描器收到 SYN/ACK 标识回复。
若端口关闭, 扫描器收到 RST 标识回复。
3. NULL扫描
数据包flags标识位全都不设置,
若扫描主机是windows系统,不管端口开放情况,都会回复RST包。
若扫描主机是linux系统,若端口开放,则不回复。 若端口关闭,则回复RST包。可以探测操作系统。
4. FIN扫描
FIN标识符置位,表示释放TCP会话。
若端口开放, 目标主机不回复。
若端口关闭, 目标主机回复RST。
5. ACK扫描
扫描主机向目标主机发送ACK标识包,从返回信息中的TTL值得出端口开放信息。
6. Xmas扫描
同时置位URG/PSH/FIN,该方法和null扫描一样,无法判断windows系统的端口开放情况(Linux下收到该形式的数据包若端口开放会不回复),但是windows不管端口开放如何均会回复。