1、如何查看计算机端口状说到端口,这确实是个老话题,但一切都是从它开始的,不得不说。何谓端口,打个比方,你住在一座房子里,想让别人来拜访你,得在房子上开个大门,你养了个可爱的小猫,为了它的进出,专门给它修了个小门,为了到后花园,又开了个后门所有这些为了进到这所房子里而开的门叫端口,这些为了别人进来而开的端口称它为“服务端口” 。 你要拜访一个叫张三的人,张三家应该开了个允许你来的门-服务端口,否则将被拒之门外。去时,首先你在家开个“门” ,然后通过这个“门”径直走进张三家的大门。为了访问别人而在自己的房子开的“门” ,称为“客户端口” 。它是随机开的而且是主动打开的,访问完就自行关闭了。它和服务端
2、口性质是不一样的,服务端口是开了个门等着别人来访问,而客户端口是主动打开一个门去打开别人的门,这点一定要清楚。 下面从专业的角度再简单解释一下端口的概念。联网的计算机要能相互通信必须用同一种协议,协议就是计算机通信的语言,计算机之间必须说一种语言才能彼此通信,internet 的通用语言是tcp/tp,它是一组协议,它规定在网络的第四层运输层有两种协议tcp、udp。端口就是这两个协议打开的,端口分为源端口和目的端口,源端口是本机打开的,目的端口是正在和本机通信的另一台计算机的端口,源端口分主动打开的客户端口和被动连接的服务端口两种。在 internet 中,你访问一个网站时就是在本机开个端口
3、去连网站服务器的一个端口,别人访问你时也是如此。也就是说计算机的通讯就像互相串门一样,从这个门走进哪个门。 当装好系统后默认就开了很多“服务端口” 。如何知道自己的计算机系统开了那些端口呢?这就是下面要说的。 二) 、查看端口的方法 1、命令方式 下面以 windows xp 为例看看新安装的系统都开了那些端口,也就是说都预留了那些门,不借助任何工具来查看端口的命令是netstat,方法如下: a、在“开始”的“运行”处键入 cmd,回车 b、在 dos 命令界面,键入 netstat -na,图 2 显示的就是打开的服务端口,其中 proto 代表协议,该图中可以看出有 tcp 和 udp
4、两种协议。local address代表本机地址,该地址冒号后的数字就是开放的端口号。foreign address 代表远程地址,如果和其它机器正在通信,显示的就是对方的地址,state 代表状态,显示的 listening 表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接。就像你房子的门已经敞开了,但此时还没有人进来。以第一行为例看看它的意思。 tcp 0.0.0.0:135 0.0.0.0:0 listening 这一行的意思是本机的 135 端口正在等待连接。注意:只有 tcp 协议的服务端口才能处于 listening 状态。 图 1 用 netstat 命令查看端口
5、状态 2、用 tcpview 工具 为了更好的分析端口,最好用 tcpview 这个软件,该软件很小只有93kb,而且是个绿色软件,不用安装。 图 3 是 tcpview 的运行界面。第一次显示时字体有些小,在“options”-“font”中将字号调大即可。tcpview 显示的数据是动态的。图 3 中 local address 显示的就是本机开放的哪个端口(:号后面的数字) ,tcpview 可以看出哪个端口是由哪个程序发起的。从图 3 可以看出 445、139、1025、135、5000 等端口是开放的,445、139 等端口都是 system 发起的,135 等都是 svchost
6、发起的。 图 2 用 tcpview 查看端口状态 三) 、研究端口的目的 1、知道本机开了那些端口,也就是可以进入到本机的“门”有几个,都是谁开的? 2、目前本机的端口处于什么状态,是等待连接还是已经连接,如果是已经连接那就要特别注意看连接是个正常连接还是非正常连接(木马等)? 3、目前本机是不是正在和其它计算机交换数据,是正常的程序防问到一个正常网站还是访问到一个陷阱? 当你上网时就是本机和其它机器传递数据的过程,要传递数据必须要用到端口,即使是有些非常高明的木马利用正常的端口传送数据也不是了无痕迹的,数据在开始传输、正在传输和结束传输的不同阶段都有各自的状态,要想搞明白上述 3 个问题,
7、就必须清楚端口的状态变化。下面结合实例先分析服务端口的状态变化。只有 tcp协议才有状态,udp 协议是不可靠传输,是没有状态的。 四) 、服务端口的状态变化 先在本机(ip 地址为:192.168.1.10)配置 ftp 服务,然后在其它计算机(ip 地址为:192.168.1.1)访问 ftp 服务,从 tcpview 看看端口的状态变化。 下面黑体字显示的是从 tcpview 中截取的部分。 1、listening 状态 ftp 服务启动后首先处于侦听(listening)状态。 state 显示是 listening 时表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接。
8、就像你房子的门已经敞开的,但还没有人进来。 从 tcpview 可以看出本机开放 ftp 的情况。它的意思是:程序inetinfo.exe 开放了 21 端口,ftp 默认的端口为 21,可见在本机开放了 ftp 服务。目前正处于侦听状态。 inetinfo.exe:1260 tcp 0.0.0.0:21 0.0.0.0:0 listening 2、established 状态 现在从 192.168.1.1 这台计算机访问一下 192.168.1.10 的 ftp 服务。在本机的 tcpview 可以看出端口状态变为 established。 established 的意思是建立连接。表示两
9、台机器正在通信。 下面显示的是本机的 ftp 服务正在被 192.168.1.1 这台计算机访问。inetinfo.exe:1260 tcp 192.168.1.10:21 192.168.1.1:3009 established 注意:处于 established 状态的连接一定要格外注意,因为它也许不是个正常连接。后面要讲到这个问题。 3、 time_wait 状态 现在从 192.168.1.1 这台计算机结束访问 192.168.1.10 的 ftp 服务。在本机的 tcpview 可以看出端口状态变为 time_wait。 time_wait 的意思是结束了这次连接。说明 21 端口
10、曾经有过访问,但访问结束了。 system process:0 tcp 192.168.1.10:21 192.168.1.1:3009 time_wait 4、小技巧 a、可以 telnet 一个开放的端口,来观察该端口的变化。比如看1025 端口是开放的,在命令状态(如图 1 运行 cmd)运行: telnet 192.168.1.10 1025 b、从本机也可以测试,只不过显示的是本机连本机 c、在 tcpview 中双击连接可看出程序的位置,右键点击该连接,选择 end process 即可结束该连接 五) 、客户端口的状态变化 客户端口实际上就是从本机访问其它计算机服务时打开的源端口
11、,最多的应用是上网,下面就以访问 为例来看看端口开放以及状态的变化情况。 1、syn_sent 状态 syn_sent 状态表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为 syn_sent,如果连接成功了就变为 established,此时 syn_sent 状态非常短暂。但如果发现syn_sent 非常多且在向不同的机器发出,那你的机器可能中了冲击波或震荡波之类的病毒了。这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多 syn_sent 的原因。 下面显示的是本机连接 网站时的开始状
12、态,如果你的网络正常的,那很快就变为 established 的连接状态。 iexplore.exe:2928 tcp 192.168.1.10:1035 202.108.250.249:80 syn_sent 2、established 状态 下面显示的是本机正在访问 网站。如果你访问的网站有许多内容比如访问 ,那会发现一个地址有许多established,这是正常的,网站中的每个内容比如图片、flash 等都要单独建立一个连接。看 established 状态时一定要注意是不是iexplore.exe 程序(ie)发起的连接,如果是 explore.exe 之类的程序发起的连接,那也许是
13、你的计算机中了木马了。 iexplore.exe:3120 tcp 192.168.1.10:1045 202.108.250.249:80 established 3、time_wait 状态 如果浏览网页完毕,那就变为 time_wait 状态。 system process:0 tcp 192.168.1.10:4259 202.108.250.249:80 time_wait 六) 、端口详细变迁图 以上是最主要的几个状态,实际还有一些,图 4 是 tcp 的状态详细变迁图(从 tcp/ip 详解中剪来) ,用粗的实线箭头表示正常的客户端状态变迁,用粗的虚线箭头表示正常的服务器状态变迁
14、。这些不在本文的讨论范围。有兴趣的朋友可以好好研究一下。 图 3 tcp 的状态变迁图 七) 、要点 一般用户一定要熟悉(再?嗦几句): 1、服务端口重点要看的是 listening 状态和 established 状态,listening 是本机开了哪些端口,established 是谁在访问你的机器,从哪个地址访问的。 2、客户端口的 syn_sent 状态和 established 状态,syn_sent 是本机向其它计算机发出的连接请求,一般这个状态存在的时间很短,但如果本机发出了很多 syn_sent,那可能就是中毒了。看established 状态是要发现本机正在和哪个机器传送数据
15、,主要看是不是一个正常程序发起的。 二、木马 什么是木马,简单的说就是在未经你许可偷偷在你的计算机中开个后门,木马开后门主要有两种方式。 1、有服务端口的木马 这类木马都要开个服务端口的后门,成功后该后门处于 listening状态,它的端口号可能固定一个数,也可能变化,还有的木马可以与正常的端口合用,例如你开着正常的 80 端口(web 服务) ,木马也用 80 端口。这种木马最大的特点就是有端口处于 listening 状态,需要远程计算机连接它。这种木马对一般用户比较好防范,将防火墙设为拒绝从外到内的连接即可。比较难防范的是反弹型木马。 2、反弹型木马 反弹型木马是从内向外的连接,它可以
16、有效的穿透防火墙,而且即使你使用的是内网 ip,他一样也能访问你的计算机。这种木马的原理是服务端主动连接客户端(黑客)地址。木马的服务端软件就像你的 internet explorer 一样,使用动态分配端口去连接客户端的某一端口,通常是常用端口,像端口 80。而且会使用隐避性较强的文件名,像 iexpiore.exe、explorer(ie 的程序是 iexplore.exe) 。如果你不仔细看,你可能会以为是你的 internet explorer。这样你的防火墙也会被骗过。如果你在 tcpview 中看到下面这样的连接一定要注意,很有可能是种木马了。 iexpiore.exe 192.1
17、68.1.10(本机 ip):1035(你的端口) y.y.y.y(远程 ip):80(远程端口) 或 rundll32.exe 192.168.1.10(本机 ip):1035(你的端口) y.y.y.y(远程 ip):80(远程端口) 或 explorer.exe 192.168.1.10(本机 ip):1035(你的端口) y.y.y.y(远程 ip):80(远程端口) 三、安全 分析端口的目的就是要保证上网安全,根据以上的思路可以从以下几个方面来防范。 一) 、关闭不需要的端口 对一般上网用户来说只要能访问 internet 就行了,并不需要别人来访问你,也就是说没有必要开放服务端口,
18、在 win 98 可以做到不开放任何服务端口上网,但在 win xp、win 2000、win 2003 下不行,但可以关闭不必要的端口。图 3 是安装完 win xp 系统默认开的端口,以此为例关闭不必要的端口。 1、关闭 137、138、139、445 端口 这几个端口都是为共享而开的,是 netbios 协议的应用,一般上网用户是不需要别人来共享你的内容的,而且也是漏洞最多的端口。关闭的方法很多,最近从网上学了一招非常好用,一次全部关闭上述端口。 开始- 控制面板- 系统- 硬件- 设备管理器- 查看- 显示隐藏的设备- 非即插即用驱动程序- netbios over tcpip。 找到
19、图 5 界面后禁用该设备重新启动后即可。 图 4 关闭 137、138、139、445 端口 2、关闭 123 端口 有些蠕虫病毒可利用 udp 123 端口,关闭的方法:如图 6 停止windows time 服务。 图 5 关闭 123 端口 3、关闭 1900 端口 攻击者只要向某个拥有多台 win xp 系统的网络发送一个虚假的 udp包,就可能会造成这些 win xp 主机对指定的主机进行攻击(ddos) 。另外如果向该系统 1900 端口发送一个 udp 包,令“location“域的地址指向另一系统的 chargen 端口,就有可能使系统陷入一个死循环,消耗掉系统的所有资源(需要
20、安装硬件时需手动开启) 。 关闭 1900 端口的方法如图 7 所示停止 ssdp discovery service 服务。 图 6 关闭 1900 端口 通过上面的办法关闭了一些有漏洞的或不用的端口后是不是就没问题了呢?不是。因为有些端口是不能关掉的。像 135 端口,它是rpc 服务打开的端口如果把这个服务停掉,那计算机就关机了,同样像 lsass 打开的端口 500 和 4500 也不能关闭。冲击波病毒利用的就是 135 端口,对于不能关闭的端口最好的办法一是常打补丁,端口都是相应的服务打开的,但是对于一般用户很难判断这些服务到底有什么用途,也很难找到停止哪些服务就能关闭相应的端口。最
21、好的办法就是下面要讲的安装防火墙。安装防火墙的作用通俗的说就像你不管住在一所结实的好房子里还是住在一所千疮百孔的破房子里,只要你在房子的四周建了一堵密不透风的墙,那对于墙里的房子就是安全的。 二) 、安装防火墙 对于一般用户来讲有下面三类防火墙 1、 自带的防火墙 关于 win xp 与 win 2003 自带防火墙的设置请参阅天极网中拙作,不再赘述。 2、adsl 猫防火墙 通过 adsl 上网的,如果有条件最好将 adsl 猫设置为地址转换方式(nat) ,也就是大家常说的路由模式,其实路由与 nat 是不一样的,权且这么叫吧。用 nat 方式最大的好处是设置完毕后,adsl 猫就是一个放
22、火墙,它一般只开放 80、21、161 等为了对 adsl 猫进行设置开放的端口。如果不做端口映射的话,一般从远程是攻击不到 adsl猫后面的计算机的。adsl 猫最大的安全隐患就是很多用户都不改变默认密码。这样黑客如果进到你的猫做个端口映射就有可能进入到你的计算机,一定把默认密码改掉。 用自带的放火墙和 adsl 猫的 nat 方式基本可以抵御从外到内的攻击,也就是说即使服务端口开放(包括系统开放的端口和中了开个服务端口的木马) ,黑客和类似震荡波一类的病毒也奈何不了你的计算机。上述防火墙只能防止从外到内的连接,不能防止从内到外的连接,当你打开网页和用 qq 聊天时就是从内到外的连接,反弹型
23、木马就是利用放火墙的这一特性来盗取你机器的数据的。反弹型木马虽然十分隐蔽,但也不是没有马脚,防范这类木马最好的办法就是用第三方防火墙。 3、第三方防火墙 前面说过,反弹型木马而且会使用隐避性较强的文件名,像iexpiore.exe、explorer 等与 ie 的程序 iexplore.exe 很想的名字或用一些 rundll32 之类的好像是系统文件的名字,但木马的本质就是要与远程的计算机通讯,只要通讯就会有连接。如下所示:正常连接是 iexplore.exe 发起的,而非正常连接是木马程序 explorer 发起的。 图 7 正常连接 图 8 木马连接 一般的防火墙都有应用程序访问网络的权
24、限设置,如图 8 所示,在防火墙的这类选项中将不允许访问网络的应用程序选择 x,即不允许访问网络。 在写这篇文章之前笔者中了一个反弹型木马,就是 explorer 程序向外连接,用了好几个查毒软件也没有杀掉,当时就先用天网放火墙阻止它访问网络,然后手工费了很大的劲才清除掉。可惜没有做截图。没有勇气为了写这篇文章再牺牲一把了。 4、用 tcpview 结束一个连接 当你用 tcpview 观察哪个连接有可能是不正常的连接,可在tcpview 中直接鼠标右键点击该连接,选择 end process 即可结束该连接。 四、扫描 谈起扫描又是个大话题了,有端口扫描(superscan) 、漏洞扫描(x
25、-scan)等,关于扫描的话题以后再论,本文只对一般用户简单说一下在线安全检测。如果你按上面的说得作了相应的安全措施,就可以在网上找个在线测试安全的网站测试一下你目前系统的安全情况,如到下面网站: 1、千禧在线-在线检测 2、蓝盾在线检测 3、天网安全在线 4、诺顿在线安全检测 说明一点,测试机器时开了 21、23、80 端口,但这都是 adsl 的服务端口,modem 没有提供修改和关闭的地方,不过没关系,只要把密码设的复杂点就行了。 五、震荡波 如果你按上述关闭了 445 端口或者开启了放火墙那就不会受到震荡波及类似的病毒骚扰了,关于震荡波病毒的文章太多了,此处就不多谈。只要做好了安全防护
26、,不管是震荡大波还是冲击小波只能在你的计算机门前掠过而奈何不了你。 六、后记 关于计算机的安全还有很多要设置,但对于一般用户来说,太多的安全设置就等于没有了安全,因为即使对于专业从事计算机安全的人员对于安全的设置也不是件容易的事,何况对于对计算机的知识还不够的一般用户。如果要作很多设置才能保证安全,那肯定就有很多人不做了。对一般用户个人的建议是力所能及的事一定要做,比如: 1、上网时一定要安装防病毒软件并及时升级。 2、至少安装一个防火墙,adsl 用户最好用路由方式上网,改掉默认密码。 3、经常打补丁,windows 用户最好将系统设为自动升级。 4、自己要做的就是用 tcpview 常常看看连接,防止反弹型木马。常常看看,时间长了也许就看成专家了。 5、udp 协议是不可靠传输,没有状态,从 tcpview 中很难看出它是不是在传输数据,感兴趣的朋友可以用 iris、sniffer 这类的协议分析工具看看是不是有 udp 的数据。关于这个话题以后再聊。 6、本文题目起的很大,但写起来又觉得很多问题都是别人说了再说的,也就没有深谈。 道高一尺,魔高一丈。网络安全将是一个永恒的话题,没有绝对的安全,但有了防范意识总比敞开了大门还不知道好吧。