内容简介
《黑客大曝光》是销量第一的网络和计算机信息安全图书,也是有史以来写得成功的信息安全旷世之作,被信息安全界奉为“武林秘笈”。作者以的知己知彼视角揭示了“黑客攻击的方法学”,从攻防两方面系统阐述了见和秘的黑客入侵手段以及针锋相对的防范对策。
本书在前6版的基础上对内容进行全面更新和扩充,以便涵盖黑客攻击伎俩的动态,如增加了有关针对特定目标的持续性攻击、硬件攻击以及智能手机攻击(Android系统和iOS系统)的新章节;第7版开篇仍以黑客攻击技术的“踩点”→“扫描”→“查点”三部曲,拉开黑客入侵的序幕;之后从黑客攻击的主要目标:“系统”、“基础设施”、“应用程序和数据”3个方面对黑客攻击惯用手段进行剖析;“系统攻击”篇针对Windows、UNIX系统攻击给出精辟分析和对症下药的防范对策;“基础设施攻击”篇揭示了3类基础设施的攻击手段和行之有效的防范对策——远程连接和VoIP攻击、无线攻击和硬件攻击;“应用程序和数据攻击”篇则引入全新概念——网页和数据库攻击、移动设备攻击,并给出了针对上述黑客攻击的防范对策手册。
本书面向各行各业、政府机关、大专院校关注信息安全的从业人员,是信息系统安全专业人士甚至是信息安全“发烧友”的指南和必备工具书;也可作为信息安全相关专业的教材教辅用书,以及IT专业培训的教材。
目录
第1部分
收集情报
第1章 踩点
1.1 什么是踩点
1.2 因特网踩点
1.2.1 步骤1:确定踩点活动的范围
1.2.2 步骤2:获得必要的授权
1.2.3 步骤3:可以从公开渠道获得的信息
1.2.4 步骤4:WHOIS和DNS查点
1.2.5 步骤5:DNS查询
1.2.6 步骤6:网络侦察
1.3 小结
第2章 扫描
2.1 确定目标系统是否开机并在线
2.1.1 ARP主机发现
2.1.2 ICMP主机发现
2.1.3 TCP/UDP主机发现
2.2 确定目标系统上哪些服务正在运行或监听
2.2.1 扫描类型
2.2.2 确定TCP和UDP服务正在运行
2.3 侦测操作系统
2.3.1 从现有的端口进行猜测
2.3.2 主动式协议栈指纹分析技术
2.3.3 被动式协议栈指纹分析技术
2.4 处理并存储扫描数据
2.5 小结
第3章 查点
3.1 服务指纹分析技术
3.2 漏洞扫描器
3.3 本的标语抓取技术
3.4 对常用网络服务进行查点
3.5 小结
第2部分
终端和服务器攻击
第4章 攻击Windows
4.1 概述
4.2 取得合法身份前的攻击手段
4.2.1 认证欺骗攻击
4.2.2 远程非授权漏洞发掘
4.3 取得合法身份后的攻击手段
4.3.1 权限提升
4.3.2 获取并破解口令
4.3.3 远程控制和后门
4.3.4 端口重定向
4.3.5 掩盖入侵痕迹
4.3.6 通用防御措施:攻击者已经可以“合法地”登录到你的系统时该怎么办
4.4 Windows安全功能
4.4.1 Windows 防火墙
4.4.2 自动更新
4.4.3 安全中心
4.4.4 安全策略与群组策略
4.4.5 微软安全软件MSE(Microsoft Security Esstentials)
4.4.6 加强减灾经验工具包
4.4.7 Bitlocker和EFS
4.4.8 Windows资源保护(WRP)
4.4.9 完整性级别(Integrity Level)、UAC和PMIE
4.4.10 数据执行保护:DEP
4.4.11 Windows服务安全加固
4.4.12 基于编译器的功能加强
4.4.13 反思:Windows的安全负担
4.5 小结
第5章 攻击Unix
5.1 获取root权限
5.1.1 简短回顾
5.1.2 弱点映射
5.1.3 远程访问与本地访问
5.2 远程访问
5.2.1 数据驱动攻击
5.2.2 我想有个shell
5.2.3 常见的远程攻击
5.3 本地访问
5.4 获取root特权之后
5.5 小结
第6章 网络犯罪和持续威胁
6.1 APT是什么?
6.2 什么不是APTS
6.3
摘要与插图
5.2.1 数据驱动攻击讨论完口令猜测攻击后,我们该解释获取远程访问权限的事实标准——数据驱动攻击(data driven
attack)了。数据驱动攻击是通过向某个活动中的服务发送数据,以产生非预期结果来进行的攻击。当然,“非预期结果”这一说法因人而异。从攻击者看来结果是所希望的,因为它们给出了访问目标系统的许可权。从编程人员看来,那是他们的程序收到了未曾料到的将导致非预期结果的输入数据。数据驱动攻击分为缓冲区溢出攻击(buffer
overflow attack)和输入验证攻击(input validation attack)。下面分别讨论这两种攻击。
1.缓冲区溢出攻击
流行度:
8
简单度:
8
影响力:
10
风险评级:
9
1996年11月,计算机安全的未来发生了历史性转变。Bugtraq邮件列表的创始人Aleph One给安全杂志Phrack
Magazine(第49期)写了一篇题目为“Smashing The Stack For Fun And
Profit”的文章。这篇文章对于安全界产生了深远的影响,因为它清楚地阐明了糟糕的编程行为在缓冲区溢出攻击下会如何危及安全。缓冲区溢出攻击可追溯到1988年臭名昭著的Robert
Morris蠕虫事件;然而关于这种攻击的有用信息直到1996年才为人所知。
在某个用户或进程试图往一个缓冲区(即固定长度的数组)中放置比原初分配的空间还要多的数据的时候,就会出现缓冲区溢出条件(buffer
overflow
condition)。这种情况与C特有的函数,例如strcpy()、strcat()、sprintf()等有关。正常的缓冲区溢出条件会导致段越界发生。然而精心利用这类情况,可以达到访问目标系统的目的。尽管我们讨论的是远程缓冲区溢出攻击,缓冲区溢出条件在本地系统上也同样发生,在本章稍后会继续谈及。为了理解缓冲区溢出的发生过程,下面举一个简化的例子。
我们有一个长度固定为128字节的缓冲区。假设该缓冲区定义成可作为存放sendmail的VRFY命令的输入数据。第3章中我们曾使用VRFY来帮助确认目标系统上的可能存在的用户,方法是验证他们的电子邮件地址。再假设sendmail是将用户ID设(SUID)为root的程序,从而不论谁执行都以root特权运行。这种假设对于现实系统可能成立,也可能不成立。如果攻击者连接到目标系统的sendmail守护进程后,给VRFY命令发送一块由1000个字母“a”构成的数据,而不是一个简短的用户名,情况会是什么样呢?
echo "vrfy ‘perl -e 'print "a" x 1000'’" | nc
www.example.com 25
VRFY缓冲区将溢出,因为它只能容纳128个字节。往VRFY缓冲区中填塞1000个字节可能导致拒绝服务和sendmail守护进程的崩溃;然而由此精心设计一下,让目标系统执行攻击者选定的代码将更为危险。这恰好是成功的缓冲区溢出攻击的工作机理。
攻击者当然不会向VRFY命令发送1000个字母“a”,而是发送将使缓冲区溢出并执行命令/bin/sh的特定代码。既然sendmail是作为root运行的,因此当执行/bin/sh时,攻击者即具备直接的root访问权。你可能对于sendmail如何知道攻击者想要执行/bin/sh心存疑惑,其实过程并不复杂。当执行攻击时,称为“egg”的特殊汇编代码被作为溢出缓冲区的实际字符串的一部分发送给VRFY命令。当VRFY缓冲区溢出时,攻击者可设置导致问题的函数的返回地址,以改变程序的执行流。此时该函数不再返回其正确的内存位置,而是执行攻击者作为缓冲区溢出数据的一部分发送的恶意汇编代码,该代码将以root特权运行/bin/sh。于是大功告成。