社会工程渗透测试教程(三)(3)

简介: 社会工程渗透测试教程(三)

社会工程渗透测试教程(三)(2)https://developer.aliyun.com/article/1508399

我在哪个子网?

在许多网络环境中,特别是用于客户端访问的地方,DHCP 是非常依赖的,但是如果 DHCP 不可用怎么办?如何收集关于本地子网和其中的主机的信息?

简单来说,通过运行数据包嗅探软件来找出谁在那里交流。Wireshark、TShark 或 TCPDUMP 是首选工具。显然,因为没有 IP 地址,就不会看到任何单播 IP 流量,但会看到广播,比如地址解析协议(ARP)流量。这可以立即显示出本地 IP 地址范围,并且通常可以指示默认网关。默认网关几乎总是给定子网中的第一个或最后一个地址,例如 1 或.254。

思科发现协议(CDP)也可以用来提供有用的信息。CDP 数据包将包含 IP 地址和虚拟局域网(VLAN)标记,这两者都可以在连接到网络或欺骗数据包时使用。

连接时不要忘记查找动态干线协议(DTP)数据包。可能可以建立到交换机的干线并放置在所选的 VLAN 中。在这些情况下,工具如 Yersinia 可能会很有用。

总是存在将 IP 分配给另一个主机的风险,所以在测试时请记住这一点。

端口安全

端口安全和 802.1x 是用于保护交换网络中的恶意设备的机制。通过各种方式,它们控制哪些物理设备可以连接,它们可以访问什么,以及它们必须如何配置才能获得访问权限。简单的解决方案依赖于 MAC 地址过滤,而更复杂的解决方案则安装软件代理,并在允许其进入网络之前测量系统的安全状况。认证也可以使用证书和用户认证的组合来处理。

但是对于无法安装代理或证书的设备怎么办?在这种环境下如何进行身份验证?遗憾的是,通常的答案是通过它们的 MAC 地址。对我们来说,这意味着我们只需要一个受信任设备的 MAC 地址。四处寻找 VoIP 电话、打印机或瘦客户端,因为这些设备通常被添加到 MAC 地址绕过(MAB)列表中。这些设备类型通常在设备的某个地方有 MAC 地址印刷在贴纸上。

欺骗 MAC 地址很简单。在 Kali 中,我们会发出以下命令:

root@pentest:/home/# ifconfig eth0 down
root@pentest:/home/# macchanger -m BE:EF:BE:EF:BE:EF eth0
Permanent MAC: 00:0c:29:ed:1d:af (VMware, Inc.)
Current MAC: 00:0c:29:ed:1d:af (VMware, Inc.)
New  MAC: be:ef:be:ef:be:ef (unknown)

这个命令应该适用于大多数 Linux 发行版。

在 OSX 上,执行以下操作:

sudo ifconfig en1 ether BE:EF:BE:EF:BE:EF

就是这么简单!

在 Windows 操作系统中,可以下载应用程序,如 Etherchange—ntsecurity.nu/toolbox/etherchange/。也可以在注册表中更改 MAC 地址。

远程连接到网络

社会工程的本质通常意味着没有时间坐在那里破解,甚至根本没有时间在网站上花费太多时间。很可能会有多个目标,这项工作需要在现场团队成员和办公室内或建筑外的人员之间分工合作。

这就是远程连接在测试中发挥重要作用的地方,但如何实现呢?简短的答案是部署一个“dropbox”。 Dropbox 是一个插入网络的设备,为团队成员提供进入目标范围的访问权限。有多种选项可供选择。最简单的方法是在建筑物内的某个地方放置一个无线接入点,并将其连接到公司 LAN。由于各种原因,这并不总是切实可行,因此可能需要更高级的解决方案,例如一个完全功能的个人电脑或路由器。让我们看看每个选项。

Dropbox

Dropbox 通常是一个完全功能的计算机,可以插入网络并留在后面。这很有用,因为系统可能已经准备好使用一套完整的侦察和黑客工具。此外,根据需求和预算,可以选择多种不同的硬件平台和操作系统来实现。在转向这些选项之前,让我们看看部署 dropbox 时可能遇到的一些挑战。希望这能帮助我们找到更好的解决方案。

Dropbox 挑战

想象一下,没有授权进入建筑内部,需要插上设备并快速操作,可能会遇到什么障碍?在本章前面提到的活动端口和没有 DHCP 地址时,已经暗示了一些挑战。

首先,dropbox 需要相当小,可以隐藏在地板板块下或电缆整理篮中。它需要能够运行某种 Linux 发行版并且可用。一旦插入,清楚地显示它连接的端口是活动的至关重要。设备上的指示灯是一个好的开始,但显示设备已获取 IP 地址的屏幕也很有用。设备上的连接性也是一个要求。可能需要添加 USB 无线适配器进行数据包注入,或者添加 3G 万能钥匙进行远程控制。它显然需要一个有线网络端口。

设备也不需要运行得非常快,因为有很多轻量级的 Linux 发行版可用。当然,拥有更多的功率会更好,只是需要考虑到小尺寸的要求。

所涉及的系统还需要能够相对快速地启动。毕竟,等待设备上线的时间应该尽量避免。很可能只有有限的时间窗口来执行任务,以免被抓住现行。

总结一下,需求如下:

• 相当小

• 屏幕显示 IP 地址

• 指示灯显示网络连接和活动

• 大约一分钟启动

• 连接性——USB,有线网络

有很多选项可供选择,可以满足上述部分或全部要求。有些在某些方面更强大,但在其他方面可能会受到影响。例如,一台非常强大的机器可能不符合尺寸要求,尽管如稍后将讨论的那样,也有一些小而强大的选择。关键词始终是“妥协”。如果希望得到小而便宜的东西,那肯定不会太强大。

听到这个领域已经有商业选择可用可能不会让你感到惊讶。

Pwnie Express

pwnieexpress.com的人们已经开始制作渗透测试的投放盒有一段时间了。一切都始于 PwnPlug,它基本上是一个内置微型计算机的电源插头。在繁忙的办公环境中,这些设备相当容易隐藏。鉴于电源插座通常靠近网络插座,这无疑是一种隐蔽设备的好形态。Pwnie Express 制作了几种这些设备的变体,包括“PowerPwn”,这是一个完全功能的八路电源供应器。这些产品包括一个内置渗透测试工具的 Linux 发行版,以及诸如 3G/4G 适配器之类的酷功能,这样你就可以拨号回家。

这些产品唯一的缺点,尤其是对于那些业余爱好者来说,就是成本。 “PwnPlug Elite”售价为$995,而“PowerPwn”售价为$1495。这些设备更适合每周执行这种工作的组织,因此可以提供物有所值。

如果这是首选的选择,那么自建选项有哪些呢?

树莓派

如果还没有听说过树莓派的人,很可能在过去几年里一直生活在洞穴里。自从宣布以来,树莓派的普及率就非常高,并且一直受到密集的媒体报道。当然,所有这些都是有充分理由的,因为树莓派确实是一件非常酷的设备。

基本上,树莓派是一台信用卡大小的计算机,配备了 256 或 512MB 的 RAM,800MHz 的 ARM CPU,有线网络和 USB。所有这些只需约$25。它是作为一台极低成本的计算机开发的,以帮助孩子们重新开始编程,但在改装和黑客社区中也得到了广泛应用。有各种各样的项目,从自动化喂鸟器到家庭自动化系统。Pi 的极低功耗意味着它也可以长时间地运行于电池组。

树莓派如何满足需求?嗯,它肯定符合体积要求,在迷你的 85.60 毫米 × 56 毫米 × 21 毫米,重量仅为 45 克的情况下,很难反对这一点。然而,用于操作系统的 SD 卡会略微突出这些尺寸。

它没有配备屏幕,但有几个 LCD 选项可供选择,可以集成到树莓派中。有些是由 USB 控制和供电的,有些直接插入树莓派的引脚。无论哪种情况,都可以显示 IP 地址。另一个选择是使用用于汽车倒车系统的微型彩色 TFT 屏幕之一。所有这些都可以在 eBay 和 www.adafruit.com 上购买。在本章后面将介绍如何使用 Adafruit LCD。

树莓派还具有电源、磁盘活动、网络连接、双工和速度的指示灯,提供了连接到活动端口的信息。大多数操作系统的启动时间肯定在一分钟左右。一个良好的 Raspbian 版本在约 30 秒内开始响应 ping 命令,并在约 35 秒左右接受安全外壳(SSH)连接。

树莓派的普及意味着它也得到了许多主流 Linux 发行版的支持,其中许多提供了专为树莓派设计的镜像。更好的是,Kali Linux—www.kali.org—也提供了一个适用于树莓派的镜像,它也非常好用。该镜像比大多数树莓派发行版大,并且需要一个 8 GB 的 SD 卡,但这些都不贵。

值得注意的是,树莓派只有 512 MB 的 RAM,因此在这里工作的约束条件很严格。它不会刷新任何速度记录,这么说吧,但对于大多数任务来说,它还是可以使用的(参见图 12.1)。

图 12.1 树莓派。

英特尔 NUC

如果优先考虑性能,那么目前英特尔 NUC 就是“突出表现”的科技产品。NUC 不仅体积小,而且最新版本搭载了英特尔 Core i5 处理器。NUC 是一种裸机设备,可以安装内存、固态存储(SSD)和无线网卡。它还具有物理网络端口。这些微型计算机内部最多可以安装 16 GB 的 RAM,这意味着它们在这种应用中绝对速度飞快。当说它们小不是在开玩笑;它们的尺寸是 4 英寸 × 4 英寸 × 2 英寸,肯定很容易藏在不易发现的地方。它们还有另一个有用的属性,即作为投递箱,它们配备了与 VESA 兼容的支架。这意味着它们可以安装在热座位的显示器背面,而且在很长一段时间内可能不会被注意到,尤其是如果 LED 电源指示灯被隔离胶带遮挡的话。

因为它们使用 mSATA SSD 而不是机械硬盘,这些小型计算机的启动速度仅为几秒钟。

尽管需要做出一些牺牲,但这种性能是必须的。例如,它比树莓派要大,如果需要的话可能无法长时间运行在电池上。它也没有屏幕或任何轻松地内置到机箱中的方法。然而,可以通过使用外部显示器或远程同事提供信息来管理这一点,以确定何时建立所需的连接。这也不是一种廉价的方式来完成任务,尽管有一个更便宜的英特尔赛扬版本可供选择。但从速度和灵活性的角度来看,树莓派确实无法与其相提并论。

NUC 主板可以作为独立项目购买,并可以内置到带有屏幕的定制机箱中。标准 NUC 裸机机箱实际上没有多余的空间放置小工具(图 12.2)。

图 12.2 英特尔 Nuc。

亚军

如果设备必须比树莓派更小,那么还有其他选择。首先,基于 Android 的迷你 PC,如 MK802 类型的设备是一个合理的选择。它们比 USB 存储设备稍大,搭载四核 ARM 处理器和 2GB 的 RAM!它们确实是小巨人。应该可以在系统上运行 Kali 的 ARM 分支之一。它们也相当便宜,目前约 60 英镑。当然,它们的微小尺寸意味着一些限制。例如,机箱内不可能内置屏幕,它们也没有有线以太网。一个 USB 转以太网的转接器可以解决问题,但这会随着每个新玩具的增加而增加设备的尺寸。尽管如此,它仍然会成为一个功能强大且小巧的“dropbox”。因为设备直接插入显示器,可能会有替代的 dropbox 模式。假设伪造一个应用程序来捕获凭据?当用户打开显示器时,他们看到的是他们的域登录画面,但实际上是“dropbox”。然而,顾问需要靠近才能迅速捡起它,因为第一个查看问题的 IT 人员很可能会察觉到问题并将其带走。

另一款即将推出的设备是 CuBox—cubox-i.com

这些微型设备在很大程度上符合树莓派的模式,但将运行四核 CPU 并拥有 2GB 的 RAM。同样,这些设备基于 ARM CPU,因此可以通过一些小小的修改来运行大多数 Linux 发行版。它们的尺寸为 2 英寸×2 英寸×2 英寸,并配备千兆以太网。同样,任何外设或屏幕都无法放入机箱内,因此它们必须是外部的。或者可以定制一个 3D 打印的机箱。CuBox 也非常具有成本效益,意味着可以提供多个设备,而不会让银行破产。

构建自己的“dropbox”

在本部分中,将解释使用 512 MB 的 RaspberryPi 创建“dropbox”的过程。在此示例中,将使用 Raspbian Linux,但可以选择任何 ARM 发行版进行构建。最初的打算是使用 Kali Linux,但在撰写本文时,没有任何 I2C 支持。 I2C 驱动程序和工具用于控制 LCD,该 LCD 可用于显示有用的系统信息。例如,它可以用于显示通过 DHCP 接收到的 IP 地址。

将需要什么:

• 一个 RaspberryPi—最好是 512 MB 版本

• 一张 SD 卡—至少 8 GB,最好是速度较快的一张(例如,SanDisk Extreme 45 MB/S 卡)

• 一个电源供应—Pi 由 USB“On The Go”电缆供电

• 用于将操作系统写入 SD 卡的计算机—如果没有内置的读卡器,则需要一个读卡器

• Raspbian 映像—www.raspberrypi.org/downloads

• SD 卡的映像工具。(例如,MAC 上强大的 RPi-SD 卡生成器—alltheware.wordpress.com/2012/12/11/easiest-way-sd-card-setup/

安装操作系统

对于从未使用过 RaspberryPi 的人来说,安装操作系统肯定与标准 PC 有所不同。无论如何,这并不仅仅是插入 USB 存储设备并引导到安装程序的情况。 RaspberryPi 使用上述 SD 卡作为操作系统,因此需要工具将映像提取到 SD 卡上,并确保其可引导。有很多可用的工具,可以使整个过程完全无痛,因此不要害怕购买一个 Pi 并进行调试。

第一部分—下载操作系统

确保为 Pi 获取正确的映像非常重要。随着发布新版本的 Pi 而进行的组件更改导致一些旧发行版无法引导。这的一个指示是红色的“电源”灯将亮起,而“活动”灯将闪烁一次。然后 Pi 将什么也不做。撰写本文时,最新的 Raspbian 映像与最近的 RaspberryPi 硬件上运送的新 Hynix 存储器完美配合。

转到www.raspberrypi.org/downloads并下载当前 Pi 版本的 Raspbian。 Raspbian 是专为 Pi 构建的 Debian 的轻量级版本。

第二部分—将操作系统写入卡中

如前所述,SD 卡将需要使用专用应用程序或者如果喜欢命令行,则使用“dd”进行映像。这个过程在很大程度上是非常安全的,但是如果不仔细注意,可能会擦除错误的磁盘。在这种情况下,要遵循的方法是量两次,切一次。

在 OSX 上,使用 RPi-SD 卡生成器,步骤如下:

• 步骤 1:启动 RPi-SD 卡生成器。它会询问 Raspbian.img 文件在哪里。选择它,然后点击确定(图 12.3)

• 步骤 2:如果插入了 SD 卡,请选择“继续”。如果没有,请在按继续之前连接它。确保 OSX 首先挂载了设备!

• 步骤 3:确保此窗口中仅选择了一个磁盘,并确保它是 SD 卡。选择的磁盘即将被擦除,然后安装 Raspbian。

要找出 SD 卡被挂载为何名称,请按苹果菜单按钮>关于此 Mac>更多信息>系统报告>读卡器。名称将在“BSD 名称”值旁边。

• 步骤 4:输入系统密码。然后它会声明在收到成功消息之前不要弹出 SD 卡。

• 步骤 5:按下确定按钮,映像过程开始。在菜单栏中会看到一个旋转的齿轮,表示进度。随时单击它以获取更多详细信息。

• 步骤 6:去喝杯咖啡吧,因为这可能需要一些时间。

• 步骤 7:出现一条消息,指示进程已完成,并将 SD 卡插入 Pi。成功!已创建一个可引导的 Raspbian Linux 系统!

图 12.3 选择 Raspbian 镜像。

也有其他方法可以将 SD 卡映像,例如使用命令行工具“dd”来实现相同的结果。使用应用程序意味着更少意外破坏数据的机会。

如果使用 Windows,win32diskimager 是一个不错的选择—sourceforge.net/projects/win32diskimager/。这很简单;指向镜像,告诉它 SD 卡在哪里,然后等待任务完成。

第三部分——安装后的任务

还有一两件事情需要完成。首先,对操作系统进行完全更新。然后根据需要安装任何自定义工具。强烈建议更改默认密码!

要登录 Pi,输入用户名“pi”和密码“raspberry”。

更改密码:

root@raspberrypi:~# sudo passwd pi
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@raspberrypi:~#

更新操作系统:

root@raspberrypi:~# sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

这可能需要一段时间,特别是如果连接不是特别快的话,不妨离开一会儿去喝杯咖啡,因为可能要等很长时间!

对于想要以无监视器的方式运行的用户,可以通过 SSH 登录 Pi。如果使用大于 8 GB 的 SD 卡,则可能需要扩展文件系统。Raspbian 将引导到一个菜单,允许自动更改分区大小,假设正在使用键盘和显示器。如果已经使用 SSH 远程连接到 Pi,则可以手动执行脚本以使用 sudo。/ raspbpi-config(图 12.4)。

图 12.4 运行中。

连接回家

当“dropbox”留在后面时,确保可以从远程位置访问它非常重要。有很多方法可以解决这个问题,有些方法比其他方法更好。一种经过验证的方法是创建一个反向 SSH 隧道。换句话说,树莓派将创建一个 SSH 连接返回到数据中心,允许任何流量通过此会话路由。

树莓派被要求拨出的原因是,简单地拨入是行不通的。不仅任何防火墙或路由器都会阻止入站访问,而且“dropbox”也没有进行任何网络地址转换。

另一种选择是考虑使用 OpenVPN 提供远程访问。这相对于 SSH 隧道有着明显的优势。OpenVPN 允许所有流量通过虚拟私有网络(VPN)路由。在这些情况下,它将与直接连接到网络一样。OpenVPN 将其所有流量发送到安全套接字层(SSL),这意味着它看起来就像标准的 Web 流量。这减少了被监视系统抓到的可能性。

首先让我们来看一下反向 SSH。设置 OpenVPN 将在本章后面进行讨论。

配置 SSH 隧道

在现实世界中,我们需要一个具有 SSH 开放端口的公共服务器。树莓派将连接到服务器,允许流量通过已建立的隧道发送。为了演示的目的,将使用一个 Ubuntu 服务器虚拟机作为 SSH 服务器,但您可以选择任何适合的发行版。

首先,需要配置客户端和服务器以接受不带静态密码的连接。为此,使用基于证书的身份验证。不过,请不要被吓到,这实际上非常简单。

设置基于证书的身份验证

第 1 步:首先登录到树莓派并生成一个 Rivest Shamir and Adleman(RSA)密钥。确保以 root 用户身份运行此操作。可以使用命令“id”来检查这一点。

root@raspberrypi:~# ssh-keygen -t rsa

接受默认文件名,并在提示时不要配置密码短语。在部署实际设备时,这可以更改以符合任何组织政策。

第 2 步:接下来,将公钥从树莓派传输到将接受 SSH 连接的服务器。

root@raspberrypi:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@myserver
root@myserver’s password:

假设为服务器输入了密码,则应收到一个成功消息,表示密钥已添加。现在应该能够在树莓派和服务器之间进行 SSH,而无需输入密码。

root@raspberrypi:~# ssh root@192.168.1.156
The authenticity of host'192.168.1.156 (192.168.1.156)' can't be established.
ECDSA key fingerprint is f6:ff:45:04:2b:f4:33:42:34:a2:f2:06:78:da:f6:52.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added'192.168.1.156' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-17-generic x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Mon Sep 16 22:09:51 BST 2013
System load: 0.35   Processes:   79
Usage of /: 5.7% of 18.45 GB Users logged in: 1
Memory usage: 4%   IP address for eth0: 192.168.1.156
Swap usage: 0%
Graph this data and manage this system at https://landscape.canonical.com/
Last login: Mon Sep 16 22:09:06 2013
root@ubuntusrv:~#

通常,这就是使用证书身份验证启动并运行所需的全部内容。如果连接失败,请检查位于/etc/ssh中的sshd_config,并查看以下值。

• PermitRootLogin:如果要使用根用户,则应将其设置为“yes”

• RSAAuthentication:应设置为“yes”

• PubkeyAuthentication:应设置为“yes”

在为 root 账户设置密码后,一个默认的 Ubuntu 服务器构建在没有问题。结果可能会有所不同!检查 /var/log 中的日志以寻找任何明显的问题总是值得的。此外,可以从树莓派上运行一个详细的 SSH 连接 ssh -vvv root@myserver。这应该有助于解决任何故障排除问题。

创建 SSH 反向隧道

这就是酷炫的部分。我们将告诉树莓派连接回我们的服务器,这在大多数情况下将在我们的数据中心中。它将建立一个 SSH 连接并告诉服务器打开一个新端口,例如 TCP/5555。然后可以登录到服务器以在端口 5555 上建立到 “localhost” 的 SSH 连接。然后,这将通过已建立的隧道向下转发到树莓派。这种方法绕过了任何入站访问控制,因为树莓派建立了出站连接。这只是搭车而已。诚然,这个概念起初可能有点令人困惑,所以让我们配置它并看看它有多简单。

让我们从在树莓派上发出的基本命令开始。

root@raspberrypi:~# ssh -N -R 5555:localhost:22 root@192.168.1.156

让我们稍微解释一下。我们已经从树莓派创建了一个到服务器 192.168.1.156 的 SSH 会话,使用的是 root 用户。由于我们已经设置了基于证书的身份验证,所以不需要密码。-N 命令开关是“不执行远程命令”,因为我们只想转发流量。-R 选项告诉服务器打开或绑定一个新的端口,本例中为本地主机的 5555 端口。

所以这有什么影响?简单来说,如果我们登录到我们的服务器并且 SSH 到本地主机的 5555 端口,我们应该可以找到答案。

root@ubuntusrv:~#ssh -l pi -p 5555 localhost
pi@localhost's password:
Last login: Tue Sep 17 19:26:23 2013 from localhost
pi@raspberrypi ~ $

成功!所有入站访问控制都已被颠覆,我们现在已经登录到了内部的设备!当然,在现实世界中事情并不总是那么简单,尤其是在高安全性的环境中。一些尝试的明显方法包括配置服务器以侦听 TCP/443 上的 SSH 连接,从而绕过网络出口的基本防火墙功能。

让它牢记于心

好的,现在我们已经涵盖了启动和运行 SSH 会话的基础知识,但是这需要变得更可靠。当会话崩溃时,重新启动是不可能的。当它崩溃时,顾问甚至可能距离数百英里之遥!

有几种选择可用以确保这不会毁掉一天。例如:“autossh”。Autossh 将设置并监视任何 SSH 隧道,并根据需要重新启动它们。这样,无论插入了一个小木马的地方,它都会安心地拨打回家,从而使测试能够从远程位置完成。

首先,在我们的树莓派上安装 autossh。

pi@raspberrypi ~ $ sudo apt-get install autossh

接下来,我们需要测试 autossh 是否正常工作并让它建立一个隧道。让我们首先回顾一下之前的反向 SSH 示例,希望您也成功地让它工作了!

root@raspberrypi:~# ssh -N -R 5555:localhost:22 root@192.168.1.156

记住,这不需要密码,因为我们先前设置了基于证书的身份验证。现在让我们来看看如何设置一个相同的会话,但使用 autossh。

pi@raspberrypi ~ autossh -M 13000 -f -N -R 5555:localhost:22 root@192.168.1.156

就是这样了!这里发生了什么?autossh 被指示使用端口 13000 监视它的 SSH 连接。可以选择任何端口来执行此任务,对功能来说并不重要。暂时选择一个高端口。-f 命令开关在后台运行 autossh。其余的命令是对原始反向 SSH 命令的逐字复制。惊人地简单,不是吗?让我们为可靠性添加一些额外的内容。

pi@raspberrypi ~ autossh -M 13000 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -f -N -R 5555:localhost:22 root@192.168.1.156

好了,还有一项任务要完成,那就是确保隧道在启动时建立。毕竟,在参与过程中最好避免配置这个东西,不是吗?最完美的方法是插上它然后离开,对吧?

几乎可以肯定,每个不同的人都会有不同的做法,所以选择最适合自己的。例如:编辑/etc/rc.local 文件,在“exit 0”行之前添加命令。文件的末尾应该是这样的。

# autossh tunnel at boot
autossh -M 13000 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -f -N -R 5555:localhost:22 root@192.168.1.156
exit 0

现在已经创建了一个可以插入目标网络的设备。它将在启动时自动建立一个反向 SSH 隧道,并监视是否有问题。它还会重新建立任何失败的 SSH 隧道!但是如果设备没有出站 SSH 访问权限,或者所有出站访问都被代理过滤了怎么办?怎么给这个小盒子添加 3G/4G 支持呢?

添加 3G/4G 支持

部署这种类型的设备时的风险是它可能没有未经过滤的出站访问权限,也没有足够的时间来排查原因。在这种情况下,唯一的选择是部署一个带有“dropbox”的蜂窝数据设备,并让它自动连接到主机,以便其余的测试可以远程进行。当然,这些连接必须可靠处理,这也将被涵盖。

选择设备

这可能是一个雷区,相信我!我成功地使用了一款华为 E160 USB 插头型号的设备和一张英国 Three SIM 卡。这种组合似乎很可靠。可以在以下链接找到经过验证的 3G 设备列表:elinux.org/RPi_VerifiedPeripherals#USB_3G_Dongles

特别要注意的一点是功耗。从 USB 电源源运行树莓派和 3G 设备并不总是可行的,所以为什么不考虑使用带电源的 USB 集线器来确保可靠性呢。

我绝对建议尝试一下你手头上有的设备,也许你会有好运。如果没有,你可以在 eBay 和亚马逊上以相对较少的费用购买 E160。E160 的一个好处是它有一个外部天线插孔。这可以提高在信号较弱区域的连接可靠性。

确保插入的设备已解锁,可以使用所选的 SIM 卡。

设置蜂窝连接

两个应用程序将用于启动此过程。第一个称为“Sakis3g”,这是一个用于连接 3G 网络的 Linux 工具集。Sakis3g 可以在以下网址找到:www.sakis3g.org。最近这个网站的稳定性一直不太好,因此可能需要寻找软件的替代下载位置。可以尝试在 sourceforge 上找到一个:downloads.sourceforge.net/project/vim-n4n0/sakis3g.tar.gz,或者使用 Way Back Machine:web.archive.org/web/*/http://www.sakis3g.org/

我们还将使用“umtskeeper” — mintakaconciencia.net/squares/umtskeeper/。该应用程序基本上使用 Sakis3g 脚本进行实际连接,但确保它们是可靠的。就像 autossh 脚本一样,umtskeeper 将根据需要重新启动数据连接。

首先要做的是检查是否可以实现 3G 连接。可以使用 Sakis3g 来执行此任务。Sakis 是一个非常简单易用的应用程序,所有操作都是菜单驱动的,因此应该非常容易上手。提取后,您只需运行 sudo./sakis3g —interactive。

将呈现一个如 F0030 所示的菜单。

图 12.5 Sakis3G 菜单。

假设硬件兼容,并且 SIM 卡能在 USB 转接器上正常工作,那么真正需要的只是选择“Connect with 3G”。很少情况下可能需要选择选项 2 “Only Prepare Modem…”。一旦该过程完成,再次选择选项 1。Sakis 会确认连接是否成功。您可以通过运行 ifconfig 来确认这一点,现在应该显示一个 ppp 接口。尝试 ping 8.8.8.8(Google DNS)以确认出站访问。

让它粘在一起

现在已确认 USB 转接器、SIM 卡和 Sakis 正常工作,让我们配置“umtskeeper”来管理这些事务。这将比仅仅使用 Sakis 稍微复杂一些,但至少可以减少不断返回以重新建立连接的需要。

首先,在树莓派上提取“umtskeeper”后,将 sakis3g 可执行文件复制到相同的文件夹中。这样,“umtskeeper”就知道在哪里轻松找到它了。从这里开始就是一个命令行的事情。让我们看看在英国 Three 网络上使其工作的命令。

pi@raspberrypi ~ $ sudo ./umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1003' APN='three.co.uk' APN_USER='' APN_PASS="""

Three 网络不需要 APN 用户名或密码,因此这些值都是空白的。必须与移动数据提供商进行检查,确认每个设置应该是什么。APN 可以从移动数据提供商处获得,在这种情况下是 three.co.uk。USBMODEM 值可以通过在插入了转接器的树莓派上运行 lsusb 来找到。以下是一个示例输出:

pi@raspberrypi ~ $ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem

正如您在输出中所看到的,ID 值是我们在 umtskeeper 字符串的 USBMODEM 值中使用的值。让我们运行命令看看会发生什么。

pi@raspberrypi ~ $ sudo /home/pi/umtskeeper/umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1003' APN='three.co.uk' APN_USER='' APN_PASS=""" &
[1] 3692
pi@raspberrypi ~ $ ---
2013-09-19 21:04:05 Start: PID = 3693
2013-09-19 21:04:05 Sending SIGTERM signal to running program instance with PID=400.
2013-09-19 21:04:05 stats period = 8 s, connection check period = 32 s
Internet status:
Network link status on ppp0: unknown
Cell network: Connected.
2013-09-19 21:04:15 Internet connection is DOWN. Calling Sakis3G connect...
Sakis3G cmdLine: nice /home/pi/umtskeeper/sakis3g connect USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1003' APN='three.co.uk' APN_USER='' APN_PASS=
Sakis3G says...
E160 connected to 3 (23420).
2013-09-19 21:04:25 Testing connection...
2013-09-19 21:04:34 Success... we are online!
pi@raspberrypi ~ $ ifconfig ppp0
ppp0  Link encap:Point-to-Point Protocol
inet addr:10.128.9.181 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:97 errors:0 dropped:0 overruns:0 frame:0
TX packets:130 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:12363 (12.0 KiB) TX bytes:16949 (16.5 KiB)

成功了!我们现在有了一个供 Pi 使用的实时 3G 连接。至少我希望你也有。如果没有成功,请尝试验证您的移动运营商设置是否正确。有很多帮助论坛可以指导您找到正确的方向。

那么,就这样了吗?还没有。现在很重要的是确保这个连接在启动时启动并保持连接。同样,通过将命令添加到/etc/rc.local 文件中,使 3G 连接在启动时启动。这是我添加的内容。

/home/pi/umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1003' APN='three.co.uk' SIM_PIN='1234' APN_USER='0' APN_PASS='0'" --sakisswitches "--sudo --console" --devicename'Huawei' --log --silent --monthstart 8 --nat'no' &

在启动后,将界面启动需要一点时间,但它确实有效,而且非常可靠。这一点可以通过将 LCD 屏幕连接到显示 Pi 的 eth0 接口和 ppp0/3G 接口的 IP 地址的章节中得到更详细的解释。稍后在章节中还将更详细地查看其他有用的硬件。

这是到目前为止我们所拥有的概要。

• 运行当前 Linux 发行版的工作“dropbox”

• 使用基于证书的身份验证,在启动时自动建立并维护反向 SSH 隧道

• 在启动时自动建立并维护 3G 数据连接

现在,这个小的 dropbox 可以提供一个进入客户网络的跳转点,让我们看看如何安装一些有用的工具来使其变得更好。

安装有用的工具

选择“dropbox”的工具集肯定是个人偏好的问题;然而,有一些常见的工具大多数人都会想要安装。每个工具都可以根据需要手动安装,或者考虑查看由 Pwnie Express 团队维护的优秀的“Raspberry Pwn”项目。

脚本将下载并安装许多常见的渗透测试工具,为构建提供了一个良好的平台。

Raspberry Pwn 文件可以从github.com/pwnieexpress/Raspberry-Pwn下载。请注意,并非所有工具都与 Raspbian 兼容,因此根据具体要求可能需要进行一些调整。

安装 Raspberry Pwn

首先在 Pi 上安装 git,然后克隆 Pwnie Express 文件。

pi@raspberrypi ~ $ sudo apt-get install git
pi@raspberrypi ~ $ git clonehttps://github.com/pwnieexpress/Raspberry-Pwn.git
At this point, try changing into the Raspberry-Pwn directory with cd Raspberry-Pwn and run the installation script.
pi@raspberrypi ~/Raspberry-Pwn $ sudo./INSTALL_raspberry_pwn.sh
=== Raspberry Pwn Release 0.2 ===
A Raspberry Pi Pentesting suite by PwnieExpress.com
----------------------------------------------------------------
This installer will load a comprehensive security pentesting software suite onto your Raspberry Pi. Note that the Debian Raspberry Pi distribution must be installed onto the SD card before proceeding. See README.txt for more information.
Press ENTER to continue, CTRL+C to abort.

最终,应该会看到类似于此消息:

[+] Exploit-DB installed in /pentest.
[+] Setting default RAM allocation (disabled!)
[!] If your RPi board only has 256 MB ram please set split to
224/32 using raspi-config.
---------------------------------------------------------------
Raspberry Pwn Release 0.2 installed successfully!
---------------------------------------------------------------
[+] In order for the new RAM allocation to take effect, we must
[+] now reboot the pi. Press [Ctrl-C] to exit without rebooting.

重启 Pi 后,应该会有一个崭新的“pentest”目录,其中装满了可帮助进一步努力的工具(图 12.6)!

图 12.6 Raspberry Pwn pentest 目录。

屏幕、无线和其他硬件

有许多树莓派的附加组件可以让你的生活变得更轻松,或者扩展你的 Dropbox 的功能。我们之前讨论过的一件事是一目了然地看到我们的 Dropbox 是否连接到网络。显然,树莓派上的指示灯会告诉我们它是否有物理连接,甚至它协商了什么速度,但我们还需要知道它是否有 IP 地址,对吧?为此,你可以选择一个小巧的彩色 TFT 屏幕,也可以选择一个 16×2 字符 LCD 的路径。如果你选择彩色屏幕,IP 地址将在启动时显示,因为此功能已包含在/etc/rc.local 启动脚本中。我选择了 16×2 LCD 来满足我的特定需求。

为什么不考虑添加无线适配器以启用握手捕获或充当伪装接入点呢?此外,树莓派还需要一个外壳,或者说根据具体情况可能需要几个外壳来适应任何情景。

Adafruit Pi Plate

虽然深入了解如何将这个套件焊接在一起远远超出了本书的范围,但简要了解其工作原理还是值得的。

该套件基本上是一组组件,你将自己进行焊接。但不要因此而却步,这个过程非常简单,即使是初学者也适用。但你需要一只相对稳定的手!Adafruit 在这里为 Pi 板的组装提供了一步一步的指南:learn.adafruit.com/adafruit-16×2-character-lcd-plus-keypad-for-raspberry-pi/assembly。

还有什么比这更好的方式来介绍自己学习焊接呢?你可以在网上购买到价格合理的套件,其中包括所有必要的部件。我买了一个带有一把不错的焊接烙铁、焊锡、支架、备用烙铁头、吸锡器和一套辅助工具的套件。没有什么比制作这样的东西然后看到它输出你选择的信息更好的了。最后再给你一点鼓励,我以前从未焊接过,但组装这个板子却处理得很好。只要耐心点,多读几篇焊接指南,然后慢慢来。

图 12.7 显示了该套件的未组装状态。

图 12.7 AdaFruit 树莓派板套件。

组装完成后,树莓派板将插入主板上的通用输入/输出(GPIO)引脚。因为它不是直接焊接到树莓派上的,所以它可以被拆卸,用于不需要显示屏的项目,例如,如果你需要将它安装到较小的外壳中 (Figure 12.8).

图 12.8 组装好的树莓派和树莓派板。

社会工程渗透测试教程(三)(4)https://developer.aliyun.com/article/1508401

相关文章
|
16天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
32 1
|
1月前
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
51 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
63 4
|
3月前
|
存储 Ubuntu 安全
ROS2教程02 ROS2的安装、配置和测试
本文是关于ROS2(机器人操作系统2)的安装、配置和测试的教程。内容包括使用一键安装脚本快速安装ROS2 Humble版,手动安装步骤,设置语言环境、添加软件源、更新软件包、安装ROS2桌面版和开发工具,配置ROS2环境,创建工作空间,配置ROS2领域以避免网络冲突,以及如何删除ROS2。此外,还包括了测试ROS2是否安装成功的两个案例:基本的Topic通信测试和使用Turtlesim演示程序。适用于Ubuntu 22.04操作系统。
280 1
ROS2教程02 ROS2的安装、配置和测试
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
76 5
|
3月前
|
测试技术 开发工具 虚拟化
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
这篇文章提供了一份保姆级的教程,指导如何在MacOS虚拟机上安装Xcode,包括环境准备、基础软件安装以及USB扩展插件的使用,以实现iOS自动化测试方案的第一步。
132 0
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
|
3月前
|
Java 测试技术 Maven
Junit单元测试 @Test的使用教程
这篇文章是一个关于Junit单元测试中`@Test`注解使用的教程,包括在Maven项目中添加Junit依赖、编写带有@Test注解的测试方法,以及解决@Test注解不生效的常见问题。
|
4月前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
112 2
|
4月前
|
存储 Web App开发 Java
《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
【7月更文挑战第13天】这篇文章介绍了如何在Java中创建一个简单的自定义日志系统,以替代Log4j或logback。
297 5
|
4月前
|
Web App开发 XML Java
《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
【7月更文挑战第14天】这篇教程介绍了如何使用Java和Selenium构建一个支持跨浏览器测试的自动化测试框架。设计的核心是通过读取配置文件来切换不同浏览器执行测试用例。配置文件中定义了浏览器类型(如Firefox、Chrome)和测试服务器的URL。代码包括一个`BrowserEngine`类,它初始化配置数据,根据配置启动指定的浏览器,并提供关闭浏览器的方法。测试脚本`TestLaunchBrowser`使用`BrowserEngine`来启动浏览器并执行测试。整个框架允许在不同浏览器上运行相同的测试,以确保兼容性和一致性。
100 3
下一篇
无影云桌面