- Github Repo: Indicator-Search
Security incidents are a common occurrence. When these incidents happen, security analysts need a fast and reliable tool to enrich indicators (observables) across various open-source intelligence (OSINT) sites. That’s where Indicator Search comes in.
Indicator Search is a project that I have been developing for the last few months. The original goal was to just learn the FastAPI framework as a weekend ordeal and it blossomed into a whole lot more. This project has taught me a lot about web app development which is new to me since I’ve been in a Detection Engineering / SOC role for the last few years.
One of the problems I’ve faced in my working career so far is the lack of enrichment in security telemetry from an analyst perspective and it requires the need to pivot to multiple tools to inquire additional details about an IP/Hash or domain.
It can be a massive time saver to the analysis process to add an enrichment source to your detection pipeline. Doing so gives the security analyst additional context about indicators found in the alert and saves the analyst from having to do all the leg work themselves.
Using enrichment also enables you to make security detection & response decisions in your SOAR platform based on indicators OSINT results.
I have built over 20 tools into the initial build of the application with plans to add more as time goes on. I’ve also added the ability to search public threatfeed lists and the ability to IOC an indicator. IOCing an indicator in the app allows you to retrieve the IOC list over the API which in turn enables other tools to benefit from search results.
If you are unable to add an enrichment source into your detection pipeline and you don’t have a SOAR platform, Indicator Search will still provide analysts a web app to perform searches and view results in an aggregated view.
What started as a weekend learning project turned into a fun couple of months, I’m excited to continue building on this one.
Check out the readme to learn how to set it up!
About
Indicator Search is a web application and API designed for rapid scanning of indicators (observables found during a security incident) against multiple OSINT sites, based on the input indicator type. Inspired by Intelowl, this project aims to provide a similar tool while utilizing the FastAPI framework. Indicator search could deployed among a shared server between security engineers to aid in quick observable lookups as it enables analysts to gather information from various sources in a streamlined manner.
Contributing
If you’re interested in contributing to Indicator Search, feel free to fork this repository, make your improvements, and submit a pull request. I welcome any enhancements or bug fixes that can make this tool even more valuable for the security community.
Disclaimer
Indicator Search is a tool designed for informational purposes and should be used responsibly and ethically. It relies on APIs and public threat feeds. Please ensure that you comply with the terms of use of the data sources accessed by this tool prior to its usage.
Demo
Discover the app’s features and capabilities through a live demonstration at indicatorsearch.app.
Setup
For now, Indicator Search can either be ran locally, served over port 8000 or via docker container. The instructions below should get you started.
This project runs on Fastapi (Python3), you will need:
- Python3
- Docker / Docker-compose if you want to run via docker
- Git clone the repo and cd into it.
- Run
python3 indicator_search.py
to install dependencies. - Configure
./config/.env
. - Run
python3 indicator_search.py
again and choose an option from the menu.
Env File
The env file located at ./config/.env
is used to configure the applications api keys and tweakable settings.
On inital run of the app, it will clone the .env.example
file also located in the config folder and then print a message asking you to configure it.
SERVER_ADDRESS
: Used for seeding API calls and slack notificationsHOSTNAME
: Required for docker https proxyADMIN_API_KEY
: A user’s api key for the ageout ioc automation that is ran every hourUSER_INVITE_KEY
: Required for user signupENABLE_SLACK
: True/FalseSLACK_BOT_TOKEN
: Slack bot token with message permissionsSLACK_CHANNEL
: Channel to post slack updates to
Tool API Keys
If you don’t have an api key, leave the value as "API_KEY": ""
The tool will be omitted from the indicators results.
Docker
Menu option 2
will create a self-signed https cert and build the docker container / traefik reverse proxy.
Once the app has been built, the docker containers should always restart but if you need to start or stop the app, you can use:
- Menu
option 2a
Docker compose up - Menu
option 2b
Docker compose down
Re-running option 2
will rebuild your containers but the database volume is persistant between rebuilds.
Menu option 5
will just build the docker container and tag the image as indicator-search:latest
.
Afterwards you can run the container with the following command:
docker run -p 8000:8000 -v "./path/to/db.sqlite:/code/db.sqlite" indicator-search:latest
Local instances
Menu option 3
runs uvicorn directly and the app is reachable at http://127.0.0.1:8000
Menu option 4
also runs uvicorn directly but the app is listening on all interfaces at http://0.0.0.0:80
Seeding
Seeding Feedlists
Menu option 7
uses the json files located in config/feedlist_examples
to auto-create new feeds. When you choose to seed the feedlists, it will iterate through all feeds in the files. If the URL is already added, the server will reject the feedlist addition.
- Run
python3 indicator_search.py
and choose the option to seed feedlists. - Enter your
api_key
.
Seeding Indicators
Menu option 8
provides 8 example indicators to quickly test that all the API tools are working as expected.
- Run
python3 indicator_search.py
and choose the option to seed indicators. - Enter your
api_key
.
Creating A User
Menu option 9
will use the USER_INVITE_KEY
from the config file to create a new user.
- Run
python3 indicator_search.py
and choose the option to create a user. - Enter username and password. It will use the user invite code from the config to verify user creation is expected.
Supported Indicators
- IPv4
- IPv6
- Hash.MD5
- Hash.SHA1
- Hash.SHA256
- Hash.SHA512
- FQDN
- URL
- MAC Address
Tools
Tool | Indicator Type | API Key Required? |
---|---|---|
Public Feedlists | IP, Hash, FQDN | No, publicly available feedlists |
Virus Total | IPv4, IPv6, Hash, FQDN, URL | Yes |
Inquest Labs | IPv4, IPv6, Hash, FQDN, URL, Email | No |
Tweetfeed | IPv4, Hash, FQDN, URL | No |
Maltiverse | IPv4, Hash, FQDN, URL | Yes |
Stop Forum Spam | IPv4, IPv6, Email | No |
IPInfoio | IPv4, IPv6 | No |
Abuse IPDB | IPv4, IPv6 | Yes |
IP Quality Score | IPv4, IPv6 | Yes |
Greynoise Community | IPv4 | Yes |
Project Honeypot | IPv4 | Yes |
Hacked IP Threatlist | IPv4 | No |
Shodan | IPv4 | Yes |
URLVoid (APIVoid) | URL, FQDN, Email | Yes |
Checkphish | URL, FQDN | Yes |
URLScan | URL, FQDN | No |
Breach Directory | Yes | |
Circl lu | Hash | No |
Echo Trail | Hash | Yes |
Hybrid Analysis | Hash | Yes |
Malware Bazzar | Hash | No |
MAC Vendors | MAC Address | No |