Mythic C2学习
基础 用户相关的操作 Mythic是一个多人运动的框架,所以我们可以使用管理员账户来添加其他的用户,选择右上角的用户图标。 点击NEW OPERATOR进行添加用户。 Mythic可以对一个目标或一组进行权限管控,这里我的理解是相当于一个组,这个组里面有那些成员。 这里点击Operation Chimera。 这里的Operation Chimera就是一个组。 我们也可以创建一个组,这里选
基础
用户相关的操作
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版本。
