三.网络服务渗透攻击
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. slot的使用

    1.slot https://www.w3cplus.com/vue/vue-slot.html 2.ref https://www.cnblogs.com/xumqfaith/p/7743387.h ...

  2. C#制作手机网站

    <meta name="viewport" content="width=device-width, initial-scale=1.0"> //在 ...

  3. 撩课-Java每天5道面试题第14天

    101.请解释下 ORM? 对象关系映射(Object Relational Mapping)模式 是一种为了解决面向对象与关系数据库 存在的互不匹配的现象的技术. 简单来说, ORM是通过使用描述对 ...

  4. mybatis之typehandles

    mybatis之typehandles 无论是Mybatis在预处理语句PreparedStatement中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成ja ...

  5. 最短路问题(dijkstral 算法)(优化待续)

    迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以起始点为中心向 ...

  6. Sprng IOC&AOP&事务梳理 (文章整理new)

    IOC <理解 IOC> <IOC 的理解与解释> 正向控制:传统通过new的方式.反向控制,通过容器注入对象. 作用:用于模块解耦. DI:Dependency Inject ...

  7. 在ES6中如何优雅的使用Arguments和Parameters

      原文地址:how-to-use-arguments-and-parameters-in-ecmascript-6 ES6是最新版本的ECMAScript标准,而且显著的改善了JS里的参数处理.我们 ...

  8. Spring Data MongoDB 模糊查询

    Pattern pattern = Pattern.compile("^.*" + value + ".*$"); Query query = new Quer ...

  9. Box(视图组件)如何在多个页面不同视觉规范下的复用

    本文来自 网易云社区 . 问题描述 Android App中的页面元素,都是由一个个Box(可以理解成一个个自定义View组件和Widget同级)组成,这些Box可以在不同的页面.不同的模块达到复用的 ...

  10. MySQL复制报错(Slave failed to initialize relay log info structure from the repository)

    机器重启以后,主从出现了问题,具体报错信息: Slave failed to initialize relay log info structure from the repository 解决方案: ...