分类 默认分类 下的文章

wifidog配置网关注意事项

用户超时
跟其它解决方法不同,Wifidog无需一直打开认证页面用脚本来保持连接。网关只会在数秒中没有获得任何来自客户端的流量时,才判断为超时断开连接。确保客户端没有因为闲置而超时,网关将会在每个时间间隔来重新ping每个客户端来检测流量。遗憾的是,有些所谓防火墙设置很讨厌,防ping,造成检测时完全丢包被误判为离线。这也是经常超时的原因。

Wifidog网关网站界面
网关只有最小化的网站界面,为用户提供了很少的信息。这样就不会与门户相混淆,门户必须由认证服务器进行管理。以下信息可以直接从网关得到:

http://gateway_ip:gateway_port/wifidog/

  • 网关版本
  • 节点ID

http://gateway_ip:gateway_port/wifidog/status

  • 网关版本
  • 网关正常运行时间
  • 网关是否具有网络连通性
  • 是否与认证服务器相连接
  • 获得此服务的用户编码
  • 已连接的用户编码
  • 用户列表
      IP
      MAC
      Token
      下载字节
      上传字节
  • 目前使用的认证服务器

http://gateway_ip:gateway_port/wifidog/about

OLSR和Wifidog网关
问题:如果你选择只安装一个Wifidog网关服务器,那么所有用户的MAC地址都将被最近的OLSR路由器所“掩饰”。
解决办法:
在OLSR节点安装Wifidog。允许HTTP在OLSR节点间流动,可以通过用Cron在所有节点启用以下脚本来实现。

ipkg install ip
#!/bin/sh
#
# Script to bypass HTTP interception for traffic forwarded by OLSR
# bms 9-Aug-2005
# Licensed under GPL
#

rm -f /tmp/get_neighbors.awk
cat > /tmp/get_neighbors.awk <<__HERE1__
BEGIN {
 while("route -n"|getline) {
    if (/^[0-9]/) {
        if (0 < \$5) {
           if (\$3 == "255.255.255.255 <http://255.255.255.255>") {
             printf "%s\n", \$1;
                 }
               }
             }
           }
        }
__HERE1__

iptables -t nat -D WiFiDog_Unknown -j OlsrNeighbors 2>&1 >/dev/null
iptables -t nat -F OlsrNeighbors 2>&1 >/dev/null
iptables -t nat -X OlsrNeighbors 2>&1 >/dev/null
iptables -t nat -N OlsrNeighbors

neighbors=$(awk -f /tmp/get_neighbors.awk)

for _neighbor in ${neighbors} ; do

   _mac=$(grep "^${_neighbor}" /proc/net/arp | awk '{print $4}')
   echo ${_mac}
   iptables -t nat -A OlsrNeighbors -m mac --mac-source ${_mac} \
          -p tcp --dport 80 -j ACCEPT

done

iptables -t nat -I WiFiDog_Unknown -j OlsrNeighbors

本文章由 http://www.wifidog.pro/2015/03/13/wifidog%E9%85%8D%E7%BD%AE%E7%BD%91%E5%85%B3%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.html整理编辑,转载请注明出处

wifidog 实现无线热点认证

<Wifi有一种web方式认证方案,当连接到某些不加密的热点之后,会跳转到一个网页来认证登陆,大家熟悉的CMCC就采用了这种web的验证方式。>
它的原理是在得到正确的认证之前,会把所有的流量重定向到认证服务器上,通过认证后,便可以正常使用。
如果说仅仅想获取web验证时其他用户的用户名和密码,arp欺骗然后嗅探足够了。因为此时攻击者已经分配到了ip,且同一网关下产生的流量是不会重定向的。
但是目前的情况是,认证服务器用的https加密传输,无法嗅探到明文密码。
于是萌生了伪造热点及web认证服务器,然后记录密码的想法。

客户端在接受WiFi信号的时候有一个特点,在ssid相同的时候,会只保留信号强的那一个无线路由的ssid。
这样,只要伪造热点的ssid与原热点的相同,会有部分人搜到伪造的热点,从而登陆,记录密码。

本无线路由用的ddwrt的系统,装了wifidog来进行辅助web认证。

至于如何搭建web认证系统,百度一大把,但主要是用了wiwiz和wifiap这两个成熟的网站提供的方案。
但是,利用第三方的网站无法拦截到用户名和密码,而且无法控制认证的过程。
最好的解决方法是自己搭建一个简单的系统。

Wifidog的认证流程如下:
1、客户端发出一个http请求(http://www.xxx.com)
2、网关将该请求信息以及网关本身的一些信息作为参数,将原始的请求重定向到web认证服务器(http://auth_server/login/)
3、Web认证服务器通过客户端的认证之后,返回一个一次性的token,客户端带着这个token去网关上的wifidog开放的端口去做验证(http://GatewayIP:GatewayPort/wifidog/auth?token=[auth token])
4、Wifidog拿到token后,到web认证服务器检测token是否有效,如果有效则通过客户端的验证,开放访问权限,并将客户端重定向到web认证服务器的欢迎界面(http://auth_server/portal/);如果token无效,则需要继续验证

Wifidog官方推荐的web认证服务软件为authpuppy (http://www.authpuppy.org),不过其代码比较复杂,可以参考wifidog之前的web认证服务软件。获取方式为:

svn checkout https://dev.wifidog.org/svn/trunk/wifidog-auth

web认证服务软件用php写成,重点文件为wifidog-auth\wifidog\login\index.php(客户端web认证、产生token以及重定向到wifidog的开放端口)、wifidog-auth\wifidog\auth\index.php(wifidog验证token)、wifidog-auth\wifidog\portal\index.php(认证成功后页面重定向)。宏定义在wifidog-auth\wifidog\include\common.php文件中。

了解了基本流程就可以DIY出一个简单的web认证服务器了。在认证的过程中可以顺便记录下客户端的密码。
路由器上Wifidog配置如下图。重点配置的地方为端口号(port),认证服务器(AuthServer Hostname), 认证服务器web端口(AuthServer HTTP Port),路径(AuthServer Path)。

web认证服务器端代码大家自己发挥吧。我个人只是实现了记录用户名密码这样一个简单的功能,如果要做的好的话可以用用户提交的密码到真正的认证服务器做一次认证来返回合适的结果,以及自己搭建dns服务器伪装的更加逼真,但是对于那些比较敏感的用户,还是不容易进行欺骗的,比如用回会发现ssl加密不见了。

考虑到功耗和实用问题,我的web认证服务器是搭建在树莓派上的。配置好无线路由的WLAN确保能联网之后,设置路由器的ip为10.1.1.1,手工配置树莓派静态ip为10.1.1.2。树莓派上安装nginx和php,配置好webserver的环境,上传自己的代码。开启无线路由的wifidog就可以守株待兔了。

当用户连接到自己搭建的无线路由器之后,可以说所有的网络流量都在控制之中了。不过怎么拿到这些流量成了一个问题。在此有三种拿到流量的方法。

1、ARP欺骗
这个不多说,大家都懂。不过有种偏离正题的感觉。
2、网线嗅探
当所处的环境通过网线来连到互联网时可用这个方法。将网线接入自制的硬件并将另一端插到无线路由的WLAN口,做好相应的配置。所需硬件参见我之前的一个帖子。原理类似于Throwing star lan tap,直接监听网线上的数据(无线路由的WLAN口)。
3、通过笔记本做中介
当所处的环境只有无线网连到Internet时,可用笔记本来搭建一个中介。
其连接关系为:
AP—无线网卡—有线网卡—自己的无线路由—受害者
这时用笔记本就可以直接嗅探到所有的数据。

这里以windows环境为例,演示如何搭建这个数据流链条。
在无线网卡连接到无线网之后,在属性中选择Internet连接共享,共享给以太网卡(有线网卡)。

此时有线网卡的ip会被设置为192.168.137.1

用网线连接有线网卡的网口和无线路由的WLAN。在无线路由的配置页面,将WLAN口配置静态ip为192.168.137.2,子网掩码255.255.255.0,网关为192.168.137.1。
这时整个数据流链条便搭建成功。

至于在linux下的搭建,注意打开ip_forward功能,并配置好iptables。因为没有linux环境,不在此详细演示。

对于流经网卡的数据包,可以收集的信息主要有两种:密码和session。
windows下的cain用来嗅探并提取得到的用户名密码,改下规则也能得到特定的cookie。
linux下的ettercap设置好规则能获取到几乎所有想要的信息,还能用来更改返回的web页面、挂马、添加cookie等等,可谓神器。

至于开启了ssl加密的服务器,可以用ssltrip来得到明文传送的数据。
如果不怕麻烦的话,还可以自己搭设dns服务器来钓鱼,不过这样就有些杀鸡用牛刀了。

PS:最近出了个叫极路由的东西,号称自动翻墙。目测是内置了一个vpn。大家有兴趣可以去了解下~
PPS:利用web认证方式的热点是挂马利器哦

本文章由 http://www.wifidog.pro/2015/03/12/wifidog-%E8%AE%A4%E8%AF%81-2.html 整理编辑,转载请注明出处

openwrt 配置wifidog interface 的 DHCP

DHCP
在设置DHCP时,如果你想得到更多的控制权,你可能会考虑到从wifidog gateway box运行DHCP而不是从无线接入点。你可以通过安装DHCPD后在Debian操作。
首先让你所需的DHCP服务器运行apt-get install dhcpd
安装你所需的DHCP服务器后,首先运行以下命令:

/etc/init.d/dhcp stop

这将停止DHCP服务器,这样你可以更改配置脚本。你需要安装接口卡,DHCP服务器需要在此卡上操作服务,并且还要向此卡传送一系列IP地址和向终端PC用户传送的网络信息。
更改接口,DHCP服务器将在此接口运行。你需要编辑/etc/init.d/dhcp并在此输入你的网络接口。

# Defaults
INTERFACES="eth0"

注意也许还有必须编辑/etc/default/dhcp文件来确保INTERFACE在/etc/init.d/dhcp具有同等值。
更改由DHCP服务器发布的网络信息,你需要编辑/etc/dhcpd.conf文件。我使用了一个举过的例子。阅读不同components的注释:

default-lease-time 10800;
max-lease-time 28800;

subnet 10.0.1.0 netmask 255.255.255.0 {
range 10.0.1.2 10.0.1.254;
option routers 10.0.1.1;
option domain-name-servers 150.237.47.200;
} 
  • default-lease-time =你的客户端发布一个IP地址所用的默认时间
  • max-lease-time =你的客户端发布一个IP地址所用的最长时间
  • subnet 10.0.1.0 =你发布给客户端的IP地址范围的子网络,在这种情况下10.0.1.0就是10.0.1.2/254的子网络(将地址范围最后的数字去掉,并改成0)
  • netmask =应用于子网络范围的掩码为IP地址提供有效号码。在这种情况下255.255.255.0只允许IP地址最后部分可以被更改。
  • range =客户端从DHCP获取的IP地址范围
  • option routers =在DHCP运行的网关的网络接口卡
  • option domain-name-servers =DNS服务器

    当你操作完选项,并确保一切正常运行时,你可能要重启DHCP:

    /etc/init.d/dhcp start

现在DHCP已经安装,如果你想测试,或者通过已被桥接的接口点连接到无线,或者往网关以太网卡和另一台PC上连接一个交叉连接线,看看会显示什么信息。

本文章由 http://www.wifidog.pro/2015/03/09/openwrt%E9%85%8D%E7%BD%AEDHCP.html整理编辑,转载请注明出处

OpenWrt的wifidog网关安装

在Linksys WRT54G安装网关的FAQ
快速安装:
如果你不习惯使用Linux并且不知道如何编辑这些问题,你可以使用别人编辑的OpenWRT和Wifidog。他们肯定会为你的特殊版本的OpenWRT编译。注意的是开源版本的IPK包或者由你自己的资源建立的,都是我们唯一提供服务的包。如果你使用了由其它组织发布的包,你必须向他们寻求服务。
1)下载一个重新编辑的OpenWRT固件镜像
2)通过路由器的网络接口安装固件镜像。
3)重点:在你安装Wifidog之前,确保连接在你OpenWRT路由器的客户端能够正确的使用网络
4)下载一个官方由Wifidog项目建立的.IPK文件。
5)安装Wifidog
6)按照文件的说明操作,一切将不言自明。
(如果安装.ipk文件时看到错误提示“无法满足以下依赖性…”,那么运行ipk更新,然后再重新安装。)
请注意,根据以上所述,你不用具有太多专业知识或者浪费太多时间来编译和制作binary文件。但对于linux文盲却没有更好的办法了。你必须对unix环境足够精通才能telent/ssh到路由器,执行安装概述和配置任务。如果你不够精通,那么建议你与精通linux和网络的人协商一下。

在基于PC的 Debian安装(网关和门户)

  • 在基于PC的 Debian安装客户端
  • 在PC上安装两个网络接口卡。一个将被连网,另一个将连接无线路由器
  • Debian最小化安装
  • 以根用户身份登录
  • 运行apt-get update和apt-get upgrade来确保你的安装是最新的

确保/etc/network/interfaces文件已配置正确,两个网络接口也已进行配置-例如:

iface eth0 inet static
             address 192.168.0.111
             netmask 255.255.255.0
             gateway 192.168.0.1
             dns-nameservers 195.238.2.21 195.238.2.22

iface eth1 inet dhcp

浏览http://www.linuxforum.com/debian/ch-gateway.en.html,可获得更详细的网络配置向导。

  • 你需要brideg eth0和eth1,这样你的无线客户端才能够通过网络连接来上网。

如果想要完成这些,你需要确认有适当使用iptables的代理脚本(如果在Windows后台,与就网络连接分享非常相似)
如果你使用的是Debian,那你很走运。你可以在http://www.aboutdebian.com/proxy.htm中找到完整版的NAT Linux Proxy服务器IPTABLES和安装向导。遵循里面的规则,测试确保可以通过使用了规则的无线接口上网。只有那时你才可以进行wifidog客户端安装。别忘了阅读全篇向导,确保现在你可以通过无线接口上网。

  • 在/usr/src/获取wifidog wget URL-HERE。你需要将它解压成gunzip
    WIFIDOG-FILE,然后untar成tar -xvf yourcopyofwifidog
  • 在wifidog解压的位置运行:

    ./configure
    make
    make install

如果遇到以下错误提示:

wifidog: error while loading shared libraries: libhttpd.so.0: 
cannot open shared object file: No such file or directory

请运行命令:

ldconfig

如果你遇到其它错误提示,请确认你运行的是最新的编辑器。
将wifidog.conf移到/etc/ : mv wifidog.conf /etc/并编辑选项
在全部调试的前台输入wifidog -f -d 7来运行wifidog。如果一切正常运行,你可以在门户页面看到许多output。

本文章由 http://www.wifidog.pro/2015/03/06/openwrt%E7%9A%84wifidog%E5%AE%89%E8%A3%85.html 整理编辑,转载请注明出处