利用Azure静态网站与IPFS投递器实现载荷投递的技术解析

本文详细介绍了如何通过Azure虚拟机部署IPFS节点托管恶意载荷,并利用Azure静态网站克隆合法站点实现社会工程学攻击。涵盖IPFS节点配置、网站克隆、代码部署及安全防护措施,适合安全研究人员了解攻击手法与防御策略。

利用Azure静态网站与IPFS投递器实现载荷投递

免责声明:本文仅用于教育目的,演示威胁攻击者如何利用这些技术进行社会工程学攻击。请负责任地使用,切勿进行任何非法活动!

目录

Azure虚拟机设置

创建Azure VM

我们将使用Azure VM安装IPFS。在"云环境红队测试"系列中,我们已涵盖部署VM的流程。以下是相关步骤的参考链接:

  • 启动虚拟机(VM)
  • 连接到VM

安装IPFS

设置虚拟机并连接后,从IPFS分发站点下载Kubo(go-ipfs)发行版。Kubo是用Go编写的IPFS包,提供与IPFS网络交互所需的所有功能,包括运行节点、存储和检索数据以及与其他节点通信。

选择与Azure机器兼容的Linux x64架构,使用wget或curl下载文件:

1
wget https://dist.ipfs.tech/kubo/v0.28.0/kubo_v0.28.0_linux-amd64.tar.gz

解压文件并移动到"kubo"目录,运行安装脚本(需root权限):

1
2
3
tar -xf kubo_v0.28.0_linux-amd64.tar.gz
cd kubo
sudo ./install.sh

运行ipfs命令启动IPFS。

创建名为"files"的目录存储共享文件(可选,但有助于组织工作区)。示例使用Windows计算器(calc.exe)作为载荷,通过scp命令上传到VM:

1
sudo scp -i IPFS-VM_key.pem calc.exe azureuser@Azure_VM_IP:/home/azureuser/ipfs/files

首次设置IPFS节点时,运行ipfs init。初始化后获得内容标识符(CID),作为节点身份的唯一指纹。配置信息保存在主目录的.ipfs/config文件中。

启动节点使用ipfs daemon命令(前台运行)。可使用Screen在后台运行:

1
2
3
4
5
screen -S session_name
ipfs daemon
# 按Ctrl+A后按Ctrl+D返回终端
screen -ls  # 列出会话
screen -r sessionID  # 返回会话

Swarm信息显示时,表示守护进程已就绪。

IPFS Web接口

通过localhost:5001/webui访问Web接口。为避免在VM防火墙中开放端口,使用本地端口转发从测试机访问:

1
ssh azureuser@Azure_VM_IP -i Azure_VM_KEY.pem -L 5001:127.0.0.1:5001

上传文件后获得不可更改的CID哈希。修改文件会生成新哈希。通过"Share link"获取公共链接,用于嵌入克隆站点。

文件上传后需几分钟广播到IPFS网络。默认公共网关为https://ipfs.io,可更改为Cloudflare IPFS网络(更显合法):

1
https://cloudflare-ipfs.com/ipfs/FILE_CID_HASH

停止守护进程:

1
2
ps -aux | grep ipfs
sudo kill +9 PID_NUMBER

Azure静态网站管理

设置Azure静态网站

在Azure门户中搜索"Static Web Apps",点击"Create static web app"。填写项目详情(订阅、资源组)。选择免费托管计划类型,部署详情选择"Other"。

完成后续默认选项配置,添加标签管理资源成本,最后点击"Create"部署。部署完成后点击"Go to resource"。

在"Overview"部分查看站点详情。访问URL显示默认页面,可使用自定义域名(本文未涵盖)。

克隆网站

克隆看似合法的网站(如客户端官网或下载页面)。推荐Chrome扩展保存完整网页(嵌入所有资源):

  • Save Page WE
  • SingleFile

示例克隆Firefox下载页面。创建"CloneSite"目录存放克隆页面,后续修改HTML代码将官方下载链接替换为IPFS载荷链接。

开发环境设置

安装NodeJS & NPM

从Node.js官网下载Windows安装包安装。确保node.js和npm.ps1文件已添加到系统环境变量Path中:

1
$env:path = "$env:path;C:\Program Files\nodejs;C:\Users\User\AppData\Roaming\npm"

绕过PowerShell执行策略以运行npm.ps1脚本:

1
powershell -executionpolicy bypass

运行npm -v检查版本。

安装SWA CLI工具

使用Static Web Apps CLI(swa)工具部署代码。安装前确保已安装Python 3.12(可从Microsoft商店获取)。

在Visual Studio中打开"CloneSite"目录,通过终端安装swa:

1
2
powershell -executionpolicy bypass
npm install -g @azure/static-web-apps-cli

代码部署

将IPFS载荷URL嵌入HTML代码或使用JavaScript替换原始URL。通过浏览器开发者工具检查下载按钮的HTML “id”(如download-button-desktop-release-win),在Visual Studio中替换URL。

通过swa登录Azure门户获取会话:

1
swa login

认证后重定向到localhost:31337。有时页面未快速弹出,可重新运行命令。

选择租户后,.env文件创建于CloneSite目录,包含订阅ID和租户ID。运行swa创建配置文件(保持默认设置)。

使用部署令牌部署应用(从Azure门户静态站点的"Manage Deployment Token"获取)。配置文件swa-cli.config.json创建于CloneSite目录。

确保index.html文件位于子目录(如firefox-clone-site),且文件名小写。部署命令:

1
swa deploy .\CloneSite\firefox-clone-site\ --deployment-token TOKEN --env production

下载按钮触发IPFS托管文件。浏览器行为各异:Edge和Firefox直接安装,Chrome提示"另存为"。社会工程学评估中,通过 pretext 说服用户运行可执行文件。

使用自定义域名可增强合法性(本文未涵盖)。

总结

本文介绍了在Azure VM上设置IPFS节点托管载荷文件,克隆网站并部署到Azure静态网站实现重定向至IPFS托管载荷的全流程。

资源


发布于R3d Buck3T · 最后更新于2025年6月23日
R3d Buck3T专注于渗透测试与漏洞评估(红队测试)。目标记录所学知识,与InfoSec社区分享。
作者:Nairuz Abulhul

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计