Netstat命令解读

怎样查别人的IP?怎样查自己的IP呢?我系统的哪些段口是开的?我怎样知道我的系统是否被安装了木马程序?

其实这些问题(还有一些相似的问题)有一个简单的答案:Netstat命令!

微软公司故意将这个功能强大的命令隐藏起来是因为它对于普通用户来说有些复杂。

———————————————————–

Netstat 的定义

好,在我们继续之前,我们要先知道Netstat是到底用来做什么的,它可以用来获得你的系统网络连接的信息(使用的端口,在使用的协议等 ),收到和发出的数据,被连接的远程系统的端口,Netstat在内存中读取所有的网络信息。

在Internet RFC标准中,Netstat的定义是:

Netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

———————————————————–

netstat 参数

现在我们在对Netstat有了一定的了解之后就可以来使用它了,如果你打开了DOS窗口,你可以用以下命令来获取有关Netstat的帮助信息。

C:>netstat /?

NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]

-a            显示所有连接和监听端口。

-b            显示包含于创建每个连接或监听端口的

可执行组件。在某些情况下已知可执行组件

拥有多个独立组件,并且在这些情况下

包含于创建连接或监听端口的组件序列

被显示。这种情况下,可执行组件名

在底部的 [] 中,顶部是其调用的组件,

等等,直到 TCP/IP 部分。注意此选项

可能需要很长时间,如果没有足够权限

可能失败。

-e            显示以太网统计信息。此选项可以与 -s

选项组合使用。

-n            以数字形式显示地址和端口号。

-o            显示与每个连接相关的所属进程 ID。

-p proto      显示 proto 指定的协议的连接;proto 可以是

下列协议之一: TCP、UDP、TCPv6 或 UDPv6。

如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协之一:

IP、IPv6、 ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。

-r            显示路由表。

-s            显示按协议统计信息。默认地,显示 IP、

IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;

-p 选项用于指定默认情况的子集。

-v            与 -b 选项一起使用时将显示包含于

为所有可执行组件创建连接或监听端口的

组件。

———————————————————

netstat 实战

netstat 打开方法  假设在Windows命令下操作,点击开始,在运行框内输入cmd,回车,进入命令行模式。

下面我们试试每个命令并查看结果,用来理解当我们执行命令后发生了什么,显示出的信息是什么意思?

首先,我们使用Netstat的-a参数命令。

–a            显示所有连接和监听端口。

实战:在提示符下输入netstat  -a

Active Connections

Proto  Local Address          Foreign Address        State

TCP    123456A:epmap  123456A:0      LISTENING

TCP    123456A:microsoft-ds  123456A:0      LISTENING

TCP    123456A:1029   123456A:0      LISTENING

TCP     123456A:2072   220.181.9.13:http      CLOSE_WAIT

UDP    123456A:bootpc  *:*

UDP    123456A:microsoft-ds  *:*

UDP    123456A:isakmp  *:*

UDP    123456A:4500   *:*

UDP    123456A:ntp    *:*

UDP    123456A:1176   *:*

UDP    123456A:1900   *:*

UDP    123456A:2019   *:*

UDP    123456A:ntp    *:*

UDP    123456A:netbios-ns  *:*

UDP    123456A:netbios-dgm  *:*

UDP    123456A:1900   *:*

UDP    123456A:ntp    *:*

UDP    123456A:1900   *:*

我们对其中的术语进行讲解:

Active Connections,就是活动连接

Proto(协议)  Local Address (本地)   Foreign Address(远程)  State(状态)

协议(Proto)包括: TCP 和 UDP 协议

本地(Local Address):123456A:epmap

123456A 本地机器名 ; epmap  说明135端口没有关闭

另外,ankit指本地已打开端口1031;

microsoft-ds是 windows提供的允许远程用户连接的端口(TCP445)这曾经是win2K的一个拒绝服务漏洞;

netbios-ssn指本地已打开 139端口,139端口是NetBIOS Session端口,用来文件和打印共享;

bootpc,bootps(bootpc) 是因为dhcp的服务和客户分别用udp的67与68地址来分配和获取IP地址的。注:dhcp来源于bootp(主机引导协议),它是主机在boot时靠udp广播来获取ip地址.

netbios-ns,即 netbios_ns_u,137,netbios name service(netbios名称服务);

netbios-dgm,即 netbios_dgm_u,138,netbios datagram service(netbios数据包服务);

ntp , 网络校时协议

Foreign Address(远程)    220.181.9.X:http

远程机器名 220.181.9.X;

远程端口:http

状态:CLOSE_WAIT(已经建连接,准备断开)

另外, LISTENING表示打开并等待别人连接的端口;

SYN_SENT 表示请求连接;

ESTABLISHED 表示连接成功;

time_wait 表示系统在等待客户端的相应。

-a参数常用于获得你的本地系统开放的端口,用它您可以自己检查你的系统上有没有被安装木马。如果您发现下面的信息:

Port 12345(TCP) Netbus

Port 31337(UDP) Back Orifice   祝贺!您中了最常见的木马!

如果你需要木马列表的话,去国内的H站找找;当然,我的博客上也有,不太全。

*****************************************************************

#一些原理:也许你有这样的问题:「在机器名后的端口号代表什么?」

例子:ankit:1052

小于1024的端口通常运行一些网络服务,大于1024的端口用来与远程机器建立连接,比如,你的浏览器在建立一个与www.163.com的连接,这时你的机器将打开一个随意的但大于1024的端口用于连接163的伺服器。

*****************************************************************

继续我们的探讨,使用-n参数。(Netstat -n)

Netstat -n基本上是-a参数的数字形式:

C:>netstat -n

Active Connections

Proto  Local Address          Foreign Address        State

TCP    222.89.171.180:2508    220.181.9.13:80        CLOSE_WAIT

TCP    222.89.171.180:2522    220.165.9.62:80        TIME_WAIT

通过比较,发现有两点不同。

1 -n参数命令用IP地址代替机器名;但是如果对方电脑如果禁用了netbios,那么用参数-a,检测的结果也是IP地址。

2 Netstat -n命令不显示非TCP连接的数据。

-n参数通常用于查自己的IP时使用,也有些人使用他是因为他们更喜欢用数字的形式来显示主机名。

得到IP等于得到一切,它是最容易使机器受到攻击的东东,所以隐藏自己IP,获得别人的IP对hacker来说非常重要,现在隐藏IP技术很流行,但那些隐藏工具或服务真的让你引身吗?答案是:它们不能使你完全隐身。下面例子用来简单说明如何获得IP。

OICQ或ICQ是很流行的聊天软件(很容易在MM身上浪费时间),他们虽然不显示用户的IP,但都是「穿马甲的IP地址」,用下面的方法得到其他用户的IP。

1 看一个DOS窗口,打入Netstat -n获得你系统已经打开的端口和远程连接列表。

2 然后打开OICQ,给「受害者」发信息。

3 当你们还在聊天的时候,返回DOS窗口,再打入Netstat -n命令,你将发现一个显示新连接的IP地址,这个就应该是「受害者」的IP。(也有其他的情况…)

到目前为止,我们讨论了『-a』和『-n』及一些应用,并发现在屏幕上返回和显示的连接不是一个详尽的协议。这意味着它显示了TCP连接,UDP等,假如你想看到那个连接属于UDP连接,你需要用 -p参数。

通常的Netstat的-p参数格式如下:

Netstat -p xxx

xxx可以是UDP或TCP,我们用显示TCP连接的例子来理解如何使用-p参数。

C:>netstat -p  tcp

C:\Documents and Settings\Administrator>netstat -p tcp

Active Connections

Proto  Local Address          Foreign Address        State

TCP    123456A:2525   220.181.37.55:http     CLOSE_WAIT

TCP    123456A:2528   220.181.43.129:http    CLOSE_WAIT

这是个与-a,-n参数基本一样的变种。让我们继续看-e参数。

C:>netstat -e

Interface Statistics

Received            Sent

Bytes                     129605977        54402160

Unicast packets              104689          113520

Non-unicast packets             124             138

Discards                          0               0

Errors                            0               0

Unknown protocols             92829

有些质量不好的modems不显示输出或接受的数据包,用这个命令可以解决这个问题,你也可以用它查看你的机器在处理TCP/IP过程中的错误。

我要讲解下一个参数-r,显示路由表。这个命令有点难理解,而且涉及到其他方面的知识。下面我仅给出例子来理解-r参数。(在电脑方面,只要我们想做,我们就会有收获)

C:>netstat -r

Route Table

Active Routes:

Network Address Netmask Gateway Address Interface Metric

0.0.0.0 0.0.0.0 203.94.251.161 203.94.251.161 1

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

203.94.251.0 255.255.255.0 203.94.251.161 203.94.251.161 1

203.94.251.161 255.255.255.255 127.0.0.1 127.0.0.1 1

203.94.251.255 255.255.255.255 203.94.251.161 203.94.251.161 1

224.0.0.0 224.0.0.0 203.94.251.161 203.94.251.161 1

255.255.255.255 255.255.255.255 203.94.251.161 203.94.251.161 1

-s 显示按协议统计信息。默认地,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息(不再详解)

-v,与-p参数类似,后面不用带协议类型。-v与 -b 选项一起使用时将显示包含于                为所有可执行组件创建连接或监听端口的组件。这个命令很好用,可用来查看启动了什么程序,在什么及路径。(不再详解)

-o ,显示与每个连接相关的所属进程 PID。我们可以与tasklist配合作用,查找启动了什么程序。(不再详解)

—————–HLL的分割线——————-

以上文字部分部分来自:http://blog.163.com/jien0l@126/blog/static/378608620089242423538/