真实较量 | 红队视角下的Cobalt_Strike猎杀

VSole2024-01-13 13:15:31

一、背景


远控工具在黑客攻击、渗透测试、红蓝对抗、攻防演练等场景中被广泛应用,针对远控类攻击的研究及检测刻不容缓,常见远程管理控制工具包括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


软件免杀
本作品采用《CC 协议》,转载必须注明作者和本文链接
软及原理
2021-12-02 06:21:50
将内存、文件扫描出的特征信息与病毒特征数据库进行对比。(存在黑白名单)
,又叫毒技术,是反病毒,反间谍的对立面,是一种能使病毒或木马免于被毒软件查杀的软件。它除了使病毒木马免于被查杀外,还可以扩增病毒木马的功能,改变病毒木马的行为。的基本特征是破坏特征,有可能是行为特征,只要破坏了病毒与木马所固有的特征,并保证其原有功能没有改变,一次就能完成了。技术也并不是十恶不赦的,例如,在软件保护所用的加密产品(比如壳)中,有一些会被毒软件认为是木马病毒;
powershell之路
2021-07-12 21:46:00
Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能
特征码
2023-01-16 10:39:39
特征码又称电脑病毒特征码,它主要由反病毒公司制作,一般都是被反病毒软件公司确定为只有该病毒才可能会有的一串二进制字符串,而这字符串通常是文件里对应程式码或汇编指令的地址。毒软件会将这一串二进制字符串用某种方法与目标文件或处理程序作对比,从而判定该文件或进程是否感染病毒。
最近在研究这一块的知识,说到肯定就逃不过箱。对于箱的通俗理解就是一个安全的箱子,这个箱子能够模拟出软件执行苏需要的环境(如模拟虚拟机环境),通过hook跳转到自己的函数进行行为分析。所以我们的后门文件想要更好的躲避软的查杀,首先肯定要做好反调试才能在对抗软时后顾无忧。本文基于自己学习过程中的一些知识进行了总结,不足之处还请师傅们提出。
CS姿势
2022-08-02 16:42:30
花指令,在程序 shellcode 或特征代码区域增添垃圾指令,增加的垃圾指令不会影响文件执行,在动态查杀或者文件hash对比是校验会不一致。加壳,比如upx加壳等,一般文件落地后对比哈希值也可绕过软。二次编译,一般用于对shellcode进行二次编译bypass软。安装火绒,查杀CS上线加壳另外再加壳测试。赛门铁克也未报毒,其它软不放图了。
今天脑子里面蹦出来个想法,木马然后cs上线,本来想让cs与msf联动的,但是出了点小问题,还是先研究火绒吧。
前言最近在研究这一块的知识,说到肯定就逃不过箱。所以我们的后门文件想要更好的躲避软的查杀,首先肯定要做好反调试才能在对抗软时后顾无忧。本文基于自己学习过程中的一些知识进行了总结,不足之处还请师傅们提出。
技术全称为反毒技术 Anti-Virus 简称“”,它指的是一种能使病毒木马免于被毒软件查杀的技术。由于技术的涉猎非常广,其中包含反汇编、逆向工程、系统漏洞等技术,内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了毒软件的查杀。
VSole
网络安全专家