基础
用户相关的操作
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版本。