1、主要内容n电子欺骗技术n拒绝服务攻击nSniffer原理n扫描技术原理n缓冲区溢出Buffer Overflow原理原理电子欺骗技术 IP欺骗 假冒他人的IP地址来获得信息或发送信息 Web欺骗 你能相信你所看到的信息吗? 邮件欺骗 假冒他人的email地址发送信息nARP SpoofARP协议是地址转换协议,负责把IP地址转换为MAC地址。在计算机中维护着一个ARP高速缓存,并且ARP高速缓存随着计算机不断的发出ARP请求和收到的ARP响应而不断更新。 ARP高速缓存的目的是把机器的IP地址和MAC地址相互映射。 AIP地址10.0.0.1MAC地址20-53-52-43-00-01 BIP
2、地址10.0.0.2MAC地址20-53-52-43-00-02 CIP地址10.0.0.3MAC地址20-53-52-43-00-03这是10.0.0.3的MAC地址20-53-52-43-00-02IP欺骗nIP欺骗就是攻击者伪装成目标主机与其他计算机进行通信nIP欺骗是利用了IP协议中的一个缺陷:信任服务的基础仅仅是建立在网络地址的验证上。Web欺骗nWeb欺骗的形式 使用相似的域名 改写URLDNS欺骗n域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换信息。nDNS服务器对自身无法解析的域名会自动向其也DNS服务器查询。nDNS系统会对
3、已经查询的结果进行缓存192.168.200.25192.168.200.25DNSDNS192.168.200.25DNSnDNS欺骗的实现当用户计算机向DNS服务器查询域名时,如果服务器的缓存中已有相应的记录,DNS服务器就不会再向其他服务器查询,直接将这条记录返回用户,假如缓存中的记录是错误的,用户将访问一个错误的IP地址。为了实现这一点,攻击者需要先伪造用户的请求,让DNS服务器向其他DNS服务器发送查询请求,然后再伪造一个查询应答,这样DNS会将这个伪造的应答保存在缓存中。192.168.200.25192.168.200.1DNSDNSDNS攻击者用户192.168.200.1拒绝
4、服务攻击n政府网站 美国白宫的网站曾经遭受拒绝服务攻击n 分布式拒绝服务 在2000年2月发生的一次对某些高利润站点Yahoo、eBay、B等的拒绝服务攻击,持续了近两天,使这些公司遭受了很大的损失。事后这些攻击确定为分布式的拒绝服务攻击8848网络技术有限公司下属的和等域名于2005年1月21日晚18:20突然无法访问。几千万个来自百度搜索联盟成员的IP地址在短时间之内同时访问8848首页,造成分布式拒绝服务攻击DDOS攻击,8848来到北京市公安局网监处进行取证,并聘请两家律师事务所做公正。DoS的技术分类一些典型的DoS攻击Ping of Deathn原理:直接利用ping包,即ICMP
5、 Echo包,有些系统在收到大量比最大包还要长的数据包,会挂起或者死机n攻击做法ping l 65540 192.168.1.1n防止措施 打补丁:现在所有的标准TCP/IP实现都已实现对付超大尺寸的包,并且大多数防火墙能够自动过滤这些攻击TeardropnIP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括service pack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。nTeardrop原理:利用IP包的分片装配过程中,由于分片重叠,计算过程中出现长度为负值,在执行memcpy的时候导致系统崩溃SYN Floodn请求端发送一个包含SYN标志的TCP报文给
6、服务器,服务器收到这个包后产生SYN|ACK标志的TCP报文返回给请求端,请求端收到该包后又会发送一个ACK的包给服务器,经过这三次握手,连接才正式建立。而在服务器向请求端发返回包时,它会等待请求端的ACK确认包并会重试,这时这个连接被加到未完成的连接队列中,直到收到ACK应答后或超时才从队列中删除。n攻击者就是利用了这种等待,他会大量的模拟这种等待,服务器就会为了维护一个非常大的半连接列表而消耗非常多的资源。Land攻击Sniffer原理n嗅探器(Sniffer)是一种在网络上非常流行的软件,嗅探器攻击也是互联网上非常普遍的攻击类型,对入侵者来说,能给入侵者提供成千上万的口令。n嗅探器探测网
7、络中他人的封包信息,并通过协议分析,解析封包内容Sniffer工作原理n共享式HUB的工作方式当共享HUB接收到数据帧时,它并不知道如何传输到目的主机,它便把帧通过广播传送到网段的每一台机器COMPACTABC共享式HUBIt is to CIt is to CIt is to Cn网卡的工作方式数据包MAC数据包产生中断本地MAC地址接口配置模式其他MAC地址产生中断混杂模式非混杂模式不处理nSniffer的工作原理Sniffer就是一种能将本地网卡状态设成混杂状态的软件,当网卡处于这种方式时,网卡对每一个帧都产生一个中断,通知操作系统做出处理。Sniffer通过对每帧的处理,分析得到相应内
8、容。n交换式网络上的Sniffer交换机内部的单片机程序能储存每个接口主机的MAC地址,在接收到数据帧时,能根据接口的MAC地址将数据帧发向目的地。在交换环境中,也存在Sniffer攻击,可以通过欺骗的方法使用报文发到攻击者的计算机里。Windows 简易sniffer实现nraw socket的实现方法 nwinpcap的实现方法 winpcap简介 nWinPcap 是由伯克利包捕获库派生而来的包捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。WinPcap 在 Windows 平台下网络数据包捕获的体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库 Packet
9、.dll 和一个高层的独立于系统的函数库 winpcap 组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对 NDIS 中函数的调用为 Win95、Win98、WinNT、和 Win2000 提供一类似于 UNIX 系统下 Berkeley Packet Filter 的捕获和发送原始数据包的能力。Packet.dll 是对这个 BPF 驱动程序进行访问的 API 接口,同时它有一套符合 Libpcap 接口(UNIX 下的捕获函数库)的函数库。网网卡卡驱驱动动(NDIS3.0 or higher)packet.dlltap() 过滤器1内核 缓存1过滤器2内核缓存2过滤器3统计引擎
10、Netgroup Packet Filter其其他他协协议议栈栈用户缓存1用户缓存2wpcap.dllwpcap.dllwpcap.dll对WinPcap调用的用户代码对WinPcap调用的用户代码用于统计的用户代码用户代码1. 对NPF的直接访问2. packet的函数调用应应用用程程序序内内核核层层用用户户层层报报文文网网络络nWinPcap 包括三个部分:第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块packet.dll为win3
11、2平台提供了一个公共的接口。第三个模块 Wpcap.dll是不依赖于操作系统的,它提供了更加高层、抽象的函数。 Winpcap报文截取的实现报文截取的实现 n1)获取指定的监听的网卡名 如果本机只有一张网卡,调用pcap_lookupdev函数即可获得网卡名。如果有多张网卡则需要调用pcap_findalldevs函数,获得所有网卡名,指定用来监听的网卡名 n2)建立监听会话 获得指定监听的网卡名后,调用pcap_open_live函数在指定的网卡上建立一个监听会话。该函数所做的工作是把指定的网卡设为混杂模式,把Winpcap的网络报文截取组件加载到系统中,并对监听会话超时参数和所截取的报文最
12、大长度参数进行设置。n编译过滤规则,设置过滤器 如果我们需要监听某种类型的网络流量,则需要使用BPF的语法,调用函数pcap_compile对规则进行编译(比如我们只需要监听80端口的流量,规则描述即为字符串“port 80”),再调用pcap_setfilter函数对过滤器进行设置。n截取网络报文 设置好过滤器后,就调用函数pcap_loop进行循环监听。该函数对进行报文协议分析的入口通过回调函数的形式进行指定,启动网络报文截取组件进行网络报文截取,通过回调机制(非阻塞模式)对截取到的报文进行处理。n关闭监听会话 当停止截取网络报文时,就调用函数pcap_close来关闭监听会话。扫描技术原
13、理 主机扫描:确定在目标网络上的主机是否可达,主要利用ICMP数据包端口扫描:发现远程主机开放的端口以及服务。通过端口扫描可以得到许多有用的信息:如目标主机正在运行的是什么操作系统,正在运行什么服务,运行服务的版本等漏洞扫描:使用漏洞扫描程序对目标主机系统进行信息查询,可以发现系统中存在不安全的地方。漏洞扫描的原理就是向目标主机发送一系列的咨询,根据目标主机的应答来判断漏洞是否存在主机扫描端口扫描 SYN扫描、SYN|ACK扫描、FIN扫描缓冲区溢出Buffer Overflown在高级语言中,程序函数调用时,计算机做如下操作:1)把参数压入堆栈2)把返回地址压入堆栈3)基址寄存器EBP压入堆
14、栈,当前ESP拷贝到EBP中4)为局部变量留出一定空间, ESP减去适当的数值n缓冲区溢出实例演示注意观察EIP,ESP寄存器中地址的变化。n一般而言,攻击者利用缓冲区溢出漏洞并不是仅仅想使程序崩溃,而是想通过这种攻击做更多的事。如通过缓冲区溢出提升权限,从而获得对系统更多的访问和控制权。这些目的的实现就是由所谓的Shellcode来完成的。Shellcode编写n到目前为止,我们已经能控制EIP的数值,也知道ESP指向的堆栈位置,和能够向堆栈写入任意数据。下一步做什么呢?当然是找到使系统执行我们的溢出代码Shellcode的方法了。nWindows系统下的堆栈溢出的方法一般是把溢出代码放在执行完ret指令后ESP正好指向的位置,栈中返回地址覆盖为进程中某个跳转指令(jmp esp)的地址。