端口扫描技术与分析(二)

端口扫描分析(一)常用的网络相关命令

来源/作者:Oliver

一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。

在手工进行扫描时,需要熟悉各种命令。对命令执行后的输出进行分析。用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。

通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。

下面首先介绍几个常用网络命令,对端口扫描原理进行介绍,然后提供一个简单的扫描程序。第一节 几个常用网络相关命令

Ping命令经常用来对TCP/IP网络进行诊断。通过目标计算机发送一个数据包,让它将这个数据包反送回来,如果返回的数据包和发送的数据包一致,那就是说你的PING命令成功了。通过这样对返回的数据进行分析,就能判断计算机是否开着,或者这个数据包从发送到返回需要多少时间。

一。几个常用网络相关命令

1.Ping命令的基本格式:

pinghostname

其中hostname是目标计算机的地址。Ping还有许多高级使用,下面就是一个例子。

C:> ping-f hostname

这条命令给目标机器发送大量的数据,从而使目标计算机忙于回应。在Windows95的计算机上,使用下面的方法:

c:\windows\ping-l 65500 saddam_hussein's.computer.mil

这样做了之后,目标计算机有可能会挂起来,或从新启动。由于-l 65510 产生一个巨大的数据包。由于要求返回一个同样的数据包,会使目标计算机反应不过来。

在Linux计算机上,可以编写一个程序来实现上述方法。

#include

#include

#include

#include

#include

#include

#include

#include

 

/*

* If yourkernel doesn't muck with raw packets, #define REALLY_RAW.

* This isprobably only Linux.

*/

#ifdefREALLY_RAW

#defineFIX(x) htons(x)

#else

#defineFIX(x) (x)

#endif

 

int

main(intargc, char **argv)

{

int s;

charbuf[1500];

struct ip*ip = (struct ip *)buf;

struct icmp*icmp = (struct icmp *)(ip + 1);

structhostent *hp;

structsockaddr_in dst;

int offset;

int on = 1;

 

bzero(buf,sizeof buf);

if ((s =socket(AF_INET, SOCK_RAW, IPPROTO_IP)) ip_dst.s_addr = inet_addr(argv[1])) ==-1) {

fprintf(stderr,"%s: unknown host\n", argv[1]);

}

} else {

bcopy(hp->h_addr_list[0],&ip->ip_dst.s_addr, hp->h_length);

}

printf("Sendingto %s\n", inet_ntoa(ip->ip_dst));

ip->ip_v= 4;

ip->ip_hl= sizeof *ip >> 2;

ip->ip_tos= 0;

ip->ip_len= FIX(sizeof buf);

ip->ip_id= htons(4321);

ip->ip_off= FIX(0);

ip->ip_ttl= 255;

ip->ip_p= 1;

ip->ip_sum= 0;         /* kernel fills in */

ip->ip_src.s_addr= 0;     /* kernel fills in */

 

dst.sin_addr= ip->ip_dst;

dst.sin_family= AF_INET;

 

icmp->icmp_type= ICMP_ECHO;

icmp->icmp_code= 0;

icmp->icmp_cksum= htons(~(ICMP_ECHO ip_off = FIX(offset >> 3);

if (offsetip_off |= FIX(IP_MF);

else

ip->ip_len= FIX(418); /* make total 65538 */

if(sendto(s, buf, sizeof buf, 0, (struct sockaddr *)&dst,

sizeof dst)icmp_type = 0;

icmp->icmp_code= 0;

icmp->icmp_cksum= 0;

}

}

}

2.Tracert命令用来跟踪一个消息从一台计算机到另一台计算机所走的路径,比方说从你的计算机走到浙江信息超市。在DOS窗口下,命令如下:

C:\WINDOWS>tracert202.96.102.4

Tracingroute to 202.96.102.4 over a maximum of 30 hops

1  84 ms  82ms  95 ms 202.96.101.57

2  100 ms 100 ms  95 ms 0fa1.1-rtr1-a-hz1.zj.CN.NET [202.96.101.33]

3  95 ms  90ms  100 ms 202.101.165.1

4  90 ms  90ms  90 ms 202.107.197.98

5  95 ms  90ms  99 ms 202.96.102.4

6  90 ms  95ms  100 ms 202.96.102.4

Tracecomplete.

上面的这些输出代表什么意思?左边的数字是该路由通过的计算机数目。"150ms"是指向那台计算机发送消息的往返时间,单位是微秒。由于每条消息每次的来回的时间不一样,tracert将显示来回时间三次。"*"表示来回时间太长,tracert将这个时间“忘掉了”。在时间信息到来后,计算机的名字信息也到了。开始是一种便于人们阅读的格式,接着是数字格式。

C:\WINDOWS>tracert 152.163.199.56

Tracingroute to dns-aol.ANS.NET [198.83.210.28]over a maximum of 30 hops:

1  124 ms 106 ms 105 ms 202.96.101.57

2  95 ms  95ms  90 ms 0fa1.1-rtr1-a-hz1.zj.CN.NET [202.96.101.33]

3  100ms  90 ms  100 ms 202.101.165.1

4  90 ms  95ms  95 ms 202.97.18.241

5  105 ms 105 ms  100 ms 202.97.18.93

6  100ms  99 ms  100 ms 202.97.10.37

7  135ms  98 ms  100 ms 202.97.9.78

8 760 ms 725 ms  768 ms gip-ftworth-4-serial8-3.gip.net [204.59.178.53]

9 730 ms 750 ms  715 ms gip-ftworth-4-serial8-3.gip.net [204.59.178.53]

10 750 ms 785 ms  772 ms 144.232.11.9

11  740 ms 800 ms  735 ms sl-bb11-pen-2-0.sprintlink.NET [144.232.8.158]

12  790 ms 800 ms  735 ms sl-nap2-pen-4-0-0.sprintlink.net [144.232.5.66]

13  770 ms 800 ms  800 ms p219.t3.ans.net [192.157.69.13]

14  775 ms 820 ms  780 ms h14-1.t60-6.Reston.t3.ANS.NET [140.223.17.18]

15  780 ms 800 ms  800 ms h11-1.t60-2.Reston.t3.ANS.NET [140.223.25.34]

16  790 ms 795 ms  800 ms h14-1.t104-0.Atlanta.t3.ANS.NET [140.223.65.18]

17   *h14-1.t104-0.Atlanta.t3.ANS.NET [140.223.65.18] reports: Destination hostunreachable.

Tracecomplete.

3.rusers和finger

这两个都是Unix命令。通过这两个命令,你能收集到目标计算机上的有关用户的消息。

使用rusers命令,产生的结果如下示意:

gajakesnark.wizard.com:ttyp1 Nov 13 15:42 7:30 (remote)

rootsnark.wizard.com:ttyp2 Nov 13 14:57 7:21 (remote)

robosnark.wizard.com:ttyp3 Nov 15 01:04 01 (remote)

angel111snark.wizard.com:ttyp4 Nov14 23:09    (remote)

pippensnark.wizard.com:ttyp6 Nov 14 15:05     (remote)

rootsnark.wizard.com:ttyp5 Nov 13 16:03  7:52 (remote)

gajakesnark.wizard.com:ttyp7 Nov 14 20:20  2:59 (remote)

dafrsnark.wizard.com:ttyp15Nov 3 20:09  4:55 (remote)

dafrsnark.wizard.com:ttyp1 Nov 14 06:12  19:12 (remote)

dafrsnark.wizard.com:ttyp19Nov 14 06:12  19:02 (remote)

最左边的是通过远程登录的用户名。还包括上次登录时间,使用的SHELL类型等等信息。

使用finger可以产生类似下面的结果:

user S00 PPPppp-122-pm1.wiza Thu Nov 14 21:29:30 - still logged in

user S15 PPPppp-119-pm1.wiza Thu Nov 14 22:16:35 - still logged in

user S04 PPPppp-121-pm1.wiza Fri Nov 15 00:03:22 - still logged in

user S03 PPPppp-112-pm1.wiza Thu Nov 14 22:20:23 - still logged in

user S26 PPPppp-124-pm1.wiza Fri Nov 15 01:26:49 - still logged in

user S25 PPPppp-102-pm1.wiza Thu Nov 14 23:18:00 - still logged in

user S17 PPPppp-115-pm1.wiza Thu Nov 14 07:45:00 - still logged in

userS-1 0.0.0.0 Sat Aug 10 15:50:03 - still logged in

user S23 PPPppp-103-pm1.wiza Fri Nov 15 00:13:53 - still logged in

user S12 PPPppp-111-pm1.wiza Wed Nov 13 16:58:12 - still logged in

这个命令能显示用户的状态。该命令是建立在客户/服务模型之上的。用户通过客户端软件向服务器请求信息,然后解释这些信息,提供给用户。在服务器上一般运行一个叫做fingerd的程序,根据服务器的机器的配置,能向客户提供某些信息。如果考虑到保护这些个人信息的话,有可能许多服务器不提供这个服务,或者只提供一些无关的信息。

4.host命令

host是一个Unix命令,它的功能和标准的nslookup查询一样。唯一的区别是host命令比较容易理解。host命令的危险性相当大,下面举个使用实例,演示一次对bu.edu的host查询。

host -l -v-t any bu.edu

这个命令的执行结果所得到的信息十分多,包括操作系统,机器和网络的很多数据。先看一下基本信息:

Found 1addresses for BU.EDU

Found 1addresses for RS0.INTERNIC.NET

Found 1addresses for SOFTWARE.BU.EDU

Found 5addresses for RS.INTERNIC.NET

Found 1addresses for NSEGC.BU.EDU

Trying128.197.27.7

bu.edu  86400IN  SOA  BU.EDU HOSTMASTER.BU.EDU(

961112121  ;serial(version)

900  ;refreshperiod

900  ;retryrefresh this often

604800  ;expirationperiod

86400  ;minimumTTL

)

bu.edu  86400IN  NS  SOFTWARE.BU.EDU

bu.edu  86400IN  NS  RS.INTERNIC.NET

bu.edu  86400IN  NS  NSEGC.BU.EDU

bu.edu  86400IN  A  128.197.27.7

这些本身并没有危险,只是一些机器和它们的DNS服务器。这些信息可以用WHOIS或在注册域名的站点中检索到。但看看下面几行信息:

bu.edu  86400IN  HINFO  SUN-SPARCSTATION-10/41  UNIX

PPP-77-25.bu.edu  86400IN  A  128.197.7.237

PPP-77-25.bu.edu  86400IN  HINFO  PPP-HOST  PPP-SW

PPP-77-26.bu.edu  86400IN  A  128.197.7.238

PPP-77-26.bu.edu  86400IN  HINFO  PPP-HOST  PPP-SW

ODIE.bu.edu  86400IN  A  128.197.10.52

ODIE.bu.edu  86400IN  MX  10 CS.BU.EDU

ODIE.bu.edu  86400IN  HINFO  DEC-ALPHA-3000/300LX  OSF1

从这里,我们马上就发现一台EDCAlpha运行的是OSF1操作系统。在看看:

STRAUSS.bu.edu  86400IN  HINFO  PC-PENTIUM  DOS/WINDOWS

BURULLUS.bu.edu  86400IN  HINFO  SUN-3/50  UNIX (Ouch)

GEORGETOWN.bu.edu  86400IN  HINFO  MACINTOSH  MAC-OS

CHEEZWIZ.bu.edu  86400IN  HINFO  SGI-INDIGO-2  UNIX

POLLUX.bu.edu  86400IN  HINFO  SUN-4/20-SPARCSTATION-SLC  UNIX

SFA109-PC201.bu.edu  86400IN  HINFO  PC  MS-DOS/WINDOWS

UH-PC002-CT.bu.edu  86400IN  HINFO  PC-CLONE  MS-DOS

SOFTWARE.bu.edu  86400IN  HINFO  SUN-SPARCSTATION-10/30  UNIX

CABMAC.bu.edu  86400IN  HINFO  MACINTOSH  MAC-OS

VIDUAL.bu.edu  86400IN  HINFO  SGI-INDY  IRIX

KIOSK-GB.bu.edu  86400IN  HINFO  GATORBOX  GATORWARE

CLARINET.bu.edu  86400IN  HINFO  VISUAL-X-19-TURBO  X-SERVER

DUNCAN.bu.edu  86400IN  HINFO  DEC-ALPHA-3000/400  OSF1

MILHOUSE.bu.edu  86400IN  HINFO  VAXSTATION-II/GPX  UNIX

PSY81-PC150.bu.edu  86400IN  HINFO  PC  WINDOWS-95

BUPHYC.bu.edu  86400IN  HINFO  VAX-4000/300  OpenVMS

可见,任何人都能通过在命令行里键入一个命令,就能收集到一个域里的所有计算机的重要信息。而且只化了3秒时间。

我们利用上述有用的网络命令,可以收集到许多有用的信息,比方一个域里的名字服务器的地址,一台计算机上的用户名,一台服务器上正在运行什么服务,这个服务是哪个软件提供的,计算机上运行的是什么操作系统。

如果你知道目标计算机上运行的操作系统和服务应用程序后,就能利用已经发现的他们的漏洞来进行攻击。如果目标计算机的网络管理员没有对这些漏洞及时修补的话,入侵者能轻而易举的闯入该系统,获得管理员权限,并留下后门。

如果入侵者得到目标计算机上的用户名后,能使用口令破解软件,多次试图登录目标计算机。经过尝试后,就有可能进入目标计算机。得到了用户名,就等于得到了一半的进入权限,剩下的只是使用软件进行攻击而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值