請增加手動設置代理端口的功能

任何有網絡權限的應用都可檢查本地開啓的端口,迷霧通的 HTTP 和 SOCKS 端口號可以成爲特徵。

1 Like

目前cli版本可以做到。。。

Android 下無法使用 cli 版本,至少無法使用它開啓 VPNService,Linux 的 cli 版本我也沒找到開啓全局 VPN 的方法

在“ 關於 Android 手機使用和購買、刷機的一些建議
这个帖子里,楼主提到了扫描本地端口号的问题。之后我找了一个可以扫描端口号的工具,花时间研究了一下,结果如下:

1.扫描端口号的速度大约是600个每秒。如果是把所有可能的端口号都扫一遍(0~65535),动静太大,需要耗时两分钟,需要耗电1%。
2.但如果仅仅是扫描一些常见的端口号,一秒钟扫描600个的速度足够快了。把上百个翻墙软件(迷雾通是9809,9909和9910,Tor是8118和9050,以此类推),常用的端口号都扫描一遍,就可以对号入座,确认用户在用哪些翻墙软件。基本上可以一网打尽。
3.扫描端口号的行为无法阻止。我试了所有能想得到的手段:

  • 用隐私管理工具禁用包括“检测网络状态”“获取应用列表”在内的一切权限。
  • 把应用放到工作账户里。
  • 用防火墙软件禁止应用联网。
  • 在迷雾通里把这个应用设置为不通过迷雾通联网。

这些都不行。只要应用能打开个一秒钟,就有充分的时间来扫描。

目前来看唯一的应对方法就是让迷雾通不要用固定的端口号。用随机端口号,或者在手机端直接禁用端口。(手机端既然是开全局VPN,应该不需要配置端口号?只有和同一局域网的其他设备共享迷雾通时,才必须有端口号?)
端口扫描只能知道用户设备开放了哪些端口号,并不能直接知道哪个端口是由哪个APP开放的。因此随机端口就可以解决问题。

另一个临时解决办法,就是在用迷雾通时,把任何你不放心的应用都完全关闭。因为迷雾通只在连接时才开放端口,断开连接时没有,不和那些应用同时使用的话,端口就不会被检测到。

(原标题:在手机端请加入修改/随机/关闭代理端口的功能,防止任何手机应用通过扫描9909和9910端口就知道用户在使用迷雾通
准备发帖时发现有类似内容的主题,故不另开新帖,而是在已有帖子下回复。)

你说的一切,都忘了一点:任何安卓应用可以调用API列举同设备的所有应用

所以「不让手机上其它应用发现迷雾通」,除非使用隔离,无解。

2 Likes

使用XPrivacyLua可以禁止应用“读取应用列表”的权限。
被禁止后的应用,读取应用列表时,只能看到自己(返回了一个只包含自己的假列表)。看不到其他应用。
这点要验证起来也容易,用XPrivacyLua把自己常用的应用商店(或者任何一个需要读取应用列表的应用,比如迷雾通)禁了权限,再去应用商店里查看应用列表,会发现只剩下那个应用自己。

(测试了一下,我把迷雾通的“读取应用列表”权限禁了。然后进入迷雾通那个“选择例外应用”的设置,列表载入条就一直在那转,加载不出来。再恢复权限后就恢复正常。)

而即使把某些应用放到工作账户里隔离开,仍然可以通过探测端口的方式来检测到迷雾通。这个只能靠迷雾通换端口来解决。

這個 API 可以用 work profile 隔離,也可以用 xprivacylua 攔截

你以為換了通訊埠別人就不知道你用了代理了嗎?

1 Like

至少別人不知道你是迷霧通用戶還是愛國機場用戶

看代理ip是什麼就知道了呀。。。

1 Like

我探测了一下自己的手机,发现开放了十几个端口,除了迷雾通的,都是随机的。
可能是手机里一些其他应用也会开启端口,一些安全软件,邮件客户端,备份同步软件,手机系统自身也会。
这种情况下就没法仅凭你开了端口就判定你用了代理。(只能探测哪个端口开着,不能直接知道是哪个程序开放的哪个端口。只能猜。)

我说的是本地代理端口,IP地址统一都是 127.0.0.1
并且因为是本地的端口,即使把某个应用所有联网权限都禁了,仍然可以扫描本地端口。

建議試試在 termux 運行一下
curl ip-api.com -x 127.0.0.1:9910
還有
curl ip-api.com -x socks5://127.0.0.1:9909

確實,應該再給 HTTP 和 SOCKS 端口加賬號密碼

不覺得有點多餘嗎?至少我覺得這不是一個代理軟件應該做的事。

迷雾通每次连接时会把这两个端口打开,断开连接时会把这两个端口关上。
我需要每次连接迷雾通都用termux运行一次这两个指令?那太麻烦了。(我手机翻墙的时候少,迷雾通不会一直开着。手机总处于VPN开启状态,有些别的软件会出故障。我懒得排查。)

编辑:我误会了,我还以为这是关闭端口的指令,实际上是假定这个端口是一个“代理服务器端口”,检查其代理IP相关信息用的。
输入指令后,输出了出口节点的相关信息。
我又输了一遍指令,把端口号9910故意换成另一个在我手机上能扫出来,但是不知道干什么用的端口,然后按回车键后没有任何输出。(然后此时再测试9910端口也没输出了??这工具还有点儿坑,一旦没输出,只能退出重进才能试下一个端口。)(如果输的是一个根本没扫出来的端口号,会提示连接被拒。这时倒是可以立刻测试另一个端口,不用退出重进。)

也就是可以通过这个方式来判定一个端口到底是不是代理端口。并不是说只要端口随机,就猜不出这是代理端口了。(不过扫出来还会有些麻烦(2分钟+1%电)。而且就算不能从端口号猜出是迷雾通的代理,也可能从出口节点的相关信息中猜出。)

這只是一個測試,termux能知道你用代理別的程式也知道你用了代理。

不光Xposed万年不更新了。连XPrivacyLua也万年不更新了。
Xposed不更新了,至少还有edXposed之类的替代品可以用。
现在除了某些系统自带,我就只知道XPrivacyLua这一个工具能够禁止“读取应用列表”的权限(我试过AppOps,装在我手机上,没看到能禁止读取应用列表的功能)。如果XPrivacyLua这个工具废了,那我真不知道该怎么办了。只能是借助工作账户实现一定程度的隔离。

XPrivacy,还有其后代XPrivacyLua并不安全,因为应用可以轻易绕过XPrivacy的阻拦。这个是因为XPrivacy只是植入应用内部,截获一些标准函数库里Java的API,并不能真的避免应用用自己的代码获取这信息,因为植入代码的权限并不高于应用本身。所以只能当作屏蔽一些「良性」数据采集的方法,对于恶意软件,包括微信等墙内监控软件,根本没有办法

有人已经写出现成的库,绕过xprivacy的「保护」。这不是xprivacy有bug,是设计上因为xprivacy的架构导致的,无法解决。

2 Likes

現在 native 方式獲取信息很多會被 SELinux 攔截,比如非 root 下 pm list package 獲取應用列表,getprop 中部分信息也會被 SELinux 攔截。不過 SELinux 具體可以保護到什麼程度我不是很清楚。