cobalt strike 快速上手 [ 一 ]
0x01 关于 Cobalt Strike
0x02 基础环境简介:
0x03 先来快速预览cs最基本的一些模块具体用途:
团队服务器[teamserver]
|
|
客户端[cobaltstrike]
为了更好的说明效果,此处就分别模拟两个不同的客户端同时登陆到同一台团队服务器中,首先,先在本机运行客户端尝试登陆到团队器,客户端启动以后会提示你输入团队服务器的ip,端口和密码,用户名可随意
接着,再到另一台kali机器上打开客户端登陆登录到同一团队服务器,最终实现的效果如下,团队成员可以通过event相互沟通,也可通过event清晰看到团队中的其它成员在什么时间都干了些什么,非常详细直观:
使用cs的各种监听器
在cs中的监听器有两种,一种是beacon,另一种是foreign
再来简单演示下,如何快速创建一个监听器,具体过程如下
说完监听器,最后,我们再来说payload [攻击载荷]
首先,我们先来简单创建个payload,然后直接把它丢到目标系统中执行,看看实际的上线效果到底是个什么样子,注意,这里带红爪子的是已经拿到系统最高权限的,没爪子的基本都是系统权限暂时还比较低的
0x04 丰富的客户端攻击选项
首先,尝试利用 ‘System Profiler’ 模块,搜集目标的各类机器信息,比如,目标用的什么版本的操作系统,什么浏览器,详细版本是多少,有没有装flash,flash具体版本又是多少[低版本可以挂马],看能不能看到目标内网ip段,大概目测估计下目标内网有多大,有了这些基础信息以后,后期我们就可以针对性的写信发信,还是那句话,实际中最好用域名,因为这里是实验所以才直接用的ip,发信时最好用html伪装个比较”到位”的链接,关于写信发信又是另一个比较’专业’的技术点,个人能力有限,这里暂不涉及,嘿嘿……下面就给大家简单的看下实际的效果
利用’hta payload’配合’文件下载’模块向目标发送各种钓鱼链接,首先,创建一个hta的payload,这里的payload暂时只支持三种可执行格式,exe,powershell和vba(宏),实际中更推荐用powershell,成功率相对较高,好处就不多说了,免杀,灵活…
生成基于各类语言的shellcode,如,c,c#,java,python,powershell,ruby,raw,另外,cs也提供了可直接配合veil一起使用的选项,这里还是以最实用的powershell为例,生成好以后,想办法把脚本载入到目标系统中,这里就直接在目标cmd中载入了,实际中你可以把这个代码单独扣出来放到任何能执行ps的地方
尝试利用office宏钓鱼,并不推荐直接这样搞,因为office默认是不启用宏的,不过,可以尝试配合利用一些已经爆出来的相对比较新office 0day来搞,注意平时自己用office一定要禁用无数字签证的宏,切莫信任vba
尝试向正常的exe中嵌入payload,不过,捆绑完以后的exe图标可能会被改变,你可以尝试把原来的putty.exe的图标给扣出来,然后再替换下,好好处理下免杀,之后问题基本就不太大了,从下图可以清晰地看到,当正常的程序执行完以后,我们的payload也一并被执行了[其实payload是先执行的]
生成传统的usb自运行payload,你需要提供一个payload[这个可以直接用cs生成,不过不免杀,最好还是用你自己处理好的马来搞]即可,官方说,对xp之前的系统最好使,win7以后的系统基本废掉了,实用性并不大,所以这里也就不详细说了
至于生成常规的exe payload就很简单了,指定下要挂到哪个监听器上,然后给个命中率比较高的名字保存一下,把生成的可执行文件想办法丢到目标机器上执行下,非常简单,这里就不多啰嗦了
克隆目标网站针对性挂马,提供一个你想克隆的网站,然后配好自己的url[模仿的尽量跟目标的像一点],然后带上你要执行的payload,这里的payload可以直接用msf生成,也可以像我这样用hta,当然啦,实际中这个payload肯定是精心处理过的,机会来之不易,肯定不会瞎搞,还是那句话实际写信最好用html方便把那个url给处理的更逼真
‘PowerShell Web Delivery’可能也是大家平时用的最多的功能模块了,其实,它就相当于msf中的web_delivery模块,会生成一段shellcode代码,然后会提供给你一个下载器,这样你就可以把这个下载器插到任何能运行powershell且能正常上网的地方,比如,典型的 chm,快捷方式……,因为只是实验,我就直接丢到目标系统的cmd中执行了
发垃圾邮件,先把所有的目标邮箱放到一个文件中[注意,每行对应一个],然后再去找个准备用来钓鱼的邮件[直接查看原文,把html整个粘出来],写完信以后记得先预览下,看看实际效果,然后再配置好用来发送邮件的公共邮件服务器,这里本来想用protonmail邮箱服务器来发的,后来看到官方说因为加密的原因暂不支持常规的IMAP,POP3,SMTP,无奈,这里就先不演示了,非常简单,实际不明白也可以私信我……,另外,实际中大家最好用手中已有的各种匿名邮箱来发[反正只要不泄露私人信息会容易被人追踪到的邮箱都可以],这很重要……切记,图貌似给贴错了,汗……大家懂我意思就行
常规java攻击,有版本限制,而且要买证书,实际渗透中,其实前面这些基本就已经够用了,所以这里就不重点说了
0x05 通过上面这些方法,相信此时的你已经搞到了一个beacon的shell,下面我们就来详细说明关于beacon shell自身的基本使用[后渗透阶段],先假设我们拿到的是一个还没有bypass掉uac之前的’管理员’权限的beacon shell,以此来进行后续的一些基本操作,需要事先说明一下cs对中文的支持并不好,如果目标是中文系统,有乱码是肯定的
0x06 搜集目标机器上的各类信息[有些可能会触发敏感api导致防护报警,另外进程注入,被控端可能感到非常明显的卡顿,工具也有许多不完善的地方]:
|
|
|
|
|
|
域内渗透相关模块,其实,如果真是域内渗透,我们可以暂时不用这么搞,后续再单独说
0x07 通过各种powershell渗透框架来增强cs的实用性,如,nishang,empire,PowerSploit,powerup,Sherlock……续的,提权,bypassuac,dll注入,抓hash,pth……都是一模一样的用法,核心还是在那些脚本上,关于各类powershell框架的具体用法,请关注博客相关文章,这里就不一一演示了,就简单说一下用法,当然,beacon shell自身也提供了类似的功能,只是我没有说,但实际中那个可能还远远不够,而且它自身的工具工作的也不是非常好,所以更推荐大家尤其是在win内网渗透中,尽可能全部用powershell来搞
第一种方式,在beacon shell中导入外部ps脚本到远程机器上
第二种方式,在beacon shell中直接执行powershell代码
0x08 利用cs灵活穿透目标内网
对目标机器所在的内网进行常规端口扫描,指定ip段,指定用于扫描的协议[暂只支持arp,icmp,tcp],指定线程[切记实际中不要开的太高]
becon shell内置的端口转发功能,把本机的某个端口转到公网或者内网指定机器的某个端口上,实际用的时候速度确实比较慢,而且经常断……原因暂未知
让cs和msf相互间联动使用,在目标机器上开启socks4a代理,方便进一步的内网渗透
第一种,利用各种socks代理客户端直接把各类渗透工具带进目标内网
第二种,直接利用隧道直接把整个msf带进目标内网
利用beacon shell连接内网中的linux机器
通过beacon隧道直接派生一个meterpreter的shell[非vps上做中转,直接通过beacon隧道过来],流程很简单,首先,在团体服务器上做端口转发,然后创建一个外部监听器,端口和ip写beacon shell的机器所在的ip,然后在对应的beacon shell中’spawn’选中刚刚创建好的外部监听器,暂时还有些问题没有很好的解决,后面单独说
至于如何利用msf弹回一个beacon shell的方法就很多了,最简单的方法就是直接执行下beacon的payload的代码就可以了,又忘贴图了,汗……后期再补上来吧
0x09 配合常规端口转发尽可能隐藏自己的团队服务器
|
|
首先,到kali中用cs客户端登到我们的团队服务器,创建一个正常80端口的监听器,这里的回连ip暂时直接用vps所在的真实ip[实际中尽量用域名,很重要],如下
接着,就可以ssh到肉鸡上用socat开始做转发了,下面这句话的意思就是将来自外部的80端口上的流量转到公网vps的80端口上,之后肉鸡本地的80端口会一直处于监听状态,只要80端口一有流量经过就会自动转发到vps的80端口,而vps的80端口又正好是我们的监听器端口,这意思,相信你懂的
此时,回到cs客户端随便创建一个powershell payload,注意,正如我们前面所说,这只是个powershell下载器,主要负责下载真正的shellcode代码,一定要记得把后面的ip要改成肉鸡的ip[因为我这里是模拟的肉鸡,所以才是个内网ip,实际中肯定是个公网ip或者域名],因为我们最终的目的是通过肉鸡帮我们转发到我们真正的团队服务器上去,以此来达到尽量隐藏的目的
注意这里,默认生成以后,它是我们自己团队服务器解析的那个域名,实际中一定要手动把它改成肉鸡的域名或ip,这样,当下载访问肯定首先会访问到肉鸡,而我们已经在肉鸡做了转发,所以最终还是会达到我们的团队服务器成功下载到shellcode代码,我个废物,竟然连码都没打全,算了,反正vps马上也快到期了,打游击打习惯了,嘿嘿……^_^
最后,我们看到目标正常上线,至于,怎么让目标内网中不能正常连网的机器也能正常上线都是一模一样的道理,你可以把payload回连的流量弹到内网中任何一台可以正常上网的机器上,然后再去那台机器上把弹过来的流量转到我们团队服务器上,这样即可达到让内网中不能上网的机器也一样正常上线
0x10 深入理解dns隧道通信以及smb beacon通信过程,这可能是整个工具最核心的地方之一,后续会用大量的篇幅单独说
0x11 至于牛逼的报告生成功能这里就不说了吧,支持一键导出pdf,实际渗透过程中的所有操作记录数据全部都被保存在指定的目录中,大家有兴趣可自行研究,比较简单,毕竟不是我们这里的重点,就不多啰嗦了
一点小结:
大家也看到了,关于工具本身使用非常简单,纯图形化操作,稍微有点儿基础,很快就能上手,而且它直接支持图标灵活拖拽,很方便对指定肉鸡进行集中批量操作,非常友好,实际中将msf和cs配合起来进行内网渗透,无疑暂时也是极好的,真正的难点还在于对不同协议的beacon shell通信过程的理解,这也是个人觉得整个工具最值钱的地方,说实话,关于其内部的通信细节很多问题至今仍困扰着我,一直都觉得cs本身就是一款非常完美的学习样本,里面有太多值得深挖沉淀的东西,只是苦于有很多东西,并非一个人所能完成,相信也大家跟我一样,绝不会仅仅满足于工具基本使用上,其实心里都很清楚,那样基本是不会有什么实质性的长进的,时间不多,容不得浪费,所以也非常期待跟大家一起深入交流……对了,cs 3.8也已经出来了一段时间了,想尝鲜的朋友可以去试试,延长试用期还是老办法…