收藏 分享(赏)

网络安全基本知识.doc

上传人:tkhy51908 文档编号:6993985 上传时间:2019-04-29 格式:DOC 页数:44 大小:71.50KB
下载 相关 举报
网络安全基本知识.doc_第1页
第1页 / 共44页
网络安全基本知识.doc_第2页
第2页 / 共44页
网络安全基本知识.doc_第3页
第3页 / 共44页
网络安全基本知识.doc_第4页
第4页 / 共44页
网络安全基本知识.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、一旦黑客定位了你的网络,他通常会选定一个目标进行渗透。通常这个目标会是安全漏洞最多或是他拥有最多攻击工具的主机。非法入侵系统的方法有很多,你应当对这些方法引起注意。 常见攻击类型和特征 攻击特征是攻击的特定指纹。入侵监测系统和网络扫描器就是根据这些特征来识别和防范攻击的。下面简要回顾一些特定地攻击渗透网络和主机的方法。 常见的攻击方法 你也许知道许多常见的攻击方法,下面列出了一些: 字典攻击:黑客利用一些自动执行的程序猜测用户命和密码,审计这类攻击通常需要做全面的日志记录和入侵监测系统(IDS)。 Man-in-the-middle 攻击:黑客从合法的传输过程中嗅探到密码和信息。防范这类攻击的

2、有效方法是应用强壮的加密。 劫持攻击:在双方进行会话时被第三方(黑客)入侵,黑客黑掉其中一方,并冒充他继续与另一方进行会话。虽然不是个完全的解决方案,但强的验证方法将有助于防范这种攻击。 病毒攻击:病毒是能够自我复制和传播的小程序,消耗系统资源。在审计过程中,你应当安装最新的反病毒程序,并对用户进行防病毒教育。 非法服务:非法服务是任何未经同意便运行在你的操作系统上的进程或服务。你会在接下来的课程中学到这种攻击。 拒绝服务攻击:利用各种程序(包括病毒和包发生器)使系统崩溃或消耗带宽。 容易遭受攻击的目标 最常遭受攻击的目标包括路由器、数据库、Web 和 FTP 服务器,和与协议相关的服务,如

3、DNS、WINS 和 SMB。本课将讨论这些通常遭受攻击的目标。 路由器 连接公网的路由器由于被暴露在外,通常成为被攻击的对象。许多路由器为便于管理使用 SNMP 协议,尤其是 SNMPv1,成为潜在的问题。许多网络管理员未关闭或加密Telnet 会话,若明文传输的口令被截取,黑客就可以重新配置路由器,这种配置包括关闭接口,重新配置路由跳计数等等。物理安全同样值得考虑。必须保证路由器不能被外人物理接触到进行终端会话。 过滤 Telnet 为了避免未授权的路由器访问,你应利用防火墙过滤掉路由器外网的 telnet 端口和SNMP161,162端口 技术提示:许多网络管理员习惯于在配置完路由器后将

4、 Telnet 服务禁止掉,因为路由器并不需要过多的维护工作。如果需要额外的配置,你可以建立物理连接。 路由器和消耗带宽攻击 最近对 Yahoo、e-Bay 等电子商务网站的攻击表明迅速重新配置路由器的重要性。这些攻击是由下列分布式拒绝服务攻击工具发起的: Tribal Flood Network(TFN) Tribal Flood Network(TFN2k) Stacheldraht(TFN 的一个变种) Trinoo (这类攻击工具中最早为人所知的) 因为许多公司都由 ISP 提供服务,所以他们并不能直接访问路由器。在你对系统进行审计时,要确保网络对这类消耗带宽式攻击的反映速度。你将在后

5、面的课程中学习如何利用路由器防范拒绝服务攻击。 数据库 黑客最想得到的是公司或部门的数据库。现在公司普遍将重要数据存储在关系型或面向对象的数据库中,这些信息包括: 雇员数据,如个人信息和薪金情况。 市场和销售情况。 重要的研发信息。 货运情况。 黑客可以识别并攻击数据库。每种数据库都有它的特征。如 SQL Server 使用1433/1434 端口,你应该确保防火墙能够对该种数据库进行保护。你会发现,很少有站点应用这种保护,尤其在网络内部。 服务器安全 WEB 和 FTP 这两种服务器通常置于 DMZ,无法得到防火墙的完全保护,所以也特别容易遭到攻击。Web 和 FTP 服务通常存在的问题包括

6、: 用户通过公网发送未加密的信息; 操作系统和服务存在众所周知的漏洞导致拒绝服务攻击或破坏系统; 旧有操作系统中以 root 权限初始运行的服务,一旦被黑客破坏,入侵者便可以在产生的命令解释器中运行任意的代码。 Web 页面涂改 近来,未经授权对 Web 服务器进行攻击并涂改缺省主页的攻击活动越来越多。许多企业、政府和公司都遭受过类似的攻击。有时这种攻击是出于政治目的。大多数情况下 Web页面的涂改意味着存在这入侵的漏洞。这些攻击通常包括 Man-in-the-middle 攻击(使用包嗅探器)和利用缓冲区溢出。有时,还包括劫持攻击和拒绝服务攻击。 邮件服务 广泛使用的 SMTP、POP3 和

7、 IMAP 一般用明文方式进行通信。这种服务可以通过加密进行验证但是在实际应用中通信的效率不高。又由于大多数人对多种服务使用相同的密码,攻击者可以利用嗅探器得到用户名和密码,再利用它攻击其它的资源,例如 Windows NT服务器。这种攻击不仅仅是针对 NT 系统。许多不同的服务共享用户名和密码。你已经知道一个薄弱环节可以破坏整个的网络。FTP 和 SMTP 服务通常成为这些薄弱的环节。 与邮件服务相关的问题包括: 利用字典和暴力攻击 POP3 的 login shell; 在一些版本中 sendmail 存在缓冲区溢出和其它漏洞; 利用 E-mail 的转发功能转发大量的垃圾信件 名称服务

8、攻击者通常把攻击焦点集中在 DNS 服务上。由于 DNS 使用 UDP,而 UDP 连接又经常被各种防火墙规则所过滤,所以许多系统管理员发现将 DNS 服务器至于防火墙之后很困难。因此,DNS 服务器经常暴露在外,使它成为攻击的目标。DNS 攻击包括: 未授权的区域传输;下弦月 2005-5-13 10:09 网络安全知识(2) DNS 毒药,这种攻击是指黑客在主 DNS 服务器向辅 DNS 服务器进行区域传输时插入错误的 DNS 信息,一旦成功,攻击者便可以使辅 DNS 服务器提供错误的名称到 IP 地址的解析信息; 拒绝服务攻击; 其它的一些名称服务也会成为攻击的目标,如下所示: WINS

9、, “Coke”通过拒绝服务攻击来攻击没有打补丁的 NT 系统。 SMB 服务(包括 Windows 的 SMB 和 UNIX 的 Samba)这些服务易遭受 Man-in-the-middle 攻击,被捕获的数据包会被类似 L0phtCrack 这样的程序破解。 NFS 和 NIS 服务。这些服务通常会遭受 Man-in-the-middle 方式的攻击。 在审计各种各样的服务时,请考虑升级提供这些服务的进程。 审计系统 BUG 作为安全管理者和审计人员,你需要对由操作系统产生的漏洞和可以利用的软件做到心中有数。早先版本的 Microsoft IIS 允许用户在地址栏中运行命令,这造成了 I

10、IS 主要的安全问题。其实,最好的修补安全漏洞的方法是升级相关的软件。为了做到这些,你必须广泛地阅读和与其他从事安全工作的人进行交流,这样,你才能跟上最新的发展。这些工作会帮助你了解更多的操作系统上的特定问题。 虽然大多数的厂商都为其产品的问题发布了修补方法,但你必须充分理解补上了哪些漏洞。如果操作系统或程序很复杂,这些修补可能在补上旧问题的同时又开启了新的漏洞。因此,你需要在实施升级前进行测试。这些测试工作包括在隔离的网段中验证它是否符合你的需求。当然也需要参照值得信赖的网络刊物和专家的观点。 审计 Trap Door 和 Root Kit Root kit 是用木马替代合法程序。Trap

11、Door 是系统上的 bug,当执行合法程序时却产生了非预期的结果。如老版本的 UNIX sendmail,在执行 debug 命令时允许用户以 root 权限执行脚本代码,一个收到严格权限控制的用户可以很轻易的添加用户账户。 虽然 root kit 通常出现在 UNIX 系统中,但攻击者也可以通过看起来合法的程序在Windows NT 中置入后门。象 NetBus,BackOrifice 和 Masters of Paradise 等后门程序可以使攻击者渗透并控制系统。木马可以由这些程序产生。如果攻击者够狡猾,他可以使这些木马程序避开一些病毒检测程序,当然用最新升级的病毒检测程序还是可以发现

12、它们的踪迹。在对系统进行审计时,你可以通过校验分析和扫描开放端口的方式来检测是否存在 root kit等问题。 审计和后门程序 通常,在服务器上运行的操作系统和程序都存在代码上的漏洞。例如,最近的商业Web 浏览器就发现了许多安全问题。攻击者通常知道这些漏洞并加以利用。就象你已经知道的 RedButton,它利用了 Windows NT 的漏洞使攻击者可以得知缺省的管理员账号,即使账号的名称已经更改。后门(back door)也指在操作系统或程序中未记录的入口。程序设计人员为了便于快速进行产品支持有意在系统或程序中留下入口。不同于 bug,这种后门是由设计者有意留下的。例如,像 Quake 和

13、 Doom 这样的程序含有后门入口允许未授权的用户进入游戏安装的系统。虽然看来任何系统管理员都不会允许类似的程序安装在网络服务器上,但这种情况还是时有发生。 从后门程序的危害性,我们可以得出结论,在没有首先阅读资料和向值得信赖的同事咨询之前不要相信任何新的服务或程序。在你进行审计时,请花费一些时间仔细记录任何你不了解它的由来和历史的程序。 审计拒绝服务攻击 Windows NT 易遭受拒绝服务攻击,主要是由于这种操作系统比较流行并且没有受到严格的检验。针对 NT 服务的攻击如此频繁的原因可以归结为:发展势头迅猛但存在许多漏洞。在审计 Windows NT 网络时,一定要花时间来验证系统能否经受

14、这种攻击的考验。打补丁是一种解决方法。当然,如果能将服务器置于防火墙的保护之下或应用入侵监测系统的话就更好了。通常很容易入侵 UNIX 操作系统,主要因为它被设计来供那些技术精湛而且心理健康的人使用。在审计 UNIX 系统时,要注意 Finger 服务,它特别容易造成缓冲区溢出。 缓冲区溢出 缓冲区溢出是指在程序重写内存块时出现的问题。所有程序都需要内存空间和缓冲区来运行。如果有正确的权限,操作系统可以为程序分配空间。C 和 C+等编程语言容易造成缓冲区溢出,主要因为它们不先检查是否有存在的内存块就直接调用系统内存。一个低质量的程序会不经检查就重写被其它程序占用的内存,而造成程序或整个系统死掉

15、,而留下的 shell 有较高的权限,易被黑客利用运行任意代码。 据统计,缓冲区溢出是当前最紧迫的安全问题。要获得关于缓冲区溢出的更多信息,请访问 Http:/ . verflows/index.heml Telnet 的拒绝服务攻击 Windows 中的 Telnet 一直以来都是网络管理员们最喜爱的网络实用工具之一,但是一个新的漏洞表明,在 Windows2000 中 Telnet 在守护其进程时,在已经被初始化的会话还未被复位的情况下很容易受到一种普通的拒绝服务攻击。Telnet 连接后,在初始化的对话还未被复位的情况下,在一定的时间间隔之后,此时如果连接用户还没有提供登录的用户名及密码

16、,Telnet 的对话将会超时。直到用户输入一个字符之后连接才会被复位。如果恶意用户连接到 Windows2000 的 Telnet 守护进程中,并且对该连接不进行复位的话,他就可以有效地拒绝其他的任何用户连接该 Telnet 服务器,主要是因为此时 Telnet 的客户连接数的最大值是 1。在此期间任何其他试图连接该 Telnet 服务器的用户都将会收到如下错误信息:Microsoft Windows Workstation allows only 1 Telnet Client LicenseServer has closed connection 察看“列出当前用户” 选项时并不会显示超

17、时的会话,因为该会话还没有成功地通过认证。 Windows NT 的 TCP port 3389 存在漏洞 Windows NT Server 4.0 终端服务器版本所作的 DoS 攻击。这个安全性弱点让远端使用者可以迅速的耗尽 Windows NT Terminal Server 上所有可用的内存,造成主机上所有登陆者断线,并且无法再度登入。 说明: 1. Windows NT Server 4.0 终端服务器版本在 TCP port 3389 监听终端连接 (terminal connection),一旦某个 TCP 连接连上这个端口, 终端服务器会开始分配系统资源,以处理新的客户端连接,

18、并作连接的认证工作。 2. 此处的漏洞在于:在认证工作完成前,系统需要拨出相当多的资源去处理新的连 接,而系统并未针对分配出去的资源作节制。因此远端的攻击者可以利用建立大 量 TCP 连接到 port 3389 的方法,造成系统存储体配置达到饱和。 3. 此时服务器上所有使用者连接都会处于超时状态,而无法继续连接到服务器上,远端攻击者仍能利用一个仅耗用低频宽的程式,做出持续性的攻击,让此 服务器处於最多记忆体被耗用的状态,来避免新的连接继续产生。 4. 在国外的测试报告中指出,长期持续不断针对此项弱点的攻击,甚至可以导致服务器持续性当机,除非重新开机,服务器将无法再允许新连接的完成。 解决方案

19、: 1. 以下是修正程序的网址: ftp:/ . sa/NT40tse/hotfixes postSP4/Flood-fix/ 注意 :因为行数限制,上面网址请合并为一行。 2. 更详细资料请参考 Microsoft 网站的网址: http:/ 防范拒绝服务攻击 你可以通过以下方法来减小拒绝服务攻击的危害: 加强操作系统的补丁等级。 如果有雇员建立特定的程序,请特别留意代码的产生过程。 只使用稳定版本的服务和程序。 审计非法服务,特洛伊木马和蠕虫 非法服务开启一个秘密的端口,提供未经许可的服务,常见的非法服务包括: NetBus BackOrifice 和 BackOrifice 2000 G

20、irlfriend 冰河 2.X 秘密的建立共享的程序 许多程序将不同的非法服务联合起来。例如,BackOrifice2000 允许你将 HTTP 服务配置在任意端口。你可以通过扫描开放端口来审计这类服务,确保你了解为什么这些端口是开放的。如果你不知道这些端口的用途,用包嗅探器和其它程序来了解它的用途。 技术提示:不要混淆非法服务和木马。木马程序通常包含非法服务,而且,木马程序还可以包含击键记录程序,蠕虫或病毒。 特洛伊木马 特洛伊木马是在执行看似正常的程序时还同时运行了未被察觉的有破坏性的程序。木马通常能够将重要的信息传送给攻击者。攻击者可以把任意数量的程序植入木马。例如,他们在一个合法的程

21、序中安放 root kit 或控制程序。还有一些通常的策略是使用程序来捕获密码和口令的 hash 值。类似的程序可以通过 E-mail 把信息发送到任何地方。 审计木马 扫描开放端口是审计木马攻击的途径之一。如果你无法说明一个开放端口用途,你也许就检测到一个问题。所以,尽量在你的系统上只安装有限的软件包,同时跟踪这些程序和服务的漏洞。许多 TCP/IP 程序动态地使用端口,因此,你不应将所有未知的端口都视为安全漏洞。在建立好网络基线后,你便可以确定哪些端口可能存在问题了。 蠕虫 Melissa 病毒向我们展示了 TCP/IP 网络是如何容易遭受蠕虫攻击的。在你审计系统时,通常需要配置防火墙来排

22、除特殊的活动。防火墙规则的设置超出了本术的范围。但是,作为审计人员,你应当对建议在防火墙上过滤那些从不信任的网络来的数据包和端口有所准备。 蠕虫靠特定的软件传播。例如,在 2000 年三月发现的 Win32/Melting.worm 蠕虫只能攻击运行 Microsoft Outlook 程序的 Windows 操作系统。这种蠕虫可以自行传播,瘫痪任何种类的 Windows 系统而且使它持续地运行不稳定。 下弦月 2005-5-13 10:09 网络安全知识(3)结合所有攻击定制审计策略 攻击者有两个共同的特点。首先,他们将好几种不同的方法和策略集中到一次攻击中。其次,他们在一次攻击中利用好几种

23、系统。综合应用攻击策略可以增强攻击的成功率。同时利用好几种系统使他们更不容易被捕获。 例如,在实施 IP 欺骗时,攻击者通常会先实施拒绝服务攻击以确保被攻击主机不会建立任何连接。大多数使用 Man-in-the-middle 的攻击者会先捕获 SMB 的密码,再使用L0phtCrack 这样的程序进行暴力破解攻击。 渗透策略 你已经了解到那些网络设备和服务是通常遭受攻击的目标和黑客活动的攻击特征。现在,请参考下列的一些场景。它们将有助于你在审计过程中关注那些设备和服务。请记住,将这些攻击策略结合起来的攻击是最容易成功的。 物理接触 如果攻击者能够物理接触操作系统,他们便可以通过安装和执行程序来

24、使验证机制无效。例如,攻击者可以重启系统,利用其它启动盘控制系统。由于一种文件系统可以被另一种所破坏,所以你可以使用启动盘获得有价值的信息,例如有管理权限的账号。 物理攻击的简单例子包括通过重新启动系统来破坏 Windows95 或 98 的屏幕锁定功能。更简单的物理攻击是该系统根本就没有进行屏幕锁定。 操作系统策略 近来,美国白宫的 Web 站点(http:/www.whitehouse.gov )被一个缺乏经验的攻击者黑掉。攻击者侦查出该 Web 服务器(www1.whitehouse.gov )运行的操作系统是 Solaris 7。虽然 Solaris 7 被成为艺术级的操作系统,但管理

25、员并没有改变系统的缺省设置。虽然该站点的管理员设置了 tripwire,但攻击者还是使用 phf/ufsrestore 命令访问了 Web 服务器。 较弱的密码策略 上面白宫网站被黑的例子可能是由于该系统管理员使用 FTP 来升级服务器。虽然使用FTP 来更新网站并没有错,但大多数 FTP 会话使用明文传输密码。很明显,该系统管理员并没有意识到这种安全隐患。又由于大多数系统管理员在不同的服务上使用相同的密码,这使攻击者能够获得系统的访问权。更基本的,你可以保证/etc/passwd 文件的安全。 NetBIOS Authentication Tool(NAT ) 当攻击者以 WindowsNT

26、 为目标时,他们通常会使用 NetBIOS Authentication Tool(NAT)来测试弱的口令。这个程序可以实施字典攻击。当然它也有命令行界面,这种界面的攻击痕迹很小。而且命令行界面的程序也很好安装和使用。在使用 NAT 时,你必须指定三个文本文件和 IP 地址的范围。当然,你也可以指定一个地址。NAT 使用两个文本文件来实施攻击而第三个来存储攻击结果。第一个文本文件包含一个用户列表,第二个文件中是你输入的猜测密码。 当使用命令行版本时,语法格式为: nat u username.txt p passwordlist.txt o outputfile.txt 即使服务器设置了密码的

27、过期策略和锁定,攻击者还是可以利用 NAT 反复尝试登录来骚扰管理员。通过简单地锁定所有已知的账号,攻击者会极大地影响服务器的访问,这也是一些系统管理员不强行锁定账号的原因。 较弱的系统策略 到此为止,你已经学习了一些外部攻击。然而,对于管理员来说最紧迫的是大多数公司都存在不好的安全策略。如果安全策略很弱或干脆没有安全策略,通常会导致弱的密码和系统策略。通常,公司并不采取简单的预防措施,比如需要非空的或有最小长度要求的密码。忽略这些限制会给攻击者留下很大的活动空间。 审计文件系统漏洞 不论你的操作系统采取何种文件系统(FAT,NTFS 或 NFS),每种系统都有它的缺陷。例如,缺省情况下 NT

28、FS 在文件夹和共享创建之初 everyone 组可完全控制。由于它是操作系统的组成部分(Windows NT),因此也成为许多攻击的目标。 NFS 文件系统可以共享被远程系统挂接,因此这也是攻击者入侵系统的途径之一。 IP 欺骗和劫持:实例 IP 欺骗是使验证无效的攻击手段之一,也是如何组合攻击策略攻击网络的典型实例。IP 欺骗利用了 Internet 开放式的网络设计和传统的建立在 UNIX 操作系统之间信任关系。主要的问题是使用 TCP/IP 协议的主机假设所有从合法 IP 地址发来的数据包都是有效的。攻击者可以利用这一缺陷,通过程序来发送虚假的 IP 包,从而建立 TCP 连接,攻击者

29、可以使一个系统看起来象另一个系统。 许多 UNIX 操作系统通过 rhosts 和 rlogin 在非信任的网络上(如 Internet)建立信任的连接。这种传统的技术是流行的管理工具并减轻了管理负担。通常,这种系统由于把UNIX 的验证机制和 IP 地址使用相结合从而提供了适当的安全。然而,这种验证机制是如此的独立于 IP 地址不会被伪造的假设,以至于很容易被击破。 Non-blind spoofing 和 Blind spoofing Non-blind spoofing 是指攻击者在同一物理网段上操纵连接。Blind spoofing 是指攻击者在不同的物理网段操纵连接。后者在实施上更困

30、难,但也时常发生。 进行 IP 欺骗的攻击者需要一些程序,包括: 一个包嗅探器 一个能够同时终止 TCP 连接、产生另一个 TCP 连接、进行 IP 伪装的程序 IP 欺骗涉及了三台主机。像先前分析的那样,使用验证的服务器必须信任和它建立连接的主机。如果缺乏天生的安全特性,欺骗是非常容易的。 思考下列的场景,有三台主机分别是 A,B 和 C。A 使用 TCP SYN 连接与合法用户 B初始一个连接。但是 B 并没有真正参与到这次连接中,因为 C 已经对 B 实施了拒绝服务攻击。所以,虽然 A 认为是在与 B 对话,但实际上是与 C 对话。IP 欺骗实际上组合了几种攻击手法包括对系统实施了拒绝服

31、务攻击,还包括利用验证技术。 作为审计人员,你不应该说服管理员终止这种信任关系,相反,你应当建议使用防火墙规则来检测有问题的包。 TCP/IP 序列号生成方法 TCP 的 Initial Sequence Number(ISN)的预测 正常的 TCP 连接基于一个三次握手(3-way handshake),一个客户端(Client)向服务器(Server)发送一个初始化序列号 ISNc, 随后,服务器相应这个客户端 ACK(ISNc),并且发送自己的初始化序列号 ISNs,接着,客户端响应这个 ISNs(如下图),三次握手完成。 C - S: (ISNc) S -C: ACK(ISNc)+ I

32、SNs C - S: ACK(ISNs) C - S: data and / or S -C: data 下面,我以 Windows2000 Advanced Server 为例,来说一下两台主机是如何进行三次握手。 我们可以看到: 1) Smartboy 首先发送一个 seq:32468329 的包给服务器 202.116.128.6。 2) 然后, 202.116.128.6 响应主机 Smartboy, 它送给 Smartboy 自己的 seq:3333416325 而且响应 Smartboy 的 ack:3240689240。 3) Smartboy 再响应服务器 202.116.12

33、8.6, seq:3240689240, ack:3333416326。 三次握手完毕,两台几建立起连接。 可以看出,在三次握手协议中,Clinet 一定要监听服务器发送过来的 ISNs, TCP 使用的 sequence number 是一个 32 位的计数器,从 0-4294967295。TCP 为每一个连接选择一个初始序号 ISN,为了防止因为延迟、重传等扰乱三次握手,ISN 不能随便选取,不同系统有不同算法。理解 TCP 如何分配 ISN 以及 ISN 随时间变化的规律,对于成功地进行 IP 欺骗攻击很重要。 在 Unix 系统里,基于远程过程调用 RPC 的命令,比如 rlogin、

34、rcp、rsh 等等,根据/etc/hosts.equiv 以及$HOME/.rhosts 文件进行安全校验,其实质是仅仅根据源 IP 地址进行用户身份确认,以便允许或拒绝用户 RPC。这就给与了那些攻击者进行 IP 地址欺骗的机会。 让我们看 X 是如何冒充 T 来欺骗 S,从而建立一个非法连接 : X-S: SYN(ISNx ) , SRC = T S-T: SYN(ISNs ) , ACK(ISNT) (*) X-S: ACK(ISNs+1 ) , SRC = T (*) X-S: ACK(ISNs +1) , SRC = T, 攻击命令(可能是一些特权命令) 但是,T 必须要在第(*)

35、中给出 ISNs, 问题是 ISNs 在第(*)步中发给了 T(X 当然很难截取到),幸运的是,TCP 协议有一个约定: ISN 变量每秒增加 250,000 次,这个增加值在许多版本比较旧的操作系统中都是一个常量,在 FreeBSD4.3 中是 125000 次每秒,这就给 X 一个可乘之机。 Last edited by 下弦月 on 2005-5-13 at 18:19 下弦月 2005-5-13 10:11 网络安全知识(4)看一下 X 是如何猜出 ISNs : a、首先, X 发送一个 SYN 包来获取服务器现在的 ISNs X -S: (ISNx) S -X: ACK(ISNx)+

36、 ISNs# (1) b、紧接着,X 冒充 T 向服务器发送 SYN 包 X -S: SYN(ISNx ) , SRC = T (2) c、于是,服务器发出一个响应包给 T(这个包 X 是收不到的) S -T: SYN(ISNs$) , ACK(ISNT ) (3) d、X 计算 ISNs$: ISNs$ = ISNs# + RTTIncrement of ISN (4) 其中,RTT(Round Trip Time),是一个包往返 X 和 S 所用的时间,可以通过 Ping 来得到。上图显示了 round trip times (RTT) 大概是。 Increment of ISN 是协议栈

37、的初始序列号每秒钟增加的值,以 Unix 为例,当没有外部连接发生时,服务器的 ISN 每秒增加 128,000,有连接的时候,服务器的 ISN 每秒增加64,000。 e、于是, X - S : ACK(ISNs$) (冒充可信主机成功了) X - S : 恶意的命令或窃取机密消息的命令 在评价以下的解决方案时有几点要注意: 1.该解决方案是否很好地满足 TCP 的稳定性和可操作性的要求? 2.该解决方案是否容易实现? 3.该解决方案对性能的影响如何? 4.该解决方案是否经得起时间的考验? 以下的几种方案各有各的优点和缺点,它们都是基于增强 ISN 生成器的目标提出的。 配置和使用密码安全协

38、议 TCP 的初始序列号并没有提供防范连接攻击的相应措施。TCP 的头部缺少加密选项用于强加密认证,于是,一种叫做 IPSec 的密码安全协议的技术提出了。IPSec 提供了一种加密技术(End to end cryptographic ),使系统能验证一个包是否属于一个特定的流。这种加密技术是在网络层实现的。其它的在传输层实现的解决方案(如 SSL/TLS 和 SSH1/SSH2), 只能防止一个无关的包插入一个会话中,但对连接重置(拒绝服务)却无能为力,原因是因为连接处理是发生在更低的层。IPSec 能够同时应付着两种攻击(包攻击和连接攻击)。它直接集成在网络层的安全模型里面。 上面的解决

39、方案并不需要对 TCP 协议做任何得修改, RFC2385(“基于 TCP MD5 签名选项的 BGP 会话保护 )和其他的技术提供了增加 TCP 头部的密码保护,但是,却带来了收到拒绝服务攻击和互操作性和性能方面的潜在威胁。使用加密安全协议有几个优于其它方案的地方。TCP 头部加密防止了 Hijacking 和包扰乱等攻击行为,而 TCP 层仍然能够提供返回一个简单增加 ISN 的机制,使方案提供了最大程度的可靠性。但实现 IPSec 非常复杂,而且它需要客户机支持,考虑到可用性,许多系统都选择使用 RFC 1948。 使用 RFC1948 在 RFC1948 中,Bellovin 提出了通

40、过使用 4-tuples 的 HASH 单向加密函数,能够使远程攻击者无从下手(但不能阻止同一网段的攻击者通过监听网络上的数据来判断 ISN)。 Newsham 在他的论文 ref_newsham中提到: RFC 1948 ref1提出了一种不容易攻击(通过猜测)的 TCP ISN 的生成方法。此方法通过连接标识符来区分序列号空间。每一个连接标识符由本地地址,本地端口,远程地址,远程端口来组成,并由一个函数计算标识符分的序列号地址空间偏移值(唯一)。此函数不能被攻击者获得,否则,攻击者可以通过计算获得 ISN。于是,ISN 就在这个偏移值上增加。ISN 的值以这种方式产生能够抵受上面提到的对

41、ISN 的猜测攻击。 一旦全局 ISN 空间由上述方法来生成,所有的对 TCP ISN 的远程攻击都变得不合实际。但是,需要指出的,即使我们依照 RFC 1948 来实现 ISN 的生成器,攻击者仍然可以通过特定的条件来获得 ISN(这一点在后面叙述). 另外,用加密的强哈希算法(MD5)来实现 ISN 的生成器会导致 TCP 的建立时间延长。所以,有些生成器(如 Linux kernel )选择用减少了轮数的 MD4 函数来提供足够好的安全性同时又把性能下降变得最低。削弱哈希函数的一个地方是每几分钟就需要对生成器做一次 re-key 的处理,经过了一次 re-key 的处理后,安全性提高了,

42、但是,RFC793 提到的可靠性却变成另一个问题。 我们已经知道,严格符合 RFC1948 的 ISN 生成方法有一个潜在的危机: 一个攻击者如果以前合法拥有过一个 IP 地址,他通过对 ISN 进行大量的采样,可以估计到随后的 ISN 的变化规律。在以后,尽管这个 IP 地址已经不属于此攻击者,但他仍然可以通过猜测 ISN 来进行 IP 欺骗。 以下,我们可以看到 RFC 1948 的弱点: ISN = M + F(sip, sport, dip, dport,) 其中 ISN 32 位的初始序列号 M 单调增加的计数器 F 单向散列哈希函数 (例如 MD4 or MD5) sip 源 IP

43、 地址 sport 源端口 dip 目的 IP 地址 dport 目的端口 哈希函数可选部分,使远程攻击者更难猜到 ISN. ISN 自身的值是按照一个常数值稳定增加的,所以 F()需要保持相对的稳定性。而根据Bellovin 所提出的,是一个系统特定的值(例如机器的启动时间,密码,初始随机数等),这些值并不 会经常变。 但是,如果 Hash 函数在实现上存在漏洞(我们无法保证一个绝对安全的 Hash 函数,况且,它的实现又与操作系统密切相关),攻击者就可以通过大量的采样,来分析,其中,源 IP 地址,源端口,目的 IP 地址,目的端口都是不变的,这减少了攻击者分析的难度。 Linux TCP

44、 的 ISN 生成器避免了这一点。它每分钟计算一次值 ,把泄漏的风险降到了最低。 有一个办法可以做的更好: 取 M = M + R(t) ISN = M + F(sip, sport, dip, dport, ) 其中 R(t) 是一个关于时间的随机函数 很有必要这样做,因为它使攻击者猜测 ISN 的难度更大了(弱点在理论上还是存在的)。 其它一些方法 构造 TCP ISN 生成器的一些更直接的方法是:简单地选取一些随机数作为 ISN。这就是给定一个 32 位的空间,指定 ISN = R(t)。(假设 R()是完全的非伪随机数生成函数) 固然,对于完全随机的 ISN 值,攻击者猜测到的可能性是

45、32 是,随之带来的一个问题是 ISN 空间里面的值的互相重复。这违反了许多 RFC(RFC 793, RFC 1185, RFC 1323, RFC1948 等) 的假设-ISN 单调增加。这将对 TCP 协议的稳定性和可靠性带来不可预计的问题。 其它一些由 Niels Provos(来自 OpenBSD 组织)结合完全随机方法和 RFC 1948 解决方案: ISN = (PRNG(t) 16) + R(t) 位 其中 PRNG(t) :一组随机指定的连续的位数字 0x00000000 - 0xffff0000 R(t) :16 位随机数生成器(它的高位 msb 设成)0x00000000

46、 - 0x0000ffff 上面的公式被用于设计 OpenBsd 的 ISN 生成器,相关的源代码可以从下面的网址获得 http:/www.openbsd.org/cgi-bin/cvsweb/src/.inet/tcp_subr.c Provos 的实现方法有效地生成了一组在给定时间内的不会重复的 ISN 的值,每两个ISN 值都至少相差 32K,这不但避免了随机方法造成的 ISN 的值的冲突,而且避免了因为哈希函数计算带来的性能上的下降,但是,它太依赖于系统时钟,一旦系统时钟状态给攻击者知道了,就存在着系统的全局 ISN 状态泄密的危机。 TCP ISN 生成器的构造方法的安全性评估 IS

47、N 与 PRNGs(伪随机数生成器 ) 我们很难用一台计算机去生成一些不可预测的数字,因为,计算机被设计成一种以重复和准确的方式去执行一套指令的机器。所以,每个固定的算法都可以在其他机器上生成同样的结果。如果能够推断远程主机的内部状态,攻击者就可以预测它的输出;即使不知道远程主机的 PNRG 函数,但因为算法最终会使 ISN 回绕,按一定的规律重复生成以前的ISN,所以,攻击者仍然可以推断 ISN。幸运的是,目前条件下,ISN 的重复可以延长到几个月甚至几年。但是,仍然有部分 PRNG 生成器在产生 500 个元素后就开始回绕。解决伪随机数的方法是引入外部随机源,击键延时,I/O 中断,或者其

48、它对攻击者来说不可预知的参数。把这种方法和一个合理的 HASH 函数结合起来,就可以产生出 32 位的不可预知的 TCP ISN 的值,同时又隐蔽了主机的 PNRG 的内部状态。不幸的是,很少的 TCP ISN产生器是按这种思路去设计的,但即使是这样设计的产生器,也会有很多的实现上的漏洞使这个产生器产生的 ISN 具有可猜测性。 RFC1948 的建议提供了一种比较完善的方法,但是,对攻击者来说,ISN 仍然存在着可分析性和猜测性。其中,PRNG 的实现是个很关键的地方。 Last edited by 下弦月 on 2005-5-13 at 18:21 下弦月 2005-5-13 10:12

49、网络安全知识(5)Spoofing 集合 需要知道一点是,如果我们有足够的能力能够同时可以发出32 个包,每个包由不同的 ISN 值,那么,猜中 ISN 的可能性是 100%。但是,无论从带宽或计算机的速度来说都是不实际的。但是,我们仍然可以发大量的包去增加命中的几率,我们把这个发出的攻击包的集合称为 Spoofing 集合。通常,从计算机速度和网络数据上传速率两方面来考虑,含5000 个包的 Spoofing 的集合对众多的网络用户是没有问题的,5000-60000 个包的 Spoofing集合对宽带网的用户也是不成问题的,大于 60000 个包的 Spoofing 集合则超出一般攻击者的能力。网络的速度和计算机性能的不断增加会提高那种使用穷尽攻击方法猜测 ISN

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报