首页 > 学技术 > 技术网文 > 网络技术 > 正文

[精彩] 一个面试的问题,请教高手!


来源 chinaunix.net 酷勤网整理

有一台unix主机,其上除了telnet,没有任何已知端口的服务,不知道ip地址和子网掩码,但现有一个可登录的帐号,只能通过网络远程登录,问怎么获得此机器的ip的子网掩码,并一次正确的配置客户机的ip和子网掩码,远程登录到unix主机上。

我想到了用直连线连接unix主机与一台客户机,在客户机上运行抓包工具,在unix主机启动时,会抓获一些arp广播包,可以获得它的ip地址,但却不能获得子网掩码,故不能正确配置客户机的ip和掩码。
请教大家还没有其他的好办法。



 shanlingyun 回复于:2005-10-09 15:38:39

广播包的广播地址如:1.1.1.255就决定了烟吗是24位咯


 apen 回复于:2005-10-09 20:45:05

你想干什么????


 platinum 回复于:2005-10-10 08:32:34

先登录,再获得,获得用 ifconfig,登录的时候已知目的 IP,你的 IP 需要自己设计一下
可以考虑最小的可能,假如对方是 30 位掩码,IP 是 1.1.1.1
那么你就把 IP 设成 1.1.1.2(划到同一个假设是 30 位掩码的子网里),MASK 设成 255.255.255.0 就肯定可以登录
登录以后通过 ifconfig 确认一下,然后再调整


 剑心通明 回复于:2005-10-10 10:42:34

引用:原帖由 "platinum" 发表:
先登录,再获得,获得用 ifconfig,登录的时候已知目的 IP,你的 IP 需要自己设计一下
可以考虑最小的可能,假如对方是 30 位掩码,IP 是 1.1.1.1
那么你就把 IP 设成 1.1.1.2(划到同一个假设是 30 位掩码的子网?.........

这个方法不错


 chinesecai 回复于:2005-10-11 16:08:19

不错在哪里?

ip不知道,如何登录,登录必知其ip等


 wonderliang 回复于:2005-10-12 15:08:57

ping广播地止是好办法


 河里的鱼 回复于:2005-10-12 15:23:52

ping 224.0.0.1


 platinum 回复于:2005-10-12 16:21:47

sorry,没看清,“不知道IP”看成了“知道IP”
同意上面的做法,发广播,然后听包,看哪个 IP 有回应


 我爱臭豆腐 回复于:2005-10-12 16:30:50

这个题目真是有一点变态啊.:) 但是确实是有意思.如果是禁止了icmp怎么办呢:)


 wangcocoo 回复于:2005-10-12 18:27:42

有点意思!看来要死点脑细胞了!期待答案中……


 河里的鱼 回复于:2005-10-12 18:31:29

引用:原帖由 "我爱臭豆腐"]这个题目真是有一点变态啊.:) 但是确实是有意思.如果是禁止了icmp怎么办呢:)
 发表:



那就写一个脚本用ARPING一个一个来试吧

至于端口嘛TELNET65535下就好啦 :mrgreen:  :mrgreen:


 bingosek 回复于:2005-10-12 18:36:23

先抓arp包,看看有多少IP,然后用telnet把所有在arp中的IP试一遍,找到能登陆的机器,然后ifconfig就知道掩码了


 platinum 回复于:2005-10-12 18:42:25

不知这样行不行
利用听包,应该能得知他的 MAC
利用 rarp 的原理,反向问他的 IP,不知这样是否可行


 河里的鱼 回复于:2005-10-12 18:46:16

引用:原帖由 "platinum" 发表:
不知这样行不行
利用听包,应该能得知他的 MAC
利用 rarp 的原理,反向问他的 IP,不知这样是否可行



这个方法好,没想到

但是你怎么知道这个MAC是他呢?


 platinum 回复于:2005-10-12 19:21:12

Linux 在启动并设置 IP 前,会向网络中先发送 arp 包来寻找是否有 IP 冲突的可能,如果没有冲突再设置自己的 IP
这时,可以通过听包来获得他的 MAC(用 T568-A 线直接连接两台机器的网卡),之后要做的,就是我上面说的了 ^_^



至于知道了 IP 之后,再用我最开始说的那样猜测一个 IP,用 30 位掩码连上他,然后 ifconfig 查看最后正确的 MASK


 我爱臭豆腐 回复于:2005-10-12 20:40:18

引用:原帖由 "platinum" 发表:

至于知道了 IP 之后,再用我最开始说的那样猜测一个 IP,用 30 位掩码连上他,然后 ifconfig 查看最后正确的 MASK




你去安全局当特务算了 :em11:


 河里的鱼 回复于:2005-10-13 09:58:20

引用:原帖由 "platinum" 发表:

至于知道了 IP 之后,再用我最开始说的那样猜测一个 IP,用 30 位掩码连上他,然后 ifconfig 查看最后正确的 MASK



你的意思是说在起来之前发一个who has"自己"的包,从这里看吗?

very good


 menp9999 回复于:2005-10-13 17:50:30

引用:原帖由 "marlboro5460"]有一台unix主机,其上除了telnet,没有任何已知端口的服务,不知道ip地址和子网掩码,但现有一个可登录的帐号,只能通过网络远程登录,问怎么获得此机器的ip的子网掩码,并一次正确的配置客户机的ip和子网掩码,远程?.........
 发表:




 hjp0021 回复于:2005-10-14 16:31:23

直接拿便携用SNIFFER抓包,看的一清二楚。


 我爱臭豆腐 回复于:2005-10-14 16:51:54

如果是抓包的话需要先配置交换机.现在使用hub的比较少了.所以变的更不容易了.但是如果是cisco的交换机缺省使用了http方式的话可以扰过口令直接执行配置交换机的命令. 但是现在的新的版本里面已经改正了这些错误.


 liuyanbo 回复于:2005-10-16 12:43:21

用fluke nettool工具插上就知道了


 xiaodudu 回复于:2005-10-16 16:18:31

问题是远程呢,听不到包呢


 atwo 回复于:2005-10-16 17:07:01

这个这么听起来像入侵,不像面试题啊!


 ycfei 回复于:2005-10-18 14:53:54

公司在哪?
你打的过去看下不就行了吗?


 thankss 回复于:2005-10-18 15:49:31

我想这个问题,你应该再问一句:“远程”指什么?

然后才能讲方法了,当然可以用一些扫描工具。


 mickeys 回复于:2005-10-18 15:59:37

再看看。


 snow888 回复于:2005-10-31 09:29:43

我怎么听起来像黑客,楼主的目的是什么?
不知道 IP ,是否知道对方的域和Servername?


 hdazxf 回复于:2005-11-07 16:12:42

试试登陆到主机,写段广播ICMP子网掩码请求程序

[ 本帖最后由 hdazxf 于 2005-11-7 16:13 编辑 ]


 bugkill 回复于:2005-11-07 21:05:53

引用:原帖由 bingosek 于 2005-10-12 18:36 发表
先抓arp包,看看有多少IP,然后用telnet把所有在arp中的IP试一遍,找到能登陆的机器,然后ifconfig就知道掩码了 




我认为这个可以

nmap ip的话扫描呵呵就能看到端口和服务呀


 qdwmail 回复于:2005-11-07 22:05:09

如果不知道IP,又不在一起,估计要黑别人机器吧


 cppunit 回复于:2005-11-10 17:22:04

引用:原帖由 platinum 于 2005-10-12 19:21 发表
Linux 在启动并设置 IP 前,会向网络中先发送 arp 包来寻找是否有 IP 冲突的可能,如果没有冲突再设置自己的 IP
这时,可以通过听包来获得他的 MAC(用 T568-A 线直接连接两台机器的网卡),之后要做的,就是我上 ... 



根本不知道server用的是哪个ip,一个一个试吗?ipv4的ip 地址也不少吧


 cppunit 回复于:2005-11-10 17:41:43

这个问题没写全吧。我先下自己的看法:

前提:肯定是在一个局域网呀,放在广域网根本就没戏

解决思路:
1.  直接从链路层想找到服务器ip是不可能的
    链路层的广播,arp,rarp,bootp或被动的dhcpd都不成。为什么呢?以太网的机制,是在一条共享信道上,问“有人吗”。如果这信道上没有人回答,那就没折了。你不能强制这台server发响应包呀。

  比如dhcpd本身就是一个监听链路层的协议,但是它也需要客户端主动响应。你可以在笔记本上开dhcpd server,但是那个服务器不理你也没折。

2. 直接从网络层上监听也不可能
   基本上这个就不用解释了。

3.  使用楼上的ping可以吗?
  ip地址太多了,没折

那么解决办法是什么呢?如果私下里我会说出题的人是笨蛋,但是现在是找工作,ok,你是大爷,偶来想办法。

非常简单: 用windump监听整个网络。网络里面有很多ip地址,基本上很快能够确定子网掩码。

比如我就很快抓到下面信息:
引用:
17:32:20.320642 IP 221.202.177.39.3077 > 10.10.26.105.2833: . 1156825869:1156827309(1440) ack 1157595415 win 64163
17:32:20.326692 IP 61.141.123.147.13719 > 10.10.26.144.1115: UDP, length: 1420
17:32:20.327343 IP 10.10.26.93.2812 > 211.154.222.8.http: . ack 3920331949 win 17520
17:32:20.327439 IP 10.10.26.144.1115 > 61.141.123.147.13719: UDP, length: 20
17:32:20.327874 IP 10.10.26.158.ms-sql-m > 10.10.189.69.netbios-ssn: S 3833253740:3833253740(0) win 65535 <mss 1460,nop,nop,sackOK>
17:32:20.327885 IP 10.10.26.158.ibm-cics > 10.10.97.166.netbios-ssn: S 3833304501:3833304501(0) win 65535 <mss 1460,nop,nop,sackOK>
17:32:20.327894 IP 10.10.26.158.tabula > 10.10.128.58.netbios-ssn: S 3833408111:3833408111(0) win 65535 <mss 1460,nop,nop,sackOK>
17:32:20.327897 IP 10.10.26.158.sas-2 > 10.10.11.191.netbios-ssn: S 3833346522:3833346522(0) win 65535 <mss 1460,nop,nop,sackOK>
17:32:20.331638 IP horatio-177.cs.utexas.edu.39504 > 10.10.26.67.igi-lm: . ack 545583981 win 17001
17:32:20.334446 arp who-has 10.10.27.167 tell 10.10.26.58
17:32:20.336179 IP lib3.store.vip.sc5.yahoo.net.http > 10.10.26.154.2129: P 1841283316:1841284262(946) ack 863883909 win 65535
17:32:20.336481 IP lib3.store.vip.sc5.yahoo.net.http > 10.10.26.154.2129: F 946:946(0) ack 1 win 65535
17:32:20.336858 IP 10.10.26.154.2129 > lib3.store.vip.sc5.yahoo.net.http: . ack 947 win 64589
17:32:20.336870 IP 10.10.26.154.2129 > lib3.store.vip.sc5.yahoo.net.http: F 1:1(0) ack 947 win 64589
17:32:20.337003 IP lib3.store.vip.sc5.yahoo.net.http > 10.10.26.154.2129: . ack 2 win 65534
17:32:20.339305 IP 10.10.26.105.4410 > 218.26.171.200.1755: S 1408043765:1408043765(0) win 16384 <mss 1460,nop,nop,sackOK>



我用tcpdump的,用windump也一样呵。

现在知道了吧,网类大部分地址都是10.10.26.*,基本上,工作完成一半了。

下面的工作,简单了,nmap,机器上都有吧,nmap -p 23  -iL host.list
host.list是这个网段的所有ip地址。

看起来工作就要完成,且慢,咱们现在应该是一个不相干网段的ip地址呢,nmap到最后一定没结果。怎么办?nmap加上windump搞定。windump在nmap时,查看哪个有23端口的msg发出来,找到,就是它。

呵呵。偶想问问楼主,这个工作多少钱呀。偶马上要失业了,正在郁闷中。拉偶一把吧,谢谢了。


 cppunit 回复于:2005-11-10 17:53:27

呵呵,这题还有隐含条件,人家没说让用ping的。

另外,这个网络必须是工作中的网络,否则没法子做第一步,得出ip地址段。

上面有朋友说,现在都是交换机。偶想总有arp包的吧,从arp包里面能看到 who has xxx,这个也能找数个ip段吧。

除了上面的办法,还有更损的办法,呵呵,是这样干:

网络上有arp包,对吧,看看人家再找誰,然后看看响应的结果是什么,最后把 笔记本的mac地址改成跟那个响应的mac地址。然后再用windump,发到那台机器的包,现在都能听到了。这时可以一次性的正确找到ip和 mask,因为这个在tcp包里面都有的,太容易看到了。

然后就很容易设置ip地址和子网掩码了。设完之后,直接用nmap扫描即可。呵呵。

偶真的要失业了,兄弟们有系统管理方面的消息,给偶发一个吧,偶这里先谢过了。


 双眼皮的猪 回复于:2005-11-11 22:33:23

开机时机器主动发送免费ARP的时候可以获得他的ip地址,通过广播地址和IP地址计算掩码好像也不是太难.


 cppunit 回复于:2005-11-14 13:30:44

引用:原帖由 双眼皮的猪 于 2005-11-11 22:33 发表
开机时机器主动发送免费ARP的时候可以获得他的ip地址,通过广播地址和IP地址计算掩码好像也不是太难. 



你要重启服务器吗?呵呵


 sunsroad 回复于:2005-11-15 13:56:08

在之前的Linux版本的ping有一个参数,具体是什么我记不清楚了,你可以用来ping广播地址,ping -x 255.255.255.255。它可以让网络上的每一台机器产生回应的,到时你就可以通过白金的方法查找机器了。


 点水蜻蜓123 回复于:2005-11-18 10:10:19

都是强人!~   方法好多,学习ing!


 ivyharry 回复于:2005-11-21 06:07:03

一定得知道它在哪个网络
要不没戏
知道以后找个扫描软件扫一下看看
通过系统特性看能不能确定是哪台吧....


 fogyisland 回复于:2005-11-22 15:02:49

最简单的方法,不是有台远端机器么和一台客户机器么。看他的意思服务器上应该没有显示器。客户机器上应该有显示器。不然怎么操作啊。对吧
把显示器网服务器上一接。问题统统解决!
输入用户名和密码!然后ifconfig 就知道IP 了!
然后把显示器接回去。就可以登陆了!

[ 本帖最后由 fogyisland 于 2005-11-22 15:04 编辑 ]


 fogyisland 回复于:2005-11-22 15:07:43

依照楼猪的 提法,这个网络内的机器应该不会太多,而且运行的客户端是WINODWS 的可能性会很高。
 所以依照这个特性。找一个GUI的扫描软件对整个网段进行扫描。同时剔除一些不可能的段。应该很快能够找出主机来!


 angelagod 回复于:2005-11-22 17:48:53

引用:原帖由 sunsroad 于 2005-11-15 13:56 发表
在之前的Linux版本的ping有一个参数,具体是什么我记不清楚了,你可以用来ping广播地址,ping -x 255.255.255.255。它可以让网络上的每一台机器产生回应的,到时你就可以通过白金的方法查找机器了。 




应该是不能PING的,因为题目里面讲了,那台服务器,只开了TELNET权限,也就是说,对外只开了23端口——猜的,说错不要打我。所以ICMP应该是禁用了的。PING是不通的。

所以应该还是用查看ARP包的方式。

个人不会用那么多抓包、又xxdump的方法,不知这种蠢方法行不行:

  先在“远程终端”(应该是在同一局域网内的)扫描一下整个网段,在路由器上sh arp一下(假设能上路由器啦)——起码知道网段啦。然后一台一台地PING,PING不通的,目标应该就在其中,然后再一台一台地试着TELNET。试到成功的,就行了!

  呃……貌似只有网管才能用的方法,黑客是没办法了——要先破解路由器密码才行…… -___-b


 ha_ 回复于:2005-11-29 17:09:14

引用:原帖由 fogyisland 于 2005-11-22 15:02 发表
最简单的方法,不是有台远端机器么和一台客户机器么。看他的意思服务器上应该没有显示器。客户机器上应该有显示器。不然怎么操作啊。对吧
把显示器网服务器上一接。问题统统解决!
输入用户名和密码!然后ifcon ... 


没有显示器就不能操作机器了吗?你真幽默.


 extend_asdfqwer 回复于:2005-12-02 15:04:38

引用:原帖由 angelagod 于 2005-11-22 17:48 发表



应该是不能PING的,因为题目里面讲了,那台服务器,只开了TELNET权限,也就是说,对外只开了23端口——猜的,说错不要打我。所以ICMP应该是禁用了的。PING是不通的。

所以应该还是用查看ARP包的方式。
 ... 



错,ICMP不是3层协议,不涉及端口,当然可以ping。


 charlesc 回复于:2005-12-02 18:10:29

找个支持DISCOVERY PROTOCOL软件,就可以全部知道!


 独孤九贱 回复于:2005-12-02 18:30:59

前面的回复我没有一一看,不过换成我的做法是:
重启unix,unix启动之时,会有arp通告,sniffer这样就可以得到其arp地址了。
在本机上设和其临近的地址,再设一个大的掩码,保证对端IP在些网段内……over


 fish007 回复于:2005-12-12 16:23:27

首先楼上这位,连接两台主机用的是交叉线而不是直连线,其次你用抓包工具能获得unix主机的IP那么同时就可以
知道它的掩码了


 hustpp 回复于:2005-12-15 14:48:48

直接抓arp包就可以,这个办法我用过,有效


 skylove 回复于:2005-12-15 15:25:19

我的做法:
必须我要和那unix能联在同一个物理逻辑上的子网内才有办法
1.先听包,可以听到同段的ip地址,也容易听到广播包的,倒着算就可以得到ip段和掩码;
2.设置我们这台机器为任意一个可用段的ip地址;然后nmap 整个段的所有机器的1-65535个口子(一般来说服务都开在1-1024的多吧,有时间要求就只扫1-1024),把得到的结果,只有23的找出来,这基本就应该排除来只有几个了...
3.利用"指纹识别技术"来判断操作系统(我想题目里至少说了是什么unix吧?否则就是默认网内只有这台unix类型主机?) nmap -sS -p 23 -O -v 排除出来的几个主机

4.如果结果只有那一个,基本就能得出来了,如果有多个...碰运气吧^0^,如果对方的unix管理员实在是个高手,把操作系统能用"指纹识别"的代码都换过了...那...我求那公司让我在那里白工作一年,我也要跟在那高手手下学点东西才出来混了.

谁出的题,挺不错的嘛~~~~真正要做起来,大概需要30分钟呢,而且还是有工具的情形下.


 robert2000 回复于:2005-12-30 15:32:28

引用:原帖由 我爱臭豆腐 于 2005-10-12 16:30 发表
这个题目真是有一点变态啊.:) 但是确实是有意思.如果是禁止了icmp怎么办呢:) 



把机砸了,嘿~~


 北极星 回复于:2006-01-04 20:54:25

先知道机器在哪儿,然后打个电话过去,请人用你知道的用户名和密码进去,打ipconfig看一下IP地址,然后告诉你,就OK了。做事要以人为本,呵呵!

估计如果真有公司出这个题的话,可能考得就是你的团队协作能力和灵活性,不要死脑筋啊。


 karenleecn 回复于:2006-01-05 11:12:22

本人也不知道如何做,关注中……


 yszll 回复于:2006-07-06 07:28:02

...........关注.....

[ 本帖最后由 yszll 于 2006-7-6 07:47 编辑 ]


 mars531706 回复于:2006-07-06 09:15:59

禁止了ICMP也可以ping,ping 以后抓包就可以看下是什么错误,也可以看出是主机存在还是端口被禁止了


 iorifreedom 回复于:2006-09-29 10:31:55

一个题目发现人多就是想法各异阿




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=623553
转载请注明作者名及原文出处



收藏本页到: