FINGER详解.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:6 大小:68KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

FINGER详解.doc

FINGER详解.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

FINGER详解一.基本概念finger(端口79)是互连网上最古老的协议之一,用于提供站点及用户的基本信息,一般通过finger服务,你可以查询到站点上的在线用户清单及其他一些有用的信息.二.finger服务的危害出于安全的考虑,大部分站点取消了finger服务,不过互连网上仍然有相当数量的主机在继续提供finger服务(如990.net,嘿嘿,最近好像不提供这项服务了),看看coolfire的入侵教程就知道finger给网络安全带来多大的危害:1.由于finger服务一般都是提供在线用户的用户名,因此入侵者通过finger服务可以轻松地取得有效用户名列表(如果耐心地多试几次,基本上可以得到大部分的用户名),然后使用暴力密码破解器,往往能在较短的时间里得到一个有用的"身份"(如ftp权限或telnet权限,要是运气好,没准能得到一个有写权限的账号),以此作为进一步行动的跳板(其实大家都知道,入侵最难的一步就是“进入”,真正进入后即使不能取得root也能获得不少东西),所以说使用finger就等于是开门揖盗。2.可以取得用户的登陆时间,查看邮件时间等有用的信息,这个也是入侵者需要的重要信息(因为可以了解用户的登录时间和习惯,有利于隐藏行踪)从我个人的观点看,如果没有什么特殊的需要,finger这个服务根本就没必要开,因为几乎没有正常的用户去使用它(使用finger的基本上都是入侵者,或者说,至少是不怀好意的用户)。如果一定要开,也请你不要用系统默认的守护进程,下载一个或自己编一个会比较安全。三.finger的基本原理在unix平台上,finger是一个很普通的工具,它的基本原理如下:1.用户通过finger客户端程序提出一个finger请求2.用户与finger服务器通过目标主机的79端口连接3.服务器收集需要提供的信息(一般是用户上次登陆的时间,主目录等信息,主机不同,提供的服务也各不相同,你甚至可以用它来分发文本文件)。4.如果存在plan文件,那么它的数据被连接到输出数据之后。5.把结果返回给提出申请的用户。也就是说,finger服务是基于客户/服务器模式的,目标机上通常有一个fingerd的服务器程序(在unix中,被称为finger守护进程),而finger返回的结果是由这个进程决定的,使用或自己编些不同的进程,可以提供各种各样的finger服务。四.相关编程UNIX下,finger是被作为一个系统程序提供的,微软的用户就没有那么幸运,Windows没有自带finger客户程序!(讨厌,windows什么都没有)不过不要紧,我们可以自己编一个。1.VB在VB6.0中,使用winsock控件可以很容易地编些自己的finger客户程序,部分源码如下:PrivateSubStartFinger_Click()finger1.RemoteHost=IPAddressfinger1定义为winsock控件finger1.RemotePort="79"finger1的默认端口是79finger1.Connect连接远端主机EndSub数据到达事件PrivateSubfinger1_DataArrival(ByValbytesTotalAsLong)DimDataBuffer1AsStringfinger1.GetDataDataBuffer1,vbString接受远端主机传回的数据ResaultBox.Text=DataBuffer1显示接受到的信息EndSub2.VC++在VC++中,虽然没有与finger相对应的MFC类和API函数,不过可以通过更改Gopher的默认端口(把70改成79)很容易的使用MFC类WinInet发送Finger查询了。(这是因为gopher和finger的实现原理几乎完全一样,都是通过向目标主机发送一个特定的字符串取得相关信息,只不过gopher使用端口70得到信息检索结果,finger使用端口79得到在线用户信息)部分源码如下:connection.session.GetGopherConnection(host,NULL,NULL,79)建立连接if(connection){CGopherLocatorlocator=connection->CreateLocator(NULL,NULL,GOPHER_TYPE_TEXT_FILE);生成文本文件定位器CGopherFile*file=connextion->OpenFile(locator);打开文件if(file){CStringline;for(inti=0;i<20&&file->ReadString(line);i++)读文件{m_out+=l