正确姿势:如何调戏蹭网者
这篇文章本来是知乎回答的一个问题,但是由于本人五行缺勤奋,所以一直没写(其实是忘了=。=),下面是我的一个实验,如何通过 squid 调戏那些蹭网的人。没什么技术含量,请大牛不要笑话~
声明:本实验仅作为技术分享,一把刀用来砍什么,由你决定。
先上效果:
是不是有点意思?
这里还需要说明一件事情:
本文目的在于分享,采用的方式是国外的 Pete 大大的一种做法,效果不错,http://www.ex-parrot.com/pete/upside-down-ternet.html 但是这里不是重复造轮子,实在是 Pete 先僧写得过于简略,作为事件主角的 squid 居然被一笔带过,squid 表示相当不爽(╯‵□′)╯︵┻━┻ 。
如果可以通过上面的描述实现这个效果的,就不用往下看我的废话连篇了~如果你和我一样开始遇到过问题,那就跟着我走吧~先说一下大体的思路。
既然是要对网页中的图片进行操作,那么我们首先需要把图片下载到本地,然后进行变换之后再输出到客户端机器上面,就实现了图片的翻转,水印,模 糊等各种捉弄人的效果。当然功能绝不仅仅是这样就算了,更多功能,大家看完之后不妨多挖掘一下,我就不多废话了~好的,那么下面我们正式开始!
0×01 实验环境
我先说一下我的实验环境:
主机:ubuntu 虚拟机:windowsXP(vbox)软件:squid、apache
拓扑环境就不多废话了,我这边是 host 通过 wlan0 上网,虚拟机选择 Host-Only 模式,连接到主机的 vboxnet0 接口(默认的,我没修改)。
0×02 系统配置
这里,我们首先要把系统的网络转发功能打开,可以使用
echo 1 > /proc/sys/net/ipv4/ip_forward
暂时启用,当然也可以修改 sysctl.conf 永久转发。
然后,对虚拟机进行 ip 设定,我这里设置为 192.168.56.21,子网掩码 255.255.255.0
0×03 软件设置
下面我们进行软件的设置。
apache 不多说了,你可以指定一个本地路径作为网络分享的地址,作用主要是发布修改后的图片,我这里的路径选择是/mydoc/test/
接着是 squid。
关于 squid 的安装这里不是重点,网上有很多的教程,我们着重说配置。Squid 的配置文件是在/etc/squid (3) 下面的 squid.conf。为了看起来能凸显得我的高冷气质(楼主自恋程度已经逆天…( _ _)ノ|壁 ),着重配置的点我都已经写在上传的文件里面了,文末我会给出地址,大家可以看一下。
这里之所以说 squid 是关键,是因为我们主要使用了 squid 的 redircetor 的功能,即我们常说的重定向器功能。重定向器可以将收到的 url 进行改写重定向,而且支持 python、perl、C等等语言写的重定向脚本(程序),功能还是很强大的,这里感兴趣的同学不妨玩玩~这里贴上《squid 权威指南》中关于 squid 的详细描述,有问题可以到这里查阅:http://zyan.cc/book/squid/chap11.html
然后,我们把脚本文件放在配置文件中指定的位置,我这里是放在了/etc/squid3/下面,这里需要注意的是文件的权限问题,因为 squid 默认运行权限是 squid 用户,隶属于 squid 组(squid3 是 proxy 用户,proxy 组),所以如果 squid 没有权限执行脚本文件的时候是会报错的。这里的脚本文件我直接使用了 Pete 大大给出的 perl 脚本进行了一点点修改,可能是因为 Pete 直接从本地测试的,所以脚本有一点点的小问题,大家也可以从我给出的网址上下载。
然后我们配置虚拟机的代理。因为这里我没有用 iptables 进行流量转发,为了方便,直接配置了浏览器的代理配置,这里代理 IP 192.168.56.1:8080,当然大家也可以使用 iptables 进行转发,这样就可以了。
最后我们重启 squid。
sudo service squid restart
(squid3 的服务名称是 squid3),这里注意对于 squid 的任何操作一定要记得用 sudo 执行,否则会报错。
0×04 检验效果
这个时候,我们打开虚拟机,输入 http://www.baidu.com,就应该可以看到 baidu 的 logo 是反向的了,打开更多网页试试吧~是不是很好玩?23333。
当然,脚本只是使用了 flip 选项,当然这里不建议使用过于复杂的命令,会使浏览器响应过于慢。关于 imagemagic 的更多的效果可以从网上查阅,是一个相当强大的命令行图片控制软件。
0×05 更多猜想
实验已经成功,那么我们说回到我们今天的 MITM 主题上面。有的同学或许会问:你得得得得说这么多,怎么应用啊?我这里提供一个小的方式,抛砖引玉:
可以买一树莓派,买一个 usb 上网卡,一张中国联通或者中国电信的卡,再买一个无线网卡,用 airport 建个无线信号,买个电源,装上 linux 配置好 squid,当然还可以打开 sniff,配好接收数据的服务器。。
剩下的就是:背好你的背包,默默走到斯达巴克斯,点一杯咖啡,用吸管慢慢品尝这份苦茗,望向窗外花坛那朵玫瑰,心里静静地想着那个 TA。。。
说道这里,大家可能会想到菠萝,其实因为菠萝使用的是 openwrt 的精简系统,很多东西不可以使用,而且配置比起树莓派低了一些,大批量的图片操作很容易让 CPU 狂飙,自带的 MITM 最近貌似也不能用了?不过还是推荐 Geek 们自行动手~
如果有更多的想法,我们一起交流。
0×06 注意事项
因为我在做实验的过程中也遇到了很多问题,这里贴出一些常见的问题,大牛略过吧~:)
1、注意接收图片文件夹的权限和隶属于的用户,最好是能与 squid 用户相同的用户组。如果不是,可以使用 chown 进行修改。例:chown proxy.proxy xxx
2、注意脚本文件的权限。脚本文件必须是可以被 squid 用户执行的。
3、注意 log 文件的权限,关于 log 文件一共有三个,位于/var/log/squid3/下,分别是 cache.log、store.log、access.log,这三个文件必须是可写的,同时也可以直接用 chown 改变用户所有权限。
4、遇到更多虚拟机打不开网页的问题,大家可以查阅/var/log/squid3/cache.log,这里会给出很详细的说明。
这里我能想到的暂时就这么多了,再有什么其他问题我们可以一起交流,我这里有一把肥皂。。。
0×07 写在最后
最后,也没什么好说的了,附上链接:https://github.com/linvex/MITM-squid/tree/master
上几张图吧~