防黑必备技能之端口篇(2)

释放双眼,带上耳机,听听看~!

在上一节《防黑必备技能之端口篇(1)》,我们讲了端口的一些基础知识,包括什么是端口、常见的端口以及端口的作用。这一节,我们讲第4部分,如何查看电脑端口的占用情况。

04


如何查看端口占用情况

我们分windows和linux两种不同的平台分别介绍。

一、windows平台

在windows平台下,查看端口占用情况,最常见的DOS命令就是NETSTAT命令。

打开运行–>输入“CMD”回车。(如何打开运行,就不用我多说了吧,在开始菜单点右键,选择菜单中的“运行”)

我们可以先查看一下netstat命令的用法:

在提示符下输入 :netstat  /?

上面显示的各个参数的含义和用法,查看端口情况,最常用的参数是-a,-n和-o。如果不使用任何参数,则只显示当前活动的连接(TCP连接)

我们先以-a为例来看一下执行后的效果(截图为部分内容),-a表示显示所有连接和侦听端口(包括TCP和UDP):

下面我们简单介绍一下这个命令的输出结果:

输入netstat -a的命令后,输出结果为四列,显示的当前所有连接和侦听的端口信息。

第一列为协议,主要是TCP的端口占用情况和UDP的端口占用情况。

第二列为本地地址和端口。

第三列为外部地址和端口。

  然后解释几个大家可能看不明白的地方。

  首先大家可能好奇activate和0.0.0.0是什么鬼?  

  这里解释一下:

  1、0.0.0.0代表本机上可用的任意地址。 比如0.0.0.0:135 表示本机上所有地址的135端口,这样多ip计算机就不用重复显示了。

 2、TCP 0.0.0.0:80表示在所有的可用接口上监听TCP80端口

 3、0.0.0.0为默认路由,即要到达不再路由表里面的网段的包都走0.0.0.0这条规则  

在本地地址显示为0.0.0.0,如果使用-a参数,外部地址显示为activate,如果使用-an参数,则外部地址也显示为0.0.0.0

然后127.0.0.1就是表示你本机ip地址的意思了。 

可能有同学会问,activate是什么意思?其实activate和0.0.0.0是一样的,就像127.0.0.1,外部地址显示为guyanbing(我的机器名),http,就表示80端口,https:就表示443端口。如果加上-n参数,则会显示为127.0.0.1,80和443。因为-n参数的意思就是以数字的形式显示IP和端口号。这也是-a和-an两个参数的区别。


-an参数       -a参数

0.0.0.0       activate

127.0.0.1    guyanbing(机器名)

443            https  

80              http

这里的命令为什么要用-an,而不是-n呢?因为如果不加-a这个参数,那么只会显示当前已经建立连接的端口情况,而不会显示所有的端口情况,处于监听状态(LISTENING)  的端口是显示不出来的。

192.168.0.101就是表示当前网卡上的IP地址,这个大家都明白。

 然后[::]、[::1]和[fe80::7c54:4a4c:9eb1:40e8%20]又是什么鬼呢?

其实这个是指本机的IPV6址。你可以使用ipconfig /all命令查看本机的IPV6地址信息,如下图:

以笔者本机为例,对应关系如下:

IPV4                 IPV6

0.0.0.0               [::]

127.0.0.1           [::1]

192.168.0.101    [fe80::7c54:4a4c:9eb1:40e8%20]

在HOSTS文件(位于C:\Windows\System32\drivers\etc目录下)中可以查看。

可能有同学问了,*:* 是什么意思?为什么所有UDP协议的外部连接都是*:*呢?

大家都知道,在计算机中,*是一个通配符,可以表示任意字符,所以这里的*:*就表示任意地址和任意端口。

那为啥只有UDP协议中是*:*呢?

这是因为TCP协议和UDP协议是不一样的,TCP协议是一个握手协议,必须要跟远端的一个地址和端口建立建立连接,所以一定是一个确定的地址和端口。就像打电话,必须要有确定的远端的电话号码才可以通话。

而UDP是一个广播协议,不需要跟远端建立连接,所以并没有确定的地址和端口。

关于TCP和UDP的区别,我会在之后的文章可详细介绍,不是本文和重点。

第四列是状态,显示当前端口处于什么状态

大家可以看到,这里的状态只是指的TCP连接的状态,因为对于UDP协议而言,是不需要状态的。在状态部分有不同的单词,分别表示什么意思呢?我们分别介绍一下:

LISTENING:(Listening for a connection.)侦听来自远方的TCP端口的连接请求  

SYN-SENT:(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)再发送连接请求后等待匹配的连接请求  

SYN-RECEIVED:(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)再收到和发送一个连接请求后等待对方对连接请求的确认  

ESTABLISHED:(Connection established.)代表一个打开的连接  

FIN-WAIT-1:(Closed; sent FIN.)等待远程TCP连接中断请求,或先前的连接中断请求的确认  

FIN-WAIT-2:(Closed; FIN is acknowledged; awaiting FIN.)从远程TCP等待连接中断请求

CLOSE-WAIT:(Received FIN; waiting to receive CLOSE.)等待从本地用户发来的连接中断请求  

CLOSING:(Closed; exchanged FIN; waiting for FIN.)等待远程TCP对连接中断的确认  

LAST-ACK:(Received FIN and CLOSE; waiting for FIN ACK.)等待原来的发向远程TCP的连接中断请求的确认  

TIME-WAIT:(In 2 MSL (twice the maximum segment length) quiet wait after close. )等待足够的时间以确保远程TCP接收到连接中断请求的确认  

CLOSED:(Connection is closed.)没有任何连接状态

关于netstat命令的具体使用,我们在之后发布的《防黑必备技能之端口篇(3)》中会有更详细的介绍,敬请关注。

另外这些状态跟TCP/IP协议密切相关,大家如果想要了解这些状态的具体含义,最好还是先了解一下TCP/IP协议,这不是本节的重点,所以不做具体介绍,之后应该会有相关的文章专门去讲这方面的知识。

二、LINUX平台

在LINUX平台下,我们有三种方式确定某一端口的占用情况:

1、使用LSOF命令。

注意,为了显示更多内容,最好使用ROOT帐号登录。比如要查看80端口的使用情况,应在命令行窗口输入lsof -i:80,如果没有显示内容,则表示该端口未开放,如果开放,则会显示相应信息,如下图:

2、使用netstat命令

 netstat命令各个参数说明如下:   

-t : 指明显示TCP端口   

-u : 指明显示UDP端口   

-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)   

-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。   

-n : 不进行DNS轮询,显示IP(可以加速操作) 即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况

 netstat -ntlp   //查看当前所有tcp端口· 

netstat -ntulp |grep 80   //查看所有80端口使用情况· 

netstat -an | grep 3306   //查看所有3306端口使用情况· 

如图:查看所有端口的连接情况:netstat -aptn

查看所有的UDP连接:netstat -nupl

查看所有的TCP连接:netstat -ntpl

注:LINUX平台内容和图片来自互联网,如有侵权请私信告之。

除了上面讲到的在WINDOWS和linux平台下查看端口占用情况的方法之外,还有一个命令也可以查看端口打开情况,那就是TELNET命令。

这个命令主要是测试远程电脑指定的端口是否打开,使用格式如下:

telnet ip 端口 (如果不写端口,默认连接23号端口)

例:

测试本机23端口:telnet 127.0.0.1 23   或者telnet 127.0.0.1

测试指定电脑的80端口:telnet 10.0.0.27 80

不过这个命令并不是windows的内部命令,需要安装该服务才可以使用该命令,TELNET服务端和客户端,在WIN7\WIN8\win10中都默认没有安装该客户端功能。所以如果在命令行下直接执行该命令,会提示不是内部或外部命令。这是你需要安装该服务才可以。

而服务器端也需要安装telnet服务才可以访问,绝大多数的服务器都关闭了TELNET服务和23端口,所以这个在实际应用中用的并不是太多。大家了解一下就好了。

好了,本节内容就先介绍到这里,本节我们主要介绍了如何查看电脑端口的占用情况,在下一节《防黑必备技能之端口篇(3)》,我们会介绍如何打开和关闭端口。请持续关注哦……

延伸阅读相关文章:

防黑必备技能之端口篇(1)

欢迎扫描二维码关注:大兵说安全

如果你觉得本文不错,别忘了打赏哦,您的打赏是我努力的动力。

本文源自微信公众号:大兵说安全

人已赞赏
安全工具

从“从‘又双叒叕一家单位被勒索了!’想到的”想到的

2019-10-14 17:34:53

安全工具

华山论剑,谁是真英雄——从渗透角度实测终端安全软件

2019-10-14 17:35:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索