三.网络服务渗透攻击
3.1 内存攻防技术
     3.1.1 缓冲区溢出漏洞机理
             缓冲区溢出是程序由于缺乏对缓冲区的边界条件检查而引起的一种异常行为。
             一般根据缓冲区溢出的内存位置不同,将缓冲区溢出分为栈溢出和堆溢出。
     3.1.2 栈溢出利用原理
            栈溢出发生在向栈中写数据时,当数据长度超过栈分配的空间时,就会造成溢出。
            ①覆盖函数返回地址利用方式
               程序一般在执行函数时会把该函数返回地址和函数的调用参数,局部变量一起保存在栈中,这就给了攻击者溢出栈缓冲区从而达到修改函数返回地址的机会。
               由于程序每次运行时,栈中变量的地址都会变化,所以会通过一些跳转寄存器的指令作为跳板,使程序能够执行到栈中的shellcode,最常见的是以JMP ESP的地址来覆盖返回地址,从而使得程序执行该指令后重新跳转回栈中,来执行缓冲区溢出之后的数据。
            ②覆盖异常处理结构利用方式
               程序运行时可能会发生异常,此时就需要异常处理机制,windows提供了SEH来处理异常。
               异常处理结构以链表的形式存储在栈中,操作系统会从链表头到尾寻找处理此异常的函数,如果没找到,则由最后一个函数即系统默认的异常处理函数来负责。
               覆盖异常处理结构,就是用特定的地址覆盖栈中异常处理结构体中的异常处理函数指针,并触发异常,去加载篡改后的函数指针。
      3.1.3堆溢出利用原理
           堆是程序运行时动态分配的内存,位置不固定,具体实现比较复杂,这里只简单介绍最常见的空闲堆块操作引起的堆缓冲区溢出。
          空闲堆块含有两个指针,分别指向前后两个空闲块。
          同一个堆中的堆块内存通常是连续的,所以,若数据超出了某个堆块的大小,将会导致数据溢出覆盖堆块后方的相邻空闲块,包含的两个指针将会被覆盖。
          在得到这样的机会后,攻击者可以进行堆覆盖溢出。
      3.1.4缓冲区溢出利用的限制条件
            需要考虑缓冲区空间的大小、样式、过滤坏字符。
 
3.2 网络服务渗透攻击面
      3.2.1针对windows系统自带的网络服务渗透攻击
             1.NetBIOS网络服务
                以NBT协议来实现,包括UDP137端口上的NetBIOS名字服务,UDP138端口上的NetBIOS数据报服务和UDP139端口上的会话服务。利用NetBIOS的渗透攻击很少,metasploit没有此类模块。
             2.SMB服务
                针对SMB服务的渗透攻击模块在metasploit中的 exploit/windows/smb,其中只有少数直接针对SMB,大部分都是针对MSPRC over SMB通道。
             3.MSRPC 网络服务
               MSRPC是windows自带网络服务最大的攻击面,metasploit框架中也存在此类渗透模块,位于 exploit/windows/smb和exploit/windows/dcerpc。
             4.RDP远程桌面服务
               默认运行在3389端口。
      3.2.2针对windows操作系统微软网络服务的渗透攻击
             常见的有IIS服务,MSSQL服务,Exchange电子邮件服务,MSDTC服务,DNS域名服务,WINS服务等,可能存在着很大安全漏洞,从而成为攻击者的目标。
      3.2.3针对windows操作系统上第三方网络服务的渗透攻击
             常见的有Apache,IBMWebSphere,Tomcat,Oracle,Mysql,Ser-U,FileZilla等。攻击者通过扫描服务的默认端口,来探测是否使用了一些常见的第三方服务。
       3.2.4针对工业控制系统服务软件的渗透攻击
              工业控制系统指在工业领域用于控制生成设备的系统,包括SCADA系统,DCS以及其他一些设备控制器。metasploit 在 exploit/windows/scada目录中有很多针对这些软件的渗透模块。
       3.2.5Linux和Windows之间的差异
              ①进程内存空间的布局差异
                  windows的栈的内存地址的首字节均为0X00即NULL,通常是需要考虑的坏字符,而linux中栈的内存地址没有空字节,无需考虑坏字符导致输入截断的问题。
              ②对程序运行过程中废弃栈的处理方式差异
                 windows会向废弃的栈写入一些随机数据,而Linux不做任何操作
              ③系统功能调用的实现方式差异
                 windows通过API及内核处理程序调用链来完成系统功能调用,Linux通过”int 80“中断处理来调用系统功能,所以在实现shellcode存在不小的差异
              ④不同的动态链接库实现机制
                  Linux引入GOT表和PLT表,使用多种复位项,实现了”位置无关代码“,达到了更好的共享性能。
       3.2.6Linux系统服务渗透攻击原理
              和windows原理基本一致,针对Linux的攻击包含一些自身的特点。
              由于源代码开放,可以进行白盒测试。
              由于发行版众多,同样的漏洞针对不同的系统环境需要调整。
              Linux的安全性更加依赖用户。

《metasploit渗透测试魔鬼训练营》学习笔记第五章--网络服务渗透攻击的更多相关文章

  1. Programming Entity Framework-dbContext 学习笔记第五章

    ### Programming Entity Framework-dbContext 学习笔记 第五章 将图表添加到Context中的方式及容易出现的错误 方法 结果 警告 Add Root 图标中的 ...

  2. [HeadFrist-HTMLCSS学习笔记]第五章认识媒体:给网页添加图像

    [HeadFrist-HTMLCSS学习笔记]第五章认识媒体:给网页添加图像 干货 JPEG.PNG.GIF有何不同 JPEG适合连续色调图像,如照片:不支持透明度:不支持动画:有损格式 PNG适合单 ...

  3. 《metasploit渗透测试魔鬼训练营》学习笔记第四章—web应用渗透

    继续来学习metasploit...记好笔记是很重要的,下面开始正文: 二.WEB应用渗透技术     1.WEB应用渗透基础知识        先介绍WEB应用攻击的主要类型(大致介绍,具体请自行查 ...

  4. 《Spring实战》学习笔记-第五章:构建Spring web应用

    之前一直在看<Spring实战>第三版,看到第五章时发现很多东西已经过时被废弃了,于是现在开始读<Spring实战>第四版了,章节安排与之前不同了,里面应用的应该是最新的技术. ...

  5. 【马克-to-win】学习笔记—— 第五章 异常Exception

    第五章 异常Exception [学习笔记] [参考:JDK中文(类 Exception)] java.lang.Object java.lang.Throwable java.lang.Except ...

  6. opencv图像处理基础 (《OpenCV编程入门--毛星云》学习笔记一---五章)

    #include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgu ...

  7. 学习笔记 第五章 使用CSS美化网页文本

    第五章   使用CSS美化网页文本 学习重点 定义字体类型.大小.颜色等字体样式: 设计文本样式,如对齐.行高.间距等: 能够灵活设计美观.实用的网页正文版式. 5.1 字体样式 5.1.1 定义字体 ...

  8. [汇编学习笔记][第五章[BX]和loop指令]

    第五章[BX]和loop指令 前言 定义描述性符号“()”来表示一个寄存器或一个内存单元的内容,比如: (ax)表示ax中的内容,(al)表示al的内容. 约定符号ideta表示常量. 5.1 [BX ...

  9. [Python学习笔记][第五章Python函数设计与使用]

    2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...

随机推荐

  1. ASP.NET之HTML

    1.什么是html 用来描述网页的2.开发工具我们肯定是用vs啦3.img src 图片地址 <img src="img/aa.bmp" />; 4.超链接a标签 hr ...

  2. [编程] C语言的结构体

    结构体 struct 结构体名{} 变量名; 结构体变量: struct person{ char *name; int age; float score; } student; 成员的获取和赋值 / ...

  3. Spring学习笔记:spring与mybatis四种整合方法

    1.采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数.  (1)Spring配置文件: <!-- 引入jdbc ...

  4. 微信小程序button选中改样式-实现单选/多选

    小程序实现多button单选/多选 红色为选中状态 单选 多选 ①wxss /* pages/button-select/button-select.wxss */ .button_container ...

  5. python学习之老男孩python全栈第九期_day023知识点总结——类和对象命名空间、组合

    一. 类和对象命名空间类里 可以定义两种属性: 1. 静态属性 2. 动态属性 class Course: language = 'Chinese' def __init__(self, teache ...

  6. input textarea监听鼠标粘贴

    发现一个问题,在input/textarea中如果是鼠标粘贴内容进去,发现判断不了value的改变,html代码如下: <!doctype html> <html> <h ...

  7. drupal中安装CKEditor文本编辑器,并配置图片上传功能 之 方法二

    drupal中安装CKEditor文本编辑器,并配置图片上传功能 之 方法一 中介绍了ckeditor的安装和配置方法,其实还有另一种新方法,不用IMCE模块. 不过需要ckfinder的JS库,可以 ...

  8. chrome:插件、跨域、调试....

    chrome 调试小技巧 ctrl+shift+c 打开chrome的控制台选中一个元素,然后在控制台输入$0即可获取选中的元素,就可以对其进行操作了. $0.addEventListener(... ...

  9. flask框架下的jinja2模板引擎(2)(过滤器与自定义过滤器)

    flask框架下的jinja2模块引擎(1):https://www.cnblogs.com/chichung/p/9774556.html 这篇论文主要用来记录下 jinja2 的过滤器. 什么是过 ...

  10. hibernate简单入门教程(一)---------基本配置

    应用级别所以很粗浅 首先介绍一下hibernate框架: 1.优秀的持久化(通俗讲把内存上的短时间运行信息存储在持久化硬盘上)框架. 2.作用于持久层,因为没什么侵入性,所以同样适用于其他层面上的存储 ...