词条 | Shellcoder编程揭秘 |
释义 | 基本信息原书名:Shellcoder's Programming Uncovered 原出版社:A-List Publishing 作者:(美)Kris Kaspersky 译者:罗爱国 郑艳杰 等 丛书名:安全技术大系 出版社:电子工业出版社 ISBN:7121030306 出版日期:2006 年9月 开本:16开 页码:376 版次:1-1 编辑推荐·软件安全专家Kris Kaspersky最新力作 ·打开魔法之门,进入隐藏在高级语言编程背后的精彩世界 ·全面讲述应用软件和操作系统漏洞的生成与发现、攻击与保护的技巧 内容简介全书的内容紧密围绕shellcode编程展开,系统地阐述了作为一名shellcoder应该掌握的知识要点。除了shellcode之外,作者还介绍了手机,bios等涉及安全的新领域。 本书的第1部分介绍了编写shellcode前应掌握的一些基本概念,应熟悉的软件工具等内容,还介绍了利用gprs入侵的细节。第2部分则以常见的栈溢出、堆溢出问题开始,接着介绍了seh、格式化漏洞等内容,最后介绍怎样解决这些漏洞,并以实际的漏洞为例,讲解怎样利用漏洞。第3部分主要放在编写shellcode上,介绍怎样编写适应多种环境的shellcode,除了以windows平台为主,还稍带介绍了linux平台上shellcode,第15章则介绍了怎样编译与反编译shellcode。第4部分介绍了网络蠕虫与病毒。第5部分介绍了防火墙,蜜罐,和其他的保护系统。重点介绍了怎样突破这些保护系统。第6部分介绍了除常见攻击对象之外的其他目标,如无线网络,手机,bios等。 书中还包括了大量未分开的用c/ic编语言编写攻击代码的高级技巧。 目录第1部分 shellcode简介 第1章 必需的工具 3 1.1 编程语言 7 1.2 分析,调试,逆向工程的工具 8 1.3 必读书目和其他的参考资料 10 第2章 汇编语言——概览 12 2.1 汇编语言基本原理 13 2.2 用c程序解释汇编概念 14 2.3 以内联汇编为平台 16 第3章 揭秘利用gprs的入侵 18 3.1 匿名为什么也不安全 18 3.2 利用gprs入侵 21 3.2.1 gprs调制解调器vs手机 22 3.2.2 深入了解手机 22 3.2.3 从键盘改写nam 24 3.2.4 手动改写nam 26 3.2.5 参考资料 29 第2部分 溢出错误 第4章 受溢出影响的缓冲区(怪圈) 33 4.1 溢出错误分类(极度无聊) 34 4.2 产生溢出错误的历史必然性 36 4.3 有关溢出错误的神话与传说 37 4.4 攻击的目标和可能性 39 4.4.1 读敏感变量 39 4.4.2 修改秘密变量 39 4.4.3 把控制权传给程序中的秘密函数 40 4.4.4 把控制权传给入侵者的代码 40 4.4.5 溢出攻击的目标 40 4.4.6 不同溢出类型的特征 48 第5章 利用seh 56 5.1 关于结构化异常的简短信息 56 5.2 捕获控制 62 5.3 抑制应用程序异常终止 63 第6章 受控的格式符 64 6.1 支持格式化输出的函数 65 6.2 cfingerd补丁 66 6.3 潜在的威胁源 66 6.3.1 强制伪造格式符 66 6.3.2 dos实现 67 6.3.3 peek实现 69 6.3.4 poke实现 71 6.3.5 不均衡的格式符 73 6.3.6 目标缓冲区溢出 73 第7章 溢出实例 75 7.1 威胁源 75 7.2 技术细节 76 7.3 攻击代码 77 7.4 使攻击代码复活 80 7.5 编写shellcode 81 7.6 胜利或失败 81 7.7 路在何方? 83 第8章 搜索溢出的缓冲区 84 8.1 埋没在打印纸下 85 8.2 二进制代码历险 87 8.2.1 代码分析step by step 88 8.2.2 重要提示 95 8.3 溢出错误的实例 96 第9章 保护缓冲区免遭溢出之害 102 9.1 反黑客的技术 103 9.1.1 stackguard 103 9.1.2 不可执行栈(nonexecutable stack) 104 9.1.3 its4软件安全工具 104 9.1.4 flawfinder 104 9.2 内存分配的问题 105 9.2.1 ccured 105 9.2.2 memwatch 105 9.2.3 dmalloc,the debug malloc library 106 9.2.4 checker 106 第3部分 设计shellcode的秘密 第10章 编写shellcode的问题 113 10.1 无效的字符 113 改写地址的技巧 113 10.2 大小很重要 118 10.3 寻找自我 119 10.4 调用系统函数的技术 121 10.4.1 在不同的操作系统里实现系统调用 127 10.4.2 溢出之后恢复脆弱的程序 132 10.5 关于shellcoding的有趣参考 132 第11章 写可移植shellcode的技巧 134 11.1 可移植shellcode的需求 135 11.2 达成可移植之路 135 11.3 硬编码的缺点 136 11.4 直接在内存里搜索 138 11.5 over open sights: peb 140 11.6 展开seh栈 141 11.7 原始api 142 11.8 确保可移植的不同方法 143 第12章 自修改基础 144 12.1 了解自修改代码 144 12.2 建立自修改代码的原则 147 12.2.1 the matrix 153 12.2.2 通过因特网修改 12.2.2 代码的问题 156 12.2.3 关于自修改的笔记 157 第13章 在linux里捉迷藏 159 13.1 可加载内核模块 160 13.2 从任务列表里移走进程 164 13.3 捕获系统调用 168 13.4 捕获文件系统请求 169 13.5 当模块不可用时 171 13.6 其他的隐藏方法 174 第14章 在linux里捕获ring 0 176 14.1 hacking的正道 176 14.2 linux下内核蓝牙本地攻击 177 14.3 elfs fall into the dump 178 14.4 多线程的问题 179 14.5 在多处理器机器上得到root 181 14.6 有趣的资源 183 第15章 编译与反编译shellcode 184 反编译shellcode 188 第4部分 网络蠕虫和本地病毒 第16章 蠕虫的生存周期 193 16.1 真实介绍前的闲言碎语 194 16.2 蠕虫介绍 195 16.2.1 蠕虫的结构解剖 196 16.2.2 蠕虫传播机理 204 16.2.3 蠕虫的到达 205 16.2.4 感染的策略与战术 206 16.2.5 为自然生态环境而努力:在同伴面前的决择,生或死 209 16.2.6 怎样发现蠕虫 213 16.2.7 怎样战胜蠕虫 216 16.2.8 暴风雨前的平静结束了? 217 16.2.9 有趣的因特网资源 219 第17章 unix里的本地病毒 221 病毒活动需要的条件 223 第18章 scripts里的病毒 225 第19章 elf文件 231 19.1 elf文件的结构 233 19.2 常见结构和病毒行为的策略 235 19.2.1 通过合并来感染 236 19.2.2 通过扩展文件的最后一节来感染 238 19.2.3 通过压缩原始文件的部分内容来感染 241 19.2.4 通过延伸文件的代码节来感染 246 19.2.5 通过把代码节下移来感染 249 19.2.6 通过创建定制的节来感染 251 19.2.7 在文件和头部之间插入来感染 251 第20章 获取控制权的方法 253 20.1 替换进入点(entry point) 253 20.2 在进入点附近插入病毒码 254 20.3 修改导入表(import table) 254 第21章 被病毒感染的主要征兆 256 21.1 反病毒程序有用吗? 261 21.2 有关病毒感染的因特网资源 262 第22章 最简单的windows nt病毒 263 22.1 病毒操作的算法 264 22.2 实验室病毒的源码 265 22.3 编译并测试这个病毒 268 22.4 枚举流 270 22.5 有用的资源 270 第5部分 防火墙,蜜罐,和其他保护系统 第23章 绕过防火墙 273 23.1 防火墙能防御和不能防御的威胁 274 23.2 探测并识别防火墙 276 23.3 穿过防火墙的扫描和跟踪 280 23.4 渗透防火墙 281 23.5 关于防火墙的连接 282 第24章 从防火墙逃脱 283 24.1 防火墙做与不做什么 283 24.2 与远程主机建立连接 285 24.2.1 绑定exploit,或“幼稚的攻击” 285 24.2.2 反向exploit 288 24.2.3 find exploit 290 24.2.4 重用exploit 292 24.2.5 fork exploit 294 24.2.6 sniffer exploit,或被动扫描 295 第25章 在unix和windows nt下组织远程shell 296 25.1 blind shell 296 25.2 多功能shell 297 第26章 黑客喜欢蜂蜜 300 26.1 罐里有什么? 301 26.2 准备攻击 302 26.3 对蜜罐的认识(casting light on honeypots) 303 26.4 骗人的诡计 303 26.5 攻击蜜罐 303 26.6 在蜜中淹死 304 第27章 窃听lan 305 27.1 攻击的目标和方法 305 hub和相关的缺陷 306 27.2 被动窃听 307 检测被动窃听 314 27.3 主动窃听或arp欺骗 315 检测主动窃听 317 27.4 克隆网卡 318 检测克隆并抵制它 318 27.5 窃听dial-up流量 318 27.6 sniffers无用时(when sniffers are useless) 319 27.7 秘密窃听 319 27.8 与窃听有关的资源 320 第28章 攻击之下的数据库 321 28.1 薄弱的密码加密算法 322 28.2 密码窃听 322 28.3 hacking a script 323 28.4 难忘的查询或sql注入 324 28.5 怎样检测sql服务器的存在 327 28.6 抵抗入侵 328 第6部分 可用于插入的外来对象 第29章 攻击蓝牙 331 29.1 什么是蓝牙? 332 29.2 精确射击型天线 333 与天线有关的有趣的连接 335 29.3 认证和授权 335 关于加密算法的有趣连接 337 29.4 攻击方法 338 与蓝牙安全相关的连接 339 29.5 蓝牙hacking工具概述 339 widcomm里的溢出错误 340 第30章 节省gprs费用 342 30.1 通过代理服务器工作 342 30.2 google web accelerator 343 其他的web加速器 344 30.3 通过telnet隧道 345 30.4 通过icmp隧道 346 黑客软件 347 第31章 关于flashing bios传说与神话 348 31.1 升级bios的好处 351 31.1.1 支持新设备 352 31.1.2 新操作模块 353 31.1.3 解决冲突 353 31.2 什么时候升级bios 355 31.3 hacking bios 355 31.3.1 深入了解刷新工具 358 31.3.2 刷新bios的技巧 358 31.3.3 自我维护的bios 360 31.3.4 不能自我维护的bios 362 第32章 病毒感染bios 363 32.1 怎么进行 364 32.2 深入bios 365 32.3 baptizing by fire, or creating an isa rom module 369 32.4 修改启动块 373 升高栅栏 374 32.5 系统超频 375 32.6 与bios有关的有用的连接 376 cd内容 377 前言我们生活在一个残酷无情的世界里,几乎所有机器上的软件都有安全漏洞,而且其中的大部分还非常严重。黑客、蠕虫、病毒迅速利用这些漏洞,从网络的各个角落发起攻击。据统计,绝大多数的远程攻击是通过溢出缓冲区来完成的,而最常见的就是栈溢出。可以毫不夸张地说,精通溢出缓冲区的那些人主宰着整个世界。如果你希望在如此恶劣的生存环境寻找一本生存指南,从而在易受溢出影响的缓冲区里游刃有余,那么,本书就是为你准备的。隐藏在高级语言编程背后的是一个异常精彩的世界,本书将会为你打开进入它的魔法之门。 溢出错误为什么如此重要呢?我们能利用它做些什么?怎样发现脆弱的缓冲区?这样的缓冲区对shellcode有何限制?怎样克服这些局限性?应该用什么样的工具编译shellcode?怎样做到向远程主机发送shellcode而不会引起人们的注意?怎样绕过防火墙?怎样发现并分析其他人的shellcode?怎样保护自己的程序,使它免受溢出之害? 大家都知道,反病毒厂商的圈子相对比较封闭,他们很少向外界透露信息,也不大乐意接受新成员,他们拥有的信息只对圈内人士开放。部分原因可能是基于安全性的考虑,但主要原因可能是怕影响到企业的竞争力。没关系,本书将从某种程度上揭开这层神秘的面纱。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。