2017-2018-2 20179207 《网络攻防技术》第九周作业

kali视频(36-38)

压力测试工具

压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。

Kali下压力测试攻击包括VoIP压力测试、WEB压力测试、网络压力测试及无线压力测试(包括之前介绍的MDK3和Reaver,本章不再赘述)四个分类。

VoIP是将模拟信号数字化,以数据封包的形式在IP网络上做实时传递。Voip压力测试工具包括iaxflood和inviteflood。

Asterisk作为应用最为广泛的开源VoIP产品,提出了基于统一服务端口的IAX协议,用于Asterisk服务器以及客户端之间的信令及音视频传输。iaxflood是利用IAX设计缺陷而发起洪水式攻击的工具

SIP是目前使用最广且接受度最高的VoIP信令协议。INVITE是SIP协议中负责发起会话请求的指令,inviteflood是针对该指令发起洪水式攻击的工具

借助WEB压力测试工具THC-SSL-DOS,任何人都可以把提供SSL安全连接的网站攻击下线,这种攻击方法称为SSL拒绝服务攻击(SSL-DOS)。该工具由德国黑客组织发布,默认同服务器建立400个SSL连接,并且快速进行重新协商renegotiation(renegotiation被用于浏览器到服务器之间的验证。),以达到大量消耗服务器CPU资源的目的。与传统DDoS工具不同的是,它不需要任何带宽,只需要一台执行单一攻击的电脑。命令thc-ssl-dos -l 500 目标IP 443 --accept 对目标IP及其端口(默认443端口)建立500个SSL连接,进行泛洪攻击,参数 -l 表示限制连接数量。

网络压力测试工具

dhcpig是耗尽DHCP资源池的压力测试。DHCP服务为新接入内网的计算机自动分配IP地址,而dhcpig工具借助Scapy大量伪造Mac地址,从DHCP服务器那里骗取IP,进而把DHCP所能分配的IP地址全部耗尽。这样,新加入网络的计算机将无法获取IP地址,从而无法上网。

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

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

T50具有独特的数据包注入工具,功能强大,支持unix系统,可进行多种协议数据包注入,是唯一可以使用GRE封装协议的工具。除了能够修改网络路由,让IT安全专家执行高级的“渗透测试”外,它还能在单个SOCKET上顺序发送所有的协议数据包。

数据取证工具

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

PDF取证工具peepdf是一个使用python编写的PDF文件分析工具,它可以检测到恶意的PDF文件。其设计目标是为安全研究人员提供PDF分析中可能用到的所有组件,无需使用3或4种工具来一起作业了。peepdf还对PDF嵌入的Javascript代码提供专门的分析功能,可以提取Javascript脚本进行解码、反转义、执行等各种操作。

反数字取证chkrootkit

chkrootkit是一个Linux系统下的查找检测rootkit后门的工具,是判断系统是否被植入Rootkit的利器。

内存取证工具

Volatility是开源的Windows、Linux、Mac、Android的内存取证分析工具,由python编写成,命令行操作,支持各种操作系统。该工具可以通过抓取的内存状态文件,分析出当时系统当时运行着哪些程序,系统的部分数据等。

详见 Linux下内存取证工具Volatility的使用

取证分割工具binwalk

固件的分析工具,旨在协助研究人员对固件分析,提取及逆向工程。简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块,更重要的一点是可以轻松扩展。

取证哈希验证工具集主要用作哈希验证,如对下载的文件进行哈希计算,计算它的MD5值并和官网的MD5值进行比较,以确定该文件是否被植入后门信息。

  • md5deep 是一套跨平台的方案,可以批量计算文件的哈希值,并和哈希值列表进行比对。该工具支持多种哈希算法,可以避免哈希碰撞问题。
  • rahash2 可以快速对文件整体、部分区块、字符串等执行加密解密和hash等各种操作。

数字取证套件

Autopsy是一款数字取证平台,也是Sleuth Kit和其他数字取证工具的图形接口。它被用于关于计算机的法律执行、军事、企业审查等,甚至还可以用它来恢复从相机记忆卡中的照片。Autopsy提供了一个浏览器平台,访问本地端口9999。

DFF是数字取证工作辅助工具,它具有灵活的模块系统,具有多种功能,包括:回复错误或崩溃导致的文件丢失,证据的研究和分析。DFF提供了一个强大的体系结构和一些列有用的模块。

取证镜像工具集主要是针对镜像文件的取证分析,如mmstat与mmls等命令。Kali Linux 还提供了许多其他的数字取证工具,大家可以做进一步研究,取证的思路对安全测试也有帮助。

报告工具与系统服务

一次完整的渗透测试,最后总要完成一份优雅的报告作为一个小结。相应的Kali为安全工程师准备了报告工具集。对于Kali下各项系统服务,也整理了单独的目录。

Dradis是一个用于提高安全检测效率的信息共享框架(协作平台),提供了一个集中的信息仓库,用于标记我们目前已经做的工作和下一步计划。Dradis是一个独立的web应用程序,它会自动在浏览器中打开https://127.0.0.1:3004。设置密码,使用任何登录名即可进入Dradis框架进行使用。

媒体捕捉工具包括Cutycapt(将网页内容截成图片保存)和Recordmydesktop(屏幕录像工具)。

证据管理:Maltego

MagicTree是一个面向渗透测试人员的工具,可以帮助攻击者进行数据合并、查询、外部命令执行(如直接调用nmap,将扫描结果直接导入tree中)和报告生成,所有数据都会以树形结构存储。

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

系统服务目录主要是方便我们及时启动或关闭某些服务,命令行输入service 服务名 startservice 服务名 stop可以达到相同效果。

  • BeEF:对应XSS测试框架BeEF的启动与关闭
  • Dradis:对应笔记分享服务Dradis的启动与关闭
  • Openvas:对应Openvas服务的启动与关闭

教材学习

RaDa恶意代码分析

使用 file 命令,strings 命令,以及文件脱壳器等对恶意程序 RaDa.exe 进行基本检测.

seed缓冲区溢出

1.首先先关闭 ASLR.

sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"

2.先把缓冲区中全部填充 A ,即让我们增加的部分,下面的代码来填入:

memset(&buffer,'A',517);

然后编译运行生成 badfile。

3.编译执行 stack.c,我们发现有段错误(这是预料之中的)。

4.下面我们开始 gdb 调试 stack 了。 我们在 bof 函数入口处加个断点,然后可以观察一下 ebp 栈基址周围的内存,我们再看 一下 bof 反汇编的代码,这段反汇编代码很容易读懂,首先是 ebp 入栈,ebp 作为栈基址, 然后给 bof 函数在栈上分配一个 0x18 的空间。将 bof 的参数即 str 的地址放到 esp+4 位置, 将 bof 函数中的 buffer 的地址放到 esp 位置,即 strcpy 函数调用所需要的两个参数,调用完 strcpy 函数后函数就返回。因此,我们知道栈上 buffer+12 的位置 EBP,buffer+16 的位置是 RET,因此,就需要在 buffer+16 的地方覆盖返回地址。

5.我们已经找到函数返回地址的位置了,那么我们该使返回地址跳转到什么位置呢?我们 看图 2,在离 bof 函数的栈基址 EBP 以下不远处有大量的 41414141,这个是 main 函数栈帧 上的 str[517]。我们使用 linux 下 RNS 攻击方式,需要在 str 中放入很长的 NOPs 及 shellcode, 那么我们可以使返回地址指向 str[517]所覆盖的内存区域中的某一点,这一点应该指向 NOPs。
我们设定一个返回地址:0xbffff3c0,这个地址大概是 str[200]的位置。那么 shellcode 放在 str[400]的位置,下面是我构造 buffer 的代码:

unsigned long ret=0xbffff3c0; memcpy(buffer+16,(char *)&ret,4);  memcpy(buffer+400,shellcode,strlen(shellcode));

6.编译 exploit1.c 并运行,再运行./stack,将得到 shell。但是这个 shell 并不是 root 权限的 shell

  1. 任务 2:
    修改 shellcode,在 shellcode 中增加 setuid(0),使得程序获得 root 权限。

  2. 任务 3:
    我们先打开 ASLR。然后运行./stack,发现报段错误。在 strcpy 函数返回后,返回地址成功的被覆盖 为 0xbffff3c0。
    不能够访问 0xbffff3c0 处的地址,这个内存 地址不在我们所申请分配的栈空间上。证明这个地址不在 NOPs 上,我们可以看到现在 buffer 内存块上的地址从 0xbfe679XX 开始的,这个和 0xbffff3c0 相差很大,因此没有如我们预期的 一样跳转到 NOPs 上。
    原来这里的 EBP 的位置发生了很大的变 化,所以 NOPs 也会跟着变化了,所以 0xbffff3c0 地址不可能跳转进入 NOPs 上去。

perl(whiledo.sh)脚本,功能是多次调用./stack 程序,大概一两分钟后 就会发现攻击成功。成功的原因是某一次bof函数随机的栈基址EBP和0xbffff3c0很相近时, 刚好让 0xbffff3c0 落入到 NOPs 上。 如果想使成功的概率尽可能的增加,那么就把 shellcode 移到 512 长度的缓冲区的最末 尾,中间全部用 NOP 填充。

  1. 任务 4:
    我们重新编译 stack.c 后运行,发现程序出错,并吐出内存信息,如图

Stack Guard 的机制:把%gs:0x14 的 cookie 放入 ebp-4 的位置,也就是缓冲区和返回地址之间。如果我们想通过覆盖缓冲区的方法来修改返回地址, 那么必定会修改 ebp-4 的值。最后在函数返回前,Stack Guard 会把 ebp-4 的值取出来 和%gs:0x14 比较,即判断原来放入栈上的 cookie 是否被修改了。如果检查出来被修改了就 调用错误处理的函数 –stack_chk_fail@plt,否则正常返回函数地址。

教材内容整理

恶意代码

恶意代码的类型

恶意代码类型 定义特征 典型实例
计算机病毒(Virus) 通过感染文件(可执行文件、数据文件、电子邮件等)或 磁盘引导扇区进行传播,一般需要宿主程序被执行或人 为交互才能运行 Brain, Concept, CIH
蠕虫(Worm) 一般为不需要宿主的单独文件,通过网络传播,自动复 制,通常无需人为交互便可感染传播 Morris, Code Red, Slammer
恶意移动代码(Malicious mobile code) 从远程主机下载到本地执行的轻量级恶意代码,不需要 或仅需要极少的人为干预。代表性的开发工具有: JavaScript, VBScript, Java,以及ActiveX Santy Worm
后门(Backdoor) 绕过正常的安全控制机制,从而为攻击者提供访问途径 Netcat, BO,冰河
特洛伊木马 (Trojan) 伪装成有用软件,隐藏其恶意目标,欺骗用户安装执行 Setiri 僵尸程序 (Bot) 使用一对多的命令与控制机制组成僵尸网络 Sdbot, Agobot
内核套件(Rootkit) 通过替换或修改系统关键可执行文件(用户态),或者 通过控制操作系统内核(内核态),用以获取并保持最高 控制权(root access) LRK, FU,hdef
融合型恶意代码 融合上述多种恶意代码技术,构成更具破坏性的恶意代 码形态 Nimda

缓冲区溢出和shellcode

缓冲区溢出安全漏洞基本原理:

一个根本问题

用户输入可控制的缓冲区操作缺乏对目标缓冲区的 边界安全保护

两个要素

缺乏边界安全保护:漏洞利用点 用户输入可控制:漏洞利用路径

三个挑战 – 成功溢出攻击

如何找出缓冲区溢出要覆盖和修改的敏感位置?

将敏感位置的值修改成什么?

执行什么代码指令来达到攻击目的?

posted @ 2018-04-27 16:29  Katherina.K  阅读(351)  评论(0编辑  收藏  举报