TCP三次握手包
在进行实验前,先梳理一遍TCP三次握手的过程,这个图是我本科学网络时画过不少于十遍的图,我觉得非常有纪念意义。
稍作解释,第一次握手,客户端发起请求连接,发送一个标志位为SYN的ip数据包,其中序列号随机;服务器端接收到客户端的连接请求,如果允许(一般都会允许),就会返回给客户端一个标志位为SYN和ACK的ip数据包,seq序列随机,ack为客户端发来序列号的下一个数字,即加1,这就是第二次握手;第三次握手,客户端接收到服务器端确认连接的数据包,然后再返回给服务器端一个确认数据包,标志位为ACK,值为接收的服务器端数据包seq序列加1。至此握手完毕,开始进行通信,即数据传输。其实第三次握手客户端就可以携带信息,在这里这个信息不重要。
本次实验,我是选用抓取和百度建立TCP连接的数据包:
1.首先设置过滤器为只查看HTTP协议,开始抓取数据包;在浏览器中输入百度的域名,回车后立即停止抓取:
如上图,抓取的前三个包即为三次握手的包。
2.紧接着分析这三个包:
转到封包详细信息的TCP属性栏,可以看到这是第一次握手,seq为0,该包的标志位为SYN。
这是第二次握手,它的标志位为SYN和ACK,ack为1(0+1),seq为0。
第三次握手,标志位为ACK,seq为1,ack为1(0+1)。
登录包
我所选的测试网站是www.onlylady.com,注册一个账号,然后退出,打开wireshark,开始抓包,进入网站输入登录名和密码,登录成功停止抓包。
这里的过滤规则为ip.src==192.168.245.128&&http。选择post提交包必然为登录过程所产生的包,因为登录得把用户名的密码post到网站服务器。
打开这个包的详细信息,很可惜它是直接明文传送。其实找了很多网站都没有加密传送的,我觉得有这样安全意识的网络管理员应该都改用https协议了。
Nmap扫描
这个实验我是自己搭建了一个IIS服务器,目的ip为192.168.245.131:
开放扫描:
这种扫描方式是使用connect()系统调用打开目标机上相关端口的连接,并完成三次TCP握手
半开扫描
半开扫描的原理是Nmap发送SYN包到远程主机,但是它不会产生任何会话,不需要通过完整的握手获得远程主机的信息,因此不会在目标主机上产生任何日志记录。
秘密扫描
秘密扫描的原理是向目标主机发送一个标志位为FIN的数据包,如果目标主机某端口返回一个RST数据包,则说明端口关闭,否则,端口开启。这种扫描方式对windows操作系统无效。由于我的靶机是windows2003,所以这个并不能测试。
UDP端口扫描
这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的。
总结
对于wireshark和nmap我是一个新手,还需要学的东西有很多。但是有一个疑问,那就是安全手段不断提高,wireshark会不会淘汰?试想目前大家都从http协议转https协议,而wireshark并不能识别https协议包中的详细信息,所以很大程度上限制了wireshark的功能。