在前几个月,我写了一片关于Python实现内网DNS+ARP欺骗的帖子,当时出现的问题是,只能针对http协议的网站有效,对于https协议的网站则会出现网站无法打开的情况,当时我的判断是因为ssl加密协议的问题,经过今天的实验,验证了我的猜想。
环境:ubuntu18+apache2
首先,安装相应依赖环境,ubuntu18自带openssl,故我们不用在单独安装
sudo apt install libssl-dev
这一步主要是安装openssl,以便于生成自己的证书,当然,在配置开启apache的ssl模块后他也会生成默认的证书,也是可以用的,所以不想生成自己的证书的话,可以忽略这一步。
然后开启SSL模块
sudo a2enmod ssl
开启SSL站点
sudo a2ensite default-ssl
然后,用文本编辑器,打开并修改“/etc/apache2/ports.conf”配置文件,检查是否有
Listen 443
这样一句,这主要是为了能监听https的443端口,其实在开启SSL模块与启用SSL站点后它就会默认有这句,但为了保险起见,最好再看一下,确保万无一失
配置default-ssl配置文件,用文本编辑器打开“/etc/apache2/sites-enabled/default-ssl.conf”配置文件,找到
SSLEngine on
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
这一块,其中最重要的就是,这三句
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLEngine on:
意思是开启SSL/TLS协议引擎
SSLCertificateFile :
意思是,制定服务器持有的x509证书(PEM编码) 后面就是路径
SSLCertificateKeyFile:
意思是,制定服务器私钥文件位置(也是PEM编码),如果上面服务器的证书文件不包含相应的私钥,就必须使用这一句
其余的配置项。可自行查阅相应资料深入了解
这样依赖https服务就算是配置完毕,然后使用
sudo service apache2 start
启动apache2
然后打开浏览器。输入https://localhost查看站点是否能打开
如果是第一次打开的话,会看到各自说此站点不安全之类的信息,那是因为我们的证书不靠谱的缘故,毕竟靠谱的证书申请起来代价还是比较大的,我们只是做一个渗透实验所以没必要了,直接点击高级,继续访问就可以了,然后就能看到我们的网站页面了
我这里是默认的apache安装后的index.html页面,你们可以自己写页面放进去
看到这里就说明配置没有问题
然后不关闭apache,使用我之前写的脚本,脚本的博客地址:
python scapy实现arp欺骗与DNS欺骗(二)
然后将我的手机作为要欺骗的目标设备,现在查看效果,不论是打开http协议的网站还是打开https协议的网站,最后都被重定向到了我的渗透机搭建的网站上去了,就是我们刚刚搭建的https服务器
我先在浏览器中找一个https协议的网站打开它,会先看到
这个原因和刚刚我说的一样,证书不靠谱,普通用户的话安全意识没有那么高,肯定会点击继续,继续后就能看到我们服务器的网站了
我在这里打开的是必应的网站,其余网站可自主尝试
利用这种思路,便可以在内网进行钓鱼攻击,最保险的防御措施就是开启网关的arp静态绑定,以及提高自身的安全意识,毕竟人类才是网络最大的安全漏洞