教材《网络攻防技术》第九、十章学习
第9章 恶意代码安全攻防
9.1 恶意代码基础知识
- 恶意代码是指使计算机按照攻击者的意图执行以达到恶意目标的指令集。类型包括:计算机病毒、蠕虫、恶意移动代码、后门、特洛伊木马、僵尸程序、内核套件、融合型恶意代码。
- 计算机病毒
- 基本特性:感染性、潜伏性、可触发性、破坏性、衍生性。
- 感染及引导机制:可执行文件、引导扇区、支持宏指令的数据文件。
- 传播机制:移动存储、电子邮件、下载、共享目录。
- 网络蠕虫
- 基本特性:通过网络自主传播。
- 组成结构:弹头、传播引擎、目标选择算法、扫描引擎、有效载荷。
- 后门与木马。后门是允许攻击者绕过系统常规安全控制机制的程序,能够按照攻击者自己的意图提供访问通道;而木马作为特洛伊木马的简称,是指一类看起来具有某个有用或者善意目的,但实际掩盖着一些隐藏恶意功能的程序。
- 僵尸程序与僵尸网络
- 僵尸网络功能结构:网络控制器和僵尸程序,其中僵尸程序分为主体功能模块和辅助功能模块。
- 僵尸程序的命令与控制机制:基于IRC协议的命令与控制机制、基于HTTP协议的命令与控制机制、基于P2P协议的命令与控制机制。
- Rootkit。分为用户模式Rootkit和内核模式Rootkit。其中内核模式Rootkit包括Linux内核模式Rootkit和Windows内核模式Rootkit。
9.2 恶意代码分析方法
- 恶意代码的静态分析技术:
- 反病毒软件扫描
- 文件格式识别
- 字符串提取分析
- 二进制结构分析
- 反汇编
- 反编译
- 代码结构与逻辑分析
- 加壳识别与代码脱壳
- 恶意代码的动态分析技术:
- 快照对比
- 系统动态行为监控
- 网络协议栈监控
- 沙箱
- 动态调试
第10章 软件安全攻防——缓冲区溢出和Shellcode
10.1 软件安全概述
- 安全漏洞:在系统安全流程、设计、实现或内部控制中所存在的缺陷和弱点,能够被攻击者所利用并导致安全侵害或对系统安全策略的违反,包括三个基本元素:系统的脆弱性或缺点、攻击者对缺陷的可访问性以及攻击者对缺陷的可利用性。
- 软件安全漏洞类型:内存安全规范类、输入验证类、竞争条件类、权限混淆与提升类。
10.2 缓冲区溢出基础概念
计算机程序中存在的一类内存安全违规类漏洞,在计算机程序向特定缓冲区内填充数据时,超出了缓冲区本身的容量,导致外溢数据覆盖了相邻内存空间的合法数据,从而改变了程序执行流程破坏系统运行完整性。
10.3 Linux平台上的栈溢出与Shellcode
- Linux平台栈溢出攻击技术:NSR、RNS、RS三种模式。NSR和RNS模式适用于本地缓冲区溢出和远程栈溢出攻击,而RS模式只能用于本地缓冲区溢出攻击。
- Linux平台的Shellcode实现技术:Linux本地Shellcode实现机制、Linux远程Shellcode实现机制。
10.4 Windows平台上的栈溢出与Shellcode
- Windows平台栈溢出攻击技术机理:对程序运行过程中废弃栈的处理方式差异、进程内存空间的布局差异、系统功能调用的实现方式差异。
- Windows平台Shellcode实现技术:Windows本地Shellcode、Windows远程Shellcode。
10.5 堆溢出攻击
- 函数指针改写。
- C++类对象虚函数表改写。
- Linux下堆管理glibc库free()函数本身漏洞。
10.6 缓冲区溢出攻击的防御技术
- 尝试杜绝溢出的防御技术
- 允许溢出但不让程序改变执行流程的防御技术
- 无法让攻击代码执行的防御技术
课后习题
P379 分析恶意代码样本rada
- 准备工作(kali)

+ 使用`md5sum rada.zip`查看md5值,确认文件完整性。
+ 使用`file RaDa.exe`确认二进制文件格式。
+ 使用`strings RaDa.exe`取得文件中的可打印文件,发现是乱码,推测恶意代码程序加壳了。
- 在windows 7中开启process monitor(win7及之后的版本,process monitor代替了filemon和regmon)

- 开启wireshark

- 使用Exeinfo PE工具查看RaDa.exe软件加壳情况,发现使用UPX加壳

- 在UPX官网下载UPX脱壳工具,脱壳失败

- 使用超级巡警自动脱壳器V1.3脱壳成功

- 在cmd中使用`RaDa_unpacked.exe --gui`即可打开软件的图形界面。也可以使用`--help`、`authors`、`--server`等参数。

P423 SEED缓冲区溢出实验
- 有漏洞的程序stack。它一开始从一个叫“badfile”的文件读了一个输入,然后将这个输入传递给了另一个 bof()功能里的缓冲区。原始输入最大长度为 517 bytes,然而 bof()的长度仅为 12 bytes。由于 strcpy()不检查边界,将发生缓冲区溢出。由于此程序有效执行用户为 root,如果一个普通用户利用了此缓冲区溢出漏洞,他有可能获得 root shell。应该注意到此程序是从一个叫做“badfile”的文件获得输入的,这个文件受用户控制。现在我们的目标是为“badfile”创建内容,这样当这段漏洞程序将此内容复制进它的缓冲区,便产生了一个 shell。

- 攻击漏洞exploit1。将为“badfile”生成内容。然后运行漏洞程序stack,如果攻击正确实现,将得到一个shell。

- 先运行exploit1,然后运行漏洞程序stack,如果攻击正确实现,将得到一个shell。

- 让`bin/sh`指向`/bin/bash`,重新攻击。

kali视频学习
36.KaliSecruity-压力测试工具
压力测试通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能够提供的最大的服务级别的测试。通俗地讲,压力测试是为了测试应用程序的性能会变得不可接受。
Kali下压力测试工具包含VoIP压力测试、Web压力测试、网络压力测试及无线压力测试。
- Voip压力测试,包括iaxflood和inviteflood。

- WEB压力测试工具THC-SSL-DOS。它不需要任何带宽,只需要一台执行单一攻击的电脑。命令为`thc-ssl-dos -l 500 目标IP 443 --accept`。

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

+ Macof工具可做泛洪攻击。交换机Mac表的空间有限,当Mac表存满Mac地址时就会报错,并且进入非正常状态。在此状态下交换机会把接收的信息用广播的形式发出去,这样就可以用抓包工具把广播的信息抓到。
+ Siege可以根据配置对一个Web站点进行多用户的并发访问,记录每个用户所有请求过程的响应时间,并在一定数量的并发访问下重复进行。

+ T50具有独特的数据包注入工具,功能强大,支持unix系统,可进行多种协议数据包注入,是唯一可以使用GRE封装协议的工具。
- 无线压力测试,包括MDK3和Reaver。
37.KaliSecruity-数字取证工具
- PDF取证工具peepdf,是一个使用python编写的PDF文件分析工具,它可以检测到恶意的PDF文件。其设计目标是为安全研究人员提供PDF分析中可能用到的所有组件,无需使用3或4种工具来完成同一件任务。

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

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

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

- 取证哈希验证工具集md5deep,是一套跨平台的方案,可以计算和比较MD5等哈希加密信息的摘要MD5,SHA-1,SHA-256,Tiger,Whirlpool。
- 数字取证套件。Autopsy是一款数字取证平台,提供了一个浏览器平台,访问本地端口9999。DFF是数字取证工作辅助工具,它具有灵活的模块系统,具有多种功能,包括:回复错误或崩溃导致的文件丢失,证据的研究和分析。DFF提供了一个强大的体系结构和一些列有用的模块。
- 取证镜像工具集主要是针对镜像文件的取证分析,如mmstat与mmls等命令。
38.KaliSecruity-报告工具与系统服务
一次完整的渗透测试,最后要完成一份报告作为一个小结。相应的,Kali Linux为安全工程师准备了报告工具集。
- Dradis是一个独立的web应用程序,它会自动在浏览器中打开
https://127.0.0.1:3000
。设置密码,使用任何登录名即可进入Dradis框架进行使用。

浏览器中:

- keepnote,一款本地精简的笔记本软件。

有如下特点:
+ 富文本格式:彩色字体、内置图片、超链接,能保存网页图片文字等完整内容。
+ 树形分层组织内容,分门别类,一目了然。
+ 全文搜索
+ 综合截图
+ 文件附件
+ 集成的备份和恢复
+ 拼写检查(通过gtkspell)
+ 自动保存
+ 内置的备份和恢复(zip文件存档)
- 媒体捕捉工具包括Cutycapt(将网页内容截成图片保存)和Recordmydesktop(屏幕录像工具)。
- 证据管理工具Maltego Casefile。
- MagicTree可以帮助攻击者进行数据合并、查询、外部命令执行(如直接调用nmap,将扫描结果直接导入tree中)和报告生成,所有数据都会以树形结构存储。
下载jar包,使用`java -jar MagicTree-build18141.jar `命令即可打开。

- Truectypt,免费开源的加密软件,同时支持Windows,OS,Linux等操作系统。
- 系统服务目录。主要是方便我们及时启动或关闭某些服务,命令行输入`service 服务名 start`和`service 服务名 stop`可以达到相同效果。
《Python 黑帽子》第十、十一章
代码托管:
https://github.com/jsjliyang/python3-Black.Hat/tree/master/chapter10
https://github.com/jsjliyang/python3-Black.Hat/tree/master/chapter11