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

发布时间 2023-11-26 16:43:58作者: studyinglover1
title: 使用llama构建一个蜜罐(前端)
banner_img: https://cdn.studyinglover.com/pic/2023/07/e9a49d4a404ed9bc4b0f119249194e3d.png
date: 2023-8-1 00:12:00
tags:
- 网络安全

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


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

完整项目开源在了GitHub

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

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

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

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

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

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

image.png

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