1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【笔记整理】网络攻防技术

【笔记整理】网络攻防技术

时间:2019-04-10 02:24:27

相关推荐

【笔记整理】网络攻防技术

网络攻防技术

4 漏洞的定义栈溢出的漏洞利用原理溢出漏洞利用原理基本流程关键技术溢出点定位探测法反汇编分析覆盖执行控制地址覆盖异常处理结构跳转地址的选定Shellcode的定位和跳转Shellcode相关(了解)什么是Shellcode汇编生成ShellCode的思路shellcode的正常退出null字节的问题加载DLL(Dynamic Link Library)通用的shellcode编写静态函数地址获取动态定位函数地址获取地址的方法什么是TEB使用PEB的方法引出表5 Web应用攻击XSS攻击同源策略XSS攻击的危害XSS攻击分类XSS攻击的防范7 假消息攻击TCP攻击Syn-Flooding的攻击原理和步骤原理步骤TCP重置攻击的攻击原理和步骤原理攻击步骤TCP会话劫持攻击的原理和步骤DNS攻击DNS的响应本地DNS缓存中毒攻击远程DNS缓存中毒攻击Kaminsky攻击来自恶意DNS服务器的回复伪造攻击防止DNS缓存中毒攻击DNSSECTLS/SSL

4 漏洞的定义

指信息系统硬件、软件、操作系统、网络协议、数据库等在设计上、实现上出现的可以被攻击者利用的错误、缺陷和疏漏

栈溢出的漏洞利用原理

内存分布漏洞利用内存变化压栈/出栈栈溢出原理

溢出漏洞利用原理

基本流程

注入恶意数据溢出缓冲区控制流重定向执行有效载荷

关键技术

溢出点定位覆盖控制执行地址覆盖异常处理结构跳转地址的选定shellcode的定位和跳转

溢出点定位

探测法反汇编分析
探测法

也就是说只是随机数输入,通过报错信息判断

反汇编分析

就是反汇编分析

覆盖执行控制地址

执行控制地址可包括

覆盖返回地址覆盖函数指针变量覆盖异常处理结构

覆盖异常处理结构

异常处理是一种对程序异常的处理机制,它把错误处理代码和正常情况下执行的代码分开当程序发生异常时,系统中断进程,将控制权交给了异常处理程序Windows的异常处理机制叫做结构化异常处理(Structured Exception Handling)

跳转地址的选定

跳转指令的搜索范围:

用户空间的任意地址系统DLL进程代码段PEBTEB

Shellcode的定位和跳转

NOP Sled:类似NOP指令一样的填充,无意义,可以是NOP,也可以是一些无副作用指令

Decoder: 解码部分,对Real_shellode进行解码

Real_shellcode:经过了编码处理的shellcode

Shellcode相关(了解)

什么是Shellcode

通常是一段能够完成一定功能的、可由计算机直接执行的机器代码,通常是十六进制

汇编生成ShellCode的思路

(这里的shellcode功能是执行一个函数)

将参数压栈

将参数地址压栈

call 我们要调用的函数的地址

注意:

Push是四个字节对齐的,因此必须每次压栈四个字节或者一个字节一个字节赋值

如果 user32.dll 没有加载时, 那个 API 地址将不会指向 MessageBoxA 函数,代码将会失败

shellcode 调用函数后,没有做扫尾工作

Shellcode 包含 null 字节

shellcode的正常退出

进程方面:ExitProcess()

SEH: 强制产生异常调用

线程方面:ExitThread()

以下是进程方面的正常退出

xor eax, eax //清零push eax //这是ExitProcess函数的参数mov eax, 0x7c81cafa // ExitProcess(exitcode)call eax

null字节的问题

用 add&sub 来重新产生原来的值sniper:precision-null-byte-boming将原始值一字节一字节写入xor寄存器:32 位->16 位->8 位用可替代指令从 null 字节到空格&null 字节

加载DLL(Dynamic Link Library)

这个应该是特指 windows中的动态链接库程序,比如USER32.DLL就是在程序要使用窗口界面的时候所需要加载的链接库。

DLL也是一个二进制文件,当程序运行的时候会将DLL映射到进程的地址空间,访问DLL中导出的函数

PUSH 0x00206c6cPUSH 0x642e3233PUSH 0x72657375//以上导入参数//以下加载dllmov eax,esppush eaxmov eax,0x7c801d7b //LoadLibrary sp3call eax

通用的shellcode编写

静态函数地址获取

将每个版本的Windows操作系统所地应的函数的地址列出来,然后针对不同版本的操作系统使用不用的地址

动态定位函数地址

使用 GetProcAddress() 函数和 LoadLibrary() 函数动态获取其它函数的地址

首先需要获取到GetProcAddress() 函数的地址通过GetProcAddress() 函数的地址获取其他函数的地址( LoadLibrary() 等)再调用其他函数的地址

注意:

LoadLibraryA/W是在系统库kernel32.dll中,其地址也可以使用GetProcAddress得到。

而Kernel32.dll一般都会加载,所以只要在内存中查找Kernel32.dll库和GetProcAddress函数的地址就可以。

获取地址的方法
暴力搜索使用PEB获取GetProcAddress的地址SHE获取Kernel基址Hash法查找所有函数地址
什么是TEB

系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间,在比 PEB 所在地址低的地方。

进程中的每个线程都有自己的一个TEB。一个进程的所有TEB都以堆栈的方式,存放在从0x7FFDE000开始的线性内存中,每 4KB为一个完整的TEB

使用PEB的方法
查找Kernel32.dll的方法
引出表

就是一个储存着win系统中的API函数的表,这个表结构中有着所有API函数的名称、序号、地址。

地址是:Kernel32.dll基址+0x3c+0x78

5 Web应用攻击

XSS攻击

同源策略

A网页设置的cookie,B网页不能打开,除这两个网页同源

同源: 协议相同、域名相同、端口相同

XSS攻击的危害

网络钓鱼,盗取账号窃取用户cookie资料劫持用户会话强制弹出广告网页挂马传播跨站脚本蠕虫

XSS攻击分类

反射型XSS

恶意信息直接留在URL中,有时候会直接将URL进行简化让人看不出来有恶意信息存储型XSS

恶意数据是直接存在服务器端的,当我们访问了服务器,就是访问了恶意信息DOM型XSS 是基于js上的不需要和服务端进行交互

XSS攻击的防范

HttpOnly属性安全编码:PHP语言中的安全编码的函数有 htmlentities()函数和htmlspecialchars()函数

7 假消息攻击

TCP攻击

Syn-Flooding的攻击原理和步骤

原理

当服务器接收到初始SYN数据包时,它使用TCB(传输控制块)存储有关连接的信息。而服务器将TCB存储在仅仅用于半开放连接的队列里面,在服务器获得了ACK包后,将TCB从队列里面取出。

如果没有被取出,服务器重新发送SYN+ACK包,同时过一段时间后TCB被丢弃。

所以如果我们发送大量的SYN包,通过在插入TCB在队列中来消耗队列。

步骤

在关闭了syn_cookies的同时,进行随机ip源地址的大量syn连接请求的发送

TCP重置攻击的攻击原理和步骤

原理

要断开TCP之间的连接,出来进行四次挥手之外,还可以使用重置标志:RST标志,这个标志可以直接进行断开连接

目标:断开A和B之间的TCP连接。

伪造的RST数据包需要正确设置以下字段:

源IP地址,源端口,DestinationIP地址,DestinationPortSequencenumber(在接收器窗口内)

攻击步骤

步骤:

在攻击者机器上使用Wireshark,嗅探流量检索目标端口(23)、源端口号和序列号。

TCP会话劫持攻击的原理和步骤

目标:在已建立连接中注入数据。

伪造TCP数据包:需要正确设置以下字段:

源IP地址,源端口,目标IP地址,目标端口序列号(在接收器窗口内)

DNS攻击

DNS的响应

DNS的响应有四个部分

问题部分回答部分:回答问题的记录权威部分:指向权威服务器的部分附加部分:与查询相关的部分

以上是向一个root DNS服务器进行IP地址询问

root地址不知道答案,所以没有回答部分,但给了我们权威部分和附加部分

附加部分就是给了权威DNS服务器的IP地址

本地DNS缓存中毒攻击

攻击机和受害机时处于在同一个局域网之中

在看到来自本地DNS的查询后伪造DNS应答

也就是进行数据包嗅探,当出现DNS查询包的时候,构造包对其进行回复

回复中将权威部分换成我们想要设定的DNS域名

远程DNS缓存中毒攻击

当攻击机不在局域网的时候,他们需要猜测查询数据包使用的两个随机数:

源端口号(16位随机数)事务ID(16位随机数)

导致攻击很困难

Kaminsky攻击

Kaminsky攻击可以解决这个问题

通过在发送向DNS服务器查询包的同时发送伪造回复,可以实现远程DNS缓存中毒

因为我们构造回复包的时候设定让此DNS将权威DNS服务器的地址设置成我们自己的地址,达成缓存中毒

来自恶意DNS服务器的回复伪造攻击

当用户访问网站(如)时,DNS查询最终将到达域的权威名称服务器。

除了在响应的应答部分提供IP地址外,DNS服务器还可以在授权和其他部分提供信息。攻击者可以使用这些部分提供欺诈信息。

防止DNS缓存中毒攻击

DNSSEC

DNSSEC是DNS的一组扩展,旨在对DNS数据提供身份验证和完整性检查。使用DNSSEC,来自DNSSEC保护区的所有答案都经过数字签名。通过检查数字签名,DNS解析器能够检查信息是否真实。

TLS/SSL

传输层安全(TLS/SSL)协议提供了针对缓存中毒攻击的解决方案。

在使用DNS协议获取域名()的IP地址后,计算机将询问IP地址的所有者(服务器)是否为。服务器必须提供由受信任实体签名的公钥证书,并证明它知道与关联的相应私钥(即,它是证书的所有者)。HTTPS构建在TLS/SSL之上。它可以击败DNS缓存中毒攻击。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。