0 day 学习

缓冲区溢出攻击

近年来甚至出现了基于架构(Frame Work)漏洞利用程序开发平台,让这项技术的进入门槛大大降低,使得原本高不可攀的黑客技术变得不再遥不可及。

逆向&汇编语言 为辅??

蓝色:多定义n.;      绿色:不重要   红色:重要

1 漏洞利用

把二进制代码安置在输入参数里,精确地计算栈中返回地址的偏移量,通过一个合法的调 用执行非法的代码,

所有漂亮的 exploits 背后都隐藏着无数个对着寄存器发呆的不眠之夜

网站 --用户输入限制 -- SQL 注入攻击和 XSS(Cross Site Script,跨站脚本)

       功能性逻辑缺陷(bug)

       安全性逻辑缺陷(漏洞

常见的漏洞包括软件中的缓冲区溢出漏洞、网站中的跨站脚本漏洞(XSS)、SQL 注入漏洞等。

slammer 蠕虫--利用系统漏洞传播—远程控制

服务器软件安全漏洞,&系统中可以被 RPC 远程调用的函数中存在缓冲区溢出漏洞—“肉鸡”

点击链接URL -–解析HTML文件存在缓冲区溢出漏洞--HTML搭载shellcode-下载木马运行。

三方软件 ActiveX控件漏洞—“网马”

文档--office解析存在缓冲区溢出漏洞shellcode

SQL注入漏洞—明文密码           本地Hash算法加密—CRACK攻击

端口扫描、网络监听、密码猜解、 DOS……

      1. 漏洞挖掘、漏洞分析、漏洞利用

3步骤,3步走        所需系统底层知识、逆向工程

1.漏洞挖掘

QA工程师’s功能性测试 难以发现 安全性漏洞

专业测试                    Penetration test(攻击测试),这些测试团队则被称做 Tiger team 或者 Ethic hacker。

漏洞挖掘--高级测试(QA)           静态分析(学术界), Fuzz”灰盒”测试(工程界)详见3章

2.漏洞分析

搜索POC(proof of concept)代码, 重现漏洞触发的现场  (Paimei工具) 方便找到漏洞触发点

搜索无:   补丁比较器patch前后可执行文件哪些地方被修改,用反汇编工具(IDA pro) 重点逆向分析.

所需 逆向&调试技术

3.漏洞利用

内存漏洞(堆栈溢出)       Web 应用漏洞(脚本注入)

手机安全 Web 应用中的脚本注入攻击所使用的技术与 Windows 平台下缓冲区溢出相差较大,且自成体系

编写Expolit  利用漏洞              未被修复的漏洞往往被称做 0 day

公布漏洞的权威机构有2个:

CVE (Common Vulnerabilities and Exposures) CVE -CVE      CVE编号

CERT(Computer Emergency Response Team) http://www.cert.org/

微软的安全中心通常每月第二周星期二发布补丁    “Black Tuesday”   

刚刚被 patch 过的漏洞称为 1 day 攻击。(patch 发布后 1 天,叫做 1 d ay,5 天叫做 5 day,未发 patch 统称 0 day

1.2 二进制文件概述

1.2.1 PE 文件格式

PE(Portable Exec utable)是 Win32 平台下可执行文件遵守的数据格式。常见的可执行文件(如“*.exe”文件和“*.dll”文件)都是典型的 PE 文件。

PE 文件格式可执行文件分成若干个数据节(section)

一可执行文件不只有二进制的机器代码,还会自带许多其他信息,如字符串、菜单、 图标、位图、字体等。规定了在可执行文件中如何组织。

典型 节:

.text 由编译器产生,存放着二进制的机器代码,也是我们反汇编和调试的对象。

.data 初始化的数据块,如宏定义、全局变量、静态变量等。

.idata 可执行文件所使用的动态链接库等外来函数与文件的信息。

.rsrc 存放程序的资源,如图标、菜单等。

除此以外,还可能出现的包括“.reloc”、“.edata”、“.tls”、“.rdata”等。

1.2.2 虚拟内存

Windows 的内存 :物理内存&虚拟内存。     物理内存较复杂 需进入Windows 内核级别 ring0 才能看到。

用调试器看到的内存 地址都是虚拟内存

进程所有的虚拟内存中包含了程序运行时所必需的资源--代码、栈空间、堆空间、资源区、动态链接库等

进程不使用虚拟内存时,这些内存只是一些地址,是虚拟存在的,是一笔无形的数字财富。

进程使用内存时,内存管理器会为这个虚拟地址映射实际的物理内存地址,虚拟内存 地址和最终被映射到的物理内存地址之间没有什么必然联系;

操作系统的”虚拟内存“(操作系统内存不足时,将用硬盘充当内存)

1.2.3 PE 文件与虚拟内存之间的映射

静态反汇编工具看到PE文件 指令位置相对于磁盘文件而言(文件偏移)还需知道在内存中所处的位置,虚拟内存地址(VA)

文件偏移地址(File Offset)

       数据在 PE 文件中的地址,个人认为叫做文件地址更加准确。这是文件在磁盘上存放时相对于文件开头的偏移。

装载基址(Image Base)

       PE 装入内存时的基地址。默认情况下,EXE 文件在内存中的基地址是 0x00400000,DLL 文件是 0x10000000。这些位置可以通过修改编译选项更改

虚拟内存地址(Virtual Address,VA

       PE 文件中的指令被装入内存后的地址。

相对虚拟地址(Relative Virtual Address,RVA

       相对虚拟地址是内存地址相对于映射基址的偏移量。

虚拟内存地址、映射基址、相对虚拟内存地址三者之间有如下关系。

       VA= Image Base+ RVA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值