三.网络服务渗透攻击
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. 集群搭建之Hive配置要点

    注意点: 在启动Hive 的时候要先启动Hadoop和MySQL服务. Mysql 和 Hive 搭建在 yan00机器上. part1:MySQL配置相关 安装和配置相关命令: Yum instal ...

  2. 设计模式之——外观or门面模式

    1.概念 定义一个高层的统一的外观接口类,该接口用于客户端调用,和一个实现类用来包装子系统中多个类,客户端可以通过客户端完成对子系统的方法调用. 2.适用场景 2.1 代码移植,降低了现有系统的复杂度 ...

  3. Java基础-基于《Thinking In Java》

    摘要 本文是对一些java基础知识的整理,把之前印象笔记里面的全部慢慢搬到这个blog来 为了方便就按照<Thinking In Java>的目录来编辑. 这里面的内容均为面试题相关,可能 ...

  4. oracle sum(col1) over(partition by col2 order by col3):实现分组递增汇总

    应公司业务要求,需要对数据进行分组汇总做辅助列进行查询 所以使用到了sum(col1) over(partition by col2 order by col3)函数,为了学习与提高在此进行记录. 1 ...

  5. Struts2 (四) — 拦截器

    一.拦截器 1.概述 1.1什么是拦截器 ​ 在struts2中,拦截器(Interceptor)是用来动态拦截Action执行的对象. ​ 拦截器有点类似以前Servlet阶段的Filter(过滤器 ...

  6. 回顾经典问题算法:LIS, LCS-(DP类别)

    LIS,最长递增子序列说明见:http://blog.csdn.net/sdjzping/article/details/8759870 #include <iostream> #incl ...

  7. 虚树(Bzoj3611: [Heoi2014]大工程)

    题面 传送门 虚树 把跟询问有关的点拿出来建树,为了方便树\(DP\) 在\(LCA\)处要合并答案,那么把这些点的\(LCA\)也拿出来 做法:把点按\(dfs\)序排列,然后求出相邻两个点的\(L ...

  8. 利用PIE实现全球云分布图的效果

    1.问题背景: 最近项目中获得了一份全球云分布图,客户要求把云显示在全球地图上,出现云的效果,如下图所示: [全球云分布图] [世界地图云示意图] 2.解决思路 咨询专业的业务人员,建议我测试下试试地 ...

  9. 淘宝 NPM 镜像

    使用说明 : 更多见  https://npm.taobao.org 你可以使用我们定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm: $ npm install -g cnpm ...

  10. HTTP协议教程

    文章内容: 1.HTTP协议概述 2.URL知识概述 3.HTTP消息结构详解 1.HTTP协议概述 定义: 超文本传送协议 (HTTP-Hypertext transfer protocol) 是分 ...