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

转载 2004年08月22日 11:04:00

发信人: Heway (陶陶), 信区: Internet_program
标  题: 端口扫描分析(一)常用的网络相关命令
发信站: 飘渺水云间 (Sun Mar 19 14:47:35 2000), 转信

来源/作者:Oliver
  一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口
扫描,能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用
端口扫描软件进行。
  在手工进行扫描时,需要熟悉各种命令。对命令执行后的输出进行分析。用扫描软
件进行扫描时,许多扫描器软件都有分析数据的功能。
  通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。
  下面首先介绍几个常用网络命令,对端口扫描原理进行介绍,然后提供一个简单的
扫描程序。第一节 几个常用网络相关命令
Ping命令经常用来对TCP/IP网络进行诊断。通过目标计算机发送一个数据包,让它将这
个数据包反送回来,如果返回的数据包和发送的数据包一致,那就是说你的PING命令成
功了。通过这样对返回的数据进 行分析,就能判断计算机是否开着,或者这个数据包从
发送到返回需要多少时间。
一。几个常用网络相关命令
1.Ping命令的基本格式:
ping hostname
  其中hostname是目标计算机的地址。Ping还有许多高级使用,下面就是一个例子。

C:> ping -f hostname
  这条命令给目标机器发送大量的数据,从而使目标计算机忙于回应。在Windows 95
的计算机上,使用下面的方法:
c:/windows/ping -l 65510 saddam_hussein's.computer.mil
  这样做了之后,目标计算机有可能会挂起来,或从新启动。由于 -l 65510 产生一
个巨大的数据包。由于要求返回一个同样的数据包,会使目标计算机反应不过来。
  在Linux计算机上,可以编写一个程序来实现上述方法。
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
/*
* If your kernel doesn't muck with raw packets, #define REALLY_RAW.
* This is probably only Linux.
*/
#ifdef REALLY_RAW
#define FIX(x) htons(x)
#else
#define FIX(x) (x)
#endif
int
main(int argc, char **argv)
{
int s;
char buf[1500];
struct ip *ip = (struct ip *)buf;
struct icmp *icmp = (struct icmp *)(ip + 1);
struct hostent *hp;
struct sockaddr_in dst;
int offset;
int on = 1;
bzero(buf, sizeof buf);
if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_IP)) < 0) {
perror("socket");
exit(1);
}
if (setsockopt(s, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0) {
perror("IP_HDRINCL");
exit(1);
}
if (argc != 2) {
fprintf(stderr, "usage: %s hostname/n", argv[0]);
exit(1);
}
if ((hp = gethostbyname(argv[1])) == NULL) {
if ((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("Sending to %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 << 8));
/* the checksum of all 0's is easy to compute */
for (offset = 0; offset < 65536; offset += (sizeof buf - sizeof *ip)) {
ip->ip_off = FIX(offset >> 3);
if (offset < 65120)
ip->ip_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) < 0) {
fprintf(stderr, "offset %d: ", offset);
perror("sendto");
}
if (offset == 0) {
icmp->icmp_type = 0;
icmp->icmp_code = 0;
icmp->icmp_cksum = 0;
}
}
}
2.Tracert命令用来跟踪一个消息从一台计算机到另一台计算机所走的路径,比方说从你
的计算机走到浙江信息超市。在DOS窗口下,命令如下:
C:/WINDOWS>tracert 202.96.102.4
Tracing route to 202.96.102.4 over a maximum of 30 hops
1 84 ms 82 ms 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 90 ms 100 ms 202.101.165.1
4 90 ms 90 ms 90 ms 202.107.197.98
5 95 ms 90 ms 99 ms 202.96.102.4
6 90 ms 95 ms 100 ms 202.96.102.4
Trace complete.
  上面的这些输出代表什么意思?左边的数字是该路由通过的计算机数目。"150 ms"
是指向那台计算机发送消息的往返时间,单位是微秒。由于每条消息每次的来回的时间
不一样,tracert将显示来回时间三次。"*"表示来回时间太长,tracert将这个时间“忘
掉了”。在时间信息到来后 ,计算机的名字信息也到了。开始是一种便于人们阅读的格
式, 接着是数字格式。
C:/WINDOWS>tracert 152.163.199.56
Tracing route 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 95 ms 90 ms 0fa1.1-rtr1-a-hz1.zj.CN.NET [202.96.101.33]
3 100 ms 90 ms 100 ms 202.101.165.1
4 90 ms 95 ms 95 ms 202.97.18.241
5 105 ms 105 ms 100 ms 202.97.18.93
6 100 ms 99 ms 100 ms 202.97.10.37
7 135 ms 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 ho
st unreachable.
Trace complete.
3.rusers和finger
  这两个都是Unix命令。通过这两个命令,你能收集到目标计算机上的有关用户的消
息。
使用rusers命令,产生的结果如下示意:
gajake snark.wizard.com:ttyp1 Nov 13 15:42 7:30 (remote)
root snark.wizard.com:ttyp2 Nov 13 14:57 7:21 (remote)
robo snark.wizard.com:ttyp3 Nov 15 01:04 01 (remote)
angel111 snark.wizard.com:ttyp4 Nov14 23:09 (remote)
pippen snark.wizard.com:ttyp6 Nov 14 15:05 (remote)
root snark.wizard.com:ttyp5 Nov 13 16:03 7:52 (remote)
gajake snark.wizard.com:ttyp7 Nov 14 20:20 2:59 (remote)
dafr snark.wizard.com:ttyp15Nov 3 20:09 4:55 (remote)
dafr snark.wizard.com:ttyp1 Nov 14 06:12 19:12 (remote)
dafr snark.wizard.com:ttyp19Nov 14 06:12 19:02 (remote)
  最左边的是通过远程登录的用户名。还包括上次登录时间,使用的SHELL类型等等信
息。
  使用finger可以产生类似下面的结果:
user S00 PPP ppp-122-pm1.wiza Thu Nov 14 21:29:30 - still logged in
user S15 PPP ppp-119-pm1.wiza Thu Nov 14 22:16:35 - still logged in
user S04 PPP ppp-121-pm1.wiza Fri Nov 15 00:03:22 - still logged in
user S03 PPP ppp-112-pm1.wiza Thu Nov 14 22:20:23 - still logged in
user S26 PPP ppp-124-pm1.wiza Fri Nov 15 01:26:49 - still logged in
user S25 PPP ppp-102-pm1.wiza Thu Nov 14 23:18:00 - still logged in
user S17 PPP ppp-115-pm1.wiza Thu Nov 14 07:45:00 - still logged in
user S-1 0.0.0.0 Sat Aug 10 15:50:03 - still logged in
user S23 PPP ppp-103-pm1.wiza Fri Nov 15 00:13:53 - still logged in
user S12 PPP ppp-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 1 addresses for BU.EDU
Found 1 addresses for RS0.INTERNIC.NET
Found 1 addresses for SOFTWARE.BU.EDU
Found 5 addresses for RS.INTERNIC.NET
Found 1 addresses for NSEGC.BU.EDU
Trying 128.197.27.7
bu.edu 86400 IN SOA BU.EDU HOSTMASTER.BU.EDU(
961112121 ;serial (version)
900 ;refresh period
900 ;retry refresh this often
604800 ;expiration period
86400 ;minimum TTL
)
bu.edu 86400 IN NS SOFTWARE.BU.EDU
bu.edu 86400 IN NS RS.INTERNIC.NET
bu.edu 86400 IN NS NSEGC.BU.EDU
bu.edu 86400 IN A 128.197.27.7
  这些本身并没有危险,只是一些机器和它们的DNS服务器。这些信息可以用WHOIS或
在注册域名的站点中检索到。但看看下面几行信息:
bu.edu 86400 IN HINFO SUN-SPARCSTATION-10/41 UNIX
PPP-77-25.bu.edu 86400 IN A 128.197.7.237
PPP-77-25.bu.edu 86400 IN HINFO PPP-HOST PPP-SW
PPP-77-26.bu.edu 86400 IN A 128.197.7.238
PPP-77-26.bu.edu 86400 IN HINFO PPP-HOST PPP-SW
ODIE.bu.edu 86400 IN A 128.197.10.52
ODIE.bu.edu 86400 IN MX 10 CS.BU.EDU
ODIE.bu.edu 86400 IN HINFO DEC-ALPHA-3000/300LX OSF1
从这里,我们马上就发现一台EDC Alpha运行的是OSF1操作系统。在看看:
STRAUSS.bu.edu 86400 IN HINFO PC-PENTIUM DOS/WINDOWS
BURULLUS.bu.edu 86400 IN HINFO SUN-3/50 UNIX (Ouch)
GEORGETOWN.bu.edu 86400 IN HINFO MACINTOSH MAC-OS
CHEEZWIZ.bu.edu 86400 IN HINFO SGI-INDIGO-2 UNIX
POLLUX.bu.edu 86400 IN HINFO SUN-4/20-SPARCSTATION-SLC UNIX
SFA109-PC201.bu.edu 86400 IN HINFO PC MS-DOS/WINDOWS
UH-PC002-CT.bu.edu 86400 IN HINFO PC-CLONE MS-DOS
SOFTWARE.bu.edu 86400 IN HINFO SUN-SPARCSTATION-10/30 UNIX
CABMAC.bu.edu 86400 IN HINFO MACINTOSH MAC-OS
VIDUAL.bu.edu 86400 IN HINFO SGI-INDY IRIX
KIOSK-GB.bu.edu 86400 IN HINFO GATORBOX GATORWARE
CLARINET.bu.edu 86400 IN HINFO VISUAL-X-19-TURBO X-SERVER
DUNCAN.bu.edu 86400 IN HINFO DEC-ALPHA-3000/400 OSF1
MILHOUSE.bu.edu 86400 IN HINFO VAXSTATION-II/GPX UNIX
PSY81-PC150.bu.edu 86400 IN HINFO PC WINDOWS-95
BUPHYC.bu.edu 86400 IN HINFO VAX-4000/300 OpenVMS
  可见,任何人都能通过在命令行里键入一个命令,就能收集到一个域里的所有计算
机的重要信息。而且只化了3秒时间。
  我们利用上述有用的网络命令,可以收集到许多有用的信息,比方一个域里的名字
服务器的地址,一台计算机上的用户名,一台服务器上正在运行什么服务,这个服务是
哪个软件提供的,计算机上运行 的是什么操作系统。
  如果你知道目标计算机上运行的操作系统和服务应用程序后,就能利用已经发现的
他们的漏洞来进行攻击。如果目标计算机的网络管理员没有对这些漏洞及时修补的话,
入侵者能轻而易举的闯入该系统 ,获得管理员权限,并留下后门。
  如果入侵者得到目标计算机上的用户名后,能使用口令破解软件,多次试图登录目
标计算机。经过尝试后,就有可能进入目标计算机。得到了用户名,就等于得到了一半
的进入权限,剩下的只是使用软 件进行攻击而已。

--

###################################
###我是天边的一朵乌云           ###                                                                                    
###     遮住了太阳,也遮住了月亮###                                                                                    
###################################


※ 来源:.飘渺水云间 freecity.dhs.org.[FROM: Heway]                                                                   

计算机网络:利用Nmap进行网络扫描实验

一. 实验目的 掌握网络扫描技术的原理。 学会使用 Nmap 扫描工具。
  • chenht8
  • chenht8
  • 2016年11月05日 10:28
  • 1217

端口号扫描工具---nmap

Nmap(Network Mapper)是一款开放源代码的网络探测和安全审核工具。它用于快速扫描一个网络和一台主机开放的端口,还能使用TCP/IP协议栈特征探测远程主机的操作系统类型。nmap支持很多...
  • chunlovenan
  • chunlovenan
  • 2015年10月23日 16:14
  • 3728

网络扫描(主机发现和端口扫描)

网络扫描     网络扫描是一类重要的网络安全。网络扫描与防火墙,入侵检测系统相互配合,能够有效提高网络的安全性。通过对网络的扫描,网络管路员可以了解网络的安全配置和运行的应用服务,及时发现安全漏洞...
  • S_Sorin
  • S_Sorin
  • 2016年08月13日 17:12
  • 8910

ssh传输文件 命令 及libnids端口扫描攻击检测的实现

在linux下一般用scp这个命令来通过ssh传输文件。而如果你的工作环境是windows的话,那么可以选择用 secure CRT,或者putty 这样的ssh登录工具来进行传输. 对于linux环...
  • gfsfg8545
  • gfsfg8545
  • 2012年11月29日 15:13
  • 1568

NS3网络仿真(14): TCP连接与端口扫描

快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息本节学习一下使用NS3构造一个TCP包,再利用构造好的TCP包进行最简单的TCP端口扫描。1.    T...
  • lights_joy
  • lights_joy
  • 2015年09月03日 16:01
  • 2329

网络端口扫描技术详细介绍

一:TCP/IP相关问题   连接端及标记   IP地址和端口被称作套接字,它代表一个TCP连接的一个连接端。为了获得TCP服务,必须在发送机的一个端口上和接收机的一个端口上建立连接。TC...
  • zky0901
  • zky0901
  • 2015年10月23日 15:14
  • 741

C#网络编程 (五) 简单端口扫描程序

概述端口扫描技术是一中探测本地和远程端口开放情况的策略和方法,是一种非常重要的攻击探测手段。一个端口就是一个通道。通过端口扫描,可以知道目标主机上开放了哪些端口,运行了哪些服务。对端口扫描技术的行为研...
  • im_zhq
  • im_zhq
  • 2016年05月21日 09:19
  • 3392

【网络安全】Telnet 23端口扫描与信息提取

利用python脚本对公网IP进行探测,查看服务器返回信息。 运行结果如下: Client received: '\xff\xfd\x01\xff\xfe\x01\xff\xfb\x01\x1b[2J...
  • jiayanhui2877
  • jiayanhui2877
  • 2015年07月31日 13:45
  • 1509

获取IP地址 常用加密解密 字符串压缩 端口扫描 域名解析

  • 2013年04月28日 09:28
  • 89KB
  • 下载

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

前言 第一部分,我们讲述TCP连接的建立过程(通常称作三阶段握手),然后讨论与扫描程序有关的一些实现细节。 然后,简单介绍一下经典的扫描器(全连接)以及所谓的SYN(半连接)扫描器。 第三部分...
  • Genius_LG
  • Genius_LG
  • 2013年11月11日 21:59
  • 1392
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:端口扫描分析(一)常用的网络相关命令
举报原因:
原因补充:

(最多只允许输入30个字)