Posts OPENCTI
Post
Cancel

OPENCTI

As I was learning Cyber Threat Intelligence I chose Open CTI as demo tool while taking this path, and these were my installation steps which I followed while configuring it. In this document I will show steps used to install it by using docker image and manage them using docker swarm and portainer. I installed the Open CTI in two ubuntu machines where by one was used as manager and the second one as worker.

This document shows all necessary steps used to install it by using docker image and mange them by using docker swarm and portainer .

All steps will be shown in ubuntu machines where by one has been used as manager and the second one as worker.

This setup has been implemented in vmware machine, so the first prerequisites should be installed in both manager and worker

Below are the steps used to perform the task:

Install a single ubuntu machine in vmware followed by all the shared requirements as follows:-

Update repository

1
gemstone@hashghost:~$ sudo apt-get update -y

Install Certificate preparation for docker

1
2
3
4
5
6
gemstone@hashghost:~$ sudo apt-get install -y \
   apt-transport-https \
   ca-certificates \
   curl \
   gnupg-agent \
  software-properties-common

Adding docker GPG key

1
gemstone@hashghost:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Check the fingerprint of the key

1
gemstone@hashghost:~$ sudo apt-key fingerprint 0EBFCD88

Adding docker repository in ubuntu machine

1
2
3
4
gemstone@hashghost:~$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Update repositories

1
gemstone@hashghost:~$ sudo apt-get update -y

Install docker and docker composer

1
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose

Verify if docker has been successfully installed

1
gemstone@hashghost:~$ sudo docker version

Modify machine user and add the user to docker group

1
gemstone@hashghost:~$ sudo usermod -aG docker $USER

Shutting down the machine.

1
gemstone@hashghost:~$ shutdown now

In this documentation OpenCTI is installed in virtual machine then all prerequisites needed for both manager and worker were already installed, then create a template to allow cloning of machines from ubuntu machine. Cloning will help to merge as many as possible machines with pre installed prerequisites.

This process is shown as follows:-

image

After enabled template mode clone two machines from ubuntu and the first machine name it as OpenCTI-01 which will be used as manager and the second one name it as OpenCTI-02 which will be used as worker machine, all these information can be seen here below:-

image

Master

Starting with master machine, Start docker swarm and advertise the ip address of master user.

1
gemstone@opencti-01:~$ docker swarm init --advertise-addr 172.16.34.131

After the above command output will be the command to join the swarm with token and port number.

Worker

This command is the output from master machine which allows worker’s machine to join the swarm for management.

1
gemstone@opencti-02:~$ docker swarm join --token SWMTKN-1-1k179pcofdol52ia0yby85x5sm07wp93ioz95vp4j156uuv9i8-dfynlzfru7v3mlo6q7pavdvf6 172.16.34.131:2377

Install Portainer

Portainer is used to manage docker image by providing graphical interface which fetch log data from machines with portainer.

1
2
mkdir -p /opt/portainer && cd /opt/portainer
curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml

The above commands will create new directory /opt/portainer navigate to it and then downloading portainer-agent-stack.yml and save it with the same name. This file will have the following outputs:- Command

1
gemstone@opencti-01:/opt/portainer$ cat portainer-agent-stack.yml

Result

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
30
31
32
33
34
35
36
37
38
39
version: '3.2'

services:
  agent:
    image: portainer/agent:2.11.1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  portainer:
    image: portainer/portainer-ce:2.11.1
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9443:9443"
      - "19000:9000"
      - "18000:8000"
    volumes:
      - portainer_data:/data
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

volumes:
  portainer_data:

There is port numbers which portainer will use them during access, these ports are common and should changed to avoid any collision.

1
2
      - "9000:9000"
      - "8000:8000"

Add this one as shown below:-

1
2
      - "19000:9000"
      - "18000:8000"

After all the installation you be able to access portainer in web browser by using manager ip which is http://172.16.34.131 with port number 19000 . At a time I document this I was already created an account so it claimed for password because I am known user to it.

image

Portainer will start to count all the images which are up and up to this stage its about 5 containers but there is no opencti Then add new stack and named it as opencti .

image

Since we were using portainer then it is clearly that we have to install the docker version of opencti. Visited official github page of opencti and grab the .yml file and add it to the portainer also and add some connectors which opencti will use to collect data from as shown below:

image

Adding configuration file with connectors API keys.

image

Also add the environment variables which contains some credentials for the opencti login also the sample of these variables from opencti GitHub page as shown below:-

image

After adding the environment it will be seen as follows:-

image

After adding the configuration file and environment variables then deploy machine and stack number was improved to two which are opencti stack and portainer, also number of containers increased.

image

Stack names after adding portainer

image

Deploying OpenCTI

After adding the stack and some connectors in portainer then click deploy stack and wait for some times then access opencti with manager ip again but this time with another port number which is 8080

Dashboard

image

Analyze

In this part different reports are displayed from the connectors we added before. Example of report is the Raspberry Robin’s botnet second life.

image

Reading the report

You can click this report to see its description and date it was published.

image

Connectors

You can clicked on database at bottom left of side bar and then connector. One of the connector added is AlienVault and it is shown below.

image

Thanks for reading.

The End.

Reference

OpenCTI Installation Bender

This post is licensed under CC BY 4.0 by the author.