2018-2019-2 20189206 《网络攻防实践》 第九周作业
课本学习
恶意代码安全攻防
恶意代码基础知识
恶意代码定义与分类 |
-
恶意代码指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集
- 单纯的技术炫耀,或恶作剧
- 远程控制被攻击主机,使之能为攻击者的傀儡主机,满足其实施跳板攻击或进一步传播恶意代码的需要
- 窃取私人信息或机密信息
- 窃取计算、存储、带宽资源
- 拒绝服务、进行破坏活动
-
恶意代码类型
- 计算机病毒 是一种能够自我复制的代码,感染过程需要人工干预才能完成
- 蠕虫 一类自主运行的恶意代码,并不需要将自身嵌入到其他宿主程序中,一般不需要人工参与
- 恶意移动代码 移动代码可以从远程主机下载并在本地执行的轻量级程序,不需要或仅需要极少人为干预
- 特洛伊木马 一类伪装成有用的软件,隐藏其恶意目标的恶意代码
- 后门 是指一类能够绕开正常的安全控制机制
- 僵尸程序 攻击者出于恶意目的,隐藏其恶意目标的恶意代码
- 内和套件 在用户态通过替换或修改系统关键可执行文件,用以获取并保持最高控制权
恶意代码的命名规则
[恶意代码类型]恶意代码家族名称[.变种号]
计算机病毒 |
计算机病毒是一个能够感染其他程序的程序,靠修改其他程序,并把自身的拷贝嵌入其他程序而实现病毒的感染
病毒程序通过修改其他程序的方法将自己的精确复制或可能演化的形式放入其他程序中,从而感染它们
-
计算机病毒的基本特性
- 感染性
- 潜伏性
- 可触发性
- 破坏性
- 衍生性
-
计算机病毒的感染及引导机制
- 可执行文件 是计算机病毒最普遍的感染目标,可以执行文件作为宿主程序,当其被用户运行时,依附在在上面的病毒就可以被激活取得控制权
- 前缀感染机制 病毒将自身复制到宿主程序的开始
- 后缀感染机制 病毒将自身复制到宿主程序的末端,并在指令开始时加入一条转跳指令
- 插入感染机制 病毒在感染宿主程序时,病毒代码放在宿主程序的中间
- 引导扇区
- 通过BIOS定位带磁盘的主引导区,运行存储的主引导记录,接着从分区表中找到第一个活动分区,读取并执行这个活动分区的分区引导记录,而分区引导记录负责装载操作系统。
- 引导型病毒的感染目标为主引导区和分引导区
- 支持宏指令的数据文件
- 宏病毒:将自身以宏指令的方式复制到数据文件中,当被感染的数据文件被应用程序打开时,将自动执行宏病毒体,完成病毒的引导
- 可执行文件 是计算机病毒最普遍的感染目标,可以执行文件作为宿主程序,当其被用户运行时,依附在在上面的病毒就可以被激活取得控制权
网络蠕虫 |
一种通过网络自主传播的恶意代码。
-
基本特性 能够通过网络进行自主传播
-
组成结构
-
弹头 用于侵入目标系统,利用目标系统安全漏洞实施攻击
-
缓冲区溢出攻击
- 破坏目标系统服务中的内存结构
-
文件共享攻击
-
利用电子邮件传播
-
利用其它普通的错误配置
-
-
传播引擎 通过在目标系统上执行传播引擎指令,完成蠕虫样本的传播
-
目标选择算法和扫描引擎
- 一旦蠕虫在受害计算机中运行,目标选择算法开始寻找新的攻击目标,利用扫描引擎扫描每一个由目标选择算法确定的地址,确定其是否可以被攻击
- 电子邮件地址
- 主机列表
- 被信任的系统
- 网络邻居主机
- 域名服务
- 通过特定规则任意选择IP目标地址
- 一旦蠕虫在受害计算机中运行,目标选择算法开始寻找新的攻击目标,利用扫描引擎扫描每一个由目标选择算法确定的地址,确定其是否可以被攻击
-
有效载荷 附加的攻击代码,执行一些特殊目地的操作
- 植入后门
- 安装分布式拒绝服务攻击代理
- 组建僵尸网络
- 执行一个复杂计算
-
后门与木马 |
- 后门 能够为攻击者提供多种不同类型的访问通道
- 本地特权提升和本地账号
- 单个命令的远程执行
- 远程命令行解释访问器
- 远程控制GUI
- 无端口后门
在Windows平台中,后门工具可以利用自启动文件夹、注册表自启动项及预订计划任务三种方法达到自启动的效果
- 特洛伊木马
- 欺骗用户或系统管理员安装特洛伊木马程序
- 隐藏在计算机的正常程序中,将自己伪装成看起来属于该系统
- 隐藏和伪装技术有
- 命名伪装游戏
- 使用软件包装工具
- 攻击软件发布站点
- 代码下毒
僵尸程序与僵尸网络 |
僵尸网络是在网络蠕虫、特洛伊木马、后门工具等传统恶意代码形态的基础上发展融合而产生的一种新型攻击方式,它与蠕虫的区别在于是否受控,蠕虫一般为自主传播方式,而僵尸程序则是接受控制后进行攻击和传播
-
僵尸网络的功能结构
- 分为主体功能和辅助功能模块
- 主体功能中的命令与控制模块是整个僵尸程序的核心
- 分为主体功能和辅助功能模块
-
僵尸程序的命令与控制机制
- 基于IRC协议的命令与控制机制
- 基于HTTP协议的命令与控制机制
- 基于P2P协议的命令与控制机制
Rootkit |
Rootkit能够通过控制目标计算机操作系统的关键组件,来为攻击者提供强有力的手段,获取访问并隐藏在系统中。是用来获得root权限的kit工具包。
-
用户模式Rootkit
- 提供后门访问的二进制替换程序
- 隐藏攻击者的二进制替换程序
- 用于隐藏但不替换的二进制程序
- 另外一些零散工具
- 安装脚本
-
windows下实现用户Rootkit主要的三种技术
- Windows为了支持第三方工具扩展Windows的内置功能特性,提供了一些开发接口。用户模式rootkit可以使用这些开发接口,将自身实现的恶意功能逻辑插入到现有的Windows函数之间,无需覆盖Windows代码。
- Windows使用WFP机制,来防止操作系统关键文件被修改或替换,rootkit想要覆盖操作系统关键文件,必须使WFP功能失效。
- 用户模式rootkit还可以使用DLL注入和API挂钩技术,把恶意代码直接加入运行进程的内存空间
-
内核模式Rootkit
- 文件和目录隐藏
- 进程隐藏
- 网络端口隐藏
- 混杂模式隐藏
- 改变执行方向
- 设备截取和控制
恶意代码分析方法
代码分析:是按需求使用一定的规则、方法和工具对计算机程序进行分析,以推导出其程序结构、数据流程和程序行为的处理过程。
- 与分析良性代码相比,分析恶意代码的主要区别在于:
- 不能提前知道恶意代码的目的
- 恶意代码具有恶意的攻击目的,会对所运行环境进行恶意破坏
- 恶意代码分析在绝大数情况下不会拥有待分析程序的源代码
- 恶意代码目前都会引入大量各种各样的对抗分析技术
恶意代码分析的技术方法主要包括静态分析和动态分析两类
恶意代码的分析环境 |
-
恶意代码发烧友的分析实验环境
-
采用虚拟化技术构建恶意代码分析环境
-
用于研究的恶意代码自动分析环境
恶意代码静态技术分析 |
- 反病毒软件扫描
- 文件格式识别
- 可以让我们迅速了解待分析恶意代码所期望的运行平台
- 字符串提取工具
- 恶意代码实例名
- 帮助或命令行选项
- 用户会话
- 后门口令
- 相关URL信息、Emile地址
- 包含库文件和函数调用
- 二进制结构分析
- 反汇编与反编译
- 代码结构与逻辑分析
- 加壳识别与代码脱壳
恶意代码动态技术分析 |
- 基于快照对比的方法和工具
- 系统动态行为监控方法
- 文件行为监控软件
- 进程行为监控软件
- 注册表监控软件
- 本地网络栈行为监控软件
- 网络协议栈监控方法
- 沙箱技术
- 动态调试技术
软件安全攻防——缓冲区溢出和shellcode
软件安全漏洞威胁 |
美国国家标准技术研究院NIST将安全漏洞定义为:在系统安全流程、设计、实现或内部控制中所存在的缺陷或弱点,能够被攻击者所利用并导致安全侵害或对系统安全策略的违反。
-
三个基本元素
- 系统的脆弱性或缺陷
- 攻击者对缺陷的可访问性
- 攻击者对缺陷的可利用性
-
软件安全困境
- 复杂性
- 可扩展性
- 连通性
-
软件安全的漏洞威胁
- 内存安全违规类
- 在软件开发过程中在处理RAM内存访问时所引入的安全缺陷 缓冲区溢出漏洞是一种最基础的内存安全问题
- 输入验证类
- 输入验证类安全漏洞是指软件程序在对用户输入进行数据验证存在的错误,没有保证输入数据的正确性、合法性和安全性,从而导致可能被恶意攻击与利用。
- XSS、SQL注入、远程文件包含、HTTP Header注入等
- 竞争条件类
- 竞争条件类缺陷是系统或进程中一类比较特殊的错误,通常在涉及多进程或多线程处理的程序中出现,是指处理进程的输出或结果无法预测,并依赖于其他进程事件发生的次序或时间时,所导致的错误。
- 权限混淆与提升类
- 权限混淆与提升漏洞是指计算机程序由于自身编程疏忽或被第三方欺骗,从而滥用其权限,或赋予第三方不该给予的权限。
- 跨站请求伪造、FTP反弹攻击、权限提升、“越狱"等
- 内存安全违规类
缓冲区溢出 |
-
缓冲区溢出基本概念
- 缓冲区溢出是计算机程序中存在的一类内存安全违规类漏洞,在计算机程序向特定缓冲区内填充数据时,超出了缓冲区本身的容量,导致外溢数据覆盖了相邻内存空间的合法数据,从而改变程序执行流程破坏系统运行完整性
-
缓冲区溢出攻击背景知识
- 编译器与调试器的使用
- 汇编语言基础知识(特别是IA32)
- 进程内存管理
- 函数调用过程
- 调用:调用者将函数调用参数、函数调用下一条指令的返回地址压栈,并跳至被调用函数的入口地址
- 序言:被调用函数开始执行首先会进入序言阶段,将对调用函数的栈基址进行压栈保存,创建函数自身结构栈等工作
- 返回:被调用函数执行完功能将指令控制权返回给调用者之前,会进行返回阶段的操作
-
缓冲区溢出攻击原理
- 栈溢出
- 堆溢出
- 内核溢出
缓冲区溢出的根本问题在于,用户输入可控制的缓冲区操作缺乏对目标缓冲区的边界安全保护。如果用户输入无法到达漏洞利用点,那么这类缓冲区溢出只能被称为安全缺陷,而不能被称为安全漏洞。
Linux平台上的栈溢出与shellcode |
-
Linux平台栈溢出攻击技术
-
NSR模式
- 适用于被溢出的缓冲区变量比较大,足以容纳shellcode的情况
-
RNS模式
- 一般用于被溢出的变量比较小,不足容纳shellcode的情况
-
RS模式
- 这种模式能够精确地定位出shellcode在目标漏洞程序进程空间中的起始地址
-
-
Linux系统中本地shellcode的产生过程
- 先用高级编程语言,C,来编写shellcode程序
- 编译并反汇编调试这个shellcode程序
- 从汇编语言代码级别分析程序执行流程
- 整理生成的汇编代码,尽量减少它的体积使他可注入,并可通过嵌入C语言进行运行测试和调试
- 提取汇编代码所对应的opcode二进制指令,创建shellcode指令数组
Windows平台上的栈溢出与shellcode |
-
成功攻击应用程序中栈溢出漏洞密切相关的主要有以下三点:
- 对程序运行过程中废弃栈的处理方式差异
- 进程内存空间的布局差异
- 系统功能调用实现方式差异
-
Windows平台shellcode实现技术
- shellcode必须可以找到所需要的Windows32 API函数,并生成函数调用表
- 为了能够使用API函数,shellcode必须找到目标程序已加载的函数地址
- shellcode需考虑消除空字节,以免在字符串操作函数中被截断
- shellcode需确保自己可以正常退出,并使原来的目标程序进程继续运行或终止
- 在目标系统环境存在异常处理和安全防护机制时,shellcode需进一步考虑如何应对这些机制
堆溢出攻击 |
堆溢出是缓冲区溢出中第二种类型的攻击方式,由于堆中的内存分配与管理机制较栈更复杂,不同操作系统平台的实现机制具有显著的差异。
- 函数指针改写
- C++类对象虚函数表改写
- Linux下堆管理glibc库free()函数本身漏洞
缓冲区溢出攻击的防御技术 |
要是缓冲区溢出攻击奏效,攻击者通常先通过溢出植入攻击代码,然后通过修改关键数据结构改变执行流程,最后让攻击代码执行。
- 尝试杜绝溢出的防御技术
- 允许溢出但不让程序改变执行流程的防御技术
- 无法让攻击代码执行的防御技术
视频学习
kalisecurity 压力测试 |
压力测试是通过确定一个系统的瓶颈或不能接收的性能点,来获得系统能够提供的最大的服务级别的测试,压力测试是为了发现在什么条件下应用程序的性能会变得不可接受
-
VoIP压力测试工具
- iaxflood
- inviteflood
-
web压力测试工具
- thc-ssl-dos SSL拒绝服务攻击
- 利用SSL中的漏洞,迅速消耗服务器资源
- thc-ssl-dos SSL拒绝服务攻击
-
网络压力测试
- dhcpig 耗尽DHCP资源池的压力测试
- ipv6攻击工具包
- flood_advertise5
- flood_dhcp6
- flood _mld26
- flood_mld6
- flood_router6
- flood_solicitate6
- inundator 针对ids/ips/waf的压力测试
- macof 泛洪攻击工具
- siege 设计用于web开发这评估应用在压力下的承受能力,可以分局配置对一个web站点进行多用户的并发访问,记录每个用户所请求过程的相应时间,并在一定数量的并发访问下重复进行。
- T50压力测试
- 一个压力测试工具,功能强大且具有独特的数据包注入工具,支持unix系统可以进行多种协议的数据包注入
-
无线压力测试工具
- MDK3
- Reaver
kalisecurity 数字取证工具 |
数字取证是指计算机调查和分析技术应用于对潜在的、有法律效力的电子证据的确定与获取,它们都是针对黑客和入侵的,目的是保障网络的安全。
-
PDF取证工具
- pdf-parser
- peepdef
- python编写的PDF文件分析工具,可以检测恶意的PDF文件,设计目标是为安全研究人员提供PDF分析中可能用到的所有组件
-
反数字取证
- chkrootkit
- 可以检测命令或关键文件是否被注入后门
- chkrootkit
-
内存取证工具
- volafox
- volatility
-
取证分割工具binwalk
- binwalk
- 固件分析工具,旨在协助研究人员对固件进行分析,提取及逆向工程用处。简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块。
- 可以提取文件或压缩包中存在的隐藏文件,也可以分析文件格式,同时-e参数可以直接解压压缩文件
- binwalk
-
取证哈希验证工具集
- MD5deep
- 可以计算和比较mad5等哈希加密信息的摘要
- MD5deep
-
取证镜像工具集 对镜像文件的取证分析
- mmstat
-
数字取证套件
- autopsy
- 以浏览器形式,访问本地9999端口
- dff gui
- 程序的图像画界面,数字取证工作辅助工具
- autopsy
kalisecurity 报告工具与系统服务 |
-
dradis
- 用于提高安全检测效率的信息共享框架,提供了一个集中的信息仓库,用于标记目前已经做的工作和下一步计划
-
keepnote
- 富文本格式:彩色字体、内置图片、超链接等
- 树形分层组织结构
- 全文搜索
- 文件附件
- 内置备份和恢复
-
媒体捕捉工具
- cutycapt
- 可以将网页内容截图保存
- recordmydesktop
- 录频工具
- cutycapt
-
maltego
-
casefile
-
magictree
- 面向渗透测试人员的工具,可以直接进行数据合并、查询、外部命令执行和报告生成,所有数据都会以树形结构储存
-
truecrypt
- 文件加密工具
-
kali整理的系统服务
- BeFF 对应XSS测试框架BeFF的启动关闭
- dradis 对应笔记分享服务的启动关闭
- HTTP 对应kali本机web服务的启动关闭
- Metasploit 对应metasploit服务的启动关闭
- mysql 对应mysql服务的启动或关闭
- openvas 对应openvas的启动与关闭
- ssh 对应ssh的启动与关闭
Python黑帽子
第十章 Windows系统提权
创建进程监视器 & windows系统的令牌权限
这里需要先安装VMI 在Windows xp 32位系统下,需要先安装easy_install,点击这里下载
我在安装WMI的时候一直出现错误,无法使用easy_install安装WMI,服务器无法访问HTTPS网页,开启了SSL也不行,于是我只能从网站上下载WMI服务。
下载Windows的WMI安装程序 点击这里下载直接安装即可
之后下载安装bhpservice.zip 按照文档中的顺序进行
这里需要下载py2exe 点击这里下载
启动process_monitor.py进程监控脚本,创建一些进程以查看脚本的输出情况:
同时脚本所在目录会生成一个csv文件,打开可以看到其记录了脚本监视到的进程的记录
赢得竞争
运行file_monitor.py脚本
打开第二个CMD命令行窗口,执行命令
cd %temp%
echo hello > filetest
rename filetest file2test
del file2test
执行结果
代码插入
这里在安装bhpservice.zip 按照文档中的顺序进行时出现错误
代码已经上传到码云,点击这里----> 我的码云:))