看了windows 2008如何安装Cobalt Strike ,觉得自己也有很多想法想说说,首先安装使用这块其实没文章里说的那么麻烦的,在win2k8上启动msfrpc,直接几行就行:
@echo off CALL "D:/metasploit\scripts\setenv.bat" cd D:\metasploit\apps\pro\msf3\ ruby msfrpcd -U msf -P msf -S -f
在windows上所谓的破解cobaltstrike,也没那么麻烦,一个bat搞定:
@echo off del C:\Users\Administrator\.cobaltstrike.prop java -XX:+AggressiveHeap -XX:+UseParallelGC -jar D:\tools\cobaltstrike-trial\cobaltstrike.jar
这样永远都是21天试用。
关于cobaltstrike(以下简称CS) ,它不仅仅是一个图形界面化了的MSF,更重要的是它带来的附加功能和团队协作能力,官网(http://www.advancedpentest.com/)有详细的视频教程,作者语速适中,听力没问题的应该能听懂吧?如果有需要我可以考虑做几个中文的教程.另外,作者(Raphael Mudge,blog地址:http://blog.strategiccyber.com) 的博客上也有大量相关技术资料,仔细品读会有不少收获的。
最重要的是,强烈建议不要在windows下用CS连接本地MSFRPC,我跟作者沟通过,windows下可能会出现些莫名其妙的问题,最好是在kali下运行,很稳定,功能也都可以用。而最重要的一点是,CS支持team合作模式,也就是说它有个teamserver程序,可以通过msfrpc把MSF当成一个服务端,支持多个人远程登录到CS的teamserver端,协同渗透.而这个teamserver只支持linux,so,do you get it?(当然,如果你使用的是teamserver模式的话,那CS客户端运行在linux或者windows上就都可以了)
关于beacon,这个东西最吸引人的地方可能就是它的DNS和DNS-TXT回连方式了(当然,它还支持http方式)。利用DNS查询包和应答包来进行通讯,方法是:你要有一个可控的域名,然后再添加一个A记录,指向到你的外网IP(运行CS的机器,如果是teamserver模式,那就是运行teamserver的机器的外网IP),然后再添加几个NS记录(一般2~3个就够了),将其解析倒你添加的那条A记录上。这样,当beacon运行时(以DNS或DNS-TXT方式),就会去查询你设置的NS服务器,查询包最终会到达你的机器,然后产生应答包,如此往来通讯。DNS模式采用的是轮询机制,每隔一段时间来服务器查询一下有没有要执行的任务,有就执行然后回传结果,没有就继续等待下次轮询。这种方式很大程度上可以绕过内网的很多限制,但是缺点就是每次承载的数据量是有限的,所以在大数据量的情况下,会产生非常多的DNS包。好在beacon支持实时转换通讯模式,可以使用mode命令随时切换到HTTP模式上。所以一般情况下,使用beacon的dns模式回连成功后,根据实际情况再进行模式的转换(具体操作效果,在官网视频里有演示)。
因为我使用MSF的目的只有两个:信息收集和后渗透。所以我一般很少使用MSF和CS里自带的自动化攻击模块去直接攻击目标(虽然自动化带来了便利,但是同样带来了不可控的过程,我不喜欢不可控的东西!),因此beacon对我来说就是个后渗透的工具(可以理解为RAT都行,因为beacon已经具备了RAT几乎所有的功能了),然而CS里的beacon只能是在使用各种攻击手段(比如溢出,钓鱼等等)成功在目标机器上运行了stager后(即第一阶段的shellcode),由stager负责将beacon拉回到目标机器上加载执行,这不符合我的要求。我一般都是成功拿到目标机器权限后,为了进一步做内网渗透才会用beacon,这就需要我自己单独上传beacon去执行。而CS它是在你选择好各种攻击参数后,就自动在你的机器上生成一个.dll文件,而这个文件已经被两次encode过了(使用的是MSF自带的encoder:shikata_na_gai和alpha_mix)。所以没法直接拿来用,而在cobaltstrike.jar文件里,有个resource目录下面会有一个beacon。dll,这个dll就是没有加密前的模板文件,我们只需要弄懂它的配置信息是怎么写的(由于自己的白痴脑子,这个我花了好久时间才搞定),就可以基于这个模板文件,做自己的生成器,并利用dll2shellcode将其转换为shellcode,然后用自己的加密方式加密,这样免杀效果一流,而且可以应用到多个场合下。(关于dll2shellcode,现在这个DD应该都普及了吧?任意dll转成shellcode有两种实现方式,一种是中规中居的加载dll,解析其导入表再重写重定位表等等,另一种是一种猥琐方式的加载就是将dll直接转换成binary code后在其前面附上一段shellcode负责将dll的binary code解密还原后直接内存加载,不管哪种方式效果是一样的。现在任意exe转换成shellcode也不是难事了,有了这两个神器,有没有源码,你都可以进行免杀和改进了,翻翻过去的工具,哪些是非常好却因为免杀问题而坐了冷板凳的呢?)
在这里,我顺便提一下MSF里的meterpreter,你称它神器一点都不为过。懂编程,会玩shellcode的朋友,可以将meterpreter的多种回连方式的shellcode提取出来,定位出回连地址和端口的位置,自己进行加密封装,然后做成一个生成器,从此,你将拥有一款强大的后渗透专用的RAT!
说到这里我不禁要赞叹一下,老外的思想确实有很多值得学习的地方,这也是我常年混迹于国外各种论坛,blog等带给我的好处。有关于MSF和CS的东西我有很多要说的,但限于篇幅一次也说不完,这都是我长期使用的经验,有机会一一道来吧。有想交流的可以跟帖或者直接给我发邮件:moriarty@cetgroup.org。
最后我要说的是,MSF真是个好东西,如果你精通ruby,又已经把MSF的代码吃透了,那这个MSF在你手里就不仅仅是一个工具了,你可以任意修改和扩展它,使得它更适应你当前的工作。你能想象的到的工作,用它一个就够了!
官网更新的最新版本1.48我已经都下载(mac,linux和windows版本)下来了,对于懒人朋友可以从这里直接下载这三个包: