avatarAndrew Blooman

Summary

YETI is an open-source platform designed to facilitate the centralization, management, and utilization of threat intelligence for security teams.

Abstract

YETI (Your Everyday Threat Intelligence) is an open-source platform that serves as a centralized repository for various types of threat intelligence data, including forensic artifacts, Sigma and Yara rules, and reusable queries. It aims to empower threat intel analysts by providing a single interface for accessing collected intelligence. The platform supports numerous preconfigured feeds and requires an API key for some of them. Installation instructions for YETI involve setting up a Linux server, installing Docker and Git, cloning the GitHub repository, and executing a Docker Compose file. Users can create an admin account, manage feeds, and integrate Yeti with other security tools, enhancing threat hunting and detection capabilities.

Opinions

  • The author suggests that YETI is a valuable tool for enhancing threat intelligence capabilities in a home lab or within an organization's security operations center (SOC).
  • YETI is presented as a potential alternative to other threat intelligence platforms like MISP and OpenCTI, with the recommendation to compare them to find the best fit for a SOC team's needs.
  • Open Source threat intelligence, such as that provided by YETI, is considered complementary to proprietary solutions from vendors, potentially improving the speed of threat identification.
  • The inclusion of Wiz's Threat Landscape feed is highlighted as a noteworthy feature of YETI, providing users with access to a comprehensive, freely available STIX feed.
  • The author emphasizes the importance of checking the usage policy of API tokens before deploying them in an organization to ensure compliance with their terms of service.
  • Integration with SOAR platforms is mentioned as a way to leverage YETI's threat intel query capabilities in response to SIEM alerts, streamlining the process of determining the nature of potential security incidents.

Security | YETI | Threat Intel

Your Everyday Threat Intel: Build A Threat Hunting Platform at Home!

Learn how to Collect Open Source Threat Intelligence

What is YETI?

Yeti (Your Everyday Threat Intelligence) is an open source threat intelligence platform which allows you to store and manage Forensics Intelligence such as DFIQ objects, forensic artifact definitions, Sigma and Yara rules, reusable queries and more!

It will allow threat intel analysts to centralise the threat intel data in one place, enabling the entire security team to have a single search interface for all the intelligence they’ve collected. There are dozens of preconfigured feeds in the platform, although some of them require an API key to be configured. For more information visit the link here. Find the GitHub link below:

How to Install YETI

Pre-requisites

  • Linux server (Ubuntu/Rocky)
  • Docker Installed
  • Git installed

Step-by-Step Guide

Connect to your Linux server and clone the GitHub repository

git clone https://github.com/yeti-platform/yeti-docker

Change directory to the YETI prod directory.

cd yeti-docker/prod

You should see the following files

Here is the Docker Compose file which we will be executing. Note, if you are running Portainer, you will need to change the port for the api container or it will clash e.g. 8001:8000

version: '3.3'
services:

  frontend:
    container_name: yeti-frontend
    build:
      dockerfile: ./frontend/Dockerfile
    image: yetiplatform/yeti-frontend:latest
    ports:
      - 80:80
    volumes:
      - ./frontend/nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - api

  api:
    container_name: yeti-api
    image: yetiplatform/yeti:latest
    build:
      dockerfile: ./yeti/Dockerfile
    env_file:
      - ${YETI_DOCKER_ENVFILE}
    entrypoint:
      - /docker-entrypoint.sh
    command: ["webserver"]
    ports:
      - 8000:8000
    depends_on:
      - redis
      - arangodb
    volumes:
      - yeti-exports:/opt/yeti/exports

  tasks:
    container_name: yeti-tasks
    image: yetiplatform/yeti:latest
    build:
      dockerfile: ./yeti/Dockerfile
    env_file:
      - ${YETI_DOCKER_ENVFILE}
    command: ['tasks']
    depends_on:
      - redis
      - arangodb
      - api
    volumes:
      - yeti-exports:/opt/yeti/exports

  redis:
    container_name: yeti-redis
    image: redis:latest

  arangodb:
    container_name: yeti-arangodb
    image: arangodb:3.11.8
    environment:
      - ARANGO_ROOT_PASSWORD=
    volumes:
      - yeti-db:/var/lib/arangodb3

networks:
  default:
    name: yeti_network

volumes:
  yeti-exports:
    driver: local
  yeti-db:
    driver: local

.env

YETI_DOCKER_ENVFILE=.env

# Yeti database / internals
YETI_REDIS_HOST=yeti-redis
YETI_REDIS_PORT=6379
YETI_REDIS_DATABASE=0
YETI_ARANGODB_HOST=yeti-arangodb
YETI_ARANGODB_PORT=8529
YETI_ARANGODB_DATABASE=yeti
YETI_ARANGODB_USERNAME=root
YETI_ARANGODB_PASSWORD=
YETI_AUTH_SECRET_KEY=SECRET
YETI_AUTH_ALGORITHM=HS256
YETI_AUTH_ACCESS_TOKEN_EXPIRE_MINUTES=30
YETI_AUTH_ENABLED=True
YETI_SYSTEM_PLUGINS_PATH=./plugins

# Timesketch configuration
YETI_TIMESKETCH_ENDPOINT=http://timesketch-dev:5000
YETI_TIMESKETCH_USERNAME=dev
YETI_TIMESKETCH_PASSWORD=dev

Run the following command to bring up the platform. It will take a bit of time to pull the images and set things up, once complete it should look like the screenshot below.

docker compose up

You’ll need to create an admin user to be able to log into the Yeti web interface. Replace username and password with more secure values!

docker compose run --rm api create-user USERNAME PASSWORD --admin

Login to the Web UI using your credentials. If you are running this locally it will simply be http://localhost. If you’re running on a remote server then it will be http://server-ip. The service is listening on port 80.

When you login, head over to the feeds page. You will need to toggle the feeds to be enabled and then kick off the task but clicking the blue refresh icon to the right hand side. These will then begin downloading the threat intel feeds.

The data will populate across the observables, indictors and entities.

API Tokens

Note, that some of the feeds require an API token from the website you’re requesting from. In most cases of OSINT, they are free to request; all you have to do is setup an account. Note, that these API tokens should only be used for personal use; check the usage policy before deploying to an organization.

To input your API key, connect to the container called yeti-api.

docker exec -it yeti-api /bin/bash

Update apt and install vim

apt-get update
apt-get install vim

You can now open up the yeti.conf file with vim

vim yeti.conf

Input your API keys as required by the various feeds.

As you start to add more and more feeds, the UI for Yeti will fill out, see below.

Within minutes you have a vast array of information downloaded to your own threat intel platform!

There are also search functions if you want to lookup a specific observable, entity or indicator. This could be integrated with a SOAR platform, so that any SIEM alert can have a threat intel query run against YETI to determine if it is benign or malicious.

I also want to highlight one of the newest additions to an Open Source Threat Intel Provider, in Wiz. Wiz created their own Threat Landscape, which has a STIX feed that anyone can consume, for free!

Below is the link to the Wiz Threat Landscape, styled with a retro themed user interface, giving Wiz a very different look and feel to other security vendors.

Final Thoughts

YETI is an excellent platform for levelling up your experience with threat intelligence. It combines numerous different types of threat intel data to give you a powerful arsenal, to aid in your threat hunting and detection methods.

YETI is a “competitor” to MISP and OpenCTI, in that they have similar capabilities, however, it depends on the requirements for your home lab, or indeed if you deploy this to your organization. I suggest you try all three platforms and decide which one fits your SOC team the best.

Open Source threat intelligence is not a replacement for proprietary threat intel from vendors like Recorded Future, but it can certainly augment existing solutions and help identify threats sooner, rather than later!

Osint
Threat Intelligence
Cybersecurity
Yeti
Docker
Recommended from ReadMedium