
Chatbot de ciberseguridad impulsado por IA diseñado para proporcionar respuestas útiles y precisas a tus consultas relacionadas con la ciberseguridad y también realizar análisis de código y análisis de escaneos.
_ _ _ ____ _
| | | | __ _ ___| | _| __ ) ___ | |_
| |_| |/ _` |/ __| |/ / _ \ / _ \| __| By: Morpheuslord
| _ | (_| | (__| <| |_) | (_) | |_ AI used: Meta-LLama2
|_| |_|\__,_|\___|_|\_\____/ \___/ \__|
Bienvenido a HackBot, un chatbot de ciberseguridad impulsado por IA diseñado para proporcionar respuestas útiles y precisas a tus consultas relacionadas con la ciberseguridad, así como para realizar análisis de código y de escaneos. Ya seas un investigador de seguridad, un hacker ético o simplemente tengas curiosidad sobre la ciberseguridad, HackBot está aquí para ayudarte a encontrar la información que necesitas.
HackBot utiliza el potente modelo de lenguaje Meta-LLama2 a través de la biblioteca "LlamaCpp". Esto permite que HackBot responda a tus preguntas de manera coherente y relevante. Asegúrate de mantener tus consultas en inglés y seguir las pautas proporcionadas para obtener los mejores resultados de HackBot.
AI_OPTION del archivo .env. Para y para . y Runpod necesitas usar RUNPODdespliegue local de llama LOCALLLAMARUNPODLOCALLLAMARUNPOD ID y tu RUNPOD API KEY estén configurados.Usar LLama2 es una de las mejores opciones offline y gratuitas disponibles. Actualmente está en mejora, estoy trabajando en un prompt que incorpore mejor la perspectiva de ciberseguridad en la IA. Tengo que agradecer a @thisserand y su repositorio llama2_local y también su video de YT YT_Video. Fueron grandes recursos. Para ser franco, el código de llama2 es 95% suyo, solo tomé el código y le añadí funcionalidad de API Flask.
La precisión de la IA offline y fuera de las pruebas del código fue excelente y tenía la misma precisión que openai o bard, pero dentro del código enfrentaba algunos problemas, quizás debido al prompting y demás. Intentaré solucionarlo.
La velocidad depende de tu sistema y las configuraciones de GPU y CPU que tengas. Actualmente está usando el modelo TheBloke/Llama-2-7B-Chat-GGML y se puede cambiar mediante los archivos portscanner y dnsrecon.
Por ahora, el código y los escaneos de llama se manejan de manera diferente. Después de algunas pruebas, descubrí que llama necesita un poco de entrenamiento para funcionar como pretendo, por lo que necesita algo de tiempo. Cualquier sugerencia sobre cómo puedo hacerlo se puede agregar a las discusiones de este repositorio Enlace de Discusiones. Por ahora, la salida no será una lista dividida de todos los datos, sino una explicación de la vulnerabilidad o problema descubierto por la IA.
El prompt para el uso del modelo se ve así:
[INST] <<SYS>> {user_instruction}<</SYS>> NMAP Data to be analyzed: {user_message} [/INST]
Las instrucciones se ven así:
Do a NMAP scan analysis on the provided NMAP scan information. The NMAP output must return in a asked format accorging to the provided output format. The data must be accurate in regards towards a pentest report.
The data must follow the following rules:
1) The NMAP scans must be done from a pentester point of view
2) The final output must be minimal according to the format given.
3) The final output must be kept to a minimal.
4) If a value not found in the scan just mention an empty string.
5) Analyze everything even the smallest of data.
6) Completely analyze the data provided and give a confirm answer using the output format.
7) mention all the data you found in the output format provided so that regex can be used on it.
8) avoid unnecessary explaination.
9) the critical score must be calculated based on the CVE if present or by the nature of the services open
10) the os information must contain the OS used my the target.
11) the open ports must include all the open ports listed in the data[tcp] and varifying if it by checking its states value. you should not negect even one open port.
12) the vulnerable services can be determined via speculation of the service nature or by analyzing the CVE's found.
The output format:
critical score:
- Give info on the criticality
"os information":
- List out the OS information
"open ports and services":
- List open ports
- List open ports services
"vulnerable service":
- Based on CVEs or nature of the ports opened list the vulnerable services
"found cve":
- List the CVE's found and list the main issues.
Usando el conjunto de instrucciones y los datos proporcionados a través del prompt, la IA llama genera su salida.
Para la mayoría de los usos, sugiero crear un despliegue de endpoint serverless de llama en RunPod; puedes consultar este tutorial para ello tutorial. Sigue el tutorial para un mejor uso.



Antes de proceder con la instalación, asegúrate de tener los siguientes prerrequisitos:
pip3Visual Studio Code - Sigue los pasos en este enlace llama-cpp-prereq-install-instructionscmakegit clone https://github.com/morpheuslord/hackbot.git
cd hackbot
pip3 install -r requirements.txt
python3 hackbot.py
La primera vez que ejecutes HackBot, comprobará si el modelo de IA necesario para el chatbot está presente. Si el modelo no está, se descargará automáticamente y se guardará como "llama-2-7b-chat.ggmlv3.q4_0.bin" en el directorio del proyecto.
Para iniciar una conversación con HackBot, ejecuta el siguiente comando:
El archivo .env debe verse así:
RUNPOD_ENDPOINT_ID = ""
RUNPOD_API_KEY = ""
AI_OPTION = "LLAMALOCAL"
Una vez hecho esto, ejecuta:
python hackbot.py
El archivo .env debe verse así:
RUNPOD_ENDPOINT_ID = "<<SERVERLESS ENDPOINT ID>>"
RUNPOD_API_KEY = "<<RUNPOD API KEY>>"
AI_OPTION = "RUNPOD"
Una vez hecho esto, ejecuta:
python3 hackbot.py
HackBot mostrará un banner y esperará tu entrada. Puedes hacer preguntas relacionadas con la ciberseguridad, y HackBot responderá con respuestas informativas. Para salir del chat, simplemente escribe "quit_bot" en el prompt de entrada.
Aquí tienes algunos comandos adicionales que puedes usar:
clear_screen: Limpia la pantalla de la consola para una mejor legibilidad.quit_bot: Se utiliza para salir de la aplicación de chat.bot_banner: Muestra el banner predeterminado del bot.contact_dev: Proporciona mi información de contacto.save_chat: Guarda las interacciones de la sesión actual.vuln_analysis: Realiza un análisis de vulnerabilidades utilizando los datos de escaneo o archivo de registro.static_code_analysis: Realiza un análisis de código estático utilizando los datos de escaneo o archivo de registro.Nota: Estoy trabajando en más complementos y más comandos de este tipo para ofrecer una experiencia más similar a chatGPT.
Por favor, ten en cuenta: Las respuestas de HackBot se basan en el modelo de IA Meta-LLama2, y su precisión depende de la calidad de las consultas y los datos proporcionados.
También estoy trabajando en el entrenamiento de la IA para enseñarle cómo ajustarse con mayor precisión para trabajar para hackers a un nivel más profesional.
Aceptamos contribuciones para mejorar la funcionalidad y precisión de HackBot. Si encuentras algún problema o tienes sugerencias para mejoras, no dudes en abrir un issue o enviar un pull request. Sigue estos pasos para contribuir:
main de este repositorio.Por favor, mantén un historial de commits limpio y cumple con las pautas de codificación del proyecto.
Si alguien con conocimiento en el entrenamiento de modelos de generación de texto puede ayudar a mejorar el código. En cuanto a la parte de entrenamiento de la IA, he preparado un conjunto de datos y un código funcional para el entrenamiento, pero estoy enfrentando problemas con la parte de entrenamiento, y se agradecerá la colaboración. Puedes ver el conjunto de datos en:
La versión de GitHub del conjunto de datos es para el entrenamiento de OpenAI, y la otra es para Llama2-7b de meta. El OBJETIVO del conjunto de datos es intentar y posiblemente generar un modelo de IA capaz de trabajar mejor con datos CVE. Si crees que el conjunto de datos carece de algo, siéntete libre de modificarlo y compartir tus opiniones.
Para cualquier pregunta, comentario o consulta relacionada con HackBot, no dudes en contactar al mantenedor del proyecto: