《网络攻防实践》第九周做业

《Python黑帽子》第10、十一章

Black_Hat_Python_Chapter10
Black_Hat_Python_Chapter11python

《网络攻防技术》第9、十章

第九章 恶意代码安全攻防

本章主要介绍了恶意代码的攻防,经过介绍几种恶意代码的原理和大量的实例,采用静态分析与动态分析技术手段进行结构与行为的剖析,从而充分认知恶意代码。git

一、恶意代码基础知识
  恶意代码是指使计算机按照攻击者的意图执行以达到恶意目标的指令集。类型包括:计算机病毒、蠕虫、恶意移动代码、后门、特洛伊木马、僵尸程序、内核套件、融合型恶意代码。github

  • 计算机病毒web

    • 基本特性:感染性、潜伏性、可触发性、破坏性、衍生性
    • 感染及引导机制:可执行文件、引导扇区、支持宏指令的数据文件。
    • 传播机制:移动存储、电子邮件、下载、共享目录。
  • 网络蠕虫算法

    • 基本特性:经过网络自主传播
    • 组成结构:弹头、传播引擎、目标选择算法、扫描引擎、有效载荷
  • 后门与木马sql

  后门是容许攻击者绕过系统常规安全控制机制的程序,可以按照攻击者本身的意图提供访问通道;而木马做为特洛伊木马的简称,是指一类看起来具备某个有用或者善意目的,但实际掩盖着一些隐藏恶意功能的程序。shell

  • 僵尸程序与僵尸网络浏览器

    • 僵尸网络功能结构:网络控制器和僵尸程序,其中僵尸程序分为主体功能模块和辅助功能模块
    • 僵尸程序的命令与控制机制:基于IRC协议的命令与控制机制、基于HTTP协议的命令与控制机制、基于P2P协议的命令与控制机制
  • Rootkitsass

用户模式Rootkit和内核模式Rootkit。其中内核模式Rootkit包括Linux内核模式Rootkit和Windows内核模式Rootkit安全

二、恶意代码分析方法

  • 恶意代码的静态分析技术:反病毒软件扫描、文件格式识别、字符串提取分析、二进制结构分析、反汇编、反编译、代码结构与逻辑分析、加壳识别与代码脱壳。
  • 恶意代码的动态分析技术:快照对比、系统动态行为监控、网络协议栈监控、沙箱、动态调试。

第十章 软件安全攻防——缓冲区溢出和Shellcode

  本章针对缓冲区溢出这类最为基础与传统的安全漏洞类型,详细介绍了它的基本概念、渗透攻击技术原理与具体过程,以及经过缓冲区溢出攻击注入Shellcode的实现技术原理。最后,为软件开发与使用人员提供了防护缓冲区溢出攻击的技术和方法。

一、软件安全概述

  • 安全漏洞:在系统安全流程、设计、实现或内部控制中所存在的缺陷和弱点,可以被攻击者所利用并致使安全侵害或对系统安全策略的违反,包括三个基本元素:系统的脆弱性或缺点、攻击者对缺陷的可访问性以及攻击者对缺陷的可利用性。
  • 软件安全漏洞类型:内存安全规范类、输入验证类、竞争条件类、权限混淆与提高类。
    缓冲区溢出基本概念

二、缓冲区溢出
计算机程序中存在的一类内存安全违规类漏洞,在计算机程序向特定缓冲区内填充数据时,超出了缓冲区自己的容量,致使外溢数据覆盖了相邻内存空间的合法数据,从而改变了程序执行流程破坏系统运行完整性。

三、Linux平台上的栈溢出与Shellcode

  • Linux平台栈溢出攻击技术:NSR、RNS、RS三种模式。NSR和RNS模式适用于本地缓冲区溢出和远程栈溢出攻击,而RS模式只能用于本地缓冲区溢出攻击。
  • Linux平台的Shellcode实现技术:Linux本地Shellcode实现机制、Linux远程Shellcode实现机制

四、Windows平台上的栈溢出与Shellcode

  • Windows平台栈溢出攻击技术:Windows平台栈溢出攻击技术机理(对程序运行过程当中废弃栈的处理方式差别、进程内存空间的布局差别、系统功能调用的实现方式差别)、远程栈溢出攻击示例、野外Windows栈溢出实例
  • Windows平台Shellcode实现技术:Windows本地Shellcode、Windows远程Shellcode

五、堆溢出攻击

  • 函数指针改写
  • C++类对象虚函数表改写
  • Linux下堆管理glibc库free()函数自己漏洞

六、缓冲区溢出攻击的防护技术

  • 尝试杜绝溢出的防护技术
  • 容许溢出但不让程序改变执行流程的防护技术
  • 没法让攻击代码执行的防护技术

课后实践练习

分析恶意代码样本rada

一、使用FileAnalysis分析文件MD5值

二、使用Process Monitor监视RaDa.exe的行为,发现它在C盘建立了RaDa文件夹,下面建立了bin和tmp两个文件夹

三、再查看程序行为,发现其在注册表中设置了值,即在建立的RaDa\bin\RaDa.exe程序路径加入了注册表

四、后将路径切换到bin文件夹下,打开RaDa的图形化界面和做者等信息

五、使用PEiD程序扫描RaDa.exe,发现exe使用了UPX进行了加壳

六、后使用超级巡警之虚拟机自动脱壳器将该exe进行脱壳,生成RaDa_unpacked.exe

七、再扫描RaDa_unpacked.exe,发现该程序是使用VB进行编写开发

这是一个后门程序,运行并按照攻击者命令进行工做;RaDa除读取注册表和文件信息外,没有更多改写文件和注册表等行为;这个样本不具备传播和感染的性质,因此它不属于病毒和蠕虫;它也没有将本身假装成有用的程序以欺骗用户运行,因此他也不属于木马。

缓冲区溢出实验

在 /tmp 目录下新建一个 stack.c 文件:
$ cd /tmp
$ vi stack.c
按 i 键切换到插入模式,再输入以下内容:

经过代码能够知道,程序会读取一个名为“badfile”的文件,并将文件内容装入“buffer”。
GCC编译器有一种栈保护机制来阻止缓冲区溢出,因此咱们在编译代码时须要用 –fno-stack-protector 关闭这种机制。 而 -z execstack 用于容许执行栈。-g 参数是为了使编译后获得的可执行文档能用 gdb 调试。

注意下面的代码,\x??\x??\x??\x?? 处须要添上 shellcode 保存在内存中的地址,由于发生溢出后这个位置恰好能够覆盖返回地址。而 strcpy(buffer+100,shellcode); 这一句又告诉咱们,shellcode 保存在 buffer + 100 的位置。

其中,disass指令用于反汇编stack中的main函数:

接下来的操做:

根据语句 strcpy(buffer + 100,shellcode); 咱们计算 shellcode 的地址为 0xffffd060(十六进制) + 0x64(100的十六进制) = 0xffffd0c4(十六进制)。如今修改exploit.c文件!将 \x??\x??\x??\x?? 修改成 \xc4\xd0\xff\xff,以下图所示:

先运行攻击程序 exploit,再运行漏洞程序 stack,观察结果:

可见,经过攻击,得到了root 权限。

KaliSecurity

压力测试工具

压力测试经过肯定一个系统的瓶颈或者不能接受的性能点,来得到系统可以提供的最大的服务级别的测试。通俗地讲,压力测试是为了测试应用程序的性能会变得不可接受。
Kali下压力测试工具包含VoIP压力测试、Web压力测试、网络压力测试及无线压力测试。

  • Voip压力测试,包括iaxflood和inviteflood

  • web压力测试工具:THC-SSL-DOS
    借助THC-SSL-DOS攻击工具,任何人均可以把提供SSL安全链接的网站攻击下线,这种攻击方法称为SSL拒绝服务攻击(SSL-DOS)。德国黑客组织发布THC SSL DOS,利用SSL中已知的弱点,迅速耗费服务器资源,与传统DDoS工具不一样的是,它不须要任何带宽,只须要一台执行单一攻击的电脑。

  • 网络压力测试工具:dhcpig
    耗尽DHCP资源池的压力测试。

  • ipv6攻击工具包

  • IDS/IPS/WAF 压力测试工具:Inundator

  • Macof
    Macof工具可作泛洪攻击。交换机Mac表的空间有限,当Mac表存满Mac地址时就会报错,而且进入非正常状态。在此状态下交换机会把接收的信息用广播的形式发出去,这样就能够用抓包工具把广播的信息抓到。

  • Siege
    Siege是一个压力测试和评测工具,设计用于Web开发,评估应用在压力下的承受能力,能够根据配置对一个Web站点进行多用户的并发访问,记录每一个用户全部请求过程的响应时间,并在必定数量的并发访问下重复进行。

  • T50压力测试
    功能强大,且具备独特的数据包注入工具,T50支持 nix系统,可进行多种协议数据包注入,实际上支持15种协议。

  • 无线压力测试,包括MDK3和Reaver

数字取证工具

数字取证技术将计算机调查和分析技术应用于潜在的、有法律效力的电子证据的肯定与获取,一样他们都是针对黑客和入侵的,目的都是保障网络安全。

  • PDF取证工具
    pdf-parser和peepdf。peepdf是一个使用python编写的PDF文件分析工具,它能够检测到恶意的PDF文件。其设计目标是为安全研究人员提供PDF分析中可能用到的全部组件,无需使用3或4种工具来完成同一件任务。

  • 反数字取证chkrootkit
    Linux系统下查找rootkit后门工具。判断系统是否被植入Rootkit的利器。

  • 内存取证工具
    Volatility是开源的Windows、Linux、Mac、Android的内存取证分析工具,由python编写成,命令行操做,支持各类操做系统。

  • 取证分析工具binwalk
    Binwalk是一个固件的分析工具,旨在协助研究人员对固件分析,提取及逆向工程。简单易用,彻底自动化脚本,并经过自定义签名,提取规则和插件模块,更重要的一点是能够轻松扩展。
    借助binwalk中的一个很强大的功能——提取文件(压缩包)中的隐藏文件(或内容文件)。亦可分析文件格式。
    分析压缩包 binwalk .zip。
    binwalk -e *.zip 将文件所有解压,产生新的目录_zip.zip.extracted,还能够做为文件格式分析的工具。

  • 取证哈希验证工具集
    md5deep是一套跨平台的方案,能够计算和比较MD5等哈希加密信息的摘要MD5,SHA-1,SHA-256,Tiger,Whirlpool。

  • 取证镜像工具集
    针对镜像文件的取证工具,如mmsstat与mmls等命令。

  • 数字取证套件
    Autopsy是一款数字取证平台,提供了一个浏览器平台,访问本地端口9999。DFF是数字取证工做辅助工具,它具备灵活的模块系统,具备多种功能,包括:回复错误或崩溃致使的文件丢失,证据的研究和分析。DFF提供了一个强大的体系结构和一些列有用的模块。

报告工具与系统服务

一次完整的渗透测试,最后要完成一份报告做为一个小结。相应的,Kali Linux为安全工程师准备了报告工具集:

  • Dradis
    Dradis用于提升安全检测效率的信息共享框架(协做平台)。Dradis提供了一个集中的信息仓库,用于标记咱们目前已经作的工做和下一步计划。基于浏览器的在线笔记。

  • keepnote
    一款本地精简的笔记本软件,有以下特色:

    • 富文本格式:彩色字体、内置图片、超连接,能保存网页图片文字等完整内容。
    • 树形分层组织内容,分门别类,一目了然。
    • 全文搜索
    • 综合截图
    • 文件附件
    • 集成的备份和恢复
    • 拼写检查(经过gtkspell)
    • 自动保存
    • 内置的备份和恢复(zip文件存档)

  • 媒体捕捉工具Cutycapt
    将网页内容截成图片保存。

  • Recordmydesktop
    屏幕录像工具,能够把桌面的操做录制下来。

  • Maltego Casefile
    证据管理。

  • MagicTree
    一个面向渗透测试人员的工具,能够帮助攻击者进行数据合并、查询、外部命令执行(好比直接调用nmap)和报告生成。全部数据都会以树形结构存储,很是方便。

  • Truectypt
    免费开源的加密软件,同时支持Windows,OS,Linux等操做系统。

  • 系统服务介绍
    主要是方便咱们及时启动或关闭某些服务,命令行输入service 服务名 startservice 服务名 stop能够达到相同效果。
    • BeEF:对应XSS测试框架BeEF的启动与关闭;
    • Dradis:对应笔记分享服务Dradis的启动与关闭;
    • HTTP:对用Kali本机Web服务的启动与关闭;
    • Metasploit:对应Metasploit服务的启动与关闭;
    • Mysql:对应Mysql服务的启动与关闭;
    • Openvas:对应Openvas服务的启动与关闭;
    • SSH:对应SSH服务的启动与关闭;(远程链接最好不要开启)
相关文章
相关标签/搜索