中国用户经常利用隐私方便的服务——杨洪丽隐私数据和现在的个性化推荐服务发生冲突,但我们不能选择。各大平台都差不多(* # # 6558 98(.2“用户的隐私数据。

你看eBay多苟且,偷偷摸摸的拿。


原文开始

最近,有人透露给我说,一些网站会扫描用户的 localhost 的端口,大概是用来获取用户设备指纹并用来跟踪,或者机器人检测。我觉得这是不可接受的,所以我实际调查了下,发现很多网站都在因为不确定的原因对用户进行端口扫描。

端口扫描介绍

端口扫描是个渗透测试人员和黑客常用的对抗技术,用来扫描开放给互联网的机器,确定什么应用或服务在网络上进行监听,这样可以展开特定的攻击。一般安全软件会扫描开放的端口,并标识为潜在的危险。

大多数家庭路由不会开放任何端口,所以扫描一个互联网用户的ip地址不太可能返回任何有用的信息。然而,很多用户在他们的电脑上会运行监听端口的软件,原因有很多-在线游戏,音视频共享,还有少部分用户会在本地安装远程连接程序。

网站通过端口扫描可以获得你运行的软件的信息。很多端口是明确由哪些服务使用的,所以一个开放端口的列表可以给出一个很好的视图,来确定在运行应用。例如, Steam(一个游戏商店和平台)运行在端口 27036,所以扫描到这个端口在开放,就有理由相信用户在浏览页面时还在开着steam。

eBay是如何扫描端口的

过去我曾经做过一个安全产品,特别注意来自员工浏览器的端口扫描。像BeEF一样的攻击框架就有端口扫描的特性,主要用来侵害用户电脑或者网络内其他设备。所以,我想对设备上的任何端口扫描都发出潜在危害的报警,而一个网站对localhosts的扫描会触发报警。

另外,据报道过去有些银行有时会扫描访问者的端口,我听说 Threat Matrix 提供这个对客户的恶意软件探测检查服务。

我听说ebay是会扫描端口的,不过开始访问并没有发现什么可疑的行为。我想他们可能用了什么启发式的方式决定扫描谁,所以我试了不同的浏览器,仿造了一些设置,没有任何发现。

我想可能是因为我用的是Linux,所以我创建了一个Windows的虚拟机,非常明确的,我在浏览器工具中发现了易贝首页进行了端口扫描:

易贝端口扫描

观察下易贝扫描的端口,它在扫描本地是否在运行 VNC 服务(Virtual Network Console 一种远程登录的服务) ,和报道的一些银行网站是一样的。我列出了端口和他们已知的作用(我不熟悉的一些留空白了):

  • 5900: VNC
  • 5901: VNC port 2
  • 5902: VNC port 3
  • 5903: VNC port 4
  • 5279:
  • 3389: Windows remote desktop / RDP
  • 5931: Ammy Admin remote desktop
  • 5939:
  • 5944:
  • 5950: WinVNC
  • 6039: X window system
  • 6040: X window system
  • 63333: TrippLite power alert UPS
  • 7070: RealAudio

VNC有时会作为机器人网络程序或病毒远程登录用户电脑的一部分。有几个恶意软件服务就是通过操纵VNC来达到这个目的的。不过一些管理员也使用VNC当做可用的工具来远程登录机器,或者一些终端用户支持软件也会使用,所以根据是否有VNC来鉴别恶意软件是个坏主意。

而且,当我安装运行了一个VNC服务,我没发现网站的表现有任何不同-所以到底为什么易贝在查找VNC端口?

如何使用WebSocket进行端口扫描

WebSocket 是可以让网站进行双向通信的方式,就像传统的网络socket一样。这可以让网站周期性的传送一些信息到浏览器,而不需要用户交互或者轮训,这个有很好的易用性。

配置了一个 WebSocket, 需要指定一个目标主机和端口,但是不需要和脚本所在的服务器相同。为了扫描端口,脚本只需要指定一个私有的ip地址(比如 localhost)和想要扫描的端口。

WebSocket 只能通过http交互,所以除非扫描到的主机和端口是个WebSocket的服务器,否则是无法建立连接的。为了解决这个问题,我们可以根据连接时间来判断是否端口在打开。开放的端口会耗费更多的时间,因为需要经历一个TLS协商的过程。

你也可能等到不同的错误信息。如果你安装了python,试着在8080端口运行一个本地的web服务器:

python3 -m  8080

现在,打开浏览器的开发者控制台(一般是 options -> Web Developer -> Console) ,然后直接运行一些javascript脚本。这是我在chrome操作后看到的信息:

> var s = new WebSocket("ws://127.0.0.1:8080")
< undefined
VM1131:1 WebSocket connection to 'w; failed: Error during WebSocket handshake: Unexpected response code: 200
(anonymous) @ VM1131:1
>var s = new WebSocket("ws://127.0.0.1:8081")
<undefined
VM1168:1 WebSocket connection to 'w; failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

利用错误信息和时间攻击,一个网站可以很容易的获取端口是否打开的信息。

暗中扫描道德沦丧

不管端口扫描是用来传播病毒也好,是电子商务的一部分也好,或者是银行"安全检查",他都是明确的不道德行为而且是可能触犯法律的。

如果你看到这这种行为,我觉得你应该像扫描的机构投诉,并且安装扩展包来阻止你的浏览器的这种行为,一般扩展会在第一时间阻止这种脚本加载。

原文结束

看官姥爷们可以去验证一下看看。

相关推荐