使用llama构建一个蜜罐(前端)

使用llama构建一个蜜罐(前端)

使用llama构建一个蜜罐(后端) 中我们通过llama和flask构建了一个蜜罐的后端,通过将shell命令作为字段的一部分,让llama假装执行命令来防止蜜罐被攻破。那有了后端我们还需要一个前端命令行来让用户登陆并执行命令。

完整项目开源在了GitHub

接下来,让我们来实现一个模拟ssh服务器,或者说实现一个ssh mock 然后执行命令的时候不让他真的执行同时改一下输出。

等等?我们真的需要一个ssh mock 吗? 还是说,我们需要的是一个跑在终端的,长得很像终端的,能输入输出的,一个可交互的代码?

哦,好像我们需要的只是一个可交互的代码,难道攻击方ssh上来了还能验证一下这是不是真的是终端?(我用了三天才想通这个问题)

so,工作量一下子减少了太多了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import os
import requests

# 禁用 Ctrl Z stty susp undef
# 启用 Ctrl Z stty susp ^Z

admin_key = "123456"

def get_responce(command):
if (command == admin_key):
exit()
output = requests.post("http://127.0.0.1:9000/admin/"+command).json()
return output["message"]

def attact_warning():
pass

def anti_attact():
pass

while True:
attact_warning()
anti_attact()
try:
command = input("[root@ubuntu ~]$ ")
print(get_responce(command))

except KeyboardInterrupt:
print("")

这里有几个点需要注意 1. 代码不能直接用于生产环境!!!请先完善细节并大量测试。本项目仅为学习使用,未经过专业人员测试 1. admin_key,这个变量的作用是让管理员能用终端,记得修改。如果你认为这种方法太low了或者可能被作为突破口,请修改或PR。 2. 接口地址,我这里是http://127.0.0.1:9000/admin/ ,这里需要改成你的,建议先用postman或者apifox或者啥的测一下。 3. 入侵检测和反击模块需要你自己实现,毕竟这只是一个让你的蜜罐更安全的项目。

在三个终端分别运行llama服务器(图右终端),蜜罐后端(图左终端)和蜜罐前端(图中终端)

image.png

项目还有很多改进之处,在后面我也会进一步优化prompt和模型来获得更好的终端对话体验。


使用llama构建一个蜜罐(前端)
https://studyinglover.com/2023/08/01/使用llama构建一个蜜罐(前端)/
作者
StudyingLover
发布于
2023年8月1日
许可协议