黑客攻击技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在植入的攻击代码中必须存在一段返回地址RA,以便将程序跳转到指定的位置继 续运行。返回地址是指Shellcode的入口地址。如果希望目标主机改变原来的程序执行 流程,转向执行Shellcode,就必须设法用Shellcode的入口地址覆盖某个跳转指令。
5.4 缓冲区溢出攻击
5.4.4 缓冲区溢出攻击的防范 1.采用非执行的缓冲区 非执行的缓冲区是指通过使被攻击程序的数据地址空间不 可执行,使得攻击者不可能执行缓冲区中被植入的攻击程序代 码。 2.强制编写正确的代码 编写正确、安全的代码是避免缓冲区溢出攻击的根本途径。 程序开发人员在所有拷贝数据的地方进行数据长度和有效性检 查. 3.利用编译器的边界检查实现对缓冲区的保护.
5.6 端口管理技术
5.6.1 端口及其服务
„„ 80:HTTP IP 地 址 21:FTP 25:SMTP „„
„„
6969 8080 3689
„„
IP 地 址
图 端口连接示意图
5.6 端口管理技术
5.6.1 端口及其服务
2.端口的查看 (1)用系统内置命令netstat查看端口状态 对于Windows 2003/XP系统,在命令提示符下使用 “netstat -an”查看系统端口状态,可以列出系统正在开 放的端口号及其状态 (2)使用端口监视类扫描软件
4.对程序中的缓冲区溢出漏洞进行静态/动态分析.
5.5 欺骗攻击及其防御
网络欺骗型攻击主要有Web欺骗、ARP欺 骗等手段,除此之外还有IP地址欺骗、TCP 欺骗(在TCP数据包中使用伪造的IP地址)、 DNS欺骗(伪造主机域名)、电子邮件欺 骗、源路由欺骗、以及口令欺骗等多种欺 骗手段。
5.5 欺骗攻击及其防御
Biblioteka Baidu:SQL注入
可以采用如下方式注入:
http://www.jwc.edu.cn/show.asp?ID=666 and user>0 服务器运行“Select *from表名where 字段= 666 and user>0,显 然,这个查询语句肯定会出错,通常会显示如下错误信息: · 错误类型: Microsoft OLE DB Provider for ODBC Drivers(0x80040E07) [Microsoft][ODBC SQL Server Driver][SQL Server]将nvarchar 值“junhua”转换为数据类型为int的列时发生语法错误。 show.asp,第39行 由这个出错信息可以获知:该网站使用的数据库是Microsoft SQL Server,采用ODBC连接方式,连接账号为junhua。
4)http://www.attacker.org改写文档中的所有URL;
5)http://www.attacker.org 向用户返回改写后的文档。
5.5 欺骗攻击及其防御
5.5.1 Web欺骗攻击 A. 有人通过Google搜索,对寻找到的1 000个网站的随机 取样测试,检测到其中11.3%的网站有易受SQL注入攻 击的可能。这意味着黑客可以远程利用那些应网站的数据, 获取任何没有hashed或加密的密码或信用卡数据,甚至 有以管理员身份登录进这些应用的可能。这不仅对开发网 站的开发人员来说很糟糕,对使用网站的消费者或用户来 说更糟糕,因为他们给网站提供了数据,想着网站是安全 的呢。
5.4 缓冲区溢出攻击
5.4.1 何谓缓冲区溢出
3.缓冲区溢出攻击分类
1)缓冲区溢出攻击的方式与缓冲区属于哪个内存区域密不可分,因此, 按照溢出位置可将缓冲区溢出分为栈溢出、堆溢出和BSS段溢出。 2)按攻击者欲达到的目标分类,可以分为在程序的地址空间里植入适当 的代码、通过适当的初始化寄存器和存储器从而控制程序转移到攻击者安排的 地址空间去执行。 3)按攻击目标分类可以分为攻击栈中的返回地址、攻击栈中保存的旧框 架指针、攻击堆或BSS段中的局部变量或参数、攻击堆或BSS段中的长跳转缓 冲区。 不管哪种类型的缓冲区溢出攻击,所产生的后果都相同:利用它们以某 种方式破坏进程的内存空间,进而控制程序执行流程。缓冲区溢出攻击的最终 目标都是从漏洞中收集任何有用的信息以控制进程的执行。
5.4 缓冲区溢出攻击
5.4.2 缓冲区溢出攻击原理分析
1.基于栈的缓冲区溢出 2.基于堆的缓冲区溢出 3.基于BSS的缓冲区溢出
5.4 缓冲区溢出攻击
5.4.3 缓冲区溢出攻击代码的构造
无论是哪一种溢出攻击,前提条件都必须存在一个有漏洞的缓冲 区,通过溢出该缓冲区,改写其相邻区域的数据。例如,改写诸如函 数返回地址、指针、函数指针或者长跳转缓冲区,这样才可以使程序 流程发生改变。 1. 缓冲区溢出攻击代码结构 攻击者对系统发起攻击,其目的是要获取系统权限。利用缓冲区 溢出漏洞时,通常的做法是将函数的返回地址指向一段构造好的代码, 常称其为shellcode。运行shellcode 后,就可以得到系统的一个 shell。如果存在漏洞的程序是以root权限运行的,则攻击者就能得到 具有root权限的shell,从而完全控制目标主机系统。
shellcode是实施攻击所要植入的攻击代码的核心部分,其功能是为攻击者提供主 机系统的一个shell。 (2)填充数据
编写的shellcode能否得到执行,关键是让覆盖了的函数地址指向shellcode在堆 栈中的入口地址。由于攻击者不能够准确的估计出shellcode在其堆栈中的位置,为了 提高shellcode的命中率,往往需要在shellcode的前面安排一段填充数据(seledge) 用于占位。 (3)定位shellcode的返回地址
例如,将http://home.xxx1.com变为 http://www.attacker.org/http://hom e.xxx1.com。当用户点击改写过的 http://home.xxx1.com(可能它仍然显 示http://home.xxx1.com),但却进入 了http://www.attacker.org
SQL注入攻击源于英文“SQL Injection Attack”。目前还没有看到一种标准的定义, 常见的是对这种攻击形式、特点的描述。微 软技术中心从两个方面进行了描述: (1)脚本注入式的攻击; (2)恶意用户输入用来影响被执行的SQL 脚本。 Stephen Kost给出了这种攻击形式的另 一个特征,“从一个数据库获得未经授权的 访问和直接检索”。
5.6 端口管理技术
5.6.1 端口及其服务
黑客攻击技术
5.4 缓冲区溢出攻击
5.4.1 何谓缓冲区溢出
缓冲区是程序运行期间,在内存中分配的一个连续的 存储空间,用于存放各种类型的数据。
所谓缓冲区溢出是指向固定长度的缓冲区写入超出预 先分配长度的内容,造成缓冲区数据溢出,而覆盖了缓冲 区相邻的内存空间。
5.4 缓冲区溢出攻击
一个典型的具有缓冲区溢出的C++语言程序 代码示例如下: #include <stdio.h> #include <string.h> void stackover (char* ptr) { char buffer[8]; strcpy(buffer,ptr); printf("String=%s\n",buffer); } main(int argc,char* argv[]) { if(argc == 2) { stackover(argv[1]); } else { printf("Usage:%s \n",argv[0]); } }
1)用户点击经过改写后的 http://www.attacker.org/http://home.xxx1.com; 2)http://www.attacker.org向http://home.xxx1.com请 求文档; 3)http://home.xxx1.com向http://www.attacker.org返 回文档;
www.1cbc.com.cn www.lcbc.com.cn/index.jsp www.icbc.com.cn www.cnicbc.com.cn
图为:中国工商银行假网站截图
图为:中国工商银行真网站截图
5.5 欺骗攻击及其防御
5.5.1 Web欺骗攻击
4.Web欺骗的防御措施 尽管攻击者在进行Web欺骗时想方设法不留蛛丝马迹,但还是能 够发现一些攻击痕迹的。通过阅读HTML源文件,可以发现被改写的 URL;通过单击浏览器中的[文件|属性]命令,也能了解当前URL地址 的一些信息。此处所提供的URL是真实的URL地址,据此可判断出是 否已被Web欺骗。 防御Web欺骗的方法最好是禁止浏览器中的JavaScript功能,使 攻击者难以改写页面上的信息;同时确保浏览器的连接状态栏可见, 并时刻观察状态栏的位置信息有无异常。另外,除非特别需要,建议 禁止使用JavaScript、ActiveX以及Java提供的越来越丰富的强大功 能,因为它们常被攻击者作为攻击活动的掩护手段。
5.5.1 Web欺骗攻击
Web欺骗能够成功的关键是在受害者与其它 Web服务器之间设立攻击者的Web服务器,这种 攻击在安全问题中称为“来自中间的攻击”。 1.虚假的链接与虚假的页面 攻击者通过改写Web页中的URL地址,伪造网 页等,使之指向攻击者的Web服务器而不是真正的 Web服务器。假设,攻击者所处的Web服务器是 www.attacker.org,攻击者通过在所有链接前增 加http://www.attacker.org来改写URL。
5.4 缓冲区溢出攻击
缓冲区溢出攻击是否成功,关键在于植入代码。植入 代码一般由shellcode、填充数据(用N表示) 、返回地址 (用RA 表示)三个部分按照一定方式构造而成。一段典型 的缓冲区溢出攻击植入代码如图所示,其中,RA是用于 覆盖存在漏洞的函数返回地址,将程序跳转到shellcode 处继续执行;N为一段没有实际用途的空指令,常称为 seledge。
5.4 缓冲区溢出攻击
5.4.1 何谓缓冲区溢出
2.内存分配 运行一个编译好的程序时,计算机会在内存中开辟一 段连续的内存块即缓冲区。缓冲区通常分为3个区域,从 内存的低地址向高地址,分别是代码段、数据段(初始化 数据段、未初始化数据段)和堆栈(堆段、栈段),它们 在内存中的位置如图所示。
栈(Stack) 堆(Heap) 未初始化数据段(BSS) 初始化数据段(Data) 代码段(Code) 内存低地址 0x00000000 内存高地址 0xFFFFFFFF
„ 函数返回地址Ret 栈基址指针EBP 缓冲区 „ 溢出前 NNNN(sledge) shellcode RARARARA 植入代码 „ NNNN(sledge) shellcode RARARARA „ 溢出后 程序 跳转
5.4 缓冲区溢出攻击
5.4.3 缓冲区溢出攻击代码的构造
(1)shellcode
5.6 端口管理技术
5.6.1 端口及其服务 在网络通信中所指的端口不是指物理意义上的端口,而是特指 TCP/IP协议中的端口,是逻辑意义上的端口,它是TCP/UDP协议与 应用进程之间通信的数据接口点。TCP/IP端口通过端口号来标记,端 口号取值是0~65535之间的整数。客户机可以任意选择端口号,服务 器则使用固定的标准端口号。 1.端口的类型及分配使用 如果按照端口号分布划分,可分为周知端口和动态端口两大类。 1)周知端口。即常用的端口,其范围从0~1023。 2)动态端口。所谓动态端口是指一般不固定分配给某一种服务,而是 在1024~65535之间动态分配使用的端口。
5.5 欺骗攻击及其防御
5.5.1 Web欺骗攻击
3.网络钓鱼 网络钓鱼(Phishing)是近几年新兴的一种攻击方式。 “Phishing”一词由“Fishing”和“Phone”组合而来。 由于黑客起初是以电话作案,所以用“Ph”来取代“F”, 创造了“Phishing”,同时有“愿者上钩”之意。网络钓 鱼通常采用发送大量欺骗性垃圾电子邮件和伪造Web站点 等来进行诈骗活动。
5.4 缓冲区溢出攻击
5.4.4 缓冲区溢出攻击的防范 1.采用非执行的缓冲区 非执行的缓冲区是指通过使被攻击程序的数据地址空间不 可执行,使得攻击者不可能执行缓冲区中被植入的攻击程序代 码。 2.强制编写正确的代码 编写正确、安全的代码是避免缓冲区溢出攻击的根本途径。 程序开发人员在所有拷贝数据的地方进行数据长度和有效性检 查. 3.利用编译器的边界检查实现对缓冲区的保护.
5.6 端口管理技术
5.6.1 端口及其服务
„„ 80:HTTP IP 地 址 21:FTP 25:SMTP „„
„„
6969 8080 3689
„„
IP 地 址
图 端口连接示意图
5.6 端口管理技术
5.6.1 端口及其服务
2.端口的查看 (1)用系统内置命令netstat查看端口状态 对于Windows 2003/XP系统,在命令提示符下使用 “netstat -an”查看系统端口状态,可以列出系统正在开 放的端口号及其状态 (2)使用端口监视类扫描软件
4.对程序中的缓冲区溢出漏洞进行静态/动态分析.
5.5 欺骗攻击及其防御
网络欺骗型攻击主要有Web欺骗、ARP欺 骗等手段,除此之外还有IP地址欺骗、TCP 欺骗(在TCP数据包中使用伪造的IP地址)、 DNS欺骗(伪造主机域名)、电子邮件欺 骗、源路由欺骗、以及口令欺骗等多种欺 骗手段。
5.5 欺骗攻击及其防御
Biblioteka Baidu:SQL注入
可以采用如下方式注入:
http://www.jwc.edu.cn/show.asp?ID=666 and user>0 服务器运行“Select *from表名where 字段= 666 and user>0,显 然,这个查询语句肯定会出错,通常会显示如下错误信息: · 错误类型: Microsoft OLE DB Provider for ODBC Drivers(0x80040E07) [Microsoft][ODBC SQL Server Driver][SQL Server]将nvarchar 值“junhua”转换为数据类型为int的列时发生语法错误。 show.asp,第39行 由这个出错信息可以获知:该网站使用的数据库是Microsoft SQL Server,采用ODBC连接方式,连接账号为junhua。
4)http://www.attacker.org改写文档中的所有URL;
5)http://www.attacker.org 向用户返回改写后的文档。
5.5 欺骗攻击及其防御
5.5.1 Web欺骗攻击 A. 有人通过Google搜索,对寻找到的1 000个网站的随机 取样测试,检测到其中11.3%的网站有易受SQL注入攻 击的可能。这意味着黑客可以远程利用那些应网站的数据, 获取任何没有hashed或加密的密码或信用卡数据,甚至 有以管理员身份登录进这些应用的可能。这不仅对开发网 站的开发人员来说很糟糕,对使用网站的消费者或用户来 说更糟糕,因为他们给网站提供了数据,想着网站是安全 的呢。
5.4 缓冲区溢出攻击
5.4.1 何谓缓冲区溢出
3.缓冲区溢出攻击分类
1)缓冲区溢出攻击的方式与缓冲区属于哪个内存区域密不可分,因此, 按照溢出位置可将缓冲区溢出分为栈溢出、堆溢出和BSS段溢出。 2)按攻击者欲达到的目标分类,可以分为在程序的地址空间里植入适当 的代码、通过适当的初始化寄存器和存储器从而控制程序转移到攻击者安排的 地址空间去执行。 3)按攻击目标分类可以分为攻击栈中的返回地址、攻击栈中保存的旧框 架指针、攻击堆或BSS段中的局部变量或参数、攻击堆或BSS段中的长跳转缓 冲区。 不管哪种类型的缓冲区溢出攻击,所产生的后果都相同:利用它们以某 种方式破坏进程的内存空间,进而控制程序执行流程。缓冲区溢出攻击的最终 目标都是从漏洞中收集任何有用的信息以控制进程的执行。
5.4 缓冲区溢出攻击
5.4.2 缓冲区溢出攻击原理分析
1.基于栈的缓冲区溢出 2.基于堆的缓冲区溢出 3.基于BSS的缓冲区溢出
5.4 缓冲区溢出攻击
5.4.3 缓冲区溢出攻击代码的构造
无论是哪一种溢出攻击,前提条件都必须存在一个有漏洞的缓冲 区,通过溢出该缓冲区,改写其相邻区域的数据。例如,改写诸如函 数返回地址、指针、函数指针或者长跳转缓冲区,这样才可以使程序 流程发生改变。 1. 缓冲区溢出攻击代码结构 攻击者对系统发起攻击,其目的是要获取系统权限。利用缓冲区 溢出漏洞时,通常的做法是将函数的返回地址指向一段构造好的代码, 常称其为shellcode。运行shellcode 后,就可以得到系统的一个 shell。如果存在漏洞的程序是以root权限运行的,则攻击者就能得到 具有root权限的shell,从而完全控制目标主机系统。
shellcode是实施攻击所要植入的攻击代码的核心部分,其功能是为攻击者提供主 机系统的一个shell。 (2)填充数据
编写的shellcode能否得到执行,关键是让覆盖了的函数地址指向shellcode在堆 栈中的入口地址。由于攻击者不能够准确的估计出shellcode在其堆栈中的位置,为了 提高shellcode的命中率,往往需要在shellcode的前面安排一段填充数据(seledge) 用于占位。 (3)定位shellcode的返回地址
例如,将http://home.xxx1.com变为 http://www.attacker.org/http://hom e.xxx1.com。当用户点击改写过的 http://home.xxx1.com(可能它仍然显 示http://home.xxx1.com),但却进入 了http://www.attacker.org
SQL注入攻击源于英文“SQL Injection Attack”。目前还没有看到一种标准的定义, 常见的是对这种攻击形式、特点的描述。微 软技术中心从两个方面进行了描述: (1)脚本注入式的攻击; (2)恶意用户输入用来影响被执行的SQL 脚本。 Stephen Kost给出了这种攻击形式的另 一个特征,“从一个数据库获得未经授权的 访问和直接检索”。
5.6 端口管理技术
5.6.1 端口及其服务
黑客攻击技术
5.4 缓冲区溢出攻击
5.4.1 何谓缓冲区溢出
缓冲区是程序运行期间,在内存中分配的一个连续的 存储空间,用于存放各种类型的数据。
所谓缓冲区溢出是指向固定长度的缓冲区写入超出预 先分配长度的内容,造成缓冲区数据溢出,而覆盖了缓冲 区相邻的内存空间。
5.4 缓冲区溢出攻击
一个典型的具有缓冲区溢出的C++语言程序 代码示例如下: #include <stdio.h> #include <string.h> void stackover (char* ptr) { char buffer[8]; strcpy(buffer,ptr); printf("String=%s\n",buffer); } main(int argc,char* argv[]) { if(argc == 2) { stackover(argv[1]); } else { printf("Usage:%s \n",argv[0]); } }
1)用户点击经过改写后的 http://www.attacker.org/http://home.xxx1.com; 2)http://www.attacker.org向http://home.xxx1.com请 求文档; 3)http://home.xxx1.com向http://www.attacker.org返 回文档;
www.1cbc.com.cn www.lcbc.com.cn/index.jsp www.icbc.com.cn www.cnicbc.com.cn
图为:中国工商银行假网站截图
图为:中国工商银行真网站截图
5.5 欺骗攻击及其防御
5.5.1 Web欺骗攻击
4.Web欺骗的防御措施 尽管攻击者在进行Web欺骗时想方设法不留蛛丝马迹,但还是能 够发现一些攻击痕迹的。通过阅读HTML源文件,可以发现被改写的 URL;通过单击浏览器中的[文件|属性]命令,也能了解当前URL地址 的一些信息。此处所提供的URL是真实的URL地址,据此可判断出是 否已被Web欺骗。 防御Web欺骗的方法最好是禁止浏览器中的JavaScript功能,使 攻击者难以改写页面上的信息;同时确保浏览器的连接状态栏可见, 并时刻观察状态栏的位置信息有无异常。另外,除非特别需要,建议 禁止使用JavaScript、ActiveX以及Java提供的越来越丰富的强大功 能,因为它们常被攻击者作为攻击活动的掩护手段。
5.5.1 Web欺骗攻击
Web欺骗能够成功的关键是在受害者与其它 Web服务器之间设立攻击者的Web服务器,这种 攻击在安全问题中称为“来自中间的攻击”。 1.虚假的链接与虚假的页面 攻击者通过改写Web页中的URL地址,伪造网 页等,使之指向攻击者的Web服务器而不是真正的 Web服务器。假设,攻击者所处的Web服务器是 www.attacker.org,攻击者通过在所有链接前增 加http://www.attacker.org来改写URL。
5.4 缓冲区溢出攻击
缓冲区溢出攻击是否成功,关键在于植入代码。植入 代码一般由shellcode、填充数据(用N表示) 、返回地址 (用RA 表示)三个部分按照一定方式构造而成。一段典型 的缓冲区溢出攻击植入代码如图所示,其中,RA是用于 覆盖存在漏洞的函数返回地址,将程序跳转到shellcode 处继续执行;N为一段没有实际用途的空指令,常称为 seledge。
5.4 缓冲区溢出攻击
5.4.1 何谓缓冲区溢出
2.内存分配 运行一个编译好的程序时,计算机会在内存中开辟一 段连续的内存块即缓冲区。缓冲区通常分为3个区域,从 内存的低地址向高地址,分别是代码段、数据段(初始化 数据段、未初始化数据段)和堆栈(堆段、栈段),它们 在内存中的位置如图所示。
栈(Stack) 堆(Heap) 未初始化数据段(BSS) 初始化数据段(Data) 代码段(Code) 内存低地址 0x00000000 内存高地址 0xFFFFFFFF
„ 函数返回地址Ret 栈基址指针EBP 缓冲区 „ 溢出前 NNNN(sledge) shellcode RARARARA 植入代码 „ NNNN(sledge) shellcode RARARARA „ 溢出后 程序 跳转
5.4 缓冲区溢出攻击
5.4.3 缓冲区溢出攻击代码的构造
(1)shellcode
5.6 端口管理技术
5.6.1 端口及其服务 在网络通信中所指的端口不是指物理意义上的端口,而是特指 TCP/IP协议中的端口,是逻辑意义上的端口,它是TCP/UDP协议与 应用进程之间通信的数据接口点。TCP/IP端口通过端口号来标记,端 口号取值是0~65535之间的整数。客户机可以任意选择端口号,服务 器则使用固定的标准端口号。 1.端口的类型及分配使用 如果按照端口号分布划分,可分为周知端口和动态端口两大类。 1)周知端口。即常用的端口,其范围从0~1023。 2)动态端口。所谓动态端口是指一般不固定分配给某一种服务,而是 在1024~65535之间动态分配使用的端口。
5.5 欺骗攻击及其防御
5.5.1 Web欺骗攻击
3.网络钓鱼 网络钓鱼(Phishing)是近几年新兴的一种攻击方式。 “Phishing”一词由“Fishing”和“Phone”组合而来。 由于黑客起初是以电话作案,所以用“Ph”来取代“F”, 创造了“Phishing”,同时有“愿者上钩”之意。网络钓 鱼通常采用发送大量欺骗性垃圾电子邮件和伪造Web站点 等来进行诈骗活动。