Cobalt Strike的多种上线提醒方法(下)

简介: Cobalt Strike的多种上线提醒方法

05邮 件 提 醒


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

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

点击之后,验证成功。


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

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


此时邮箱接收到了消息:



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

06注意事项


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



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



收到的提醒:


07隐蔽的邮件提醒


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


7.1 python发送邮件


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


# -*- 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进行发送:

此时接收成功:

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


# -*- 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中还有其他的提醒方式,这种方式推送方式较多,但是缺点就是容易暴露个人信息。所以在本文提出了使用更加隐蔽的邮件提醒方法,优点就是不会暴露私人信息,缺点就是只能使用邮件提醒,而且需要使用两个邮箱账号。

相关文章
|
人工智能 JSON 数据可视化
OpenAI调用接口多轮对话Multi Turn Multi Agent 多轮多角色对话调试和可视化工具Dialogue Visualization
伴随着生成式人工智能技术发展,进2年涌现出大语言模型LLM/Agent系统/AI推理等众多方向的技术项目和论文。其中对话系统,智能体交互是用户通过UX界面和AI系统进行交互,这种交互有时候也是多模态(用户输入文字/语音/图像)等等。在调用OpenAI 的对话接口时候,有时候需要把对话结果打印出来检查是否有bug,JSON数据格式就比较难看出来了,尤其是有多角色的多轮对话。这个时候可以借助一些在线的"对话"可视化的工具 (Online Dialogue Visualization Tool) DeepNLP Dialogue Visualization Tool,方便产品经理,算法研发,学术研究
OpenAI调用接口多轮对话Multi Turn Multi Agent 多轮多角色对话调试和可视化工具Dialogue Visualization
|
XML Java 数据格式
Spring IOC—基于XML配置和管理Bean 万字详解(通俗易懂)
Spring 第二节 IOC—基于XML配置和管理Bean 万字详解!。
1353 5
|
Java 持续交付 Docker
如何在Java中使用Docker
如何在Java中使用Docker
|
内存技术 芯片
MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL
MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL   是因为目标板的芯片处于休眠的状态,在尝试连接目标板时候也会出现报错Internal command ...
4144 0
|
测试技术 Go 开发者
掌握Golang测试:从入门到实践
【8月更文挑战第31天】
409 0
|
文字识别 PyTorch 算法框架/工具
【Python】已解决:Python正确安装文字识别库EasyOCR
【Python】已解决:Python正确安装文字识别库EasyOCR
3200 0
|
Ubuntu Linux
查看Linux系统是Ubuntu还是CentOS
查看Linux系统是Ubuntu还是CentOS
|
JavaScript 前端开发 搜索推荐
Nest项目部署的最佳方式
Nest项目部署的最佳方式
Nest项目部署的最佳方式
|
IDE Java 应用服务中间件
eclipse配置tomcat
Eclipse是一款非常流行的Java开发集成环境(IDE),它主要用于开发Java语言相关的应用程序。而则是一个流行的,也是一个。在Java Web应用程序的开发过程中,使用Eclipse配置Tomcat可以使开发者更方便地进行Web应用程序的总之,通过在Eclipse中配置Tomcat服务器,可以大大方便Java开发者进行Web应用程序的开发和管理。接下来我们就开始配置吧!
|
缓存 监控 UED
Hystrix/Sentinel 服务降级和服务熔断
Hystrix/Sentinel 服务降级和服务熔断
390 1