黑客与安全技术指南(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-22 00:22:34

点击下载

作者:王成

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

黑客与安全技术指南

黑客与安全技术指南试读:

前言

“时维九月,序属三秋”。傍晚,夜色如酒,天气微凉,阴雨和乌云笼罩的天空,没有雷鸣轰动、一扫阴霾的气势,仿佛静静地诉说着积蓄已久的孤独。

这份神秘的气息,大概如同多数人对于黑客的认识——暗淡的灯光下,一个背影,一袭黑衣,盯着屏幕上闪烁的数据流,嘴角挂着玩世不恭的微笑,轻描淡写地入侵着一个个网站,在网络世界中肆无忌惮地破坏着。

但实际上,黑客真的如同电影中描绘的与人们想象中的那样吗?

这里我要给出否定的答案。黑客无处不在,黑客之所以如此神秘,最大的原因是人们给“黑客”这个词语,以及一切与黑客相关的事物,蒙上了一层神秘的面纱。

那么,到底什么才是黑客?“黑客”这个词,其实最初曾指热衷于计算机技术、水平高超的计算机专家,尤其是程序设计人员。现在,黑客们活跃在安全领域的一线,依靠着敏锐的感知,发掘、研究并修复各种漏洞。甚至可以这样说:没有黑客,计算机安全将无法进步。黑客其实并不神秘,也并不可怕。你想了解黑客吗?想通过学习黑客与安全知识,去化解来自计算机的恶意攻击吗?那么,本书值得一读。在这条路上你也许会遇到很多在电影中才遇到过的场景和人物,可无论走得多远,也请务必记住:心存敬畏,莫生邪念。引用谷歌公司一句不成文的口号就是:Don’t be Evil。

黑客与安全的世界广阔无边,本书涵盖的内容只是沧海一粟,我们试图用最典型的技术和最精炼的语言,向读者朋友们呈现一个精彩的、属于黑客的神秘技术世界。

我们不会把“以提高计算机领域安全水平为目标”这样空洞的口号挂在嘴边,学习也并不是靠嘴说说就行。我们要做的,就是影响正在认真阅读本书的读者,传达正确的观念、知识以及学习方法,让读者更深刻地了解黑客,学习安全技术,通过钻研黑客与安全技术,从而在计算机世界中更好地保护自己。

本书共10章,各个章节独立却又相互关联,知识点之间也有相互影响的地方,虽然每章之间的关联性不是那么强,不过在内容安排上是按照由浅入深设计。作为一本黑客与安全技术的启蒙书,我们尽量照顾初学者,但仍然有很多基础知识需要新手朋友们自己去钻研,毕竟,自己“折腾”的过程也是相当重要的,不是吗?

由于信息技术的更新迭代速度十分惊人,时效性较强,所以我们拟建mapers.net社区以供读者朋友们交流,希望可以在计算机安全的道路上助读者一臂之力。

■ 本书适合的人: 认真的人; 愿意花时间钻研知识而不是沉迷于游戏的人; 善于遇到问题先独立寻找答案的人。

■ 与本书无缘的人: 浮躁的人; 希望速成的人; 仅仅是觉得黑客很酷而决定学习黑客技术的人; 抱着不良目的的人。

■ 致谢

首先感谢在计算机黑客与安全领域不断钻研的前辈们,给我们留下了丰富的学习资源,让我们得以站在巨人的肩膀上,向更远的未来眺望。

感谢清华大学出版社编辑老师们对本书做出的贡献,他们认真地审读和修改,保证了本书的质量,也感谢他们对我的耐心指导。

感谢参与本书编写和为本书出谋划策的朋友们,他们是陈梓涵、田健、周慧娴、孟爻、K0sh1、白三、Ricky。

感谢D3AdCa7在CTF知识方面给予笔者的建议,让笔者这个CTF新手也能“装模作样”地写出一点东西;感谢病毒吧@王And木提供“病毒不神秘”章节中几例病毒样本及分析过来,使得本书在病毒方面的知识更加详尽。

最后要感谢我的亲人和老师,可能我不是一个传统意义上的好孩子,为了自己的梦想而忽视了你们的感受,特别是我的父母,实在很抱歉,希望你们能慢慢理解儿子的执着,期待着你们支持我的那一天,我爱你们。王 成第1章高效学习之道——方法态度经验总结

本章作为全书第1章,将会介绍一些基础知识和经典的学习方法。方法与技能有无数种,希望读者朋友们能增强独立思考能力,自己总结规律,在互联网上寻找书中没有提到的知识,这样才能更好地掌握知识技能。1.1 基本技能1.1.1 编程基础

编程在计算机领域称得上是必备技能了,在此我们不再探讨各种语言的优缺点,也不介绍类似“‘面向对象’和‘面向过程’之间区别”的问题,更不会空谈编译原理等问题,这里将简单介绍一些适合新手入门学习的编程语言以及书中涉及的各种技术所需的编程语言。

1.Python

Python是一种解释性脚本语言,它拥有众多的“库”。Python功能强大而且简洁,还可以将其他语言的模块轻松联结起来,故又被称为“胶水语言”。由于Python需要的代码量极少且易于学习,其程序源代码对于使用者完全开放,在开源软件工作者和编程初学者中具有极好的声誉。学习Python对人们日后的网络编程学习,以及Web渗透中部分工具的使用具有重要意义。

目前Python主要分为2.x与3.x两个版本,两者在语法上略有差异,且各有优缺点,大家可以根据自己的需求学习不同的版本。

2.C语言

C语言是一种极其重要和流行的编程语言,具有极高的可移植性——同样的代码在Linux、Windows、Mac OS系统上都可以运行;它的运行速度极快,可以充分利用计算机的优点,表现出只有汇编语言才具有的精细控制能力。对于初学者来说,C语言是最容易上手的一门“大型”编程语言,C语言也与后面涉及到的病毒分析和逆向技巧有重要联系。

3.汇编语言

汇编语言是计算机的底层语言,大部分计算机的汇编语言基于X86指令集,计算机可通过汇编程序将汇编代码转化为机器码——计算机可以直接执行的代码。汇编可以使人们更清晰地了解计算机的运行原理,同时也对在接下来的章节中要中学习的软件漏洞分析、逆向分析以及病毒机制的理解具有重要意义。

4.JavaScript

JavaScript是一种脚本语言,在Web前端中担任着重要的角色,但它也是造成XSS(跨站脚本攻击)、CSRF等漏洞的罪魁祸首之一,所以说JavaScript是学习渗透测试和前端安全的一门必修课。1.1.2 命令提示符

命令提示符在许多人印象里就是一个“黑洞洞的窗口”(其实cmd窗口也是可以美化的,例如图1-1被笔者设置成透明色,毕竟如果长时间使用终端工作,一个赏心悦目的界面还是很有必要的)。在Windows系统中,按Win+R键,输入cmd并回车,就可以调出cmd窗口。图1-1 笔者的cmd命令提示符界面

许多应用在命令提示符窗口进行操作会更加简洁,比如输入Python可以启动Python解释器(前提是已搭建了Python环境),学会命令提示符的常用用法和语法后,可以写出批处理(*.bat)文件,来进行许多原始而又简单的操作。

类似地,Linux系统的Shell则是Linux的命令提示符,称为命令行,一般以终端方式打开。俗话说尺有所短,寸有所长,Linux的图形化界面虽然没有Windows易用,但是它在命令行方面比Windows更加成熟,读者可以尝试Linux的一些发行版,例如Ubuntu、Debian等,熟悉Linux系统对于提升工作效率是大有裨益的。1.1.3 虚拟专用网络

虚拟专用网络,这个名词可能令部分读者感到些许陌生,但它的英文名称读者一定听过,Virtual Private Network,即VPN。VPN能够让其他人连接到企业网络或内部网络,通过一个公用网络建立一个临时的、安全的连接,这是一条穿过混乱的公用网络的安全、稳定的隧道。同时VPN能提供高水平的安全性,使用高级的加密和身份识别协议保护数据,阻止没有被授权的用户接触数据。而在渗透测试中,使用VPN则可以进入一些无法正常访问的网络环境,从而进一步开展渗透测试。1.1.4 虚拟机

虚拟机(Virtual Machine)指通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

简单来说,虚拟机就是操作系统中的一个沙盒,在沙盒之中执行操作的时候主系统是不会干扰到外部系统的,可以说是安全测试中必不可少的工具。

从20世纪五六十年代IBM提出虚拟机技术开始,虚拟机技术随着互联网的发展,日益成熟。目前,比较流行的虚拟机软件有VMware、VirtualBox和Virtual PC,它们都能在Windows系统中虚拟出多个计算机系统。当需要在其他系统环境测试软件或以另一个系统作靶机来测试某漏洞时,则可以在自己的同一台计算机上安装两个或多个操作系统,例如可以同时安装Linux与Windows操作系统,并且在虚拟机与物理机之间共享文件、应用程序及网络资源等,这将极大地提高工作效率。

接下来,我们以VirtualBox软件为例来介绍一下虚拟机的安装方法。

VirtualBox是一款常用的开源的虚拟机软件,它具有操作简便、界面简洁等很多优点。图1-2是在Windows环境下运行VirtualBox的界面。图1-2 VirtualBox主界面

单击“新建”按钮,会弹出如图1-3所示的界面,这里需要键入虚拟机的名称以及选择所安装系统的类型和版本。

之后,单击“下一步”按钮进入内存分配界面,如图1-4所示。在安装每一个虚拟系统的时候,都要为其分配相应大小的内存,这些内存用以支持虚拟系统的运行及虚拟系统中程序的运行。图1-3 为虚拟机命名并选择镜像的系统类型与版本图1-4 为虚拟机分配内存

虚拟机系统为Windows XP时,为其分配256M的运行内存足够支持虚拟机中的常用操作。当然,所能分配的最大内存不能超过物理机内存的剩余部分,毕竟虚拟机内存是无法凭空虚拟的。

除了分配内存,还要给虚拟系统分配硬盘。硬盘是一个载体,如同主系统安装在主机的硬盘上一样,我们要给所安装的虚拟系统分配一块虚拟硬盘。分配硬盘有两种方式,一种是固定大小,另一种是动态分配,如图1-5所示。

顾名思义,动态分布模式下,给虚拟系统分配的硬盘空间会随着虚拟系统的增大而增大,在该模式下,新建硬盘很快,而且不需要消耗太大空间,分配给虚拟系统的硬盘大小会随着逐渐使用而增加。

而固定大小模式,则是为虚拟系统分配固定的空间,在空间足够时,虚拟系统可以流畅地运行,如果虚拟系统所占的空间大于或等于所分配的硬盘内存,则会出现错误。如图1-6所示,VirtualBox软件会根据所选择的系统类型默认一个硬盘大小,可供参考。图1-5 为虚拟机设置虚拟硬盘类型图1-6 为虚拟硬盘命名并分配大小

单击“创建”按钮,我们可以看到创建过程,如图1-7所示。图1-7 创建虚拟硬盘

至此,我们的虚拟硬盘就建立完毕了。之后在VirtualBox的主界面可以看到左侧的管理列表出现了刚刚创建的虚拟系统。单击选中左侧的系统,单击启动栏上的“启动”按钮,便可以进入创建的虚拟系统中,如图1-8所示。图1-8 开启虚拟机

在刚才的操作之中,我们在VirtualBox中创建了一个“空位”,接下来就可以通过镜像文件来安装系统了,相信读者都熟知,这里不再赘述。1.2 高效学习方法

在简单熟悉了一些基本知识后,让我们来看一些在计算机领域十分实用的学习方法。

高效的学习方法可以帮助我们节省时间和精力,有的思维方式甚至能帮助我们突破思维枷锁,所以,学习一些学习方法是十分必要的。1.2.1 思维导图

思维导图(Mind Manager),又称心智图,是一种表达发散性思维的有效的图形思维工具。它的创始人东尼·博赞(Tony Buzan)拥有“全世界最高创造力IQ”的头衔。思维导图有利于人脑的扩散思维的展开,影响力极大,新加坡甚至将思维导图列为小学必修科目,大量著名大型企业也逐渐开始使用思维导图。

思维导图所运用的方法是一种将发散性思维具体化的方法,它提供一个关键点,即父节点,然后发散出任意多个子节点,这些节点又可以与其他节点相连,形成可视化记忆结构,在管理大型项目或渗透测试等需要全局掌控的环境下非常实用。图1-9是一个项目计划的思维导图雏形。图1-9 一个项目计划的思维导图雏形

绘制思维导图的软件有很多,各种平台均有丰富的软件可供选择,当然,在白板或草稿纸上也可以很好地展现思维导图。1.2.2 曼陀罗思考法

所谓曼陀罗思考法,与上文的思维导图一样,是一种能够开发创意、发现问题、提高效率的思维方式,它主要应用于制作备忘录与理清思路。图1-10 一个简单的曼陀罗笔记

一般的曼陀罗思考法笔记分为9个区域,它的特点是让人依托惯性思维和直线思维,在曼陀罗笔记的视觉影响下,人们会从各个方面对主题进行思考,此时潜意识会被激发,灵感会比平时更容易被大脑捕捉。图1-10为一个简单的曼陀罗笔记格式,相信你看一遍就能在纸上还原它了。

曼陀罗笔记有“四面八方拓展型”和“围绕型”两种使用方法,它们都是从最中间的一点开始,思考“5W”(Who、What、Why、Where和When),这在逻辑编程和信息搜集中有奇效。1.2.3 番茄工作法

番茄工作法(The Pomodoro Technique),是一种时间管理方法,由弗朗西斯科·西里洛(Francesco Cirillo)于1992年创立,这种方法的规则大致如下。(1)记录要完成的任务,写在纸上或记录在你的电子设备中。(2)每4个番茄钟为一组,每组30分钟,30分钟内专注于一项工作,不允许做任何无关的事并自行安排最后几分钟休息,每4个番茄钟安排15~30分钟休息时间。(3)番茄钟不可以分割。(4)在该番茄钟完成时,画一个×,若由于不可抗力或人为因素放弃了该番茄钟(哪怕还剩1分钟就结束了),都不能画×,这个番茄钟应该算没有存在过。(5)休息时间不要用番茄来规定。(6)根据自身调整方法。

利用这种高专注的工作(学习)方法,我们不必再为时间担心,“几小时一晃而过却什么也没干”的情况不会再出现,长期坚持还能大幅度地提高集中力和注意力,增强决策意识、大局观与决断力。另外,当一个个番茄钟被完成时,你会发现有一种独特的自豪感。

管理番茄钟的软件在网络上有各种各样,也几乎全平台支持,读者可以根据自己的需求,选择适合自己的番茄钟管理软件,如果你有兴趣,不妨尝试一下用自己拿手的编程语言写一个番茄钟软件。1.3 关于“梗”

本节介绍一些“看似奇怪”的小知识,可能读者有所耳闻,一起来看看这些开玩笑的话中都蕴藏着哪些计算机技术。

1.PHP是最好的语言“PHP是最好的语言”这个梗,出自PHP语言的函数名,虽然现在使用PHP做开发的人较多,用PHP语言开发的网站也数不胜数,但从本质上来看,PHP在有些方面十分令人费解,比如PHP的核心函数命名规则很不一致,有“strptime”这样的类C函数的名字,有“xml_set_external_entity_ref_handler”这样十分长却规范的命名,还有“nl2br”这样的简写方式命名,也有“stripcslashes”这样奇怪的长名。后来有人发现,当PHP还是只有不到100个函数的小型语言的时候,其作者决定用函数名的字符数量来作为函数的hash。由于这个“神奇”的决定,PHP的函数名长度要尽可能地长短有致、均匀分布,这种影响也一直持续至今。

2.“锟斤拷”“烫烫烫”“屯屯屯”与“锘锘锘”

先来看一首小诗:

手持两把锟斤拷,

口中疾呼烫烫烫。

脚踏千朵屯屯屯,

笑看万物锘锘锘。

这首诗可能怪异、令人费解,从技术层面讲,它的含义如下。

锟斤拷:这是一个GBK字符集和Unicode字符集之间的转换问题,有一些字符用Unicode无法表示,Unicode就会用一个占位符来表示这些文字,即“U+FFFD REPLACEMENT CHARACTER”。那么U+FFFD用UTF-8编码出来,多次重复,然后放到GBK等环境中显示的话,一个汉字2个字节,最终的结果就是:锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。

锟斤拷也曾出现在新闻中:

神舟十号11日17时38分发射,三位航天员公布链接指向神奇的“锟斤拷锟斤拷锟”,零时51分,恢复正常。“烫烫烫”“屯屯屯”与“锘锘锘”:这些其实都是输出的乱码,若想输出一个字符串,却又忘记在字符串后加上0,那么计算机在输出时,就会超过字符串长度,而开发人员申请的内存后面经常被填充为“CCCCCCC…”,这样输出结果就成了著名的“烫烫烫”。1.4 本章小结

本章主要介绍了一些编程语言、虚拟机的安装及一些学习方式等,作为网络安全技术的基础,这里有必要做简单介绍。相信通过后面章节的学习,读者会对各个方向有更清晰的认知。第2章攻防交响曲——网络安全现状浅析2.1 拒绝误导与误解——为黑客正名

正如前言所说,很多人认为“黑客”这个词具有贬义,实际上黑客却在推动计算机不断进步方面功不可没,黑客与安全技术密不可分。如果好坏善恶需要明确的词语来划分的话,那么善意的黑客我们称为白帽黑客,恶意的黑客则被称为黑帽黑客。俗话说“攻防不绝对,技术无黑白”,好坏要看使用者自身。

放眼当下,大多数人对黑客的认识还停留在“破坏”与“入侵”等词汇上,造成这种现象的原因,一方面,大众往往无法直接接触黑客群体,仅在影视作品中了解过黑客,殊不知,影视作品多有夸张成分。另一方面,新闻媒体对黑客的报道也略有偏颇,例如近期新闻“中国年龄最小的黑客,13岁时,入侵学校的在线答题系统,只为不做作业,利用黑客‘抓包技术’花1分钱买了2500元的东西……”实际上,这位“小黑客”本人也表示,这是对他的误读,新闻内容实在是夸张至极,充斥着添油加醋之后用以吸引眼球的文字。更有甚者,还出现过“小学三年级会破解计算机密码,盗取信用卡赚取15亿”这种夸张的标题,实际情况如何,各位读者心中,应该都有一面明镜。2.2 害人之心不可有,防人之心不可无

对于网络安全以及黑客技术这块崭新的领域,很多人往往感到不知所措、前进困难,这时就出现了一些不怀好意的人,利用各种各样的手段“伤害”读者,我们现在就来剖析一下这些常见的现象。2.2.1  “高明”的骗子

初学者不了解黑客的世界,却又不断尝试接触,这时,不怀好意的人就会乘虚而入,利用初学者对于黑客的不了解,自称黑客高手,说出一些看似高深的名词,骗取初学者的信任,并要求其缴纳“学费”,这种行为与诈骗无异。但由于取证困难,骗子很难得到惩罚,这更加助长了他们的嚣张气焰。

在此,笔者将介绍一些识别骗子的方法,各位可以作为参考,或告诉身边对黑客技术感兴趣的初学者,提高警惕,谨防上当受骗。

1.所谓黑客

很多时候,骗子们会在各种社区、论坛或是社交网站上发布类似于“黑客收徒”的信息,往往伴随着“技术列表”,如图2-1所示。

这是一种典型的骗术,可能那些人对所列举的技术仅仅是知道名字而已,有时打出的“特价收徒”则满足了一些人贪图小利的性格,使其上当受骗。除此之外,试想,如果这个人的技术真的如此高深,为什么还会为了几十元钱而到处散布“收徒信息”,张口闭口就是“收钱”呢?真正的技术大牛应该是抓紧时间研究技术,提升自己。另外,笔者想纠正一个普遍存在的认识错误:“盗号”很简单。试想,如果盗号真的如此简单,那让腾讯、阿里巴巴这些大公司的技术人员情何以堪?就算真的有人拥有这样的技术,他也不会为了一些可笑的理由去盗取别的社交账号的。

对于这种情况,不妨随意想一种不存在的“技术名称”,询问对方是否掌握,如果对方想都没想就肯定,那么谎言将不攻自破。如图2-2所示,我随意组合了SQL和XSS两个名词。图2-1 “收徒信息”图2-2 与骗子交谈截图(无论你说什么,最终结果都会是:伸手要钱)

2.不要随意运行不明程序

有一些骗术手段更加隐蔽,以发送“黑客软件”为借口,给没有防备的新手发送木马软件,窃取信息,甚至让你的计算机在无声无息中沦为“肉鸡”(受黑客远程控制的计算机)。(关于木马,在第9章会有更多相关介绍。)

3.不要被看似“黑客”的东西蒙蔽图2-3 “匿名者”标志

很多新手对黑客感兴趣是因为“觉得很酷”,正因如此,骗子们往往会用一些很酷的东西来吸引别人。例如“匿名者”以及“V字仇杀队”(图2-2左侧头像),“匿名者”黑客团队给人留下的印象就是“酷”和“神秘”,见图2-3,也难怪很多骗子打着“匿名者”的幌子招摇撞骗了。

还是那句话,真正钻研技术的人是不需要这些表面功夫的。用社交网络上夸张的头像等信息来彰显自己“黑客”身份的人,大多数是骗子或“娱乐圈”人士。关于“娱乐圈”,下一小节会做说明。

4.以假乱真的骗术

一些曾经在网络世界中招摇撞骗的人,或因巧合,或因其他原因,搜集了一些技术书籍的电子版本或一些效果明显的软件,在“学徒”缴纳学费后,发送给他们,其实说不定他们自己都看不懂这些书的内容。2.2.2 黑客也有娱乐圈

娱乐圈在我们的社会不可或缺,但在网络安全的世界里,这个词就颇有些讽刺意义了。“黑客娱乐圈”本身没有一个准确的定义,一般认为:没有钻研技术的精神,整天考虑如何让自己看起来像黑客,仅会使用一些小工具就沾沾自喜、停滞不前的人就是娱乐圈成员;也经常用来代指以“黑客”为噱头炒作自己的人。

这样的人往往在一些QQ群里出现,这些群一般都有成百上千的群成员,并且各个群之间的成员有着相当高的重合性——这些混迹于各种社交群的人总会添加不止一个娱乐群。如果读者有一位同学,每天沉迷于谈论“刷QQ钻石”“网赚”这些东西,并乐此不疲地在自己的社交朋友圈发布“收徒信息”,那么没错了,他九成就属于笔者所说的“娱乐圈”。他们沉浸在自己浮躁的世界里,并乐在其中。

这并不是个例,很多刚进入这个圈子或渴望进入这个圈子的新手都希望追求一些更“酷”的事物,而不是潜心钻研技术。好奇之心人皆有之,笔者没资格要求他们做什么,但希望他们,特别是徘徊在“娱乐圈”的朋友们能看清那些光鲜下的不实,戒骄戒躁,悬崖勒马。2.2.3 防范钓鱼网站

钓鱼网站的存在确实给诈骗活动提供了便利(例如,恭喜您获得了价值×××元的××奖品一类),但在此笔者要说的重点是针对用户账号、密码的钓鱼页面。

随着Web技术越来越发达,制作钓鱼页面的技术也随之提高,除去用来诈骗的钓鱼页面,还有一种钓鱼页面值得人们关注,即黑客攻击钓鱼页面。这种类型的钓鱼页面一般以得到目标用户密码等隐私信息为目的,伪造目标用户熟悉的Web环境并实施攻击,在6.4节有一个基于XSS的钓鱼示例,读者可以提前看一下。

为了防范这种钓鱼攻击,最便捷可靠的方法就是留意浏览器URL信息。

注意:此处仅仅是指浏览器显示的URL,而并不是点击链接时的URL——因为URL可以跳转,比如近期就有一个蠕虫在各大社交网站、朋友圈传播,中招的用户都会以不同方式发送一个URL:http://paypassport.suning.com/ids/oauth20/authorize?client_id=suning_01&response_type=code&redirect_uri=http://×××.com&www.qq.com。

这个链接实则是跳转到了×××.com,攻击者又在最后加入了www.qq.com进行迷惑,受害者往往在无意中就成为了蠕虫传播的一个环节,这种方式也被用于隐藏XSS的攻击。

那么,在受害者没有意识地进入攻击者的网站之后,下一步攻击又是如何展开的呢?用户的密码信息又是如何神不知鬼不觉地泄露的呢?

攻击者制作的登录页面看起来和真正的登录页面无异,但这个页面的工作原理如下:(1)受害者输入账号、密码信息。(2)提示密码错误,后台第一次记录账号、密码。(3)受害者再次输入账号、密码。(4)提示密码正确,并跳转到受害者真正想访问的网站,同时后台第二次记录账号、密码。(5)记录两次输入的密码,发送给攻击者。

这样一来,抱有“我第一次随便输入密码就知道是不是真的”心态的防御方式彻底宣告失败。

回到刚才的那句话:“最便捷可靠的方式就是留意浏览器上的URL信息”,伪装得再精妙的钓鱼页面,URL也有着明显的不同,在登录时留意URL栏,无疑是一种简便高效的防御方式。该方法不能防御6.4节提到的XSS覆盖页面攻击,不过无须过于担心,遇到这种攻击的概率实在是可以忽略。

还有一点需要注意的是,有些钓鱼攻击者会用子域名来迷惑用户的眼睛,例如:www.baidu.com.×××.com(假设×××.com为攻击者的网站。)

这就需要我们睁大眼睛,对于要求输入密码的网站多留心,或是观察浏览器提供的信息来发现这些钓鱼页面(一些浏览器会自动判断该网站的真伪)。2.3 安全事件敲响警钟2.3.1  CSDN事件

2011年12月21日上午,有骇客在网上披露CSDN数据库泄露,并提供了下载地址,高达600余万个注册邮箱与密码泄露,并且所有密码都使用明文储存。CSDN是国内最大的以程序员为核心的大型网站,却采用明文储存用户密码(当时即便是小型BBS网站数据库都采用MD5等方式对密码加密)。

21日晚,CSDN发布声明并道歉。据CSDN官方解释,该数据库为CSDN作为备份所用,CSDN在2009年4月之前是以明文保存密码,而泄漏原因不详。

继CSDN的数据库泄漏之后,天涯社区、世纪佳缘、开心网等十余家国内知名网站的近5000万用户信息陆续在网上被人公布,各大社区的信誉也遭受质疑。当然,这次严重的事故同时也提高了国内对网络信息安全的重视。2.3.2  12306事件

2014年12月25上午,乌云漏洞报告平台上出现了一则标题为“大量12306用户数据在互联网疯传,包括用户账号、明文密码、身份证号码、邮箱等(泄漏途径目前未知)”的新闻,缺陷编号为:WooYun-2014-88532。这可让网上一下炸了锅,各种讨论与分析瞬间出炉,根据对泄漏数据的分析及当晚的官方信息,这次事件极有可能是一次“撞库攻击”。那么何谓“撞库”?就拿刚才提到的CSDN数据泄露来说,攻击者如果用这些泄露的数据尝试登录12306网站,或是编写脚本进行大量登录测试,就叫撞库攻击。然而被泄露的数据远不止CSDN这么多,量变引起质变,多米诺骨牌效应导致了大量数据的泄露。2.3.3  “天河”超级计算机事件

2015年2月12日,又一个神奇的漏洞引起了广泛关注,这个漏洞竟然出现在超级计算机天河一号上,着实令人震惊(图2-4)。但是仔细一看漏洞细节,却又让人啼笑皆非:天河一号的办公环境有一个未加密的无线网络,任何设备都可以轻易接入,直接进入内网。这位白帽子小黑客顺便找了找其他可能存在的漏洞,这一找可不得了,他发现天河一号超级计算机内部存在大量弱口令,以及部分服务器存在破壳漏洞(即bash漏洞,一个十分严重的Linux漏洞)。图2-4 天河一号漏洞信息

回顾以上列举的3个典型安全事件,其都与密码安全息息相关,也正好对应了密码安全中3个“过不去的坎”:明文存储、撞库(同一密码多用)和弱口令。更多关于密码安全的知识,请见附录。2.3.4 新浪微博XSS蠕虫事件

2011年6月28日晚,中国大型SNS网站——新浪网的新浪微博业务遭受XSS蠕虫攻击。中招的微博博主会自动通过广播和私信的方式发布一些诱惑性信息,用户单击链接后便会触发XSS,发布同样的信息并自动关注hellosamy,中招的用户单击后又会触发XSS,蠕虫便如链式反应般传播。由于蠕虫的指数爆炸型传播、微博的分享形式以及一些大V认证的用户被攻击,该蠕虫在16分钟内就感染了30 000名以上用户,可以说是近几年中国SNS社区受到的最大的一次攻击。

这次攻击并没有直接造成用户的重大损失,更像是一场黑客的恶作剧(从收听的hellosamy用户也能看出,Samy是XSS蠕虫鼻祖herosamy的作者,他的XSS蠕虫曾造成社交网站MySpace的瘫痪)。但同样,这次事件也提高了公众对信息安全的关注(随后新浪多处反射型XSS被披露)。而这次漏洞成因更让人大跌眼镜:新浪对该参数竟然完全没有过滤!这次攻击在Chrome、Safari中会被XSS Filter拦截,而IE、Firefox未能幸免,根据当时IE、Firefox的市场占有率,这的确是一次范围很广的攻击。

让我们来分析一下这个被用来传播XSS蠕虫的URL: http://weibo.com/pub/star/g/xyyyd”>?type=update

在访问这个URL时,新浪会对字符串进行处理,结果变成了访问: http://weibo.com/pub/star.php?g=xyyyd”>?type=update

由于参数g并没有进行应有的过滤,导致这个来自外部的JS脚本被嵌入页面内。2.4 开源理念“开源”即开放源代码,具有开源特性的软件(包括操作系统),其源代码对所有人开放,任何人均可以修改、使用、再发行这些软件。下面让我们来简单地了解一下开源。

相信大家都听说过GNU基金会基于Linus Torvalds开发的Linux内核创立的GNU/Linux(也称Linux)操作系统,它的许多发行版本例如Debian、Ubuntu、Red Hat等均为基于开源内核的再创作,广为程序员与技术人员所知。本书中提到的许多软件,如Virtual Box虚拟机等,也是开源软件。

开源软件并非如其字面意义一般只是简单地放出软件的源代码。开源软件需要配备开源许可证,不同的开源软件通常会因不同的开源目的选择不同的许可证,例如Linux内核使用的是GPL许可证,而Android系统使用的是Apache许可证。不同的许可证决定了大家可以如何使用这份代码,例如GPL许可证规定了任何使用了GPL源码的程序也必须用GPL许可证开源。常见的开源许可证有GPL、MIT、Apache、MS-PL等。开源软件在国外通常也被称为自由软件(Free Software),自由软件的一个关键特征就是它的许可证,不使用开源许可证发布的源代码在美国法律中依然被认定为专有(作者享有完整知识产权)软件,例如微软发布的Reference Source。国内在开源软件领域尚处于法律盲区,也造成了一些大型厂商无所顾忌,出现了不遵守开源协议的现象。

开源代表着自由、高效率和共享。作为程序员、开发人员的读者,可以使用源代码进行二次开发并再发布,也可以对原始开源项目进行拓展,将更改提交回原始代码仓库,使开源软件的特性更多、功能更强大、更易使用,同时提升普通用户的使用体验。这些对开源软件做出贡献的开发者也称为开源者,他们和其他为开源软件做出贡献的人员(例如进行本地化或参与测试的人员)组成了开源社区。近些年随着互联网的高速发展,开源在国内也越来越受欢迎,各类开源社区大量涌现,许多城市都有了当地的LUG(Linux User Group/Linux, Linux用户社组),还有一些类似AOSC(安同开源社区)这样专精于开发自己的开源软件/系统的社区。开源与开发者、使用者是相得益彰的,而它所体现出的自由、共享与探索精神,则与黑客精神在本质是相通的。

我们会在第4章讲到对开源CMS(Content Management System)的审计技巧,CMS即内容管理系统,随着Web 2.0时代的发展,越来越多的企业、个人在使用CMS建设网站。由于几乎所有CMS都开源,所以很多的CMS漏洞挖掘实际上是基于代码审计,也就是白盒漏洞挖掘。在阅读代码审计章节前,请先锻炼一下自己的代码阅读能力。2.5 本章小结

黑客的世界五彩缤纷,但又充斥着华而不实的东西,黑客确实看起来很酷,但这酷的背后其实蕴含着十分艰苦的学习过程,希望一蹴而就的人往往会落进不怀好意者的圈套。黑客与安全并不是相对的,他(它)们相辅相成——因为有黑客的探索才会有安全,又正是因为无法做到绝对安全,黑客才有存在的意义。如果你确定自己有坚持下去的毅力,请翻开下一页,我们将开始真正地讲述那看起来神秘的“黑客技术”。第3章Web渗透测试——透过攻击看防御

何谓Web渗透测试(Penetration Test)?相信大家对Web都不陌生,渗透测试一般是指通过模拟黑客的恶意攻击,来评估计算机网络系统的安全性,若发现系统存在漏洞,则提交渗透报告给被测试系统的拥有者,并提供修复方案。本章将通过对Web应用及服务器的渗透测试,带各位详细了解渗透测试的方法和技能。

本章知识涉及的内容较为分散,希望读者能够掌握学习技巧,务必亲自动手实践,“熟”方能生“巧”。3.1 渗透信息搜集

信息搜集是Web渗透的第一步,也是至关重要的一步(实际上除了Web渗透,很多工作的第一步都是信息搜集)。一次完整的渗透过程是漫长的,前期信息搜集可以让人们初步了解渗透目标,而后期信息搜集却往往是成功的关键。任何攻击与防御之间的较量,都是基于信息的掌控程度,在信息不对等的情况下,很容易出现误判或失误。在安全行业团队的测试中,信息搜集被视为“最重要,最耗时”的一个步骤,甚至有专门的成员负责信息的搜集与分析。下面我们来了解一些常用的信息搜集技巧(这里使用的词语是“信息搜集”而非“信息收集”,是因为“搜”字能更好地体现出归纳整理的含义,有一定的选择性和方向性)。3.1.1 服务器信息搜集

1.旁站

何谓旁站攻击?就是一个服务器上有多个Web站点,而我们的渗透目标是其中的一个Web站点,当我们无法拿下目标站点时,则可以尝试对服务器上的其他站点进行渗透,然后再通过跨目录或提权等方法拿下目标站点。常见的旁站查询流程如下。(1)获得渗透目标的真实IP地址。(2)利用网站平台、工具反查IP地址。

2.端口扫描

一台计算机开放的端口和它开放的服务是对应的,而渗透测试人员可以通过端口扫描大致了解目标开放了哪些服务,如80端口对应了HTTP服务,3306端口对应了MySQL数据库,1433端口对应了MSSQL数据库。通过对开放端口的分析,我们便可以大致知道目标网站使用了什么数据库,并可以尝试进行数据库的爆破。此外,端口扫描对后台的查找和后期的提权也是至关重要的。那常见的端口扫描方式又有哪些呢?(1)在线平台。很多平台都提供端口扫描的功能,并且提供常见服务的默认端口,如图3-1所示。图3-1 在线端口扫描平台(2)工具。端口扫描工具如图3-2所示。图3-2 端口扫描工具3.1.2  Web信息搜集

1.二级域名

在对一些大型网站进行渗透测试时,主站很难直接发现漏洞,而子站容易出现问题。例如SQL注入,往往因为数据库的配置不严谨,导致黑客可以利用子站的注入进行跨库,或者拿下子站的服务器,利用内网危害到主站的安全。图3-3便是用一个Python的脚本来对百度的二级域名爆破的结果。图3-3 利用脚本爆破出211个子域名

2.目录信息

在渗透中,目录是极为重要的信息。如果得到了根目录,便可以结合注入进行GetShell(取得权限),如果有了Web目录,便可以尝试对后台地址进行爆破,对后台文件进行猜解。由此可见目录的重要性,而获得目录的常见方法如下所述。(1)phpinfo和探针文件。phpinfo文件如图3-4所示。图3-4 phpinfo文件

PHP探针文件如图3-5所示。图3-5 PHP探针文件(2)搜索引擎。在渗透中,搜索引擎是一把利器,尝试用搜索引擎的语法,往往会有意想不到的收获。

下面是一些常用的搜索引擎语法。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载