诸如SSH、Netcat、Tmux和Vim等工具是必不可少的,并且为大多数信息安全专业人士所日常使用。尽管这些工具本身并非专为渗透测试设计,但它们对渗透测试过程至关重要,因此我们必须熟练掌握它们。
使用 SSH
安全外壳协议(SSH)是一种默认运行在22端口的网络协议,它为系统管理员等用户提供了远程安全访问计算机的方式。SSH可以配置为使用密码认证,或者使用SSH公钥/私钥对进行免密码的公钥认证。SSH可用于访问同一网络或互联网上的远程系统,利用端口转发/代理连接到其他网络中的资源,以及在远程系统上传和下载文件。
SSH采用客户端-服务器模型,连接运行SSH客户端应用程序(如OpenSSH)的用户和SSH服务器。在攻击靶机或实际评估中,我们经常获得明文凭证或可用于通过SSH直接连接到系统的SSH私钥。SSH连接通常比反向Shell连接稳定得多,并且常被用作”跳板机”,以便在网络中枚举和攻击其他主机、传输工具、建立持久化访问等。如果我们获得了一组凭证,我们可以使用以下方式通过SSH远程登录到服务器:
[!bash!]$ ssh Bob@10.10.10.10
Bob@remotehost's password: *********
Bob@remotehost#
此外,我们还可以读取受入侵系统上的本地私钥,或者添加我们的公钥以获得特定用户的SSH访问权限,正如我们将在后续章节讨论的那样。正如我们所见,SSH是安全连接到远程机器的绝佳工具。它还能够将远程机器上的本地端口映射到我们的本地主机,这在某些时候会非常方便。
使用 Netcat
Netcat(或称为 ncat、nc)是一款出色的网络实用工具,用于与TCP/UDP端口进行交互。在渗透测试中,它有很多用途。其主要用途是连接Shell,我们将在本模块后面讨论这一点。除此之外,netcat 可用于连接到任何侦听端口,并与在该端口上运行的服务进行交互。例如,SSH被编程为处理通过22端口的连接以发送所有数据和密钥。我们可以使用netcat连接到TCP 22端口:
[!bash!]$ netcat 10.10.10.10 22
SSH-2.0-OpenSSH_8.4p1 Debian-3
如我们所见,22端口向我们发送了其横幅,表明其上运行着SSH服务。此技术称为”横幅抓取”,有助于识别特定端口上运行的服务。Netcat在大多数Linux发行版中都已预装。我们也可以从此链接为Windows机器下载副本。Netcat的另一个Windows替代品是使用PowerShell编写的PowerCat。Netcat还可用于在机器之间传输文件,我们将在后面讨论。
另一个类似的网络实用工具是 socat,它拥有一些netcat不支持的功能,例如端口转发和连接到串行设备。Socat也可用于将Shell升级为完全交互式的TTY。我们将在后面的章节中看到一些例子。Socat是一个非常方便的工具,应该成为每个渗透测试工具包的一部分。在获得远程代码执行后,可以将Socat独立二进制文件传输到系统,以获得更稳定的反向Shell连接。
使用 Tmux
终端多路复用器,如 tmux或 Screen,是扩展标准Linux终端功能的实用工具,例如在一个终端内拥有多个窗口并在其间切换。让我们看看使用更常见的tmux的一些例子。如果我们的Linux系统上没有安装tmux,可以使用以下命令安装:
[!bash!]$ sudo apt install tmux -y
安装tmux后,我们可以输入tmux命令来启动它。

输入tmux命令的默认前缀键是 [CTRL + B]。要在tmux中打开一个新窗口,我们可以按下前缀(即 [CTRL + B]),然后按 C。

我们可以看到底部的编号窗口。我们可以通过按下前缀键然后输入窗口编号(如0或1)切换到每个窗口。我们还可以通过按下前缀键然后按 [SHIFT + %]将窗口垂直分割成窗格。

我们也可以通过按下前缀键然后按 [SHIFT + "]进行水平分割窗格。

我们可以通过按下前缀键然后使用左或右箭头键进行水平切换,或者使用上或下箭头键进行垂直切换。上述命令涵盖了一些基本的tmux用法。它是一个功能强大的工具,可以用于许多事情,包括记录日志(这在任何技术任务中都非常重要)。这份 速查表是一个非常方便的参考。此外,ippsec 的 tmux 介绍视频值得你花时间观看。
使用 Vim
Vim是一个强大的文本编辑器,可用于在Linux系统上编写代码或编辑文本文件。使用Vim的一大好处是它完全依赖键盘操作,无需使用鼠标,一旦熟练掌握将能显著提高编写/编辑代码的生产力和效率。我们通常会在被入侵的Linux系统上找到Vim或Vi,因此学习如何使用它可以使我们即使在远程系统上也能编辑文件。Vim还有许多其他功能,如扩展和插件,可以极大地扩展其用途,使其成为一个出色的代码编辑器。让我们看看Vim的一些基础知识。要使用Vim打开文件,我们可以在命令后加上文件名:
[!bash!]$ vim /etc/hosts

如果我们想创建一个新文件,输入新文件名,Vim将打开一个带有该文件名的窗口。打开文件后,我们处于只读的正常模式,允许我们导航和阅读文件。要编辑文件,我们按 i键进入插入模式,Vim底部会显示 -- INSERT --。之后,我们可以移动文本光标并编辑文件。

完成文件编辑后,我们可以按 Esc键退出插入模式,返回正常模式。在正常模式下,我们可以使用以下按键执行一些有用的快捷操作:
| 命令 | 描述 |
|---|---|
x | 剪切字符 |
dw | 剪切单词 |
dd | 剪切整行 |
yw | 复制单词 |
yy | 复制整行 |
p | 粘贴 |
提示:我们可以在任何命令前加一个数字来使其重复执行多次。例如,4yw将复制4个单词而不是一个,依此类推。
如果我们要保存文件或退出Vim,必须按 :进入命令模式。进入后,我们将在vim窗口底部看到我们输入的命令。

有许多命令可供我们使用。以下是一些例子:
| 命令 | 描述 |
|---|---|
:1 | 跳转到第1行 |
:w | 写入(保存)文件 |
:q | 退出 |
:q! | 不保存退出 |
:wq | 保存并退出 |
Vim是一个功能非常强大的工具,拥有许多其他命令和特性。可自行搜索学习。这是进一步解锁Vim潜能的极好资源。
可选练习
挑战你对模块内容的理解,并回答下面的可选问题。这些被视为补充内容,完成模块并非必须。你可以随时查看答案来检查你的工作。
应用本节所学知识,获取上述服务器的横幅并将其作为答案提交。




