网络基础知识:TCP协议之扫描主机

Posted 计算机与网络安全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络基础知识:TCP协议之扫描主机相关的知识,希望对你有一定的参考价值。

一次性付费进群,长期免费索取教程,没有付费教程。

 教程列表  见微信公众号底部菜单 |   本文底部有推荐书籍 



ID:Computer-network


通常,用户通过ping命令判断目标主机是否开启。但是,很多主机都是禁止使用ping命令的。如果目标主机开放,并有程序在运行和监听特定的TCP端口,那么就可以通过TCP协议连接该端口从而判断主机是否运行。本文介绍如何利用TCP协议扫描主机。


1、构造TCP Ping包实施扫描


构造TCP Ping包实质上是构建一个[SYN]包。它模拟TCP连接中的第1次握手,向目标主机的端口发出请求。如果指定的端口开放,将返回第2次握手包[SYN,ACK];如果端口未开放,将返回[RST,ACK]包。可以借助netwox工具中编号为51的模块进行构建TCP Ping包。


在主机192.168.59.131上构建TCP Ping包,对目标主机进行扫描,判断主机是否启用。


1)判断目标主机192.168.59.135是否启用,执行命令如下:


root@daxueba:~# netwox 51 -i 192.168.59.135


输出信息如下:


Ok

Ok

Ok

Ok

Ok

…  #省略其他信息


该模块默认向目标主机的80端口发送SYN包。上述输出信息中持续显示OK,表示目标主机的80端口返回了响应,从而确定该主机已启用。


2)如果目标主机开放的不是80端口,就需要指定其他端口号。例如,基于5352端口,判断目标主机是否开启。执行命令如下:


root@daxueba:~# netwox 51 -i 192.168.59.135 -p 5352


执行命令后,将会向目标主机的5352端口发送SYN请求包。


网络基础知识:TCP协议之扫描主机

图1  目标端口开放数据包


4)如果目标主机上的端口不开放,将返回[RST,ACK]包。例如,连接不开放的端口5533,如图2所示。其中,第1个数据包为向目标主机5533端口发送的第1次握手包,第2个数据包为对应的响应包,该包不是[SYN,ACK]包,而是[RST,ACK]包。这表示目标主机端口没有进行回复,目标端口5533没有启用。

图2  目标端口不开放数据包


2、伪造TCP Ping包实施扫描


通过构造TCP Ping包来判断目标主机是否开启,很容易被发现。为了避免被发现,可以伪造TCP Ping包实施扫描。


在主机192.168.59.131上伪造TCP Ping包,尝试访问目标主机的81端口。



root@daxueba:~# netwox 52 -i 192.168.59.135 -p 81 -E ab:bc:cd:12:23:34 -I 192.168.59.150 -e 00:0c:29:ca:e4:66


输出信息如下:


Ok

Ok

Ok

Ok

Ok

…   #省略其他信息


图3  伪造的数据包


ID:Computer-network


【推荐书籍】

以上是关于网络基础知识:TCP协议之扫描主机的主要内容,如果未能解决你的问题,请参考以下文章

网络编程杂谈之TCP协议

Java网络编程编程之TCP编程和UDP编程

网络基础之网络层

[linux] Linux网络之Socket编程入门

[linux] Linux网络之Socket编程入门

java之网络编程1-Tcp