BeEF 如何进行端口扫描和 ping?

信息安全 javascript 牛肉
2021-09-13 04:39:03

我想知道 BeEF 如何执行 ping 请求、端口扫描或其他严重依赖与较低级别操作系统 (OS) 交互的事情?

我曾经认为 JavaScript 无法访问 OS 函数和 API。那么,BeEF 是如何做到这一点的呢?

PS:我已经阅读了其他问题,但我对答案不满意:

1个回答

在 BeEF 中,ping 不是 ICMP ping 请求,端口扫描并不意味着 SYN 扫描(或您在 nmap 中找到的任何其他常见端口扫描方法)。相反,BeEF 使用标准 Web API 发出第 7 层网络请求 (HTTP/FTP/WS),并测量这些 API 调用的时间,以确定主机是否已启动或端口是否打开。

为此,BeEF 使用了三种不同的技术:

  • 跨域 XMLHttpRequests
  • 带有 onerror/onload 事件监听器的 HTML 图像元素
  • 网络套接字

ping 模块仅使用 Cross-Origin XMLHttpRequests,而端口扫描模块使用所有这三个。BeEF 从不访问操作系统级别的网络功能,也无法发送 ICMP ping 请求或进行 TCP SYN 扫描。