介绍
在网络安全模块的第一个房间里,我们主要进行被动侦察。在第二个房间中,我们重点关注主动侦察以及与之相关的基本工具。我们学习使用网络浏览器来收集有关我们目标的更多信息。此外,我们讨论使用简单的工具(例如ping
、traceroute
、telnet
和 )nc
来收集有关网络、系统和服务的信息。
正如我们在上一个房间中了解到的那样,被动侦察可以让您在没有任何直接接触或连接的情况下收集有关目标的信息。您正在远处观看或查看公开信息。
主动侦察需要您与目标进行某种接触。这种联系可以是通过电话或以某种借口访问目标公司以收集更多信息,通常作为社会工程的一部分。或者,它可以直接连接到目标系统,无论是访问他们的网站还是检查他们的防火墙是否打开了SSH端口。想象一下,您正在仔细检查窗户和门锁。因此,重要的是要记住,在获得客户签署的法律授权之前,不要从事主动的勘察工作。
在这个房间里,我们专注于主动侦察。主动侦察从与目标机器的直接连接开始。任何此类连接都可能会在日志中留下显示客户端 IP 地址、连接时间和连接持续时间等信息。然而,并非所有联系都是可疑的。可以让您的主动侦察表现为常规的客户活动。考虑网页浏览;没有人会怀疑与数百名其他合法用户中的目标 Web 服务器连接的浏览器。当您作为红队(攻击者)的一部分工作并且不想惊动蓝队(防御者)时,您可以使用这些技术来发挥自己的优势。
在这个房间里,我们将介绍大多数操作系统通常捆绑或容易获得的各种工具。我们从网络浏览器及其内置的开发工具开始;此外,我们还将向您展示如何“武装”网络浏览器,使其成为高效的侦察框架。然后,我们讨论其他良性工具,例如ping
、traceroute
和telnet
。所有这些计划都需要与目标建立联系,因此我们的活动将受到主动侦察。
任何想要熟悉基本工具并了解如何在主动侦察中使用它们的人都会对这个房间感兴趣。尽管 Web 浏览器开发人员工具提供了图形用户界面,但它可能需要一些努力才能熟悉。所涵盖的命令行工具使用起来相对简单。
网页浏览器
Web 浏览器是一个方便的工具,尤其是它可以在所有系统上轻松使用。您可以通过多种方式使用 Web 浏览器收集有关目标的信息。
在传输级别,浏览器连接到:
- HTTP访问网站时默认TCP端口80
- HTTPS访问网站时默认TCP端口443
由于 80 和 443 是HTTP和 HTTPS 的默认端口,因此 Web 浏览器不会在地址栏中显示它们。但是,可以使用自定义端口来访问服务。例如,https://127.0.0.1:8834/ 将通过 HTTPS 协议连接到 127.0.0.1 (localhost) 的端口 8834。如果有 HTTPS 服务器正在侦听该端口,我们将收到一个网页。
浏览网页时,您可以按Ctrl+Shift+I
PC 上的 或Mac 上的Option + Command + I
( ) 打开 Firefox 上的开发者工具。⌥ + ⌘ + I
类似的快捷方式也可以帮助您开始使用 Google Chrome 或 Chromium。开发人员工具可让您检查浏览器已接收并与远程服务器交换的许多内容。例如,您可以查看甚至修改 JavaScript (JS) 文件、检查系统上设置的 cookie 并发现网站内容的文件夹结构。
下面是 Firefox 开发者工具的屏幕截图。 Chrome DevTools 非常相似。
Firefox 和 Chrome 也有很多插件可以帮助进行渗透测试。这里有一些例子:
- FoxyProxy可让您快速更改用于访问目标网站的代理服务器。当您使用 Burp Suite 等工具或需要定期切换代理服务器时,此浏览器扩展非常方便。您可以从此处获取适用于 Firefox 的 FoxyProxy 。
- 用户代理切换器和管理器使您能够假装从不同的操作系统或不同的 Web 浏览器访问网页。换句话说,您可以假装使用 iPhone 浏览某个网站,而实际上您是通过 Mozilla Firefox 访问该网站。您可以在此处下载适用于 Firefox 的用户代理切换器和管理器。
- Wappalyzer提供有关所访问网站所使用技术的见解。此类扩展很方便,主要是当您像其他用户一样浏览网站时收集所有这些信息时。 Wappalyzer 的屏幕截图如下所示。您可以在此处找到适用于 Firefox 的 Wappalyzer 。
随着时间的推移,您可能会发现一些非常适合您的工作流程的扩展。
2.1浏览到以下网站并确保您已在 AttackBox Firefox 或计算机上的浏览器上打开开发人员工具。使用开发人员工具计算问题总数。答案:8
找到 JavaScript 文件 script.js。检查文件并计算出问题总数。
ping
Ping 应该会让您想起乒乓球运动。你把球扔出去并期望把它拿回来。 ping 的主要目的是检查您是否可以到达远程系统以及远程系统是否可以返回您。换句话说,最初,这是用来检查网络连接的;然而,我们更感兴趣的是它的不同用途:检查远程系统是否在线。
简单来说,ping 命令将数据包发送到远程系统,然后远程系统进行回复。这样,您就可以断定远程系统已在线并且两个系统之间的网络正在运行。
如果您更喜欢更挑剔的定义,则 ping 是一个将 ICMP Echo 数据包发送到远程系统的命令。如果远程系统在线,并且 ping 数据包已正确路由且未被任何防火墙阻止,则远程系统应发回 ICMP 回显应答。同样,如果路由正确且未被任何防火墙阻止,则 ping 回复应到达第一个系统。
此类命令的目的是确保目标系统在线,然后再花时间进行更详细的扫描以发现正在运行的操作系统和服务。
在 AttackBox 终端上,您可以开始使用 ping asping 10.10.xx.xxx
或ping HOSTNAME
。在后者中,系统需要在发送 ping 数据包之前将 HOSTNAME 解析为 IP 地址。如果您没有在Linux系统上指定计数,则需要单击CTRL+c
以强制其停止。因此,您可能会考虑ping -c 10 10.10.xx.xxx
是否只想发送十个数据包。这相当于ping -n 10 10.10.xxx.xxx
在 MS Windows 系统上。
从技术上讲,Ping 属于 ICMP(互联网控制消息协议)协议。 ICMP 支持多种类型的查询,但我们特别感兴趣的是 ping(ICMP 回显/类型 8)和 ping 回复(ICMP 回显回复/类型 0)。使用 ping 不需要了解 ICMP 详细信息。
在下面的示例中,我们将数据包总数指定为 5。从 AttackBox 的终端,我们开始 ping 10.10.xxx.xxx
。我们了解到它10.10.xxx.xxx
已启动并且不会阻止 ICMP 回显请求。此外,数据包路由上的任何防火墙和路由器也不会阻止 ICMP 回显请求。