




已阅读5页,还剩205页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章计算机信息系统安全概述 1 1计算机信息系统的定义1 2计算机信息系统安全简介1 2 1计算机信息系统安全的定义1 2 2信息系统自身的安全脆弱性1 2 3对信息系统安全的威胁1 3Windows信息系统安全机制简介1 3 1Windows2000安全机制简介1 3 2SQLServer2000安全机制简介1 4Windows信息系统面临的安全威胁1 4 1安全威胁之系统破解1 4 2安全威胁之计算机病毒1 4 3安全威胁之恶意攻击 1 1计算机信息系统的定义 信息系统是指用于采集 处理 存储 传输 分发和部署信息的整个基础设施 组织结构 人员和组件的总和 信息系统 InformationSystem 是指由计算机及其相关和配套的设备 设施 含网络 构成的 按照一定的应用目标和规则对信息进行采集 加工 存储 传输 检索等处理的人机系统 1 2计算机信息系统安全简介 1 2 1计算机信息系统安全的定义 信息系统安全定义为 确保以电磁信号为主要形式的 在计算机网络化 开放互联 系统中进行自动通信 处理和利用的信息内容 在各个物理位置 逻辑区域 存储和传输介质中 处于动态和静态过程中的机密性 完整性 可用性 可审查性和抗抵赖性 与人 网络 环境有关的技术安全 结构安全和管理安全的总和 1 2 2信息系统自身的安全脆弱性 1 硬件组件 2 软件组件 3 网络和通信协议 信息系统硬件组件的安全隐患多来源于设计 主要表现为物理安全方面的问题 软件组件的安全隐患来源于设计和软件工程中的问题 1 缺乏对用户身份的鉴别 2 缺乏对路由协议的鉴别认证 3 TCP UDP的缺陷 1 2 3对信息系统安全的威胁 1 基本威胁 1 信息泄露 2 完整性破坏 3 服务拒绝 4 未授权访问2 威胁信息系统的主要方法 1 冒充 2 旁路控制 3 破坏信息的完整性攻击者可以从以下三方面破坏信息的完整性 篡改 改变信息流的次序 时序 流向 内容和形式 删除 删除消息全部或其中一部分 插入 在消息中插入一些无意义的或有害的消息 4 破坏系统的可用性 5 重放 6 截取和辐射侦测 7 陷门 8 特洛伊木马 9 抵赖3 威胁和攻击的来源 1 内部操作不当 2 内部管理不严造成系统安全管理失控 3 来自外部的威胁和犯罪 黑客 信息间谍 计算机犯罪 1 3Windows信息系统安全机制简介 1 3 1Windows2000安全机制简介 WindowsNT4 0的不足 WindowsNT应用于企业级服务时 如果不使用那些繁冗的附加软件产品 便无法提供分布式SSO 单点登录 服务 委派功能 将针对限定账号集合的有限管理优选权指派给另一用户的能力 则更是少得可怜 同样无法借助平面化WindowsNT域就组织层次和管理结构进行适当规划 WindowsNT4 0也没有为和用户账号有关的应用程序专用信息提供存储位置 而WindowsNT所具备的PKI功能 最多只能算雏形状态 则仅被限定于Web环境 并只能面向基于MicrosoftExchangeServer的通信任务提供部分支持 但PKI功能本身却没有实现全面集成化 首先 Microsoft在围绕Win2K展开设计工作的过程中 秉承了多项旨在弥补WindowsNT4 0自身缺陷的技术意图 该公司将这种操作系统定位于终极电子商务支持平台 其次 Win2K在很大程度上依赖于行业标准和相关协议 再次 Microsoft还需要提供一个有助于降低应用程序开发成本的软件系统平台 最后 为应对电子商务所提出的挑战 Win2K已具备了在整个操作系统内面向PKI提供技术支持的能力 1 AD组件AD堪称Win2K操作系统的旗舰级组件 主要用来克服WindowsNT4 0在目录功能方面存在的伸缩性 扩展性 开放性和管理能力问题 AD为操作系统存储账号及控制策略信息 AD依赖操作系统控制对AD对象的访问 操作系统对AD中对象强制实施许可进入 操作系统的授信信息存放在AD中 2 CryptoAPI组件 CryptoAPI的设计目标在于 面向基于使用可安装加密服务提供程序之操作系统的全部应用程序及其他相关组件提供针对低级加密服务的一站式 采购 模式 CryptoAPI为应用程序提供一站式 采购 服务 3 证书服务器 证书服务器 主要用来针对证书的申请 签发 公布和管理任务提供CA所应具备的基本功能特性 证书服务器可面向ExchangeServer提供许可证码身份验证和安全MIME S MIME 集成特性 管理人员必须为针对证书服务器配置实施操控而以手工方式就文本文件进行编辑 证书服务器缺乏对于PKI企业级使用需求来说是至关重要的管理特性 证书服务器具备在其他第三方目录中实现证书发布的能力 4 身份验证服务 SSPI SecuritySupportProviderInterface 将通过另一种API提供身份验证服务 客户端 服务器应用程序不仅需要对访问服务器的客户端执行身份验证 而且 有时甚至需要对访问客户端的服务器实施验证 SSPI在身份验证服务中所扮演的角色 5 加密服务 Win2K所配备的EFS则允许你仅仅通过选中一个复选框的简单操作即可在文件系统层对相关文件进行加密 EFS可借助面向用户和应用程序的完全透明度对加密和解密任务进行处理 Win2K主要凭借IPSec面向用户和应用程序提供充分透明度 进而跨越网络系统对数据资料加以保护 IPSec可面向TCP IP通信提供身份验证 机密性 数据完整性和筛选服务 IPSec在Win2K体系结构中所处位置 1 3 2SQLServer2000安全机制简介 SQLServer是Microsoft公司开发的大型数据库软件 Microsoft为SQLServer建立了一种既灵活又强大的安全管理机制 SQLServer的安全机制是与下层的Win2K操作系统结合在一起的 它能够对用户访问SQLServer服务器系统和数据库的安全进行全面的管理 1 验证方法选择 验证是指检验用户的身份标识 授权是指允许用户做些什么 构造安全策略的第一个步骤是确定SQLServer用哪种方式验证用户 2 Web环境中的验证 IIS5 0 可以用四种方法验证用户 第一种方法是为每一个网站和每一个虚拟目录创建一个匿名用户的Win2K账户 第二种方法是让所有网站使用Basic验证 在客户端只使用IE6 0 IE5 0浏览器的情况下 你可以使用第三种验证方法 你可以在Web网站上和虚拟目录上都启用Win2K验证 第四种方法是如果用户都有个人数字证书 你可以把那些证书映射到本地域的Win2K账户上 3 设置全局组 构造安全策略的下一个步骤是确定用户应该属于什么组 控制数据访问权限最简单的方法是 对于每一组用户 分别地为它创建一个满足该组用户权限要求的 域内全局有效的组 除了面向特定应用程序的组之外 我们还需要几个基本组 基本组的成员负责管理服务器 4 允许数据库访问 权限分配给角色而不是直接把它们分配给全局组 创建了数据库之后 我们可以用sp grantdbaccess存储过程授权DB NameUsers组访问它 如果要拒绝数据库访问 我们可以创建另外一个名为DB NameDeniedUsers的全局组 授权它访问数据库 然后把它设置为db denydatareader以及db denydatawriter角色的成员 5 分配权限 实施安全策略的最后一个步骤是创建用户定义的数据库角色 然后分配权限 完成这个步骤最简单的方法是创建一些名字与全局组名字配套的角色 创建好角色之后就可以分配权限 在这个过程中 我们只需用到标准的GRANT REVOKE和DENY命令 接下来我们就可以加入所有SQLServer验证的登录 用户定义的数据库角色可以包含SQLServer登录以及NT全局组 本地组 个人账户 由于内建的角色一般适用于整个数据库而不是单独的对象 因此这里建议你只使用两个内建的数据库角色 即db securityadmin和db owner 6 简化管理 SQLServer验证的登录不仅能够方便地实现 而且与NT验证的登录相比 它更容易编写到应用程序里 但是 如果用户的数量超过25 或者服务器数量在一个以上 或者每个用户都可以访问一个以上的数据库 或者数据库有多个管理员 SQLServer验证的登录便不容易管理了 由于SQLServer没有显示用户有效权限的工具 要记住每个用户具有哪些权限以及他们为何要得到这些权限就更加困难 即使对于一个还要担负其他责任的小型数据库管理员 简化安全策略也有助其减轻问题的复杂程度 因此 首选的方法应该是使用NT验证的登录 然后通过一些精心选择的全局组和数据库角色管理数据库访问 1 4Windows信息系统面临的安全威胁 1 4 1安全威胁之系统破解 1 Windows系统登录密码破解简介 1 删除SAM文件 仅适合于Windows2000 2 修改账户密码 3 穷举法破解账户密码 2 文件级加密破解简介 1 Office文件加密与破解 2 FoxMail账号加密与破解 3 软件注册码破解简介注册码加密保护的原理比较简单 即要求软件安装者必须输入正版软件才拥有的一组字码 字符或数字的组合 经软件验证通过后方可完成安装 注册码的验证方式根据不同的软件各有不同 有的是直接明文放在软件中 有的经过加密或变形后再进行比较 还有的需要通过网络申请注册码 然后再进行验证 不管通过哪种验证方式 注册码的破解均有一定的规律可循 即通过反汇编工具追踪软件的验证过程 在找到验证规律的基础上实现破解 1 4 2安全威胁之计算机病毒 1 计算机病毒的基本特征 1 传染性 2 隐蔽性 3 破坏性 4 可触发性 2 计算机病毒的发展趋势 1 网络成为计算机病毒传染的主要载体 2 传统病毒日益减少 网络蠕虫成为最主要和破坏力最大的病毒类型 3 恶意网页的泛滥 4 病毒与木马技术相互结合 出现带有明显木马特征的病毒 5 传播方式多样化 6 跨操作系统的病毒 7 手机病毒 信息家电病毒的出现 3 计算机反病毒技术的发展趋势 1 适当增加杀毒软件的功能 2 杀毒软件的技术革新 3 操作系统的稳固性 4 企业病毒解决方案和个人病毒防范 1 4 3安全威胁之恶意攻击 1 源IP地址欺骗攻击 假设同一网段内有两台主机A和B 另一网段内有主机X B授予A某些特权 X为获得与A相同的特权 所做欺骗攻击如下 首先 X冒充A 向主机B发送一个带有随机序列号的SYN包 主机B响应 回送一个应答包给A 该应答号等于原序列号加1 然而 此时主机A已被主机X利用拒绝服务攻击 淹没 了 导致主机A服务失效 结果 主机A将B发来的包丢弃 为了完成三次握手 X还需要向B回送一个应答包 其应答号等于B向A发送数据包的序列号加1 此时主机X并不能检测到主机B的数据包 因为不在同一网段 只有利用TCP顺序号估算法来预测应答包的顺序号并将其发送给目标机B 如果猜测正确 B则认为收到的ACK是来自内部主机A 此时 X即获得了主机A在主机B上所享有的特权 并开始对这些服务实施攻击 要防止源IP地址欺骗行为 可以采取以下措施来尽可能地保护系统免受这类攻击 1 抛弃基于地址的信任策略阻止这类攻击的一种十分容易的办法就是放弃以地址为基础的验证 这将迫使所有用户使用其他远程通信手段 如telnet ssh skey等等 2 使用加密方法在包发送到网络上之前 我们可以对它进行加密 虽然加密过程要求适当改变目前的网络环境 但它将保证数据的完整性 真实性和保密性 3 进行包过滤可以配置路由器使其能够拒绝网络外部与本网内具有相同IP地址的连接请求 而且 当包的IP地址不在本网内时 路由器不应该把本网主机的包发送出去 2 源路由欺骗攻击 假设主机A享有主机B的某些特权 主机X想冒充主机A从主机B 假设IP为aaa bbb ccc ddd 获得某些服务 首先 攻击者修改距离X最近的路由器 使得到达此路由器且包含目的地址aaa bbb ccc ddd的数据包以主机X所在的网络为目的地 然后 攻击者X利用IP欺骗向主机B发送源路由 指定最近的路由器 数据包 当B回送数据包时 就传送到被更改过的路由器 这就使一个入侵者可以假冒一个主机的名义通过一个特殊的路径来获得某些被保护数据 为了防范源路由欺骗攻击 一般采用下面两种措施 1 对付这种攻击最好的办法是配置路由器 使它抛弃那些由外部网进来的却声称是内部主机的报文 2 在路由器上关闭源路由 用命令noipsource route 3 拒绝服务攻击 SYNFlood常常是源IP地址欺骗攻击的前奏 又称半开式连接攻击 每当我们进行一次标准的TCP连接就会有一个三次握手的过程 而SYNFlood在它的实现过程中只有三次握手的前两个步骤 当服务方收到请求方的SYN并回送SYN ACK确认报文后 请求方由于采用源地址欺骗等手段 致使服务方得不到ACK回应 这样 服务方会在一定时间内处于等待接收请求方ACK报文的状态 一台服务器可用的TCP连接是有限的 如果恶意攻击方快速连续地发送此类连接请求 则服务器的系统可用资源 网络可用带宽急剧下降 将无法向其他用户提供正常的网络服务 为了防止拒绝服务攻击 我们可以采取以下的预防措施 1 建议在该网段的路由器上做一些配置的调整 这些调整包括限制Syn半开数据包的流量和个数 2 要防止SYN数据段攻击 我们应对系统设定相应的内核参数 使得系统强制对超时的Syn请求连接数据包复位 同时通过缩短超时常数和加长等候队列使得系统能迅速处理无效的Syn请求数据包 3 建议在路由器的前端做必要的TCP拦截 使得只有完成TCP三次握手过程的数据包才可进入该网段 这样可以有效地保护本网段内的服务器不受此类攻击 4 对于信息淹没攻击 我们应关掉可能产生无限序列的服务来防止这种攻击 4 网络嗅探攻击 网络嗅探就是使网络接口接收不属于本主机的数据 计算机网络通常建立在共享信道上 以太网就是这样一个共享信道的网络 其数据帧头包含目的主机的硬件地址 只有硬件地址匹配的机器才会接收该数据包 一个能接收所有数据包的机器被称为混杂模式节点 通常账户和口令等信息都以明文的形式在以太网上传输 一旦被攻击者在混杂模式节点上嗅探到这些信息 相关的计算机和用户就难以避免被攻击的厄运 对于网络嗅探攻击 我们可以采取以下措施进行防范 1 网络分段 2 加密 3 一次性口令技术 4 禁用杂错节点 5 缓冲区溢出攻击 缓冲区是用户为程序运行时在计算机内存中申请到的一段连续的存储空间 它保存了给定类型的数据 缓冲区溢出指的是一种常见且危害很大的系统攻击手段 通过向程序的缓冲区写入超出其长度的内容 造成缓冲区的溢出 从而破坏程序的堆栈 使程序转而执行其他的指令 以达到攻击的目的 一般的防范措施包括 1 程序指针完整性检查 2 堆栈的保护 3 数组边界检查 4 利用工具软件发现漏洞并修补 2 1Windows系统的注册表2 2VisualC 编程基础2 3汇编语言编程及反汇编调试2 4Windows系统驱动程序开发 第2章基础知识简介 2 1Windows系统的注册表 2 1 1注册表的结构 注册表的外部形式是Windows目录下的两个二进制文件System dat和User dat 内部组织结构是一个类似于目录管理的树状分层的结构 对于树枝 我们把它叫做 项 对于树叶 叫做 值项 值项包括三部分 值的名称 值的数据类型以及值本身 Windows系统的注册表有5种数据类型 它们是 REG BINARY 二进制值 B REG DWORD DWORD值 D REG EXPAND SZ 可扩展字符串 E REG MULTI SZ 多重字符串 M REG SZ 数据字符串 S 注册表的根键主要包括5大根键 即 HKEY CURRENT USER 包含当前登录用户的配置信息的根目录 用户文件夹 屏幕颜色和 控制面板 设置存储在此处 该信息被称为用户配置文件 HKEY USERS 包含计算机上所有用户的配置文件的根目录 HKEY CURRENT USER是HKEY USERS的子项 HKEY LOCAL MACHINE 包含针对该计算机 对于任何用户 的配置信息 HKEY CLASSES ROOT 是HKEY LOCAL MACHINE Software的子项 此处存储的信息可以确保当使用Windows资源管理器打开文件时 将使用正确的应用程序打开对应的文件类型 HKEY CURRENT CONFIG 包含本地计算机在系统启动时所用的硬件配置文件信息 1 HKEY LOCAL MACHINE根键 HKEY LOCAL MACHINE根键中存放的是用来控制系统和软件的设置 1 HARDWARE子键该子键包含了系统使用的浮点处理器 串口等有关信息 DESCRIPTION 用于存放有关系统信息 DEVICEMAP 用于存放设备映像 RESOURCEMAP 用于存放资源映像 2 SAM子键 3 SECURITY子键该子键位于HKEY LOCAL MACHINE Security分支上 该分支只是为将来的高级功能而预留的 4 SOFTWARE子键该子键中保留的是所有已安装的32位应用程序的信息 5 SYSTEM子键该子键存放的是启动时所使用的信息和修复系统时所需的信息 其中包括各个驱动程序的描述信息和配置信息等 2 HKEY CLASSES ROOT根键 HKEY CLASSES ROOT主键与当前注册使用的用户有关 它实际上是HKEY CURRENT USER SOFTWARE Classes和HKEY LOCAL MACHINE SOFTWARE Classes的交集 如果两者的内容有冲突 则HKEY CURRENT USER SOFTWARE Classes优先 1 同一台计算机上的不同用户可以分别定制不同的Windows2000 2 提高了注册表的安全性 3 支持漫游类注册 单用户类注册 per userclassregistration 3 HKEY CURRENT CONFIG根键 如果你在Windows中设置了两套或者两套以上的硬件配置文件 HardwareConfigurationfile 则在系统启动时将会让用户选择使用哪套配置文件 而HKEY CURRENT CONFIG根键中存放的则是当前配置文件的所有信息 4 HKEY USERS根键 该根键保存了存放在本地计算机口令列表中的用户标识和密码列表 即用户设置 每个用户的预配置信息都存储在HKEY USERS根键中 HKEY USERS是远程计算机中访问的根键之一 其内容取决于计算机是否激活了用户配置文件 若未激活用户配置文件 则可以看到称为 DEFAULT的单一子键 该子键包括和所有用户相关的各种设置 并且和 Windows下的USER DAT文件相配合 若激活了用户配置文件并且正确地执行了登录 则还有一个 用户名 的子键 该用户名为用户登录的名称 5 HKEY CURRENT USER根键 HKEY CURRENT USER下面有7个子键 AppEvents 这个子键里登记已注册的各种应用事件 ControlPanel 它里面涉及控制面板设置有关的内容 InstallLocationsMRU Windows安装路径的有关信息 Keyboardlayout 关于键盘设置的信息 Network 有关网络设置的信息 RemoteAccess 安装IE时建立的子关键字 包含该应用程序的有关信息 Software 用户安装软件的有关信息 HKEY CURRENT USER根键中保存的信息 当前用户的子键信息 与HKEY USERS Default分支中所保存的信息是相同的 任何对HKEY CURRENT USER根键中的信息的修改都会导致对HKEY USERS Default中子键信息的修改 反之也是如此 2 1 2注册表的操作 1 注册表的备份点击注册表编辑器的 文件 菜单 再点击 导出 选项 在弹出的对话框中输入文件名 regedit 将 保存类型 选为 注册表文件 再将 导出范围 设置为 全部 接下来选择文件存储位置 最后点击 保存 按钮 就可将系统的注册表保存到硬盘上 同样 如果点击 导入 选项 选择要导入的注册表文件 就可以完成整个注册表的还原 2 注册表项目的还原单击程序界面 文件 项下拉菜单中的 导入 命令 程序会给出一个对话框 在其中的文件列表窗口中选择需要还原的文件名 之后单击 打开 按钮确定即可 3 向注册表中添加新的项或子项启动注册表编辑器 在程序左边的树形列表窗口中选择将在其下添加新项的项或子项 单击程序界面菜单条中的 编辑 项 并从关联的下拉菜单中选择 新建 命令 在出现的窗口中的 项名称 文本框中输入需要添加的新项名称 对于指定类别 可根据自己的需要设置 当然如果不添加也可以 最后单击确定按钮 返回程序界面即可 4 以关键字方式查找首先在注册表编辑器界面中选择需要扫描的项或子项所在窗口 单击界面菜单条 编辑 项下拉菜单中的 查找 命令 在 查找内容 文本框中输入需要查找的内容关键字 并选择相应的扫描控制方式 之后 单击 查找下一个 按钮确定即可 5 删除注册表中无用的子项或值项首先在程序界面中找到需要删除项目所在的主项窗口 然后定位需要删除的值项 一般对于软件注册项都包括在HKEY CURRENT USER项下的Software子项中 单击程序界面菜单条 编辑 项下拉菜单中的 删除 命令或者是直接按下 Delete 键 程序会给出删除确认对话框 单击 Yes 按钮确认即可 6 设置注册表项的权限首先在程序界面窗口中选择需要指定权限的项 单击界面 编辑 项下拉菜单 从中选择 权限 命令 在 名称 列表框中选择需要设置权限的用户或组 如果暂时还没有添加 可单击 添加 按钮 在关联的 选择用户 计算机或组 设置界面中选择需要添加的对象 在界面中的 权限 项列表框中设置允许当前选择对象的使用权限 其中包括 读取 和 完全控制 读写 此外 当点 高级 项 程序会给出针对当前授权注册表项访问控制设置 其中包括了更加严密的授权设置 如是否允许查询数值 设置数值 创建子项 枚举子项 通知 创建链接 删除 写入DAC 写入所有者 读取控制等 根据自己的需要选择即可 2 2VisualC 编程基础 2 2 1VisualC 概述 VisualC 以下简称VC 是微软开发的一套C C 编译器 它包含了综合的微软基本类库 MicrosoftFoundationClassLibrary 使得开发Windows应用程序变得简单而高效 它提供有复杂的资源编辑器 可以编辑对话框 菜单 工具栏 图像和其他许多Windows应用程序的组成元素 它还有一个非常好的集成开发环境 DeveloperStudio 用它可以在编写C 程序时对程序的结构进行可视化的管理 2 2 2MFC简介 MFC中的各种类结合起来构成了一个应用程序框架 它的目的就是让程序员在此基础上来建立Windows下的应用程序 MFC的基本结构是层次结构 该层次结构包容了WindowsAPI中的用户界面部分 并使你能够很容易地以面向对象的方式建立Windows应用程序 MFC库的主要优点是效率高 当使用MFC时 首先编写的代码是用来建立必要的用户界面控制并定制其外观 2 2 3Windows消息机制简介 一个消息由一个消息名称 UINT 和两个参数 WPARAM LPARAM 组成 当用户进行了输入或是窗口的状态发生改变时系统都会发送消息 一个消息必须由某一个窗口来接收 作为程序员 在窗口的进程 WNDPROC 中可以对消息进行分析 对自己感兴趣的消息进行处理 系统将会为每一个进程维护一个消息队列 所有属于该进程的消息都会被放入队列中 2 2 4VisualC 编程示例 2 3汇编语言编程及反汇编调试 2 3 1Win32汇编与Masm32 Win32汇编是指32位Windows平台下的汇编语言 它可以调用Windows的API 用Win32汇编写Windows应用程序类似于用C SDK编程 Win32汇编没有进行那么多的封装 更接近系统的底层 使用起来更加灵活 能做到许多高级语言无法做到的事 如代码重定位 汇编程序生成的可执行文件体积小 执行速度快 可用于软件的核心程序段 以提高软件性能 与计算机硬件密切相关的驱动程序开发 计算机病毒的分析与防治 软件加密解密 软件调试等方面都会用到Win32汇编的知识 1 MASM32简介 MASM32就是一个用于Win32汇编的软件包 它包括汇编编译器Ml exe 资源编译器Rc exe 32位链接器Link exe和一个简单的IDE环境QEDITOR exe 2 MASM32与其他Win32汇编开发工具的比较 Win32汇编最好的选择还是MASM32 它可以支持高级语法 使汇编编程更简单 同时它还集成了与之配套的链接器和资源编译器 不需要自己逐个搜集 另外 用它附带的IDE进行 总之 使用MASM32可以方便 快捷地开发出一个汇编程序 是很适合初学者的一个开发平台 2 3 3W32Dasm与静态反汇编 静态反汇编是指把PE等格式的可执行文件反汇编为类似汇编源文件的文本文件 其中的机器指令码用汇编助记符来表示 W32Dasm是一个著名的静态反汇编分析工具 它除了能将应用程序反汇编为汇编源程序 还提供许多相关信息及便捷的操作以帮助对程序的静态调试 另外还有简单的动态调试功能 2 3 2MASM32编程示例 2 4Windows系统驱动程序开发 2 4 1Windows系统设备驱动程序简介 Windwos系统结构图 当用户模式程序需要读取设备数据时 它就调用Win32API函数 然后通过Win32子系统模块 如KERNEL32 DLL 调用平台相关的系统服务接口实现该API 而平台相关的系统服务将调用内核模式支持函数 2 4 2Windows系统驱动程序分类 Windows系统中的设备驱动程序分类结构图 虚拟设备驱动程序 VDD 是一个用户模式部件 它可以使DOS应用程序访问x86平台上的硬件 内核模式驱动程序其分类包含许多子类 PnP驱动程序就是一种遵循Windows2000即插即用协议的内核模式驱动程序 WDM驱动程序是一种PnP驱动程序 它同时还遵循电源管理协议 并能在Windows98和Windows2000间实现源代码级兼容 显示驱动程序是用于显示和打印设备的内核模式驱动程序 文件系统驱动程序在本地硬盘或网络上实现标准PC文件系统模型 包括多层次目录结构和命名文件概念 遗留设备驱动程序也是一种内核模式驱动程序 它直接控制一个硬件设备而不用其他驱动程序帮助 2 4 3Windows系统驱动程序开发模型 WDM中设备对象和驱动程序的层次结构 WDM模型使用了如图2 19所示的层次结构 图中左边是一个设备对象堆栈 设备对象是系统为帮助软件管理硬件而创建的数据结构 一个物理硬件可以有多个这样的数据结构 处于堆栈最底层的设备对象称为物理设备对象 PhysicalDeviceObject 或简称为PDO 在设备对象堆栈的中间某处有一个对象称为功能设备对象 FunctionalDeviceObject 或简称FDO 在FDO上面和下面还会有一些过滤器设备对象 FilterDeviceObject 或简称FiDO 2 4 4Windows系统驱动程序开发工具简介 开发WDM离不开DDK 微软公司提供的DDK版本有 Windows98DDK Windows2000DDK WindowsXPDDK Windows XP SP1DDK 和Windows Server 2003DDK 开发WDM也可以使用驱动开发工具DriverStudio 它是一个开发工具包 包含VtoolsD DriverWorks DriverNetWorks和SoftICE等开发工具 2 4 5Windows系统驱动程序框架结构 1 DriverEntry函数每个驱动程序必须有一个DriverEntry函数以用来初始化驱动程序范围内的数据结构和资源 当I O管理器装入驱动程序时 它调用DriverEntry函数 NTSTATUSDriverEntry INPDRIVER OBJECTDriverObject INPUNICODE STRINGRegistryPath 2 AddDevice函数WDM驱动程序有一个特殊的AddDevice函数 PnP管理器为每个设备实例调用该函数 NTSTATUSAddDevice INPDRIVER OBJECTDriverObject INPDEVICE OBJECTPhysicalDevObject 调用IoCreateDevice创建设备对象 并建立一个私有的设备扩展对象 寄存一个或多个设备接口 以便应用程序能知道设备的存在 另外 还可以给出设备名并创建符号连接 初始化设备扩展和设备对象的Flag成员 调用IoAttachDeviceToDeviceStack函数把新设备对象放到堆栈上 3 Dispatch函数 NTSTATUS PDRIVER DISPATCH INPDEVICE OBJECTDeviceObject INPIRPIrp 略 Dispatch函数如下处理输入IRP的过程如下 在IRP中检测驱动程序的I O栈位置以决定做什么 并且如果有参数的话 检测参数的有效性 尽可能满足请求并完成IRP 否则 由较低层驱动程序或其他设备驱动程序函数传送它以做进一步处理 4 StartIo函数 大多数设备驱动程序有一个StartIo函数 该函数是用来完成IRP的排队功能的 因为大多数PC外设同时仅能处理一个设备I O操作 VOID PDRIVER STARTIO INPDRIVER OBJECTDeviceObject INPIRPIrp 5 其他一些函数及其功能 2 5 6Windows系统驱动程序设计准备工作 如果你在设计一个设备驱动程序 你应该支持和其他相同类型设备的NT驱动程序相同的IRP MJ XXX和IOCTL请求代码 如果你是在设计一个中间层NT驱动程序 应该首先确认你下层驱动程序所管理的设备 因为一个高层的驱动程序必须具有低层驱动程序绝大多数IRP MJ XXX函数入口 高层驱动程序在接到I O请求时 在确定自身IRP当前堆栈单元参数有效的前提下 设置好IRP中下一个低层驱动程序的堆栈单元 然后再调用IoCallDriver将请求传递给下层驱动程序处理 一旦决定好了你的驱动程序应该处理哪些IRP MJ XXX 就可以开始确定驱动程序应该有多少个Dispatch函数 2 5 7Windows系统驱动程序开发的一般过程 最简单的驱动程序开发步骤如下 1 写一个DriverEntry函数 在里面调用IoCreateDevice创建一个Device对象 2 写一个处理IRP MJ CREATE请求的Dispatch函数的基本框架 3 编译你的驱动程序 4 安装测试你的驱动程序 第3章PE病毒及反病毒技术相关实验 3 1PE文件病毒简介3 2简单PE病毒模拟实验3 3PE病毒的变异实验3 4多进程自保护病毒实验3 5病毒的线程注入实验3 6PE文件自免疫防病毒实验 3 1PE文件病毒简介 通过操作系统的文件系统进行感染的病毒都称为文件病毒 DOS环境下有4种基本的可执行文件格式 1 批处理文件 是以 BAT结尾的文件 2 设备驱动文件 是以 SYS结尾的文件 3 COM文件 是以 COM结尾的纯代码文件 4 EXE文件 是以 EXE结尾的文件 1 覆盖病毒 这种病毒直接用病毒文件替换被感染的文件 这样所感染文件的文件头也变成了病毒程序的文件头 不用做任何调整 显然 这种病毒不可能广泛流行 因为被感染的程序立刻就不能正常工作了 用户可以迅速的发现病毒的存在并采取相应的措施 这类病毒并不是一种典型意义上的文件病毒 主要出现在病毒发展的初期 现在已经很难发现了 2 寄生病毒 1 头寄生 病毒 实现将病毒代码放到程序的头上有两种方法 一种是将原来程序的前面一部分拷贝到程序的最后 然后将文件头用病毒代码覆盖 另一种是生成一个新的文件 首先在头的位置写上病毒代码 然后将原来的可执行文件放在病毒代码的后面 再用新的文件替换原来的文件从而完成感染 感染原理如图所示 2 尾寄生 病毒 尾寄生 病毒可以不对原程序的代码位置进行修改 而且病毒代码一般作为一个相对独立的节加入 因而相对容易实现 但这种感染方式会增加原文件及运行文件的大小 因而隐蔽性较差 3 插入寄生 病毒 病毒可以将自己插入到被感染的程序中 可以整段的插入 也可以分成很多段 如果是插入到节间空位 则不会改变文件大小 隐蔽性较高 但需要被感染文件提供相应条件 如具有必要的空位等 3 无入口点病毒 有一类PE病毒 在被感染程序执行的时候 没有改变PE文件的程序入口地址 病毒代码无声无息地潜伏在被感染的程序中 可能在非常偶然的条件下才会被触发开始执行 4 对象文件 库文件和源代码病毒 一些病毒可以感染编译器生成的中间对象文件 OBJ文件 或者编译器使用的库文件 LIB 文件 由于这些文件不是直接的可执行文件 所以病毒感染这些文件之后并不能直接的传染 必须使用被感染的OBJ或者LIB链接生成EXE程序之后才能实际地完成感染过程 3 2简单PE病毒模拟实验 3 2 1实验目的 熟悉PE文件结构 掌握修改PE文件入口地址 掌握在PE文件中添加新节 3 2 2实验原理 PE文件格式 PortableExecutableFileFormat 是目前最常用的可执行文件格式 其基本结构如图所示 1 PE文件头简介 该部分是由一个IMAGE NT HEADERS结构来定义的 IMAGE NT HEADERSSTRUCTSignatureDWORD PE文件标识FileHeaderIMAGE FILE HEADER PE文件表头OptionalHeaderIMAGE OPTIONAL HEADER32 PE文件可选表头IMAGE NT HEADERSENDS PE文件头又可以分成三个部分 1 PE文件标识 PE文件头的第一个数据结构是DWORD类型的一个标志 它被定义为00004550h 也就是字符 P E 加上两个0 这也是 PE 这个称呼的由来 PE文件的文件属性由该标志后面的PE文件表头 IMAGE FILE HEADER 和PE文件可选表头 IMAGE OPTIONAL HEADER32 来定义 2 IMAGE FILE HEADER结构 IMAGE FILE HEADER结构的定义如下所示 IMAGE FILE HEADERSTRUCTMachineWORD 0004h 运行平台NumberOfSectionsWORD 0006h 文件的节数目TimeDateStampDWORD 0008h 文件创建日期和时间PointerToSymbolTableDWORD 000ch 指向符号表 用于调试 NumberOfSymbolsDWORD 0010h 符号表中的符号数量 用于调试 SizeOfOptionalHeaderWORD 0014h IMAGE OPTIONAL HEADER32结构的长度CharacteristicsWORD 0016h 文件属性IMAGE FILE HEADERENDS Machine字段用来指定文件的运行平台 Windows可以运行在Intel和SUN等几种不同的硬件平台上 不同平台指令的机器码是不同的 如Intel386平台的机器码为014ch 为不同平台编译的可执行文件显然无法通用 如果Windows检测到这个字段指定的适用平台与当前的硬件平台不兼容 它将拒绝装入这个文件 NumberOfSections字段 本节实验2需修改该字段 指出本文件中存在的节的数量 Characteristics字段属性标志字段 它的不同数据位定义了不同的文件属性 这是一个很重要的字段 不同的定义将影响系统对文件的装入方式 3 IMAGE OPTIONAL HEADER32结构 IMAGE OPTIONAL HEADER32结构的详细定义如下 IMAGE OPTIONAL HEADER32STRUCTMagicWORD 0018h107h ROMImage 10Bh exeImageMajorLinkerVersionBYTE 001ah链接器版本号MinorLinkerVersionBYTE 001bhSizeOfCodeDWORD 001ch所有含代码的节的总大小SizeOfInitializedDataDWORD 0020h所有含已初始化数据的节的总大小SizeOfUninitializedDataDWORD 0024h所有含未初始化数据的节的大小AddressOfEntryPointDWORD 0028h程序执行入口RVABaseOfCodeDWORD 002ch代码的节的起始RVABaseOfDataDWORD 0030h数据的节的起始RVAImageBaseDWORD 0034h程序的建议装载地址 SectionAlignmentDWORD 0038h内存中的节的对齐粒度FileAlignmentDWORD 003ch文件中的节的对齐粒度MajorOperatingSystemVersionWORD 0040h操作系统主版本号MinorOperatingSystemVersionWORD 0042h操作系统副版本号MajorImageVersionWORD 0044h可运行于操作系统的最小版本号MinorImageVersionWORD 0046hMajorSubsystemVersionWORD 0048h可运行操作系统的最小子版本号MinorSubsystemVersionWORD 004ahWin32VersionValueDWORD 004ch未用SizeOfImageDWORD 0050h内存中整个PE映像尺寸 SizeOfHeadersDWORD 0054h所有头 节表的大小CheckSumDWORD 0058hSubsystemWORD 005ch文件的子系统DllCharacteristicsWORD 005ehSizeOfStackReserveDWORD 0060h初始化时的堆栈大小SizeOfStackCommitDWORD 0064h初始化时实际提交的堆栈大小SizeOfHeapReserveDWORD 0068h初始化时保留的堆大小SizeOfHeapCommitDWORD 006ch初始化时实际提交的堆大小LoaderFlagsDWORD 0070h未用NumberOfRvaAndSizesDWORD 0074h下面的数据目录结构的数量DataDirectoryIMAGE DATA DIRECTORY16dup 0078hIMAGE OPTIONAL HEADER32ENDS AddressOfEntryPoint字段指出文件被执行时的入口地址 这是一个RVA地址 ImageBase字段指出文件的优先装入地址 SectionAlignment字段和FileAlignment字段SectionAlignment字段指定了节被装入内存后的对齐单位 也就是说 每个节被装入的地址必定是本字段指定数值的整数倍 FileAlignment字段指定了节存储在磁盘文件中时的对齐单位 DataDirectory字段这个字段是一个非常重要的字段 PE文件中用一个数据目录 即DataDirectory 结构来指明这些特定数据块的位置 2 PE文件中的节和节表 1 PE文件到内存的映射 Windows装载器在装载的时候仅仅建立好虚拟地址和PE文件之间的映射关系 只有真正执行到某个内存页中的指令或者访问某一页中的数据时 这个页面才会被从磁盘提交到物理内存 内存页的属性在装载PE文件时 与节对应的内存页的属性要按照节的属性来设置 节的偏移地址节的起始地址在磁盘文件中是按照IMAGE OPTIONAL HEADER32结构的FileAlignment字段的值对齐的 而被装载到内存中时则是按照同一结构中的SectionAlignment字段的值对齐的 节的尺寸对节尺寸的处理有两个方面 首先是由于磁盘映像和内存映像中节对齐单位的不同而造成的长度扩展 其次是对包含未初始化数据的节的处理 不进行映射的节有些节中包含的数据仅仅在装载的时候用到 当文件装载完毕的时候 它们不会被递交到物理内存页 2 节表 PE文件中所有节的属性都被定义在节表中 节表由一系列的节表项 IMAGE SECTION HEADER结构 排列而成 每个节表项用来描述一个节 节表项的排列顺序和它们描述的节在文件中的排列顺序是一致的 最后以一个空的节表项作为结束 所以节表中总的节表项数量等于节的数量加1 IMAGE SECTION HEADER结构的定义如下 IMAGE SECTION HEADERSTRUCTName1dbIMAGE SIZEOF SHORT NAMEdup 8个字节的节区名称unionMiscPhysicalAddressdd VirtualSizedd 节区的尺寸endsVirtualAddressdd 节区的RVA地址SizeOfRawDatadd 在文件中 对齐后的尺寸PointerToRawDatadd 在文件中的偏移PointerToRelocationsdd 在OBJ文件中使用PointerToLinenumbersdd 行号表的位置 供调试用 NumberOfRelocationsdw 在OBJ文件中使用NumberOfLinenumbersdw 行号表中行号的数量Characteristicsdd 节的属性IMAGE SECTION HEADERENDS Name1字段Name1字段定义了节的名称 字段的长度为8个字节 VirtualSize字段代表节的大小 这是节的数据在没有进行对齐处理前的实际大小 VirtualAddress字段指出节被装载到内存中后的偏移地址 这是一个RVA地址 这个地址是按照内存页对齐的 PointerToRawData字段指出节在磁盘文件中的所处的位置 这个数值是从文件头开始算起的偏移量 SizeOfRawData字段指出节在磁盘文件中所占的空间大小 这个数值等于VirtualSize字段的值在进行文件对齐处理以后的大小 Characteristics字段这是节的属性标志字段 共32位 其中的不同数据位代表了不同的属性 这些数据位组合起来描述了节的属性 3 RVA和文件偏移的转换 RVA是相对虚拟地址 RelativeVirtualAddress 的缩写 顾名思义 它是一个 相对 地址 也可以说是 偏移量 PE文件的各种数据结构中涉及地址的字段大部分都是以RVA表示的 循环扫描节表并得到每个节在内存中的起始RVA 根据VirtualAddress字段 并根据节的大小 SizeOfRawData字段 算出节的结束RVA 最后比较判断目标RVA是否落在某个节之内 如果目标RVA处于某个节之内 那么用目标RVA减去节的起始RVA 这样就得到了目标RVA相对于节起始地址的偏移量RVA 在节表中获取节在文件中所处的偏移 PointerToRawData字段 将这个偏移值加上上一步
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三试卷:山东省烟台市2025届高三11月期中学业水平检测数学试卷答案
- 2025版文化创意企业设计师聘用合同
- 2025承包经营公司合同-高科技农业种植项目
- 二零二五年度房屋买卖合同(含法律咨询)打印模板
- 二零二五年度住宅小区车位租赁纠纷处理规则合同
- 2025版地下空间开发工程技术咨询服务合同
- 2025至2030年中国财务软件行业发展趋势及投资前景预测报告
- 2025版贸易公司外贸业务代表聘用合同
- 二零二五版企业间商业承揽合同样本
- 二零二五年度淋浴房环保材料研发与应用合同
- 新航标职业英语语音技能教程unit
- 天津高考语文卷各题型思路要点提示
- ktv转让标准合同范本(3篇)
- 普外科医疗质量评价体系与考核标准
- 普通高中语文课程标准测试题及答案
- 正确认识胰岛素
- 吞咽障碍患者的营养支持课件
- DL∕T 617-2019 气体绝缘金属封闭开关设备技术条件
- 诺如病毒感染暴发调查和预防控制技术指南(2023版)
- 班级管理(第3版)教学课件汇总全套电子教案(完整版)
- 行政处罚案卷制作规范课件
评论
0/150
提交评论