这篇文章本来是知乎回答的一个问题,但是由于本人五行缺勤奋,所以一直没写(其实是忘了=。=),下面是我的一个实验,如何通过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
上几张图吧~