Windows上的路由表和路由劫持

xingyun86 2017-8-10 1744

先找找路由表的基本概念:

路由表

    路由表是指路由器或者其他互联网网络设备上存储的一张路由信息表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。

    路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。打个比方,路由表就像我们平时使用的地图一样,标识着各种路线,路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表可以是由系统管理员固定设置好的,也可以由系统动态修改,可以由路由器自动调整,也可以由主机控制。

 

1.静态路由表

    由系统管理员事先设置好固定的路由表称之为静态(static)路由表,一般是在系统安装时就根据网络的配置情况预先设定的,它不会随未来网络结构的改变而改变。

2.动态路由表

    动态(Dynamic)路由表是路由器根据网络系统的运行情况而自动调整的路由表。路由器根据路由选择协议(Routing Protocol)提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。

 

路由表项

  destination mask pre costdestination:目的地址,用来标识IP包的目的地址或者目的网络。

  mask:网络掩码,与目的地址一起标识目的主机或者路由器所在的网段的地址。

  pre:标识路由加入IP路由表的优先级。可能到达一个目的地有多条路由,但是优先级的存在让他们先选择优先级高的路由进行利用。

  cost:路由开销,当到达一个目的地的多个路由优先级相同时,路由开销最小的将成为最优路由。

  interface:输出接口,说明IP包将从该路由器哪个接口转发。

  nexthop:下一跳IP地址,说明IP包所经过的下一个路由器。

    OK上面就是百度上一把梭的路由表相关信息,总之来说,路由表就是路由器里面的地图,路由器一大部分功能就是优化地图路径,网络上每个主机是一个节点,所有节点连接形成一张图,你想访问某个节点的话具体怎么走相对较好,路由器会处理这些,并且路由表里面是存着路由器计算过的结果,当然静态路由表也可以是用户强制设定的。这就是上面所看到的基础知识。

这次要整理的是windows上的路由表,通常很容易误解,路由表就只有路由器上才有,其实windows上本身也有,因为windows自己可以开启ip路由(充当路由器),如果有无线网卡,还可以直接自己创建wifi热点等。Windows上的路由表和路由器上的差不多。可以本地修改,增加删除,动/静 态路由表等。

提示:不要随便添加静态路由,很可能导致网络异常,静态路由重启之后不会重置,只有动态的会重置,自己玩乱了的话就全部清空本地路由表,重启重新获取动态路由,但是很多复杂的网络环境(比如本地两个网卡,链接两个网段,一个内网用,一个外网用...),是需要静态路由配合着才能正常工作的,全都删了重启之后可能还会有问题。

 

Windows上操作路由表直接cmdroutecmd里给的相关参数介绍如下:

操作网络路由表。


ROUTE [-f] [-p] [-4|-6] command [destination]

                  [MASK netmask]  [gateway] [METRIC metric]  [IF interface]

 

  -f           清除所有网关项的路由表。如果与某个

               命令结合使用,在运行该命令前,

               应清除路由表。

 

  -p           与 ADD 命令结合使用时,将路由设置为

               在系统引导期间保持不变。默认情况下,重新启动系统时,

               不保存路由。忽略所有其他命令,

               这始终会影响相应的永久路由。Windows 95

               不支持此选项。

 

  -4           强制使用 IPv4

 

  -6           强制使用 IPv6

 

  command      其中之一:

                 PRINT     打印路由

                 ADD       添加路由

                 DELETE    删除路由

                 CHANGE    修改现有路由

  destination  指定主机。

  MASK         指定下一个参数为“网络掩码”值。

  netmask      指定此路由项的子网掩码值。

               如果未指定,其默认设置为 255.255.255.255

  gateway      指定网关。

  interface    指定路由的接口号码。

  METRIC       指定跃点数,例如目标的成本。

 

用于目标的所有符号名都可以在网络数据库

文件 NETWORKS 中进行查找。用于网关的符号名称都可以在主机名称

数据库文件 HOSTS 中进行查找。

 

如果命令为 PRINT 或 DELETE。目标或网关可以为通配符,

(通配符指定为星号“*),否则可能会忽略网关参数。

 

如果 Dest 包含一个 或 ?,则会将其视为 Shell 模式,并且只

打印匹配目标路由。“*”匹配任意字符串,

而“?”匹配任意一个字符。示例: 157.*.1157.*127.**224*

 

只有在 PRINT 命令中才允许模式匹配。

诊断信息注释:

    无效的 MASK 产生错误,即当 (DEST & MASK) != DEST 时。

    示例: > route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1

             路由添加失败指定的掩码参数无效。

             (Destination & Mask) != Destination

 

示例:

 

    > route PRINT

    > route PRINT -4

    > route PRINT -6

    > route PRINT 157*          .... 只打印那些匹配  157* 的项

 

    > route ADD 157.0.0.0 MASK 255.0.0.0  157.55.80.1 METRIC 3 IF 2

             destination^      ^mask      ^gateway     metric^    ^

                                                         Interface^

      如果未给出 IF,它将尝试查找给定网关的最佳

      接口。

    > route ADD 3ffe::/32 3ffe::1

 

    > route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2

 

      CHANGE 只用于修改网关和/或跃点数。

 

    > route DELETE 157.0.0.0

    > route DELETE 3ffe::/32

 


    上面的话可以看出我们可以随意对路由表进行操作,控制本地路由。通常了解这些是为了处理网络问题,也就是it可能常接触这些东西,布置网络环境修复网路等,毕竟复杂的情况,有些时候通过重启大法是解决不了的。这个里面的后面有一个双网卡双环境解决本地ip路由表相关冲突的例子,我刚刚看了,还不错,可以看下:

http://tonyguo.blog.51cto.com/379574/176104/

当然看这个不光是为了做it的工作维护网络正常运转,接下里可以尝试通过几个方式把同一个局域网的机器的所有网络请求代理到目标主机上。方便网络控制和劫持。

尝试所有操作之前,先说下windows IP路由,windows是可以直接自己当做路由器给同个局域网其他人用的:


默认是关着的,开启一个服务就OK了(运行里 services.msc)。


    默认是禁用,接触禁用并且启动,在ipconfig /all 就可以看到是开着的了。下面的所有测试都依赖于这个,我开启了一个虚拟机,192.168.1.105,并且开启上面的服务,当做中转劫持机器。

RemoteAccess               [服务名称]

Routing and Remote Access    [显示名称]

(1)姿势1,通过修改本地ip路由表来实现。

虚拟机A(192.168.1.104)当做目标主机,虚拟机B(192.168.1.105)当做中转路由器

先看下A的本地路由表,看到第一行,缺省路由,大体的意思是,除了下面的一些特出的请求外,平时的网络请求全都通过192.168.1.104接口请求到192.168.1.1(网关,路由器ip


    尝试1要做的就是直接把本地路由表的缺省路由项删掉,然后建立一个静态的表,这个骗本机路由器的ip192.168.1.105OK接下来操作试试:

Route delete 0.0.0.0删除缺省路由,此时:


缺省信息被删除同时外网无法访问。然后添加假的105静态路由表,告诉这台机器,105是路由器。

route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.105

然后看下当前路由表以及网络状况:


然后我在192.168.1.105机器上把本地连接禁用了,104这台机器果真没网了:


OK姿势1测试成功。

不过突然好奇,重启之后会咋样,虽然设置了静态路由表:


...尴尬,出来个自动的,优先级还比我高,我断了105的网,104还是有网。

然后网上找了下,总metic指等于interface metric +gateway metric,这个和xp有区别。

然后照着改了下:


重启之后


105和真是路由器优先级一样,但是优先使用路由器的了。额....我不服,既然路由器上的不好改,就换姿势。

(2)
姿势2ARP欺骗实现局域网中的代理。

友谊(1)的方式重启之后会和路由器抢缺省路由的姿势,虽然优先级能同时达到最高,但是ip会大于网关被排在第二优先级,同时这个姿势又限制到本地,所以实际应用中又不方便,于是换姿势,采用ARP欺骗的姿势,这个ARP欺骗我之前整理过:

http://blog.csdn.net/u013761036/article/details/72619336

http://blog.csdn.net/u013761036/article/details/72604353

这里就不继续整理上面说的技术细节,就说下实现思路:

a. 105设置成代理机器,开启ip路由功能。

b.105机器上获取本地网关,以及自己的mac地址。

c.105 机器上进行arp欺骗广播,可以定点,也可以全部广播。路由器ip--105 mac

这样接受到广播的机器就会自动认为105mac是路由器mac,而局域网中通讯通过的并不是ipmac,所以105成功劫持局域网其他人的请求,包括手机等同局域网的网络设备,这个在上面第二个链接arp攻击的时候我已经测试过了。

再或者为了测试,直接在(1)中的104的那个机器上修改ARP表。让192.168.1.1 mac105就行了。

测试下本地修改ARP的:

原来


本地修改ARP之后


然后清空本地路由表,重启机器:

重启之后路由表恢复正常:


但是arp之前是设置的静态,所以路由器192.168.1.1 的 MAC 还是105MAC


断掉105的网前后会直接影响104的网络情况。105断网对104来说是路由器断网了。


然后在结合ARP欺骗就可以把局域网所有连接着骗过来了。


×
打赏作者
最新回复 (0)
只看楼主
全部楼主
返回