Automating Threat Intel: How I Built a Fast, Containerised IP Triage Tool

Published: (January 17, 2026 at 05:01 PM EST)
2 min read
Source: Dev.to

Source: Dev.to

The Mission: Fighting “Analyst Fatigue”

As an aspiring Security Engineer, I quickly learned that triage is where most time is lost. When a firewall flags dozens of suspicious connections, checking them one‑by‑one in a browser is slow and prone to error. I built Sentinel‑IP, a Python tool that takes a list of IPs and instantly enriches them with threat intelligence, turning a 30‑minute manual task into a 30‑second automated one.

  • Python – automation logic and API handling
  • Docker – ensures the tool runs on any machine (macOS, Windows, Linux) without setup headaches
  • AbuseIPDB API – crowdsourced reports on brute‑force and spam activity
  • AlienVault OTX API – “Pulse” data identifying IPs linked to known malware campaigns

I originally planned to include VirusTotal, but its free tier allows only 4 requests per minute, which would have made processing 50 IPs take nearly 15 minutes. Switching to AlienVault OTX removed this bottleneck, allowing dozens of IPs to be scanned in seconds. The lesson: the best data is useless if it arrives too late to stop an attack.

The tool reads a simple ips.txt file as input, queries the APIs, and generates a clean results.csv for the analyst to review.

Core Logic

for ip in tqdm(ips, desc="Analyzing"):
    abuse_score = check_abuse_ip(ip)   # Returns % confidence
    otx_pulses = check_alienvault(ip)  # Returns count of threat pulses

    results.append({
        'IP': ip,
        'Abuse_Score%': abuse_score,
        'OTX_Pulses': otx_pulses
    })

Use Cases

The Firewall Log “Dump”

Scenario: A company firewall blocks hundreds of failed SSH attempts.
Application: Copy the IPs from the logs into Sentinel‑IP.
Impact: Instantly filter for IPs with a 100 % Abuse Score, allowing you to focus on verified botnets instead of investigating every block.

Phishing Header Analysis

Scenario: A suspicious email is reported and contains a “Source IP” in the header.
Application: Run that IP through the tool.
Impact: If AlienVault OTX shows multiple pulses related to “Credential Harvesting,” you have immediate proof the email is malicious and can purge it from the network.

Project Insights

API Resilience

Handling 404 Not Found errors (often indicating a “clean” IP) versus 401 Unauthorized errors ensures the tool continues processing without interruption.

Containerization

Docker volumes allow the container to write the CSV file directly to the host’s desktop, making the output instantly accessible.

Data Correlation

An IP with a high Abuse Score and multiple OTX pulses is classified as a “Critical” threat, warranting immediate blocking.

Get the Code

Feel free to check out the full source code and contribute to the project on GitHub:

Sentinel‑IP Repository – [GitHub link]

Don’t forget to ⭐ the repo if you find it useful!

Back to Blog

Related posts

Read more »

𝗗𝗲𝘀𝗶𝗴𝗻𝗲𝗱 𝗮 𝗣𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻‑𝗥𝗲𝗮𝗱𝘆 𝗠𝘂𝗹𝘁𝗶‑𝗥𝗲𝗴𝗶𝗼𝗻 𝗔𝗪𝗦 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗘𝗞𝗦 | 𝗖𝗜/𝗖𝗗 | 𝗖𝗮𝗻𝗮𝗿𝘆 𝗗𝗲𝗽𝗹𝗼𝘆𝗺𝗲𝗻𝘁𝘀 | 𝗗𝗥 𝗙𝗮𝗶𝗹𝗼𝘃𝗲𝗿

!Architecture Diagramhttps://dev-to-uploads.s3.amazonaws.com/uploads/articles/p20jqk5gukphtqbsnftb.gif I designed a production‑grade multi‑region AWS architectu...