《metasploit渗透测试魔鬼训练营》学习笔记第六章--客户端渗透

四.客户端攻击

客户端攻击与服务端攻击有个显著不同的标识,就是攻击者向用户主机发送的恶意数据不会直接导致用户系统中的服务进程溢出,而是需要结合一些社会工程学技巧,诱使客户端用户去访问这些恶意数据,间接发生攻击。

4.1客户端渗透攻击的安全防护机制

①DEP

DEP(数据执行保护)基本原理是操作系统通过设置内存页的属性,指明数据所在的内存页为不可执行。

②ASLR

ASLR(地址空间布局随机化)是系统在运行程序时,不用固定的基地址加载进程及相关工作库文件。

包括:堆地址的随机化,栈基址的随机化,PE文件映像基址的随机化,PEB,TEB地址的随机化。

4.2.针对浏览器的渗透攻击

4.2.1浏览器渗透

针对浏览器本身的渗透攻击和对内嵌的第三方插件的渗透攻击

4.2.2堆喷射

客户端渗透攻击经常用到这一技术。攻击者在溢出漏洞之前,在堆区申请大量充满空指令的内存块,每个内存块都尾随shellcode,然后,在溢出时,修改溢出之后的返回地址到这个空间。在浏览器攻击中,一般都会用javascript脚本进行堆喷射。这里不再详解堆喷射技术。

4.2.3MSF中的自动化浏览器攻击

metasploit框架中包含一些针对浏览器及插件的模块,并且还提供了辅助模块 server/browser——autopwn,它在接到来自浏览器的请求后,会依次做三个操作:提取浏览器指纹,自动化渗透,列出渗透模块,但是他不会列出第三方插件的利用模块,因为它无法提取到插件的指纹。

4.3针对应用软件的渗透攻击

对于这类安全漏洞,攻击者一般会恶意构造符合正常文件格式的畸形文件,来进行漏洞利用。

4.3.1内存攻击技术ROP的实现

攻击者在溢出程序后,并不执行栈中的shellcode,而是寻找程序已加载模块中的一些特殊指令块,配合栈上的压栈参数,返回地址等数据,将这些孤立的指令块联系起来,从而实现一定的功能,最终完成远程代码执行的目标。但是在哪些苛刻的坏字符的限制条件下,实现的难度太大,根据这个思想,现在有很多技术绕过DEP

1.将包含shellcode的内存页面设置为可执行状态。

2.先利用virtualalloc函数开辟一段具有执行权限的内存空间,然后将shellcode复制到这段代码中

3.通过一些函数直接关掉DEP机制,常用的有ZwSetInformation函数

时间: 2024-12-11 13:11:02

《metasploit渗透测试魔鬼训练营》学习笔记第六章--客户端渗透的相关文章

Metasploit 渗透测试魔鬼训练营读书笔记(连续更新一)

1.1 什么是渗透测试 1.1.1 渗透测试的起源与定义 如果大家对军事感兴趣,会知道各国军队每年都会组织一些军事演习来锻炼军队的攻防战术与作战能力.在信息科技的发源地--美国的军事演习中,将美军称为"蓝军",将假想敌称为"红军",而这种军事演习的方式也在20世纪90年代时,由美国军方与国家安全局引入到对信息网络与信息安全基础设施的实际攻防测试过程中.由一群受过职业训练的安全专家作为"红队"(Red Team),对接受测试的防御方"蓝队

Android学习笔记—第六章 Asynctask异步加载

第六章 Asynctask 异步加载 1.好处:不需要创建线程就可管理线程 缺点:步骤多 2.步骤: (1)创建一个类继承Asynctask<xxx,xxx,xxx>; 三个泛型参数: 第一个:决定了execute()方法的传入值类型,决定了doInBackground()方法的传入值类型 第二个:决定了publishProgress()方法的传入值类型,决定了onProgressUpdate()方法的传入值类型 第三个:决定了doInBackground()方法的返回值类型,决定了onPos

Java学习笔记—第六章 流程控制语句

第六章  熟悉Java的流程控制语句 Java的程序流程控制分为顺序结构.选择结构.循环结构和跳转语句. 顺序结构:按照程序代码自上而下执行,直到程序结束,中间没有任何判断和跳转. 选择结构(分支结构):判断给定的条件,根据判断结果控制程序的流程.包括if语句和switch语句. 2.1 if语句:通过判断给定表达式的值来决定程序的流程.常见if语句的形式有三种: (1)if(expression){ statement: } (2)if(expression){ statement; }els

小甲鱼零基础汇编语言学习笔记第六章之包含多个段的程序

在前面的几个章节中,我们的程序都是只有一个代码段,本章我们开始学习如何编写包含多个段的程序. 1.在代码段中使用数据 首先考虑这样一个问题,计算以下8个数据的和,结果存放在ax寄存器中: 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H 在前面的课程中,我们都是累加某些内存单元中的数据,并不关心数据本身,可现在我们要累加就是已经给定了数值的数据. 代码如下: 1 assume cs:codesg 2 codesg segment 3 dw 0123H

JavaScript高级程序设计学习笔记第六章--面向对象程序设计

1.ECMAScript没有类的概念,ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”,有点类似于散列表 2.ECMAScript 中有两种属性:数据属性和访问器属性. 数据属性: [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性. [[Enumerable]]:表示能否通过 for-in 循环返回属性. [[Writable]]:表示能否修改属性的值. [[Valu

【数据分析 R语言实战】学习笔记 第六章 参数估计与R实现(下)

6.3两正态总体的区间估计 (1)两个总体的方差已知 在R中编写计算置信区间的函数twosample.ci()如下,输入参数为样本x, y,置信度α和两个样本的标准差. > twosample.ci=function(x,y,alpha,sigma1,sigma2){ + n1=length(x);n2=length(y) + xbar=mean(x)-mean(y) + z=qnorm(1-alpha/2)*sqrt(sigma1^2/n1+sigma2^2/n2) + c(xbar-z,xb

matlab学习笔记第六章——基本符号演算和微分方程

1.MATLAB可以使用limit命令计算极限. >> syms x >> limit((x^3 + 1)/(x^4 + 2)) ans = 1/2 2.我们可以在MATLAB中调用isequal命令检查两个量是否相等,如果两个量不相等,isequal返回0. 3.我们使用下面的语法可以计算limx→∞f(x)形式的极限:limit(f,inf). 4.计算左右极限:我们必须给函数传递用来计算极限的变量和“left”.“right”字串,并用逗号分隔开. 5.通过调用diff命令,

《Spring实战》学习笔记-第六章:web视图解析

本章主要内容包括: 将model数据展现为HTML JSP视图的使用 在前面的章节中,我们主要关注点在于编写控制来处理web请求,同时也创建了一些简单的视图来展现请求返回的model数据,本章我们将主要讨论在控制器完成请求处理之后和将返回结果展示到用户的浏览器之前,这个过程之间发生了什么. 理解视图解析 在之前章节中所编写的控制器中并没有直接生成HTML的方法,它只是将数据填充到model中,然后将model传送到视图中进行展现. Spring MVC中定义了一个ViewResolver接口:

深入理解 C 指针阅读笔记 -- 第六章

Chapter6.h #ifndef __CHAPTER_6_ #define __CHAPTER_6_ /*<深入理解C指针>学习笔记 -- 第六章*/ typedef struct __person { char* name; char* title; unsigned int age; }person; /*结构体内存的释放问题*/ void __struct_memory_test(); #endif Chapter6.cpp #include "Chapter6.h&quo