一、背景
远控工具在黑客攻击、渗透测试、红蓝对抗、攻防演练等场景中被广泛应用,针对远控类攻击的研究及检测刻不容缓,常见远程管理控制工具包括MSF、CobaltStrike、Armitage等。
随着攻防对抗的升级,攻击者的攻击姿势也在不断提升,常规普通木马直接利用到免杀处理,导致本地查杀更加困难。
二、CobaltStrike介绍
CobaltStrike是一款美国Red Team开发的渗透测试神器,常被业界人称为CS。CobaltStrike分为客户端与服务端,服务端只有一个,客户端可以有多个,这样就可以通过团队进行分布式协团操作。CobaltStrike集成了端口转发、服务扫描、自动化溢出、多模式端口监听、Windows exe木马生成、Windows dll木马生成、Java木马生成、Office 宏病毒生成、木马捆绑浏览器自动攻击等强大的功能。同时,Cobalt Strike还可以调用Mimikatz等其他知名工具,因此广受黑客喜爱。
这次分享仅介绍其中最常用的功能生成恶意程序,监听上线受害者终端。
这个工具的社区版是Armitage(一个MSF的图形化界面工具),而Cobaltstrike可以理解其为Armitage的商业版。早期版本CobaltSrtike依赖Metasploit框架,而现在Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端(Client)与服务端(Teamserver),服务端是一个,客户端可以有多个,团队可进行分布式协团操作。
项目官网:https://www.cobaltstrike.com
下图所示,多个客户端可以方便团队多人协作完成项目攻击渗透。其中:
Client:攻击者A、攻击者B…….
TeamServer:运行Cobalt Strike工具的服务端,一般为虚拟专用服务器。
Server:受害者终端及运行了恶意程序的主机。
下图为CobaltStrike工作界面及运行环境简单拓扑,其中前面客户端为攻击者,中间为攻击者的服务端一般是互联网虚拟专用服务器,后面为被攻击者终端,三者之间关系为攻击者通过启动客户端+服务端对被攻击者进行数据获取达到攻击目标。
1.服务端运行
服务端启动(基于Java环境需要安装jdk)本次运行环境为Linux。切换到程序目录,运行程序+真实IP+密码
./teamserver 103.234.72.90 tianmu
注意:这里IP为虚拟专用服务器地址,密码为客户连接输入使用,可以自定义。
2.客户端启动
切换到程序目录,以Windows环境启动为例,运行bat文件或者vbs文件打开客户端。
根据服务端信息依次填写,这里用户名可以随意填写,完成后连接即可使用客户端对服务端进行操作。
3.连接成功到服务端这里需要注意服务端防火墙策略允许,否则无法成功连接。
在控制台所有操作指令都会被记录保留在Cobalt Strike目录logs下。
(上述操作行为是攻击者准备阶段,未对被攻击端做控制)
3.参数详情
以下为攻击者客户端成功连接服务端程序功能介绍。
程序功能1
New Connection #新的连接(支持连接多个服务端)
Preferences #偏好设置(设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录等)
Visualization #窗口视图模式(展示输出结果的形式)
Listenrs #监听器(创建Listener)
Script Manager #脚本管理
Close #关闭
程序功能2
Applications #应用(显示受害者机器的应用信息)
Credentials #凭证(通过hashdump或Mimikatz抓取过的密码都会储存在这里)
Downloads #下载文件
Event Log #事件日志(主机上线记录以及团队协作聊天记录)
Keystrokes #键盘记录
Proxy Pivots #代理模块
Screenshots #截图
Script Console #脚本控制台(可以加载各种脚本,增强功能https://github.com/rsmudge/cortana-scripts)
Targets #显示目标主机
Web Log #Web日志
程序功能3
HTML Application #生成恶意的HTA木马文件
MS Office Macro #生成office宏病毒文件
Payload Generator #生成各种语言版本的payload
USB/CD AutoPlay #生成利用自动播放运行的木马文件
Windows Dropper #捆绑器,能够对文档类进行捆绑
Windows Executable #生成可执行Payload
Windows Executable(S) #把包含payload,Stageless生成可执行文件(包含多数功能)
程序功能4
Activity report #活动报告
Hosts report #主机报告
Indicators of Compromise #威胁报告
Sessions report #会话报告
Social engineering report #社会工程学报告
Tactics, Techniques, and Procedures #策略、技巧和程序
Reset Data #重置数据
Export Data #导出数据
程序功能5
Homepage #官方主页
Support #技术支持
Arsenal #开发者
System information #版本信息
About #关于
4.免杀
在介绍免杀之前,需要先了解什么啥查杀。杀毒软件基本由扫描器、病毒特征库和虚拟机组成,它会把文件放在虚拟机内运行,扫描该文件的特征,包括静态特征、内存特征、行为特征等,通过和病毒特征库对比来判断一个文件是否为恶意文件。常见的杀毒软件查杀主要包括以下几个方面:
静态查杀:查杀静态的文件,一个病毒文件在编译生成之后,该文件本身就会有特征,比如文件的某个部分是由特定字符组成,杀软匹配到特定字符则判断该文件为恶意文件。
内存查杀:病毒文件在运行后会将自身释放到内存中,释放后的文件在内存中也会存在特定字符,根据这些特定字符也可查杀。
行为查杀:程序的一些特定行为也会被杀软判定为恶意程序,如自删除、加入启动项、释放文件到特定目录、调用敏感的dll或程序、获取主机杀软运行状态等。
云查杀:相当于所有用户的机器为Agent,然后有一个服务端,杀软会把文件自动传到云沙想使用各种杀毒引擎查杀并同步病毒特征到所有Agent。
三、红队视角CobaltStrike猎杀
接下来将从红队的视角进行实战攻击演示。这里只做样本层面的对抗,至于流量层面的对抗后续可以介绍。
攻击拓扑
以下为客户端已经成功登录到服务端,此时在客户端登录页面配置远程恶意程序的相关参数,并生成回连的恶意远程控制程序。
1.服务端配置
1.配置监听地址(这里以https为例)
2.生成上线程序(这里生成C语言的shellcode)
这样方便进行免杀处理。
以下为生成的shellcode
2.免杀处理
1.使用红队专用免杀工具掩日
可以看到有5种免杀方式,这直接选择直接执行(工具自动生成exe程序,编译过程中加载恶意shellcode代码)就会生成可执行程序。
2.使用火绒进行查杀测试(完成免杀)
3.通过社工、钓鱼邮件投递受害者
进行二次伪装,修改程序日期和图标,将程序发送受害者,当受害者运行该恶意程序就很CS成功上线。
3.上线提示
配置飞书上线功能,飞书上线拓扑图(钉钉、微信都可以,这里以飞书为例。)
上图中当受害者运行攻击恶意程序,就会触发攻击者服务器上线监听插件,并将信息发送到对应飞书机器人,可以是客户端或移动端,这样就会收到上线提示。
1.在CS运行服务端(虚拟专用服务器)配置运行飞书API插件。
2.当受害者运行攻击恶意程序,飞书机器人就好在群里进行上线提示。
3.受害者成功上线。
4.内网漫游
对上线主机进行攻击获取信息,内网横向渗透拿下更多服务器。
会话功能1
Dump Hashes #获取hash
Elevate #提权
Golden Ticket #生成黄金票据注入当前会话
Make token #凭证转换
Run Mimikatz #运行 Mimikatz
Spawn As #用其他用户生成Cobalt Strike侦听器
会话功能2
Browser Pivot #劫持目标浏览器进程
Desktop(VNC) #桌面交互
File Browser #文件浏览器
Net View #命令Net View
Port Scan #端口扫描
Process List #进程列表
Screenshot #截图
会话功能3
SOCKS Server #代理服务
Listener #反向端口转发
会话功能4
红队的研究人员基于此,开发了很多高效实用的功能插件,可以快速的进行攻击渗透,从而快速的获取相关信息。
这里举例演示一个(获取受害者浏览器登录cookie用户名及密码)
会话功能5
常见命令
beacon> help Beacon Commands =============== Command Description ------- ----------- argue 进程参数欺骗 blockdlls 阻止子进程加载非Microsoft DLL browserpivot 注入受害者浏览器进程 bypassuac 绕过UAC提升权限 cancel 取消正在进行的下载 cd 切换目录 checkin 强制让被控端回连一次 clear 清除beacon内部的任务队列 connect Connect to a Beacon peer over TCP covert 部署Covert 客户端 cp 复制文件 dcsync 从DC中提取密码哈希 desktop 远程桌面(VNC) dllinject 反射DLL注入进程 dllload 使用LoadLibrary将DLL加载到进程中 download 下载文件 downloads 列出正在进行的文件下载 drives 列出目标盘符 elevate 使用exp execute 在目标上执行程序(无输出) execute-assembly 在目标上内存中执行本地.NET程序 exit 终止beacon会话 getprivs Enable system privileges on current token getsystem 尝试获取SYSTEM权限 getuid 获取用户ID hashdump 转储密码哈希值 help 帮助 inject 在注入进程生成会话 jobkill 结束一个后台任务 jobs 列出后台任务 kerberos_ccache_use 从ccache文件中导入票据应用于此会话 kerberos_ticket_purge 清除当前会话的票据 kerberos_ticket_use Apply 从ticket文件中导入票据应用于此会话 keylogger 键盘记录 kill 结束进程 link Connect to a Beacon peer over a named pipe logonpasswords 使用mimikatz转储凭据和哈希值 ls 列出文件 make_token 创建令牌以传递凭据 mimikatz 运行mimikatz mkdir 创建一个目录 mode dns 使用DNS A作为通信通道(仅限DNS beacon) mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon) mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon) mode http 使用HTTP作为通信通道 mv 移动文件 net net命令 note 备注 portscan 进行端口扫描 powerpick 通过Unmanaged PowerShell执行命令 powershell 通过powershell.exe执行命令 powershell-import 导入powershell脚本 ppid Set parent PID for spawned post-ex jobs ps 显示进程列表 psexec Use a service to spawn a session on a host psexec_psh Use PowerShell to spawn a session on a host psinject 在特定进程中执行PowerShell命令 pth 使用Mimikatz进行传递哈希 pwd 当前目录位置 reg Query the registry rev2self 恢复原始令牌 rm 删除文件或文件夹 rportfwd 端口转发 run 在目标上执行程序(返回输出) runas 以其他用户权限执行程序 runasadmin 在高权限下执行程序 runu Execute a program under another PID screenshot 屏幕截图 setenv 设置环境变量 shell 执行cmd命令 shinject 将shellcode注入进程 shspawn 启动一个进程并将shellcode注入其中 sleep 设置睡眠延迟时间 socks 启动SOCKS4代理 socks stop 停止SOCKS4 spawn Spawn a session spawnas Spawn a session as another user spawnto Set executable to spawn processes into spawnu Spawn a session under another PID ssh 使用ssh连接远程主机 ssh-key 使用密钥连接远程主机 steal_token 从进程中窃取令牌 timestomp 将一个文件的时间戳应用到另一个文件 unlink Disconnect from parent Beacon upload 上传文件 wdigest 使用mimikatz转储明文凭据 winrm 使用WinRM横向渗透 wmi 使用WMI横向渗透
四、CobaltStrike思考
未知攻焉知防!CobaltStrike是一款优秀的红队攻击工具,可以高效的进行团队合作完成项目。攻击者可以基于此进行二次开发即魔改,从而绕过安全检测产品,另一方面让安全研究人员从攻击的角度进行思考怎么检测防御,同时该工具还支持https流量,目前对于加密流量可以通过机器学习方式进行检测,从而也更好的说明了安全本质就是不断对抗较量.......
对抗是一个动态变化的过程,随着攻击的变化,工具的更新,需要我们不断跟踪对每一种工具做持续的迭代分析与防护。这里只是简单描CobaltStrike的用法,其中还有很多功能的使用,需要实际操作中去发现。更核心的地方在于理解CobaltStrike的Beacon在内网中的通信过程,这对于渗透者能否更进一步深入内网起到重要作用,也是神器的价值所在。
五、参考文档
https://www.likecs.com/show-204300747.html
https://www.freebuf.com/articles/web/250764.html