注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络网络与数据通信计算机网络安全编程修炼之道

安全编程修炼之道

安全编程修炼之道

定 价:¥78.00

作 者: James
出版社: 清华大学
丛编项: 安全技术经典译丛
标 签: 网络安全

ISBN: 9787302132165 出版时间: 2003-02-12 包装: 平装
开本: 16 页数: 629 字数:  

内容简介

  从计算时代的早期开始到现在,安全行业经历了巨大的变化。早期的病毒、蠕虫和恶意软件在当今看来,简直都成了小儿科。随着行业的进一步发展,它又面临着一个转折点。这种日益激烈的矛盾关系(就是这种矛盾关系导致了这个行业的诞生)将会影响到我们的社会、文化和市场吗?让我们来看一组数据。如果研究一下1999年一个漏洞转化成蠕虫病毒所需的时间,再将这个数据与今天相比,就会发现现在出现一个自我繁殖的蠕虫要比1999年快20倍以上:在1999年需要280天,而在2004年仅需4天。这些蠕虫很容易就被制造出来并且随时可能触发,而完成攻击几乎就不需要什么知识。这就意味着有更多的黑客在更短的时间内编写出更多的攻击工具。我们第一次碰到这种新型的狡猾蠕虫,是在20世纪90年代后期出现的“sadmind”等蠕虫。它从攻击Solaris操作系统本地的RPC服务开始,在完成感染之后,它就从Sun Solaris系统向Windows系统进军,再循环往复。我们还看到了同时使用多个攻击方向的蠕虫,采用了针对不同服务的多种攻击技术。还有一些可以自动变种的蠕虫,使得检测和防护它们更加困难。大量的威胁在黑暗中等待,并且还不仅仅是蠕虫。明天的蠕虫将会融合所有这些方面(多系统平台、多应用程序和多方向)产生zero-day蠕虫,却没有修复或防止措施。这些蠕虫将会造成怎样的破坏呢?它会影响所有一切。我们的大部分市场、基础设施和银行都已经计算机化,并且进行了联网。想想看,如果长达一个月时间,不能够从银行或经纪人那里取出现金;或者不能够横穿铁路或马路,因为飞驰而来的列车或小车也和您一样看到绿灯,那会发生什么情况呢?这些场景都是小说中编造的吗?再仔细想想。以Banker.J worm为例吧。这个蠕虫对系统的影响基本上和前面所说的蠕虫类似,但是另外有个重要的问题就是它首次采用了phishing技术。所谓phishing攻击是指将用户误导到攻击者伪造的Web站点,以期窃取用户的银行用户名和密码的伎俩。当进入这种伪造的站点之后,它自己再使用这个用户名和密码登录到银行,设置一个在线交易收款人,然后进行支付。但是蠕虫并不直接将用户重定向到伪造的站点,而是显示受感染系统上的同样Web页面。他们到底是谁,他们又为什么要这么做呢?他们大部分是些不谙世事的年轻人,受到自负心理和优越感的驱使。另外有些是出于受金钱驱使或者有组织犯罪。无论这些出发动机如何,或者伪造攻击的理由如何,管理员都必须提高自身素质,并解决问题出现的根源。每个产品或步骤都存在有漏洞,在被管理并修复之前,攻击者总会去试图利用它们。没有万全之策可以解决这个问题,也没有某个产品或服务或培训能够给出所有的工具来与这些威胁作斗争。正如战场上的战士一样,您需要掌握一切可以掌握的武器。《安全编程修炼之道》就是您的弹药,是为了保证安全战士们不至于折戟沙场的重要武器。仔细研读《安全编程修炼之道》的每一页,理解其内容,然后做到为我所用。不要让这部出色的作品从您手中轻易滑过。

作者简介

  James C.Foster,是Computer Sciences公司是Global Security Solution Development的负责人,主要负责物理、人事和数据安全解决方案的研究和开发。在进入Computer Sciences公司之前,Foster是Foundstone公司(后被McAfee收购)的研发部主任,负责产品、咨询和相应R & D建议等各方面的工作。在就职于Foundstone之前,Foster是Guardent 公司(后被Verisign收购n)的执行总监和研究工程师,是Information Security杂志(后被Tech Target收购)的撰稿人之一,此前还作过安全研究专家就职于国防部。凭着在高级远程管理、国际化发展、应用程序安全,协议分析和搜索算法技术等领域的丰富经验,Foster为商业化操作系统组件进行代码检查,评估Win32应用程序,并研究商业级加密实现。

图书目录

第1章  安全编码基础    1
1.1  引言    2
1.2  C/C++    3
1.2.1  语言特性    3
1.2.2  Hello,World!实例    4
1.2.3  数据类型    5
1.2.4  流程控制    7
1.2.5  函数    8
1.2.6  类    9
1.2.7  案例研究:傅立叶系数
估算    10
1.3  Java    13
1.3.1  语言特性    14
1.3.2  Hello,World!实例    15
1.3.3  数据类型    15
1.3.4  流程控制    16
1.3.5  方法    18
1.3.6  类    18
1.3.7  获取HTTP报头    20
1.4  C#    21
1.4.1  移植到C#平台的商业
案例    21
1.4.2  语言特性    22
1.4.3  Hello,World!实例    23
1.4.4  数据类型    23
1.4.5  流程控制    25
1.4.6  方法    26
1.4.7  类    26
1.4.8  C#线程    28
1.4.9  案例研究:命令行IP地址
解析    29
1.5  Perl    38
1.5.1  数据类型    39
1.5.2  运算符    40
1.5.3  Perl脚本实例    42
1.5.4  专用变量    44
1.5.5  模式匹配和替换    44
1.5.6  正则表达式修饰符    45
1.5.7  常用的Perl工具    45
1.5.8  I Am a Perl Coder!    46
1.5.9  日志修改工具    47
1.6  Python    52
1.7  本章小结    56
1.8  要点回顾    56
1.9  相关网站链接    57
1.10  常见问题    58
第2章  NASL脚本    61
2.1  引言    62
2.1.1  NASL的发展史    62
2.1.2  NASL的目标    62
2.2  NASL脚本的语法    63
2.2.1  注释    64
2.2.2  变量    64
2.2.3  运算符    66
2.2.4  控制结构    69
2.3  编写NASL脚本    72
2.3.1  编写NASL个人专用工具    73
2.3.2  Nessus框架下的编程    75
2.4  案例研究:经典的
NASL脚本    77
2.5  NASL代码移植    81
2.6  本章小结    90
2.7  要点回顾    91
2.8  相关网站链接    92
2.9  常见问题    92
第3章  BSD套接字    95
3.1  引言    96
3.2  BSD套接字编程简介    96
3.3  TCP客户端与服务器    97
3.4  UDP客户端与服务器    103
3.5  套接字选项    111
3.6  基于UDP套接字的
网络扫描    113
3.7  基于TCP套接字的
网络扫描    122
3.8  线程与并行    134
3.9  本章小结    136
3.10  要点回顾    136
3.11  相关网站链接    137
3.12  常见问题    137
第4章  Windows套接字    139
4.1  引言    140
4.2  Winsock概述    140
4.3  Winsock 2.0    141
4.3.1  通过Visual Studio 6.0
链接    142
4.3.2  通过源代码链接    143
4.4  案例研究:使用WinSock
抓取网页    146
4.5  编写客户端程序    147
4.6  编写服务器程序    151
4.7  编写exploit及漏洞
检测程序    155
4.8  本章小结    163
4.9  要点回顾    164
4.10  常见问题    165
4.11  案例研究:使用Winsock
执行Web攻击    166
4.12  案例研究:使用Winsock
执行远程缓冲区溢出    168
第5章  Java套接字    173
5.1  引言    174
5.2  TCP/IP概述    174
5.2.1  TCP客户端    175
5.2.2  IP地址及域名解析    178
5.2.3  基于文本的输入/输出:
LineNumberReader类    181
5.2.4  TCP服务器    185
5.2.5  使用浏览器连接
TCPServer1    189
5.2.6  处理多重连接    189
5.2.7  WormCatcher    198
5.3  UDP客户端与服务器    204
5.4  本章小结    211
5.5  要点回顾    211
5.5.1  TCP客户端    211
5.5.2  TCP服务器    211
5.5.3  UDP客户端与服务器    211
5.6  常见问题    212
第6章  编写可移植的代码    215
6.1  引言    216
6.2  UNIX和Windows移植
指南    216
6.2.1  预编译指令    216
6.2.2  确定操作系统    218
6.2.3  进程的创建和终止    222
6.2.4  多线程    227
6.2.5  信号    234
6.2.6  文件操作    236
6.2.7  目录操作    239
6.2.8  库    242
6.2.9  Daemon/Win32服务编程    247
6.2.10  内存管理    254
6.2.11  命令行参数处理    255
6.2.12  整型数据类型    259
6.3  本章小结    260
6.4  要点回顾    260
6.5  常见问题    261
第7章  可移植的网络编程    263
7.1  引言    264
7.2  BSD套接字和Winsock    264
7.3  可移植的构件    266
7.3.1  返回值    266
7.3.2  扩展错误信息    268
7.3.3  API    270
7.3.4  原始套接字    302
7.3.5  Pcap和WinPcap    313
7.4  本章小结    319
7.5  要点回顾    319
7.6  常见问题    319
第8章  编写shellcode I    323
8.1  引言    324
8.2  shellcode概述    324
8.2.1  工具    324
8.2.2  汇编程序设计语言    325
8.2.3  Windows和UNIX的
汇编比较    328
8.3  寻址问题    329
8.3.1  方案一:使用call和
jmp指令    329
8.3.2  方案二:将参数值入栈    330
8.4  NULL字节问题    331
8.5  系统调用的实现    332
8.5.1  系统调用编号    332
8.5.2  系统调用参数    332
8.5.3  系统调用返回值    334
8.6  远程shellcode    334
8.6.1  端口绑定shellcode    334
8.6.2  套接字描述符重用
shellcode    336
8.7  本地shellcode    337
8.7.1  execve shellcode    338
8.7.2  setuid shellcode    339
8.7.3  chroot shellcode    340
8.7.4  Windows shellcode    344
8.8  本章小结    350
8.9  要点回顾    350
8.10  相关网站链接    352
8.11  邮件列表    352
8.12  常见问题    352
第9章  编写shellcode II    355
9.1  引言    356
9.2  shellcode实例    356
9.2.1  write系统调用    359
9.2.2  execve shellcode    362
9.2.3  端口绑定shellcode    370
9.2.4  socket系统调用    373
9.2.5  bind系统调用    374
9.2.6  listen系统调用    374
9.2.7  accept系统调用    375
9.2.8  dup2系统调用    375
9.2.9  execve系统调用    376
9.2.10  反向连接shellcode    381
9.2.11  重用套接字的shellcode    384
9.2.12  重用文件描述符    386
9.2.13  shellcode编码    392
9.3  重用程序变量    397
9.4  跨操作系统的shellcode    401
9.5  了解现有的shellcode    402
9.6  本章小结    406
9.7  要点回顾    406
9.8  相关网站链接    407
9.9  邮件列表    407
9.10  常见问题    407
第10章  开发exploit程序I    409
10.1  引言    410
10.2  定位漏洞    410
10.3  远程与本地exploit程序
的编写    411
10.4  格式化字符串攻击    412
10.4.1  格式化字符串    412
10.4.2  格式化字符串漏洞
的修复    414
10.5  案例研究:xlockmore用户
提供的格式化字符串漏洞
CVE-2000-0763    414
10.6  TCP/IP漏洞    417
10.7  竞争条件    418
10.7.1  文件竞争条件    418
10.7.2  信号竞争条件    419
10.8  案例研究:man输入验证
错误    419
10.9  本章小结    421
10.10  要点回顾    422
10.11  相关网站链接    423
10.12  常见问题    423
第11章  开发exploit程序II    425
11.1  引言    426
11.2  为exploit编写套接字和
绑定    426
11.2.1  客户端套接字编程    426
11.2.2  服务器端套接字编程    428
11.3  栈溢出exploits    429
11.3.1  内存的组织    430
11.3.2  栈溢出    431
11.3.3  寻找开源软件中可
利用的栈溢出    435
11.4  案例研究:X11R6 4.2
XLOCALEDIR溢出    435
11.5  堆破坏exploits    440
11.6  案例研究: OpenSSL SSLv2
畸形客户端密钥远程缓冲区
溢出漏洞CAN-2002-0656    444
11.7  整型bug exploits    457
11.7.1  整数环绕    458
11.7.2  忽略大小检查    460
11.7.3  其他整型bug    462
11.8  案例研究: OpenSSH质询
响应整型溢出漏洞
CVE-2002-0639    462
11.9  案例研究:UW POP2 缓冲
区溢出漏洞CVE-1999
-0920    466
11.10  本章小结    474
11.11  要点回顾    475
11.12  相关网站链接    476
11.13  常见问题    476
第12章  开发exploit程序III    479
12.1  引言    480
12.2  MSF的使用    480
12.3  用Metasploit进行
exploit开发    485
12.3.1  确定攻击向量    485
12.3.2  计算偏移量    486
12.3.3  选择控制向量    491
12.3.4  发现返回地址    495
12.3.5  使用返回地址    498
12.3.6  确定坏字符    500
12.3.7  确定空间限制    500
12.3.8  空操作指令拖动器    502
12.3.9  选取有效载荷和
编码器    503
12.4  将exploit集成到MSF中    511
12.4.1  框架    511
12.4.2  分析一个现有的exploit
模块    512
12.4.3  覆盖方法    516
12.5  本章小结    517
12.6  要点回顾    517
12.7  相关网站链接    518
12.8  常见问题    518
第13章  编写安全组件    521
13.1  引言    522
13.2  COM    522
13.2.1  COM对象    522
13.2.2  COM接口    522
13.2.3  COM运行时    523
13.2.4  COM对象的实现    524
13.2.5  COM进程内服务器
的实现    526
13.3  ATL    527
13.3.1  C++模板    528
13.3.2  ATL客户端技术    528
13.3.3  ATL服务器技术    531
13.3.4  ATL属性    543
13.4  将COM扩展添加到
RPCDump工具中    547
13.4.1  COM EXE服务器
实现    548
13.4.2  控制流    551
13.4.3  应用程序集成例程    552
13.4.4  工具接口定义    555
13.4.5  组件类    557
13.4.6  应用程序集成:
COMSupport.h    563
13.4.7  应用程序集成:
RPCDump.C    564
13.5  本章小结    566
13.6  要点回顾    566
13.7  相关网站链接    567
13.8  常见问题    567
第14章  创建Web安全工具    571
14.1  引言    572
14.2  设计    572
14.2.1  攻击签名格式    572
14.2.2  签名    573
14.3  深入分析    573
14.3.1  套接字和执行    573
14.3.2  解析器    583
14.3.3  头文件    595
14.3.4  编译    599
14.3.5  执行    599
14.4  工具输出    600
14.5  本章小结    600
14.6  要点回顾    601
14.7  相关网站链接    601
14.8  常见问题    601
附录A  词汇    605
附录B  安全工具汇编    613
附录C  exploit文档    619
附录D  系统调用参考    621
附录E  数据转换参考    625

本目录推荐