Mythic C2学习
relay 发表于 陕西 安全工具 1941浏览 · 2024-02-05 04:10

基础

用户相关的操作

Mythic是一个多人运动的框架,所以我们可以使用管理员账户来添加其他的用户,选择右上角的用户图标。


点击NEW OPERATOR进行添加用户。


Mythic可以对一个目标或一组进行权限管控,这里我的理解是相当于一个组,这个组里面有那些成员。

这里点击Operation Chimera。 这里的Operation Chimera就是一个组。


我们也可以创建一个组,这里选择New Operation,这里给定一个名字为operate。


然后我们可以给这个组中添加一个成员。

但是需要注意的是我们需要切换到这个组中,可以点击MAKE CURRENT。


选择EDIT 添加成员。


这里我们可以添加如上图的这些成员,Role表示权限的意思,就是说这些用户具有什么权限。Lead表示管理员权限,具有添加/删除用户和更改用户的权限,operator是普通用户权限,spectators只能看不能操作。

这里我们给定relaysec为管理员账户。


然后退出 使用relaysec进行登录,选择MAKE CURRENT可以切换组。


此时我们可以去创建一个exe。

需要注意的是这里我们使用的是operate这个组创建的,此时我们是没有Beacon的,也就是说我们是看不到Operation Chimera组中的Beacon的。


如下图:


当我们切换回Operation Chimera组中的时候,才可以看到之前通过Operation Chimera创建的Beacon上线的。


那么如果是普通用户权限的话是无法更改组的。

这里我们创建了另一个用户为relaysec_user登录之后尝试将relaysec这个用户从组中移除掉。


点击Update会发现报错了。


我们还可以为每个用户可以执行那些命令进行限制,比如说我们给relaysec_user这个用户设置它不能执行shell这个命令。


然后选择EDIT进行修改,需要注意的是我们更改是Operation Chimera这个组中的relaysec_user这个用户。


登录上去之后需要切换到Operation Chimera组中。

然后尝试使用shell执行命令。

可以看到这里是无法执行命令的。


如果使用run的话是可以正常执行命令的。


如上就是用户的操作了。

C2 Profile

选择类似于耳机的图标。

如下图就是我们安装的所有的代理和C2 Profile的信息。


如果我们需要访问C2配置的话,我们可以点击向下箭头的 View/Edit Config。


如下图:

配置是一个JSON格式的文件,允许管理员配置服务器的标头以及端口,或是否启用TLS,如果要启动SSL的话那么可以将use_ssl设置true,如果key path以及cert path是存在的,那么Mythic会将这些文件作为HTTP2 C2配置文件,如果没有的话,会自动生成签名证书。


这里我们可以选择启动这个配置。


启动之后:

Payloads

这里是我们创建的所有的payload,可以点击Download进行下载。


我们可以选择ACTIONS或Create Payload来创建一个Payload。

选择Generate New Payload。


这里我们可以选择多种操作系统,比如Linux,Windows MacOS。

这里我们选择Linux操作系统。


这里我们选择medusa C2,它支持python2或者python3,以及支持加密操作,这里加密操作的话使用的是python cryptography库来进行加密操作。


我们选择NEXT。

这里的话我们选择那些命令,这里选择全部。


最终需要选择C2 配置文件,这里我们选择上面演示过的HTTP C2配置文件。

这里的回调地址,我们填写你的IP地址,关键在于你使用HTTPS还是使用HTTP,如果使用HTTPS的话那么端口需要指定为443,这里的回调地址也可以填写CDN的地址,可以通过CDN进行回调。

需要注意的是我们需要在Http Profile C2这里将SSL设置为true。

这里除了配置回调地址以及端口之外还可以配置代理的日期 请求方式等等。


我们选择NEXT。

最终会生成medusa.py文件。


生成的payload就在Payloads功能中。


然后我们将它拉到Linux机器中进行执行。

可以看到成功上线。


我们切换到Payloads功能这里,我们可以对我们生成的Payload进行配置。


Apollo 是一个基于 C# 的代理,仅在 Windows 上运行,具有内置的进程迁移命令、mimikatz 和程序集执行等功能。基于 Python 的 Medusa 可在 Windows、Linux 和 MacOS 上运行,但缺少 Windows 特定的功能,尽管它包含执行任意 Python 代码的能力。 Poseidon 是用 Go 编写的,面向 Linux 和 MacOS,并具有一些 MacOS 特定的功能,例如 launchd 持久性。

在C2通道方面,它们都支持http(s) C2配置文件,而只有Apollo支持SMB C2在环境内部进行通信。 Poseidon 拥有自己的基于 TCP 的环境内 C2 通信配置文件,并支持 Websocket。

我们可以通过 Mythic C2 Profile来进行安装其他通信管道。
https://github.com/MythicC2Profiles
我们可以执行link命令来选择先前连接到的已知主机,或者定义新的主机。

SOCKS5

Apollo 和 Medusa都是支持SOCKS5代理的,我们可以通过socks命令进行代理,需要注意的是socks5代理的端口,必须是7000-7010之间,我们可以通过.env中的MYTHIC_SERVER_DYNAMIC_PORTS选项进行更改。

需要注意的是Mythic仅支持Socks5代理使用TCP,而不支持UDP。


如下通过socks命令创建代理。


我们选择类似于袜子的图标打开SOCKS5选项,类似于CobaltStrike中的SOCKS。

可以看到成功创建SOCKS代理,这里我们可以尝试使用SOCKS CAP进行测试。


可以看到成功连接,但是需要注意的是我们需要将beacon设置为Sleep 0,这样的话代理就会快一点,要不然可能会连不上。

进阶使用

生成bin文件

生成shellcode.bin文件 通过白加黑方式上线。

选择Create Payload,在这里选择Shellcode。


后面就和创建EXE时是一样的了。

通过白加黑上线。

Upload功能

Upload功能可以上传文件,类似于Cobalt Strike。

Powershell上传

使用powershell_import功能可以导入powershell文件。

点击TASK上传。

Powershell使用

这里我们上传了一个PowerUpSQL.ps1脚本。

尝试使用脚本中的命令执行。
powershell Get-SQLInstanceDomain -Verbose

secret_token命令

这个命令主要是和CobaltStrike中的窃取令牌是一样的,它需要传递一个参数也就是进程的PID,如果不传递参数的话,那么默认进程为winlogon.exe。

就比如说你拿到的机器里面有域管的进程,那么你就可以进行窃取,然后横向即可。

spawnto_x86以及spawnto_x64

这两个命令和CobaltStrike中的spawn命令是一样的都是派生一个会话。

shinject命令

这个命令主要是将shellcode注入到其他进程中来进行上线操作,和inject命令对比来说更加的OPSEC,因为如果使用inject命令去注入进程的话,那么如果注入不成功可能导致自身的Beacon下线,那么如果使用shinject就算注入不成功,也不会导致自身的Beacon下线。

screenshot_inject命令

这个命令主要用于屏幕截图。

screenshot_inject pid count interval
screenshot_inject 3548 1 1

当我们执行完这个命令之后,点击VIEW SCREENSHOSTS。

screenshot命令

截取当前屏幕。

rm命令

删除指定文件。

rm [path]
rev2self命令

这个命令主要是应用于我们如果窃取其他令牌了,那么就通过这个命令进行恢复。

rev2self
pth命令

PTH主要用于Hash传递。其实和Cobalt Strike差不多。

pth -Domain [domain] -User [user] -NTLM [ntlm] [-AES128 [aes128] -AES256 [aes256] -Run [cmd.exe]]
psinject命令

这个命令可以在指定的进程中执行powershell命令。

例如:

psinject 3548 whoami

net_dclist命令

这个命令主要是用于获取当前域或者指定域的域控制器。

net_dclist
net_dclist domain
keylog_inject命令

这个命令用户键盘记录,需要指定进程的PID。

keylog_inject [pid]
blockdlls命令

这个命令用于阻止非Microsoft DLL加载到我们的Beacon当中。

blockdlls

assembly_inject

将dotnet加载到目标进程中,然后加载进程并执行。

assembly_inject[pid][assembly][args]

C2 Profile相关

Athena

安装:

sudo ./mythic-cli install github https://github.com/MythicAgents/Athena


装好之后点击Payload可以看到。


选择CreatePayload创建,选择athena。


这些参数我们待会再说,先点击NEXT。

最终会生成一个zip文件。


我们解压可以看到里面有一个exe文件,当我们执行的时候就会回调到我们的Mythic中。

但是文件确实是很大的。


可以看到返回我们的Beacon。


这里我们不仅可以直接使用EXE,也可以使用它的源码,在他的源码基础上进行更改。

下面的参数我们主要注意的是Obfuscate,如果勾选上的话,那么就会使用Obfuscate对我们的载荷进行加密处理。还有就是你生成的是Debug版本还是Release版本。

0 条评论
某人
表情
可输入 255