etter的dns欺骗玩法

352 阅读5分钟

这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战

说在前面

Ubuntu安装etter这一篇,基本说明了ubuntu下怎么安装etter,其它linux发行版也是类似,或者参照我的思路研究下,很简单直白的一个东西。

本篇写个示例,dns欺骗这个插件的使用,因为这个东西还是蛮好玩的,我是为了逗我媳妇才花心思研究了下这个插件的用法。

需要两个工具,一个是安装好的etter,另一个是一个web服务器,可以是apache、tomcat什么等等都行,能返回一个静态页面;我是写了个基本的spring boot工程凑合用,简单省事。

dns欺骗示例

先看下我当前主机网段有哪些IP

sudo ettercap -T -q -s lq

在这里插入图片描述

总共3个,1:是网关,2:是我的手机分配的IP,3:是我当前网段另一个笔记本分配的IP,我本机的IP主机是221,这里不显示。

OK,接下来,我需要启动一个WEB服务器,监听80端口。

启动一个web服务

原理是这样的,当我们打开浏览器,输入一个网址,如:juejin.cn/post/706289… ,这里面是没有端口号的吧,默认端口是80。

dns欺骗就是主机解析域名的时候,我们返回另一个我们想要返回的IP(比如我的主机IP,而不是从域名服务器返回这个域名实际注册对应的IP)。比如,访问:juejin.cn/user/387951… ,域名解析的是我本机的IP,则被攻击用户实际访问的地址是:https://192.168.31.221:80

怎么用spring boot搭建一个web工程,如果是做java web的对这个应该很熟悉,不清楚的网上也有很多资料。

也可以用自己熟悉的其它web服务器就行,主要是下面这么个意思:

我这里配置拦截所有请求:

@Controller
public class DemoController {

    @RequestMapping("/**")
    public String index() throws InterruptedException {
        return "index";
    }
}

返回的index.html的内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
<h1>早点睡吧,熬夜对手机不好</h1>
</body>
</html>

要监听80端口,如果不是用的其它web服务器,也是像我这样的用的spring boot,80端口普通用户进程是不能占用的,可以考虑用root权限启动或者web服务器监听其它端口,配置80端口转发。

准备工作做的差不多了,就说下怎么配置etter并启动运行了。

配置etter

dns欺骗插件,需要改个配置,文件路径是:

/etc/ettercap/etter.dns

在这个地方加个配置,如下: 在这里插入图片描述

标红框那个,后面的IP,改成自己本机的IP,这个*号是通配符,加这一行意思就是所有域名查询期望获得这个IP,这个中间的A就dns查询报文的一个类型,就是请求获得查询域名的IP,而PTR是指针记录,是根据IP地址获取域名,这个本示例中并不需要,所以不关心。

然后,启动etter,记得是arp欺骗攻击噢,这样流量才能经过我们本机的网卡,我们才有机会嗅探流量,才能玩这个dns欺骗插件。

dns欺骗测试

现在,我要攻击同一网段下另一个笔记本,主机188那个,步骤如下(主要是命令行的方式,GUI的话,自己研究研究,都挺简单的操作):

1.输入命令

sudo ettercap -T -q -M arp:remote /192.168.31.188/ /192.168.31.1/

在这里插入图片描述 2. 然后,输入p(就按下键盘上的p键),激活一个插件: 在这里插入图片描述 3. 可以看到一堆插件,现在输入dns_spoof,上面插件列表中的dns欺骗插件: 在这里插入图片描述 显示,激活这个插件了,下面的日志是我在另一个笔记本上打开浏览器,默认是hao.360.cn,解析到了我本机的IP,然后我又打开百度,用手机拍了个照片,贴上来看下效果。 在这里插入图片描述

那个笔记本用的浏览器是火狐,效果还是蛮预期的无论是打开哪个网站都是这鬼样子了。 其实,这样已经结束了。

缺点

现在,说下这个不好用的地方。

1.换其它浏览器,比如谷歌,结果就是不那么预期了,有些会出现无法访问,但是有些网站是很预期的:返回的是早点睡吧。。。

在这里插入图片描述

2.手机端

我手机是自带的小米浏览器,结果也是有些预期,有些不预期,把手机的IP也包含进去: 在这里插入图片描述 在这里插入图片描述

手机打开浏览器有些网站是这样子,顶多就好像是上了不网似的,起不了娱乐效果了。 3.容易崩溃

分片错误

在这里插入图片描述 4.这个问题我想了个简单粗暴的方案解决

源码中数据报不分片,超过我网卡MTU值,底层报文传输失败,就报Message too long这种错: MTU默认1500,我自己这个无线网卡,最大可以设置2000,但是随便打开个大网页,都会超过这个值。 我目前的解决方案是:找到源码的地方,libnet_write.c这个源文件,将源码改一下,在这个方法libnet_write_raw_ipv4()内,代码如下:

        if (size > 1500)
        {
                size=1500;
        }
    c = sendto(l->fd, packet, size, 0, (struct sockaddr *)&sin,
            sizeof(sin));

然后,重新卸载,编译,安装。 判断下发送报文大小 ,超过MTU值(1500),就只发送1500。

当然这个方法并不是个好方法,不过只是玩dns欺骗这个插件足够用了,真要花时间改,就需要自己下功夫整了。