使用HTML5和JS-Recon进行端口扫描

这是一个发表在BlackHat大会上的最新话题。HTML5有两个API可以实现跨域的调用:Cross Origin Requests和WebSockets。JavaScript可使用其与任何IP、任意端口(被阻止的除外)进行连接,这使其成为端口扫描的一个选择。

这两个API都包含readyState属性,它表示在给定时间内的连接状态。每个特定的readyState值的持续时长很大程度上是基于到目标端口连接的状态。这表明,通过观察这种行为的不同,可以判断端口是open、closed或filterd状态。对于Cross Origin Requests来说readyState为1的持续时间,WebSockets是readyState为0的时间。

我对不同的端口状态的持续时间做了标定,数据如下图所示。这些数据只在内部网络适用,当在扫描一个外网IP时,需要将网络延时考虑进去。

使用HTML5和JS-Recon进行端口扫描_第1张图片

因为这种扫描不是发生在Socket级别,而是在应用层级别的扫描,因此成功率还依赖于目标端口上运行程序的特性。当请求被发到一个特定类型的程序时,该程序会读取该请求,保持静默,并保持Socket的开放,可能是期待更多的输入数据或是所期望格式的输入。像这种类型的程序,它的端口状态是无法确定的。

因为即使是关闭状态的端口也能够识别,所以可以将这项技术扩展到实现网络扫描和IP检测中。我写了一个叫JS-Recon的工具来完成这些事情。更多有关JS-Recon的工作可以点击这里。这些技术暂时只支持Windows系统,*nix系统上无法判断关闭状态的端口,时间特征与Windows下有很大不同。


原文:http://blog.andlabs.org/2010/12/port-scanning-with-html5-and-js-recon.html

你可能感兴趣的:(信息安全,实用技术)