三.网络服务渗透攻击
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. python循环删除列表里的元素!漏删!

    li = [1,2,3,4,5,6] for i in li: if i<3: li.remove(i) print(li) #输出的结果是 [2,3,4,5,6]    2没有remove掉 ...

  2. Thymeleaf学习记录(2)--自动编译设置

    了方便每次修改HTML文件都能实时刷新,做一下更改. 在application.properties文件加入以下命令: #thymeleaf start spring.thymeleaf.mode=H ...

  3. JQuery 更改属性 JQ对象循环 each 全选反选 三元运算

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. LeetCode 514----Freedom Trail

    问题描述 In the video game Fallout 4, the quest "Road to Freedom" requires players to reach a ...

  5. CentOS6.5(2)----安装Tab键自动补全功能:bash-completion

    首先要确保网络畅通,因为该过程要通过网络下载相关的软件包. 在 root 用户下,使用 cd ~/Downloads 命令进入下载文件夹,然后依次输入如下三个命令: [root@prime:~/Doc ...

  6. MUI框架-12-使用原生底部选项卡(凸出图标案例)

    MUI框架-12-使用原生底部选项卡(凸出图标案例) 今天,用 mui 做 app 时,遇到了可能各位都遇到过的头疼问题:底部中间图标凸起,如下图: 最后有源代码 [提示]:有人问我在 HBuilde ...

  7. .PHONY makefile中的伪目标

    我的理解: 拿clean举例,如果make完成后,自己另外定义一个名叫clean的文件,再执行make clean时,将不会执行rm命令. 为了避免出现这个问题,需要.PHONY: clean === ...

  8. ExpressRoute 常见问题

    什么是 ExpressRoute? ExpressRoute 是一项 Azure 服务,允许在 Microsoft 数据中心与本地环境或共同租用设施中的基础结构之间创建专用连接. ExpressRou ...

  9. 如何找回SQL Server实例安装时的序列号

    当需要再次安装SQL Server时,如果序列号找不到了,可以试着从已经安装的实例里找回序列号,因为安装完SQL Server后,序列号(Product Key)被保存在注册表里: MSDN订阅下载的 ...

  10. 在NGUI中高效优化UIScrollView之UIWrapContent的简介以及使用

    前言: 1.我使用的NGUI版本为 v3.7.5,不知道老版的NGUI是否有UIWrapContent 这个脚本. 2.本文讲解主要以图片显示的例子为主,本文例子UIScrollView是水平方向,一 ...