敬请阅读

ADGuard home——把墙请回家!在家里的路由器/光猫里安装DNS污染器/广告拦截器

2020年6月4日 分类:Linux 作者:tetsai

声明:本页面已按照MIP设计规范为移动端进行优化,可能存功能或内容缺失,完整版可以点此跳到底部然后查看.

tetsai

原创声明

本文由tetsai原创,转载请注明来源

有人可能觉得我疯了,我之前写了防止DNS污染,这次又准备亲自污染自己的DNS了?别误会,DNS污染技术有利有弊,假如这种DNS污染是可控的,我们就可以在自己的实力范围内,屏蔽任意的恶意域名,大数据隐私上传域名,**域名了。

这里我以我家路由器 烽火HG6201M 为例。

这里我网上查到此路由器的破解资料:

本来烽火HG6821M 就没有加密破解什么?使用***超级**登录就可以设置!只要你懂一点点就可以换网使用,只不过后台是**的界面不影响使用!不要切换运营商!切记!不要点击登录口的 注册 进入后台后 找到注册的地方填写你地区的注册码(你的装宽带单子上或进入老光猫看看)后保存重启光猫,注意看注册指示灯 闪耀--变成--常亮 OK注册成功!根据老光猫的配置信息先设定 新建一个互联网根据你的拨号方式选取类型,重启光猫联网成功后成功后在设定**(电话)完美转网!**送的烽火HG6821M 在辽宁**测试成功!

-----HG6821M-------
超级用户:
用户名:CMCCAdmin
**:aDm8H%MdA
工厂模式:
用户名:fiberhomehg2x01
**:hg2x0
改乱了就恢复出厂设置!记住不要切换运营商!!!后果很严重!不信你试试!别哭!
再有现在**的新版的HG6821M运营商选项是灰色的不可以修改的!
1 用电脑连接你的光猫 确认你可以打开光猫的登录界面
2 打开此网址 http://192.168.1.1/cgi-bin/telnetenable.cgi?telnetenable=1 开启telnet 服务
3 打开你的电脑命令行 输入telnet 192.168.1.1 进入 telnet服务 用户名输入 root ** hg2x0

我根据这句话“输入telnet 192.168.1.1 进入 telnet服务 用户名输入 root ** hg2x0”,成功进入了路由器的Linux控制台(现在的路由器一般都是linux系统吧!)

~ # uname -a
Linux (none) 2.6.36-svn189923 #215 SMP Wed Jun 19 14:51:09 CST 2019 mips unknown
~ # mkdir a
mkdir: cannot create directory 'a': Read-only file system
~ #

可以从uname -a看出,这是mips架构的CPU,而且几乎所有的文件系统,都被设为了只读

没办法,只能使用df命令查看挂载了哪些分区是可写的,tmpfs不用考虑了,虽然可以写,但这玩意就是一内存盘,重启就没啦!

~ # df
Filesystem           1k-blocks      Used Available Use% Mounted on
rootfs                    6648      6060       588  91% /
ubi0:Rootfs               6648      6060       588  91% /
tmpfs                   126568         4    126564   0% /tmp
ubi1:Appfs               23164     19264      3900  83% /rom
/dev/mtdblock7            4096      1200      2896  29% /flash
/dev/mtdblock8            6144      3224      2920  52% /usr/protest
/dev/mtdblock9           28672     28672         0 100% /usr/local
ubi2:plugfs              80852     32296     48556  40% /osgi
/dev/mtdblock6            4096       536      3560  13% /data
tmpfs                   126568         4    126564   0% /tmp
tmpfs                   151884      8904    142980   6% /var
tmpfs                   126568         0    126568   0% /mnt
~ #

我第一个就盯上了

ubi2:plugfs              80852     32296     48556  40% /osgi

因为在我印象里plugin是插件的意思,而插件意味着它必须可以读写,否则咋更新插件???

cd /osgi

进入此目录,发现确实可以读写,然后我就以这个目录为据点,安装AdGuard

因为是mips架构,我就直接选择了“AdGuardHome_linux_mips.tar.gz

新建一个adguard文件夹,然后把这个文件放进去(这个路由器的HTTPS协议有问题,没办法直接wget,只能先下载它,本地搭建一个http服务器,迂回的方式wget,后*会仍有很大的影响)

使用tar -xzvf AdGuardHome_linux_mips.tar.gz命令,对该文件进行解压,结果是

/osgi/adguard # ls
AdGuardHome                    AdGuardHome_linux_mips.tar.gz
/osgi/adguard #

然后进入AdGuardHome这个目录

并新建一个文件init.sh(这个路由器,没有nano,只能用vi)

#!/bin/sh
killall dnsmasq
AdGuardHome&

其中“killall dnsmasq”,也就是干掉这个路由器自带的DNS服务器,然后让“AdGuardHome&”,也就是AdGuard取而代之,这样路由器的DNS服务器就让它接管了,可以随时污染我不想访问的域名了!

chmod +x init.sh&&./init.sh

直接启动!

/osgi/adguard/AdGuardHome # 2020/06/04 11:07:06 [info] AdGuard Home, version v0.102.0, channel release, arch linux mips
2020/06/04 11:07:06 [info] Initializing auth module: /osgi/adguard/AdGuardHome/data/sessions.db
2020/06/04 11:07:06 [info] Auth: initialized.  users:1  sessions:0
2020/06/04 11:07:06 [info] Initialize web module
2020/06/04 11:07:06 [info] Bootstrap 0: 9.9.9.10
2020/06/04 11:07:06 [info] Bootstrap 1: 149.112.112.10
2020/06/04 11:07:06 [info] Bootstrap 2: 2620:fe::10
2020/06/04 11:07:06 [info] Bootstrap 3: 2620:fe::fe:10
2020/06/04 11:07:06 [info] Upstream 0: 9.9.9.10:53
2020/06/04 11:07:06 [info] Upstream 1: 149.112.112.10:53
2020/06/04 11:07:06 [info] Upstream 2: [2620:fe::10]:53
2020/06/04 11:07:06 [info] Upstream 3: [2620:fe::fe:10]:53
2020/06/04 11:07:07 [error] Couldn't load filter 1 contents due to stat /osgi/adguard/AdGuardHome/data/filters/1.txt: no such file or directory
2020/06/04 11:07:07 [info] AdGuard Home is available on the following addresses:
2020/06/04 11:07:07 [info] Go to http://127.0.0.1:8000
2020/06/04 11:07:07 [info] Go to http://192.168.1.1:8000
2020/06/04 11:07:07 [info] Go to http://14.19.82.34:8000
2020/06/04 11:07:07 [info] Go to http://100.71.42.16:8000
2020/06/04 11:07:07 [info] Starting the DNS proxy server
2020/06/04 11:07:07 [info] Ratelimit is enabled and set to 20 rps
2020/06/04 11:07:07 [info] The server is configured to refuse ANY requests
2020/06/04 11:07:07 [info] DNS cache is enabled
2020/06/04 11:07:07 [info] Creating the UDP server socket
2020/06/04 11:07:07 [info] Listening to udp://[::]:53
2020/06/04 11:07:07 [info] Creating the TCP server socket
2020/06/04 11:07:07 [info] Listening to tcp://[::]:53
2020/06/04 11:07:07 [info] Entering the UDP listener loop on [::]:53
2020/06/04 11:07:07 [info] Entering the tcp listener loop on [::]:53

很显然我们需要访问http://192.168.1.1:8000 这个后台地址,进行相关设置,设置就不讲了,很傻瓜化,至此ADguard在烽火路由器上就安装成功了

设置开机自启动

大部分的分区都被设为了只读,所以想设开机启动,十分麻烦,我研究了很久,几乎找遍了整个文件系统,终于让我发现了一个小漏洞:

/etc/init.rc/local 这个自启动脚本,调用了一个sh

/usr/protest/mf/setwan_enable.sh

而/usr/protest/恰恰被挂载为了可读可写!万岁!

修改文件/usr/protest/mf/setwan_enable.sh,前面加一行

/bin/sh /osgi/init.sh&

再设置/osgi/init.sh文件内容

#!/bin/sh
sleep 60
/osgi/adguard/AdGuardHome/init.sh&

哈哈,这样就可以开机自启动了!这个漏洞是真的难找~~

不足之处

2020/06/04 11:07:20 [info] Couldn't request filter from URL https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt, skipping: Get "https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt": x509: certificate signed by unknown authority
2020/06/04 11:07:20 [error] os.Chtimes(): chtimes /osgi/adguard/AdGuardHome/data/filters/1.txt: no such file or directory
2020/06/04 11:07:20 [info] Failed to update filter https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt: Get "https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt": x509: certificate signed by unknown authority

2020/06/04 11:07:43 [info] Couldn't get version check json from https://static.adguard.com/adguardhome/release/version.json: *url.Error Get "https://static.adguard.com/adguardhome/release/version.json": x509: certificate signed by unknown authority

很显然这个linux系统阉割的太严重了,证书都没有,加证书又回到了上面的问题——分区都是只读的啊

所以,仍然是采用迂回的方法,你先手动下载这些文件,搭建一个本地web服务器,然后在后台,通过http的方式添加规则了。