2017-2018-2 20179215《网络攻防实践》第九周作业

2017-2018-2 20179215 《网络攻防实践》 第九周 学习总结

教材学习总结

1.恶意代码

概述

恶意代码是指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。最常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。
特征:
恶意的目的,获取靶机权限、用户隐私等
本身是计算机程序,可以执行,并作用于靶机
通过执行发生作用,一般来说不运行是没问题的

恶意代码分析

在大多数情况下,进行恶意代码分析时,我们将只有恶意代码的可执行文件本身,而这些文件并不是我们人类可读的。为了了解这些文件的意义,你需要使用各种工具和技巧,而每种只能揭露出少量的信息。所以在实战中,我们要综合使用各种工具,才能看到一个全貌。
恶意代码分析有两类基本方法:

  • 静态分析:在没有运行恶意代码时对其进行分析的技术
  • 动态分析:相比较静态分析而言,则需要运行恶意代码,通过其产生的行为,如对计算机中注册表、文件的更改,网络的连接等动态数据进行分析,从而确定其具体行为

2.缓冲区溢出和Shellcode

软件安全漏洞包括系统的脆弱性或缺陷、攻击者对缺陷的可访问性和攻击者对缺陷的可利用性三个元素。

软件安全具有复杂性、可扩展性、连通性。软件安全漏洞有以下几类,有内存安全违规类、输入验证类、竞争条件类、权限混淆与提升类。

缓冲区溢出的概念,即在计算机程序向特定缓冲区内填充数据时,超出了缓冲区本身的容量,导致外溢数据覆盖了相邻内存空间的合法数据,从而改变了程序执行流程破坏系统运行完整性。

Linux和Windows平台上的栈溢出和Shellcode,并介绍了相关的攻击技术。堆溢出是缓冲区溢出的第二种类型的攻击方案,比栈溢出更加复杂。

缓冲区溢出的防御技术,有尝试杜绝溢出、允许溢出但不让程序改变执行流程、无法让攻击代码执行三种方法。

缓冲区溢出漏洞实践

缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。

1.输入命令安装一些用于编译32位C程序的东西:

sudo apt-get update
sudo apt-get install lib32z1 libc6-dev-i386
sudo apt-get install lib32readline-gplv2-dev 

2.输入命令linux32和/bin/bash进入32位linux环境:

3.Ubuntu和其他一些Linux系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。因此本次实验中,我们使用以下命令关闭这一功能:

sudo sysctl -w kernel.randomize_va_space=0

4.为了进一步防范缓冲区溢出攻击及其它利用shell程序的攻击,许多shell程序在被调用时自动放弃它们的特权。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash:

sudo su
cd /bin
rm sh
ln -s zsh sh
exit

5.一般情况下,缓冲区溢出会造成程序崩溃,在程序中,溢出的数据覆盖了返回地址。而如果覆盖返回地址的数据是另一个地址,那么程序就会跳转到该地址,如果该地址存放的是一段精心设计的代码用于实现其他功能。

6.漏洞程序

把以下代码保存为“stack.c”文件,保存到 /tmp 目录下。

编译该程序,并设置SET-UID。命令如下:

sudo su
gcc -m32 -g -z execstack -fno-stack-protector -o stack stack.c
chmod u+s stack
exit

GCC编译器有一种栈保护机制来阻止缓冲区溢出,所以我们在编译代码时需要用 –fno-stack-protector 关闭这种机制。而 -z execstack 用于允许执行栈。

7.攻击程序

我们的目的是攻击刚才的漏洞程序,并通过攻击获得root权限。
把以下代码保存为“exploit.c”文件,保存到 /tmp 目录下。现在我们要得到shellcode在内存中的地址,输入命令:

gdb stack
disass main

结果如图:

根据语句 strcpy(buffer+100,shellcode); 我们计算shellcode的地址为 0xffffd060(十六进制)+100(十进制),修改exploit.c文件:将 x??x??x??x?? 修改为 xc4xd0xffxff 然后,编译exploit.c程序:

8.运行结果

先运行攻击程序exploit,再运行漏洞程序stack:

视频学习总结

36.KaliSecurity - 压力测试工具

压力测试通过确定一个系统的瓶颈或者不能接受的性能特点,来获得系统能提供的最大的服务级别的测试。通俗的讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。kali下压力测试工具宝库VoIP压力测试,WEB压力测试,网络压力测试及无线压力测试四个分类。

(1)VoIP压力测试工具

包括iaxflood和inviteflood

(2)THC-SSL-DOS

借助THC-SSL-DOS攻击工具,任何人都可以把提供SSL安全连接的网站攻击下线,这种攻击方法被称为SSL拒绝服务攻击(SSL DOS)。德国黑客织“The hacker's choice”发布THC SSL DOS,利用SSL中的已知弱点,迅速消耗服务器资源,与传统DDoS工具不同的是,它不需要任何带宽,只需要一台执行单一攻击的电脑。漏洞存在于协议的renegotiation过中renegotiation被用于浏览器到服务器之间的验证。

(3)dhcpig

耗尽DHCP资源池的压力测试

(4)Macof

可做泛洪攻击

(5)Siege

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

(6)T50压力测试

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

(7)无线压力测试

mdk3和reaver

37.KaliSecurity - 数字取证工具

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

(1)PDF取证工具

peepdf是一个使用python编写的PDF文件分析工具,它可以检测恶意的PDF文件。其设计目标是为安全研究人员提供PDF分析中可能使用到的所有组件,无需使用3或者4中工具来完成同一件任务。

(2)反数字取证chkrootkit

Linux下查找后门的工具,是判断系统是否被植入Rootkit的利器。

(3)内存取证工具

volatility是开源的windowa,Linux,MAC,Android的内存取证分析工具,由python编写成,命令行操作,支持各种操作系统。

(4)取证分隔工具binwalk

binwalk是一个固定的分析工具,旨在协助研究人员对固件非分析,提取及逆向工程用处。简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块,还有重要的一点的是可以轻松的扩展。借助binwalk有个很强大的功能是提取文件(压缩包)中存在的隐藏文件(或内容文件),亦可分析文件格式。,解压缩包,查看压缩包。

binwalk -e 文件 解压文件:

发现自动生成一个压缩文件包:

(5)取证哈希验证工具集

md5deep是一套跨平台的方案,可以计算和比较MD5等哈希加密信息的摘要MD5,SH-1,SHA-256,Tiger,Whirlpool.

38.KaliSecurity - 报告工具与系统服务

(1)Dradis

Dradis是一个用于提高安全监测效率的信息共享框架(协作平台),Dradis提供了一个集中地信息仓库,用于标记我们目前已经做的工作和下一步计划。

(2)Keepnote

一个很精简的笔记软件,特点如下:

富含文本格式,彩色字体,内置图片,超链接,树型分层组织内容,全文搜索,综合截图,文件附件,集成的备份和恢复,拼写检查(通过gtkspell),自动保存,内置的备份和恢复(zip文件存档)

(3)Recordmydesktop

屏幕录像工具,用来录制桌面。

(4)Magic Tree

是一个面向渗透测试人员的工具,可以帮助你轻松直接的进行数据合并,查询,外部命令执行和报告生成,所有的数据都会以树形结构存储,非常方便。

(5)Truecrypt

是一款免费开源的加密软件,同时支持windows vista,7/Xp,MAc OS X,linux等操作系统。

(6)服务功能介绍

可以直接使用命令行结束工具服务。
每一项对应每一项的服务。

原文地址:https://www.cnblogs.com/yl-930/p/8998597.html