first commit
This commit is contained in:
commit
97a0a07fa7
1 changed files with 194 additions and 0 deletions
194
README.md
Normal file
194
README.md
Normal file
|
@ -0,0 +1,194 @@
|
|||
## Descripción
|
||||
|
||||
Este proyecto permite obtener la cantidad de IoC de calidad entregados por comunidades conectadas dentro de una instancia de MISP. Esto quiere decir IoC que no son falsos positivos.
|
||||
|
||||
Esto se realiza a través de la base de datos que utiliza MISP de forma interna denominada "Warninglist" en contraste con el servicio gratuito de lookup de IP's, dominios y hashes que ofrece Kaspersky Threat Intelligence Portal.
|
||||
|
||||
### Características:
|
||||
|
||||
- Conteo de IoC válidos por cada organización , de forma mensual o anual.
|
||||
- Proceso de curación diario, esto quiere decir eliminar IoC dentro de MISP que sean falsos positivos y que esten experados.
|
||||
|
||||
## Componentes
|
||||
|
||||
Este proyecto utiliza un BD local (SQLite en modo WALL) y FastAPI.
|
||||
|
||||
## Instalación en entorno virtual
|
||||
|
||||
1. Se crea entorno virtual de Python
|
||||
2. Instalar librerias de Python:
|
||||
``` shell
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
3. Se recomienda crear archivo .sh y anexarlo como servicio para que inicie con el sistema operativo:
|
||||
``` shell
|
||||
#!/bin/bash
|
||||
|
||||
# Ejemplo
|
||||
# Activate
|
||||
source /home/user/misptopcontrib/misp_top_contrib_env/bin/activate
|
||||
|
||||
# Enter folder
|
||||
cd /home/user/misptopcontrib/
|
||||
|
||||
# Actualizar librerias si aplica
|
||||
pip install --upgrade -r requirements.txt > /dev/null 2>&1
|
||||
|
||||
# Llamar al script Python
|
||||
uvicorn main:app --host 0.0.0.0 --port 8000
|
||||
```
|
||||
|
||||
## Instalación sin entorno virtual
|
||||
|
||||
1. Instalar librerias de Python:
|
||||
|
||||
``` shell
|
||||
# Enter folder
|
||||
cd /home/user/misptopcontrib/
|
||||
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
2. Se recomienda crear archivo .sh (ejemplo start_api.sh) y anexarlo como servicio para que inicie con el sistema operativo:
|
||||
|
||||
``` shell
|
||||
#!/bin/bash
|
||||
|
||||
# Ejemplo
|
||||
# Enter folder
|
||||
cd /home/user/misptopcontrib/
|
||||
|
||||
# Actualizar librerias si aplica
|
||||
pip install --upgrade -r requirements.txt > /dev/null 2>&1
|
||||
|
||||
# Llamar al script Python
|
||||
uvicorn main:app --host 0.0.0.0 --port 8000
|
||||
```
|
||||
|
||||
### Agregar como servicio
|
||||
|
||||
1. Para agregar como servicio necesita crear dentro del directorio /etc/systemd/system (En caso de Ubuntu) un archivo .service (misptopcontrib.service). Podemos crearlo con nano (sudo) usando el siguiente formato:
|
||||
|
||||
``` shell
|
||||
[Unit]
|
||||
Description=MISP TOP Contrib Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/home/user/misptopcontrib/start_api.sh
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
2. Luego registramos este archivo para que se ejecute al iniciar el sistema:
|
||||
``` shell
|
||||
sudo systemctl enable misptopcontrib
|
||||
|
||||
```
|
||||
|
||||
3. Ahora podemos iniciar, detener, reiniciar servicio...
|
||||
``` shell
|
||||
# Iniciar
|
||||
sudo systemctl start misptopcontrib
|
||||
|
||||
# Detener
|
||||
sudo systemctl stop misptopcontrib
|
||||
|
||||
# Reiniciar
|
||||
sudo systemctl restart misptopcontrib
|
||||
|
||||
```
|
||||
|
||||
|
||||
## Configuración inicial
|
||||
|
||||
1. En el archivo config.py se debe definir los datos de conexión a MISP, como también la API KEY asociada a Kaspersky TIP:
|
||||
``` python
|
||||
|
||||
# Config MISP
|
||||
MISP_CONFIG = {
|
||||
"URL": "<URL_MISP>",
|
||||
"AUTHKEY": "<APIKEY_MISP>"
|
||||
}
|
||||
# Seleccioón de WarningLists
|
||||
CONFIG_WL = {
|
||||
"filtros_buscar": ["osint", "google", "1000","microsoft","amazon","cloudflare"],
|
||||
"max_reg": 4000
|
||||
}
|
||||
|
||||
KTIP_CONFIG = {
|
||||
"api_key": "<API KEY>",
|
||||
"url_base": "https://opentip.kaspersky.com/api/v1/search/"
|
||||
}
|
||||
# Tipos de IoC a Omitir en el conteo
|
||||
IOC_TIPOS_OMITIR = [
|
||||
'comment',
|
||||
'text',
|
||||
'other',
|
||||
'datetime',
|
||||
'attachment',
|
||||
'port',
|
||||
'size-in-bytes',
|
||||
'counter',
|
||||
'integer',
|
||||
'cpe',
|
||||
'float',
|
||||
'hex',
|
||||
'phone-number',
|
||||
'boolean',
|
||||
'anonymised',
|
||||
'pgp-public-key',
|
||||
'pgp-private-key'
|
||||
]
|
||||
|
||||
```
|
||||
config.py se divide en :
|
||||
|
||||
- MISP_CONFIG: Configuración asociada a MISP
|
||||
- CONFIG_WL: Configuración asociada a Warninglist a utilizar en app.
|
||||
- KTIP_CONFIG: Configuración de conexión a servicio de Lookup de Kaspersky.
|
||||
- IOC_TIPOS_OMITIR: Tipos de Atributos que se omiten en el conteo, generalmente metadata.
|
||||
|
||||
En el archivo run_daily.py se puede configurar por ejemplo, el maximo de ioc a comtemplar por evento en la variable "max_ioc":
|
||||
|
||||
``` python
|
||||
max_ioc = 5000
|
||||
|
||||
```
|
||||
|
||||
### Usuarios
|
||||
|
||||
Inicialmente se requiere cargar los usuarios sync asociados a cada comunidad conectada a MISP (Sync Users entregados en cada caso). Para agregar un usuario se puede usuario el siguiente script:
|
||||
|
||||
``` shell
|
||||
python add_user.py <usuario@usuario.xx> <alias_organizacion>
|
||||
|
||||
```
|
||||
|
||||
## Ejecución
|
||||
|
||||
El ideal es la recolección diaria de Ioc dentro de MISP. El archivo run_daily.py debe agendarlo de forma diaria para recolectar por dia (dia anterior completo)
|
||||
|
||||
Un ejemplo de agendamiento en crontab:
|
||||
|
||||
``` shell
|
||||
0 0 * * * bash ./misptopcontrib/run_daily.py
|
||||
```
|
||||
|
||||
## Documentación
|
||||
|
||||
Puedes acceder a la documentación:
|
||||
|
||||
SwaggerUI
|
||||
```
|
||||
http://URL_PROYECTO:8000/docs
|
||||
```
|
||||
|
||||
Redocly
|
||||
```
|
||||
http://URL_PROYECTO:8000/redoc
|
||||
```
|
Loading…
Add table
Reference in a new issue