SentinelTI User Guide
Everything you need to know — from first login to SIEM export. No experience required.
1. What is SentinelTI?
SentinelTI is a Threat Intelligence Platform (TIP) — a cybersecurity tool that automatically collects, enriches, scores, and presents information about malicious IP addresses and other online threats.
Think of it as a radar for cyber threats. Every day, thousands of malicious IPs are identified and published by security researchers around the world. SentinelTI pulls all of that data into one place, runs it through multiple intelligence sources, applies a machine-learning model to rank the danger level, and shows you a clean, actionable dashboard so your security team can respond fast.
2. The Name — What Does "Sentinel" Mean?
“A guard or watchman posted to stand watch and warn of approaching danger.”
From 16th-century Italian sentinella, from sentire — to hear, to perceive.
A sentinel is a soldier stationed at the entrance to a camp or city, watching the horizon and sounding the alarm if an enemy approached. They do not wait for the enemy to arrive — they watch constantly, so that others can act in time.
| Part | Meaning |
|---|---|
| Sentinel | A guard that watches continuously — exactly what this platform does 24/7 |
| TI | Threat Intelligence — the domain of cybersecurity this platform operates in |
The name is deliberate on three levels:
- ▸Vigilance — SentinelTI never sleeps. It continuously fetches threat feeds, enriches indicators, and monitors your environment.
- ▸Warning — Like a sentinel raising the alarm, SentinelTI fires alert webhooks the moment it detects a high-risk IOC matching your rules.
- ▸Context — A good sentinel doesn't just shout "danger!" — it tells you where the threat is, what it is, and why it's dangerous. SentinelTI does this through ML scoring, SHAP explanations, and MITRE ATT&CK mapping.
3. Getting Started — First Login
▸Step 1 — Register
Go to the SentinelTI URL and click Register. Fill in your email, password (min 8 chars, must differ from your email), full name, and your organisation name. Each organisation gets a fully isolated tenant workspace.
▸Step 2 — Log In
Enter your email and password. You land directly on the Offense Queue dashboard.
▸Step 3 — Fetch Your First Threat Feeds
In the Command Bar at the top, select an IOC count (25–200) and click FETCH. The system pulls from all configured threat feeds and begins enriching in the background. Watch the KPI strip update in real time.
▸Step 4 — Run ML Scoring
After enrichment completes, click SCORE. The ML stacking ensemble (Random Forest + XGBoost) assigns a risk score to every IOC. The ML SCORED counter in the KPI strip will update.
4. The Dashboard Layout
Every page shares the same three-layer shell:
┌──────────────────────────────────────────────────────────────┐ │ TOP BAR — Tenant name · Status dot · UTC+IST clock │ │ DARK/LIGHT toggle · DOCS button │ ├──────────────────────────────────────────────────────────────┤ │ KPI STRIP — TOTAL · HIGH · MEDIUM · LOW · ENRICHED · ML │ ├──────────────────────────────────────────────────────────────┤ │ COMMAND BAR — IOC limit · FETCH · SCORE · CLEAR · │ │ REFRESH · EMAIL REPORT │ ├──────────┬───────────────────────────────────────────────────┤ │ │ │ │ SIDEBAR │ PAGE CONTENT │ │ Nav menu │ (changes per page) │ │ │ │ └──────────┴───────────────────────────────────────────────────┘
▸KPI Strip — Always Visible
| Metric | What It Shows |
|---|---|
| TOTAL | Total IOCs currently in your database |
| HIGH | IOCs with ML score ≥ 0.70 — block immediately |
| MEDIUM | IOCs with ML score 0.30–0.69 — investigate |
| LOW | IOCs with ML score < 0.30 — monitor |
| ENRICHED | IOCs that completed the full 5-stage pipeline |
| ML SCORED | IOCs with an ML risk score assigned |
▸System Status Dot
| Status | Meaning |
|---|---|
| 🟢 OPERATIONAL | Idle and healthy |
| 🟠 ENRICHING | Actively pulling and enriching IOCs |
| 🔵 ML SCORING | Running the machine-learning pipeline |
| 🔴 DEGRADED | Cannot reach the backend — check your connection |
5 seconds so progress feels instant. When everything is idle, it backs off to once every 60 seconds — so the app never hammers the backend unnecessarily.5. All Pages Explained
/dashboardYour primary triage workspace. Every morning, start here to see what threats arrived overnight.
- ·Live UTC + IST clock updated every second
- ·IOC table with 12 columns: IP, severity, risk score, feed source, domain, domain risk, confidence %, abuse reports, country, ISP, malware family, last seen
- ·Filter by risk tier (HIGH / MEDIUM / LOW), enrichment status, full-text search, sort order
- ·HIGH rows highlighted red, MEDIUM rows highlighted orange
- ·↺ Refresh button reloads the table without re-fetching
/scoringThe machine-learning scoring control panel. Shows the full stacking ensemble output and lets you re-run scoring at any time.
- ·RUN ML SCORING button with live progress bar showing %
- ·Score distribution histogram — 10 bins from 0.0 to 1.0
- ·Risk level distribution chart — HIGH / MEDIUM / LOW counts
- ·High Severity table showing RF probability, XGB probability, and final stacked score per IOC
- ·Model architecture cards: Random Forest · XGBoost · Logistic Regression meta · 3-Fold CV
/shapExplains every ML prediction — which signals drove the score up or down. No data science background required.
- ·Global view: mean |SHAP| bar chart — which features matter most overall
- ·Local view: select any IP and click EXPLAIN → waterfall chart per feature
- ·Red bars (▲) = feature pushed risk higher; Green bars (▼) = feature pushed risk lower
- ·Shows base value + each feature's signed contribution → sums to final score
- ·Useful for explaining to management exactly why an IP was flagged
/analyticsVisual overview of your entire IOC dataset — no interaction needed, just data.
- ·Top countries bar chart (horizontal) — where most threats originate
- ·Feed breakdown bar chart — IOCs per source
- ·ISP attribution table — top 10 ASNs hosting malicious IPs
- ·Malware family chart — Feodo C2 botnet strain distribution
- ·Ingestion timeline — IOC count per hour to track fetch cadence
- ·Phase 2 coverage strip: MITRE mapped · domain intel · GreyNoise malicious · URLhaus · Feodo C2
/mitreInteractive ATT&CK matrix view mapping your current IOCs to real-world adversary tactics and techniques.
- ·Tactic heatmap — colour intensity shows IOC count per tactic
- ·Click any tactic to drill down to matching IOCs in a table
- ·Technique-level breakdown with count and progress bars
- ·Auto-mapped during enrichment — no manual tagging needed
- ·Covers: Credential Access · C&C · Reconnaissance · Initial Access · Impact · Discovery · Resource Development
/lookupOn-demand deep intelligence report for any IPv4 address. Works for IPs in your database and any live IP.
- ·IN DB IPs: full ML score + SHAP breakdown + all enrichment data
- ·Any IP: live PTR → GreyNoise → URLhaus → VirusTotal Domain
- ·GreyNoise card: malicious / RIOT (known safe) / noise-scanner / unknown
- ·URLhaus card: malicious URL count with online/offline status
- ·VT Domain card: detection count, reputation score, categories
- ·"Force fresh" toggle bypasses cache for real-time data
/alertsRule-based alerting engine. Define conditions and notification channels — rules fire automatically after each enrichment cycle.
- ·Conditions: min risk score (slider), risk tiers, country codes, MITRE tactic
- ·Channels: Slack webhook · Teams webhook · PagerDuty routing key · Email
- ·Rules fire automatically after every enrichment completion
- ·Active rules list shows fired count and channel badges
- ·Alert history log: last 10 events with IP · rule · timestamp
/siemPush enriched IOCs to Splunk or Elasticsearch, automatically or on demand.
- ·Supported: Splunk HTTP Event Collector (HEC) · Elasticsearch Bulk API
- ·Configure URL, token/API key, index name, auto-push toggle, min tier
- ·Test connection before saving
- ·Manual push: select tier range (HIGH only / HIGH+MEDIUM / All enriched)
- ·Status panel: last push time, total pushed, connection health
- ·Field mapping: indicator → src_ip, ml_score → sentinel_risk_score, etc.
/intelLive cybersecurity news from 6 major publications, last 48 hours only.
- ·Sources: The Hacker News · BleepingComputer · SANS ISC · Dark Reading · CyberSecurity News · Security Affairs
- ·Click source filter buttons to focus on specific publications
- ·Articles show: title, summary, source badge, UTC + IST timestamps, time-ago label
- ·Click any headline to open the full story in a new tab
- ·Auto-refreshes — click ↺ Refresh for latest
/integrationsThree ways to bring your own threat data into SentinelTI.
- ·File Upload: drag-and-drop CSV or NDJSON from your computer
- ·S3 Import: pull directly from AWS S3 — bucket, key, region, IAM credentials
- ·Webhook: unique per-tenant URL — POST IOC JSON from Splunk, QRadar, Sentinel, XSOAR, or any script
- ·Accepted fields: indicator / ip / ioc / value · sources · risk · country · threat_type · malware_family
- ·After import: run FETCH (enrichment) then SCORE to process your custom IOCs
/assetsRegister your private IP ranges so SentinelTI can tell the difference between your own infrastructure and external attackers.
- ·Add CIDRs in CIDR notation (e.g. 10.0.0.0/8, 192.168.0.0/16) with a label and type
- ·Types: Internal · DMZ · Public-owned — each gets a distinct colour in the dashboard
- ·Registered IPs show a blue INTERNAL badge — suppressed from the external threat view
- ·If an internal IP appears in external threat feeds with a high score → purple COMPROMISED badge + critical alert
- ·Common enterprise ranges (RFC 1918) are listed as one-click shortcuts in the registry UI
6. The Command Bar
Visible on every dashboard page. Your primary control panel.
| Button | What It Does | When to Use |
|---|---|---|
[25/50/100/200] | Sets IOC count per fetch | More = broader coverage; fewer = faster |
| FETCH | Pull threat feeds + run enrichment in background | Start of every shift / when you want fresh data |
| SCORE | Run ML scoring on all un-scored IOCs | After FETCH completes |
| CLEAR | Delete all tenant IOCs (confirmation required) | Fresh start / testing |
| REFRESH | Update KPI strip counts | Check progress without re-fetching |
| EMAIL REPORT | Send HTML threat report to your email | Daily briefing / share with management |
| EXPORT CSV | Download all current IOCs as a CSV file | Offline analysis / share with non-dashboard users |
7. Risk Scores Explained
▸ML Score (0.0000 – 1.0000)
After running SCORE, each IOC gets a precise 4-decimal probability from the stacking ensemble:
| Score Range | Level | Recommended Action |
|---|---|---|
| ≥ 0.70 | HIGH | Block immediately — multi-source, high AbuseIPDB confidence, VT positive |
| 0.30 – 0.69 | MEDIUM | Investigate — flagged by 1–2 sources, enrichment suggests malicious |
| < 0.30 | LOW | Monitor — single low-confidence source or stale report |
▸Asset-Aware Badges
If you have registered IP ranges in the Asset Registry, two additional badge types appear:
| Badge | Meaning | What to Do |
|---|---|---|
| INTERNAL | IP is in your registered CIDR range and is not flagged by threat feeds | No action — this is your own infrastructure |
| COMPROMISED | IP is in your registered CIDR range AND appears in external threat feeds with a high score | Investigate immediately — one of your own assets may be compromised or mis-attributed |
▸Why Two Risk Columns on the Table?
| Column | What It Is |
|---|---|
| IP RISK (ml_risk) | ML model's assessment of the IP itself based on AbuseIPDB, VT, geo, feeds |
| DOMAIN RISK (domain_risk) | Assessment of the domain associated with this IP — from VT Domain + URLhaus. An IP can have LOW IP risk but HIGH domain risk if its hostname distributes malware. |
8. The Enrichment Pipeline
When you click FETCH, each IOC goes through 5 sequential stages automatically:
▸Enrichment API Limits & Costs
SentinelTI uses six external enrichment APIs. All are free-tier or key-optional — here’s what each provides and what paid tiers unlock:
| Service | Free Tier | What You Get Free | Paid Tier Unlocks |
|---|---|---|---|
| VirusTotal | Free public key | 4 req/min · 500 req/day · vendor detection counts | 1,000 req/min · file sandbox · full scan history |
| AbuseIPDB | Free (1,000 req/day) | Confidence score · report count · attack categories · country | Higher rate limits · full report history export |
| GreyNoise | Community API (1,000 req/day) | noise / riot flags · classification for ~15% of internet IPs | Full dataset · intent tags · historical lookups — explains GN Malicious = 0 on free |
| ipinfo | Free (50K req/month) | GeoIP · city · org / ISP · hostname · lat/lon | More volume · ASN detail · privacy detection |
| URLhaus | Always free | Malicious URL database · threat labels · online/offline status | No paid tier — always free |
| OTX AlienVault | Free API key | 10 latest threat pulses · IOC lists | MSSP: all pulses · historical · private threat groups |
unknown even though they appear in other feeds. A paid GreyNoise key gives dramatically better classification coverage.MSSP customers can request BYOK (Bring Your Own Key) enrichment — supply your own VirusTotal or GreyNoise API key for richer enrichment without rate-limit sharing. Contact sohamshahh@gmail.com to enable this.
9. ML Model Deep-Dive
This section explains the full machine-learning pipeline — from raw enrichment data to the score you see on screen.
▸The Architecture
Raw IOC features (11 numbers)
│
├─────────────────────────────┐
▼ ▼
Random Forest (50 trees) XGBoost (50 rounds)
max_depth = 6 max_depth = 4, lr = 0.05
rf_prob = P(malicious) xgb_prob = P(malicious)
│ │
└──────────┬──────────────────┘
▼
[rf_prob, xgb_prob] → Logistic Regression (meta)
│
▼
ml_score (0.0000 – 1.0000)
│
GreyNoise corroboration boost (+0.10 if gn_classification = "malicious")
│
▼
final_score ≥ 0.70 → HIGH | 0.30–0.69 → MEDIUM | < 0.30 → LOW▸The 11 Features
| # | Feature | Source | What It Measures |
|---|---|---|---|
| 1 | abuse_reports | AbuseIPDB | Total reports filed — more = more suspicious. Botnet C2s accumulate hundreds. |
| 2 | recency_hrs | AbuseIPDB / feed timestamp / last_seen | Hours since the most recent real signal — AbuseIPDB’s own report time first, then the source feed’s own first-seen timestamp (ThreatFox, OTX, abuse.ch/Feodo Tracker carry one), falling back to ingestion time only when neither exists. Default 720h (30 days) if unknown. |
| 3 | confidence_pct | AbuseIPDB | 0–100% confidence from AbuseIPDB based on report quality and diversity. |
| 4 | vt_detections | VirusTotal | Number of AV engines that flagged this IP. Even 1–2 is significant. |
| 5 | vt_total | VirusTotal | Total engines that checked this IP — context for vt_detections. |
| 6 | multi_source | Internal | 1.0 if IP appears in 2+ feeds, 0.0 if single-source. Independent corroboration is key. |
| 7 | attack_type_count | AbuseIPDB | Number of distinct attack categories — multi-vector attackers score higher. |
| 8 | geo_risk | ipinfo | 1.0 if country in high-risk set (CN, RU, KP, IR, NG, RO, BR, UA, IN, VN), else 0.0. |
| 9 | freshness | Derived | clamp(1 − recency_hrs / 720, 0, 1) — decays linearly over 30 days. |
| 10 | source_score | Feed metadata | Feed quality score / 10. Feodo = 0.5, CINS Army = 0.2, OTX = 0.4, etc. |
| 11 | gn_malicious | GreyNoise | 1.0 if GreyNoise independently classifies this IP as malicious, else 0.0. Cross-source corroboration signal. |
▸GreyNoise Corroboration Boost
When both AbuseIPDB and GreyNoise independently flag an IP as malicious, the agreement across two completely separate intelligence networks is a strong signal that should be reflected in the final score.
SentinelTI applies a +0.10 corroboration boost to the raw ML score whenevergn_classification == "malicious". This boost applies to all three output values:ml_score, rf_prob, and xgb_prob. The final score is always clamped to [0.0, 1.0].
# Example: AbuseIPDB = HIGH confidence + GreyNoise = malicious Without boost: ml_score = 0.82 → HIGH gn_classification = "malicious" With boost applied: ml_score = min(0.82 + 0.10, 1.0) = 0.92 → HIGH (stronger) gn_corroboration_boost = true ← returned in API response
gn_malicious is feature #11 above: real GreyNoise lookups now run during training too, so the model learns from cross-source agreement directly rather than never seeing it. SentinelTI still applies the explicit +0.10 post-score boost shown above on top of that — GreyNoise’s free Community API rate-limits mean training-time coverage for this one feature can vary between retrains, while the post-score boost fires deterministically off live enrichment every time, independent of training. The API response always shows gn_corroboration_boost: true/false so you know when it applied. The heuristic fallback (used during model warm-up) also weights gn_malicious at 15% directly.The boost only fires when GreyNoise actively classifies the IP as malicious — it does not fire for unknown or benign (RIOT) classifications. A GreyNoise 404 or rate-limit response leaves the score unchanged.
▸How Random Forest Works
A Random Forest is an ensemble of 50 decision trees. Each tree is trained on a random subset of the training data and at each split considers only a random subset of the 10 features. The trees vote independently — the RF outputs the fraction of trees that voted "malicious" (rf_prob).
Two sources of randomness (random data subsets + random feature subsets) prevent overfitting and make the ensemble robust to noisy signals. With max_depth=6, each tree can learn complex feature interactions.
Features: abuse_reports=142, recency_hrs=2.3, confidence_pct=89.5,
vt_detections=12, multi_source=1.0, freshness=0.997 …
Tree 1: "abuse_reports > 20? YES → vt_detections > 5? YES → MALICIOUS ✓"
Tree 2: "multi_source == 1? YES → confidence_pct > 60? YES → MALICIOUS ✓"
Tree 3: "freshness > 0.8? YES → abuse_reports > 50? YES → MALICIOUS ✓"
Tree 4: "recency_hrs < 24? YES → vt_detections > 3? YES → MALICIOUS ✓"
Tree 5: "confidence_pct > 80? YES → multi_source == 1? YES → MALICIOUS ✓"
... (trees 6–47 each learned different rules, all vote MALICIOUS) ...
Tree 48: "abuse_reports > 100? YES → freshness > 0.9? YES → MALICIOUS ✓"
Tree 49: "geo_risk == 0? YES → recency_hrs < 5? NO → BENIGN ✗"
Tree 50: "vt_detections > 10? YES → confidence_pct > 70? YES → MALICIOUS ✓"
Vote tally: 48 MALICIOUS vs 2 BENIGN
rf_prob = 48 / 50 = 0.96▸How XGBoost Works
XGBoost is a sequential boosting ensemble — unlike RF (parallel trees), it builds 50 trees one after another, each correcting the errors of the previous trees. A low learning rate (0.05) means each tree contributes only 5% of its prediction, preventing any single tree from dominating.
RF and XGBoost make their errors in different places, so combining them through stacking consistently outperforms either model alone.
▸How Stacking (the Meta-Learner) Works
Instead of simple averaging, a Logistic Regression learns the optimal combination of RF and XGBoost outputs using 3-fold cross-validation. It learns weights β₁ and β₂ such that:
ml_score = sigmoid(β₀ + β₁ × rf_prob + β₂ × xgb_prob) If RF is more reliable on your data → β₁ > β₂ (meta-learner adapts automatically)
▸Training Data — Real AbuseIPDB
The model is trained on real labeled threat data from AbuseIPDB, not synthetic samples. On first startup, SentinelTI fetches up to 400 confirmed malicious IPs from the AbuseIPDB blacklist (confidence ≥ 50%) and verifies a set of known-safe DNS/CDN IPs as the negative class. The resulting dataset is cached for 7 days so training is fast on every restart.
| Class | Source | Label criteria |
|---|---|---|
| Malicious | AbuseIPDB /blacklist?confidenceMinimum=50 | Reported by real security teams worldwide · multi-source corroboration |
| Safe | Known DNS/CDN IPs (Google 8.8.8.8, Cloudflare 1.1.1.1, etc.) verified via /check | abuseConfidenceScore < 5% |
model_ready field in the API response tells you which path was used. Once training completes (usually under 60 seconds from a fresh cache), all subsequent scores use the full ML ensemble with the +0.10 post-boost.▸Example — Full Walkthrough (with GreyNoise Corroboration)
IP: 185.220.101.42 (after enrichment)
Features (11):
abuse_reports = 142 (from AbuseIPDB)
recency_hrs = 2.3 (reported 2.3 hours ago)
confidence_pct = 89.5 (89.5% confidence)
vt_detections = 12 (12 AV engines flagged it)
vt_total = 87 (87 engines checked)
multi_source = 1.0 (in Feodo + OTX)
attack_type_count = 3.0 (SSH + web + port scan)
geo_risk = 0.0 (Germany — not in high-risk set)
freshness = 0.997 (seen 2.3h ago)
source_score = 0.5 (Feodo base score 5 → /10)
gn_malicious = 1.0 (GreyNoise: classification = "malicious")
ML Scoring:
rf_prob = 0.9400 (47/50 trees voted malicious)
xgb_prob = 0.9100 (boosted trees strongly agree)
ml_score = 0.9412 (stacking meta-learner output)
GreyNoise corroboration boost (+0.10, capped at 1.0):
ml_score → min(0.9412 + 0.10, 1.0) = 1.0000 → HIGH (corroborated)
gn_corroboration_boost = true
SHAP (why HIGH?):
Base value: 0.45
+ abuse_reports: ▲ +0.28 (142 reports — very strong)
+ confidence_pct: ▲ +0.15 (89.5% AbuseIPDB confidence)
+ freshness: ▲ +0.07 (seen 2.3h ago)
+ vt_detections: ▲ +0.06 (12 detections)
+ multi_source: ▲ +0.05 (two independent sources)
+ gn_malicious: ▲ +0.10 (GreyNoise corroboration boost)
- geo_risk: ▼ -0.03 (Germany — slightly reduces score)
──────
Final: 1.0000 → HIGH (corroborated by GreyNoise)10. Threat Feed Sources
| Feed | IOC Type | Quality | Notes |
|---|---|---|---|
| Abuse.ch Feodo | Botnet C2 IPv4 | High | Emotet, QakBot, Dridex C2 servers |
| CINS Army | Brute-force / scanners | Medium | Large volume, lower per-IP confidence |
| OTX AlienVault | Community pulses | High | Crowdsourced; requires free OTX API key |
| Feodo Extended | Banking trojans | High | Malware family + C2 status per IP |
| ET SSH | SSH scanners | Medium | Proofpoint blocklist |
| ET Mail | Spam sources | Medium | Proofpoint blocklist |
| ET Web | Web scanners | Medium | Proofpoint blocklist |
11. SIEM Integration
SentinelTI can deliver enriched threat intelligence to your SIEM in two modes — push (SentinelTI sends data to your SIEM after every FETCH) and pull(your SIEM polls SentinelTI's export API on a schedule). Both are available from the SIEM and Integrations pages.
▸11.1 Export API Key — Pull Mode
The pull model is the industry-standard integration pattern. Your SIEM polls SentinelTI's export endpoint on a schedule and retrieves the latest enriched IOCs. No inbound firewall rules needed on your SIEM side.
Getting your API Key: Go to Integrations in the sidebar → scroll to the Export API Key card → click SHOW → copy. Your pre-built pull URL is shown below the key.
https://sentineltibackend-production.up.railway.app/export/iocs?api_key=<YOUR_KEY>&risk=HIGH,MEDIUM&limit=500
| Parameter | Default | Description |
|---|---|---|
| api_key | required | Your Export API Key from the Integrations page |
| risk | HIGH,MEDIUM | Comma-separated tiers: HIGH, MEDIUM, LOW |
| limit | 500 | Maximum IOCs returned (capped at 1000) |
| since | — | ISO 8601 timestamp — only IOCs seen after this time (incremental pulls) |
| fmt | json | json (default) or ndjson (newline-delimited, for log pipelines) |
If your key is compromised, click Rotate Key on the Integrations page — the old key stops working immediately.
▸11.2 DNIF Hypercloud — Full Integration Guide
DNIF is the recommended SIEM for SentinelTI. This section covers the complete end-to-end setup — push (SentinelTI → DNIF after every FETCH), pull (DNIF polls SentinelTI on a schedule), and correlation Signal creation. For push credentials only, see the quick-reference in Section 11.3.3.
▸Step 1 — Create the HTTP Connector in DNIF
In DNIF Hypercloud: Connectors → Add Connector → HTTP Connector. Name it SentinelTI. Once created, copy the Collector URL and Bearer Token — you will need these in Step 2.
| DNIF Field | Where to find it |
|---|---|
| Collector URL | DNIF → Connectors → your SentinelTI connector → Collector URL. Format: https://<tenant>.dnif.cloud:2882/{id}/default/{connector-id}/events |
| Bearer Token | DNIF → Connectors → your SentinelTI connector → Bearer Token (shown once — copy immediately) |
▸Step 2 — Configure Push in SentinelTI
In SentinelTI: SIEM page → DNIF tab → paste the Collector URL and Bearer Token → set minimum risk tier (HIGH recommended) → enable Auto-push → click Test → click Save. After every FETCH, HIGH/MEDIUM IOCs are automatically pushed to DNIF.
▸Step 3 — Configure Pull in DNIF
In DNIF, configure the HTTP Connector to also poll SentinelTI's export endpoint every hour. Use the pull URL from the Integrations page:
https://sentineltibackend-production.up.railway.app/export/iocs?api_key=<YOUR_KEY>&risk=HIGH,MEDIUM&limit=500
Set polling interval to 3600 seconds (1 hour) to match SentinelTI's enrichment cycle.
▸Step 4 — Create a DNIF Correlation Signal
Once IOCs flow into DNIF, create a Signal that fires whenever a network log matches a SentinelTI HIGH IOC:
| Signal field | Value |
|---|---|
| Name | SentinelTI HIGH IOC Match |
| Stream | Your firewall / proxy / DNS log stream |
| Condition | src_ip IN SentinelTI feed AND sentinel_risk = HIGH |
| Action | Create DNIF Case + notify SOC channel |
sentinel_risk_score field populated.▸11.3 Push Mode — All 7 SIEMs
SentinelTI can push enriched IOCs directly to seven SIEMs via their native APIs. Go to SIEM in the sidebar, pick the SIEM tab, fill in credentials, test, then save. After every FETCH, HIGH/MEDIUM IOCs are pushed automatically.
▸11.3.1 Splunk HEC
Splunk Web → Settings → Data Inputs → HTTP Event Collector → New Token → name it SentinelTI → copy token.
| Field | Value |
|---|---|
| URL | https://splunk.company.com:8088 (HEC port — usually 8088) |
| HEC Token | Paste token — SentinelTI adds the Splunk prefix automatically |
| Index Name | sentinel-ti (create this index in Splunk first) |
index=sentinel-ti sourcetype=sentinel_ti:ioc severity=HIGH | table src_ip, sentinel_risk_score, malware_family, geo_country
▸11.3.2 Elasticsearch / Elastic SIEM
Kibana → Stack Management → API Keys → Create API Key with write access to your target index.
| Field | Value |
|---|---|
| URL | https://your-cluster.es.io:9200 or Elastic Cloud endpoint |
| API Key | Base64-encoded API key from Kibana |
| Index Name | sentinel-ti-iocs |
SentinelTI uses the Elasticsearch Bulk API (/_bulk). Each IOC is a JSON document with @timestamp.
▸11.3.3 DNIF Hypercloud — Push Credentials
| Field in SentinelTI SIEM page | Where to get it |
|---|---|
| SIEM Type | Select "DNIF" from the dropdown |
| DNIF Collector URL | DNIF → Connectors → your HTTP Connector → Collector URL |
| Bearer Token | DNIF → Connectors → your HTTP Connector → Bearer Token |
| Minimum Tier | Set to HIGH (recommended) or MEDIUM to control push volume |
▸11.3.4 Microsoft Sentinel
You need a Data Collection Rule (DCR), a Data Collection Endpoint (DCE), and an Azure AD app token.
| Field | Value |
|---|---|
| SIEM Type | MS Sentinel |
| DCE Ingestion URL | https://<dce>.eastus.ingest.monitor.azure.com/dataCollectionRules/<dcr-id>/streams/<stream>?api-version=2023-01-01 |
| Bearer Token | Azure AD OAuth2 token (scope: https://monitor.azure.com/.default) |
▸11.3.5 IBM QRadar
QRadar Admin → Authorized Services → Add Authorized Service → name SentinelTI → role Admin → copy the SEC token (UUID).
| Field | Value |
|---|---|
| SIEM Type | QRadar |
| QRadar Host URL | https://qradar.company.com (no trailing slash) |
| SEC Token | UUID from Admin → Authorized Services |
▸11.3.6 Sumo Logic
Sumo Logic → Manage Data → Collection → Add Collector → Hosted Collector → Add Source → HTTP Logs & Metrics. The Source URL is both the endpoint and the authentication — no separate token.
| Field | Value |
|---|---|
| SIEM Type | Sumo Logic |
| HTTP Source URL | https://endpoint1.collection.us2.sumologic.com/receiver/v1/http/<unique-key> |
| Token field | Hidden automatically — URL contains auth |
▸11.3.7 Datadog
Datadog → Organization Settings → API Keys → New Key → name SentinelTI → copy the key. No URL needed — SentinelTI always sends to Datadog's fixed log intake endpoint.
| Field | Value |
|---|---|
| SIEM Type | Datadog |
| URL field | Hidden — fixed endpoint used automatically |
| API Key | Your Datadog API key |
source:SentinelTI @severity:HIGH
▸11.4 Real-Time Alerts to SIEM via Alert Rules
Alert Rules can push a single IOC to DNIF the moment it's detected — without waiting for the next batch push. Go to Alerts → create a rule → add a DNIF channel → enter the Collector URL and Bearer Token. When the rule fires, DNIF receives the event within seconds.
▸11.5 Compatible SIEMs — Quick Reference
| SIEM | Push | Pull | What to configure |
|---|---|---|---|
| DNIF Hypercloud | ✅ Native | ✅ HTTP poll | See Section 11.2 |
| Splunk | ✅ HEC | ✅ /export/iocs | HEC URL + token |
| Elasticsearch | ✅ Bulk API | ✅ /export/iocs | ES URL + API key |
| Microsoft Sentinel | ✅ DCE API | ✅ Logic App | DCE URL + Azure AD token |
| IBM QRadar | ✅ REST API | ✅ Log Source | SEC token + host URL |
| Sumo Logic | ✅ HTTP Source | ✅ /export/iocs | HTTP Source URL (URL = auth) |
| Datadog | ✅ Log Intake | ✅ /export/iocs | API key only (no URL needed) |
| Google Chronicle | — | ✅ Feed Mgmt | Generic REST → pull URL |
| Cortex XSOAR | — | ✅ HTTP Poll | /export/iocs?api_key=<KEY> |
12. Asset Registry
The Asset Registry solves a real problem in threat intelligence: reputation-based scoring breaks for private IP ranges. When SentinelTI sees 192.168.1.100 in a threat feed, it has no way to know if that IP belongs to an attacker or to your own infrastructure — unless you tell it.
▸12.1 The Problem It Solves
| Scenario | Without Asset Registry | With Asset Registry |
|---|---|---|
| Your SWIFT gateway (10.10.5.22) appears in a public blocklist | Scored HIGH — false positive alert fires, SOC wastes time investigating | Marked INTERNAL — suppressed from external threat view, no alert |
| Compromised internal host (192.168.1.100) starts beaconing | Low score — it's an RFC 1918 address, not in any feed | Matched as YOUR asset + in feed with high score → COMPROMISED badge + critical alert |
▸12.2 How to Register a Range
Go to Asset Registry in the sidebar.
| Field | Example | Notes |
|---|---|---|
| CIDR Range | 10.0.0.0/8 | Standard CIDR notation — /8 through /32 all accepted |
| Label | Internal LAN | Human-readable name shown in the dashboard ASSET column |
| Type | Internal / DMZ / Public-owned | Controls badge colour — blue (internal), orange (DMZ), purple (public-owned) |
▸12.3 How It Works in the Dashboard
After every FETCH + SCORE cycle, each IP is checked against your registered CIDRs:
| Condition | Dashboard Badge | Action |
|---|---|---|
| IP not in any registered range | Normal risk badge (HIGH / MEDIUM / LOW) | Standard threat workflow |
| IP in range, not in threat feeds (or low score) | INTERNAL | Suppress — own infrastructure, not an external threat |
| IP in range AND in threat feeds with score ≥ 0.60 | COMPROMISED | Auto-alert fires + critical banner on dashboard |
▸12.4 Automatic Compromised Asset Alerts
You do not need to create an alert rule for this — SentinelTI fires automatically. Every time FETCH + SCORE completes, the system checks for COMPROMISED IOCs and dispatches to all channels configured across your active alert rules (Slack, Teams, PagerDuty, email).
| Property | Value |
|---|---|
| Trigger | Automatically after every FETCH + SCORE cycle |
| Condition | Registered IP seen in external threat feeds with ML score ≥ 0.60 or multiple feed sources |
| Channels | Union of all channels across all active alert rules for your tenant |
| Deduplication | 1-hour window — same IP will not fire again within 1 hour |
| Alert log | Appears in Alert Rules → Recent Alerts with a purple COMPROMISED badge |
| Dashboard | Purple warning banner at top of Offense Queue listing affected IPs |
▸12.6 Common Enterprise Ranges
| CIDR | Class | Typical Use |
|---|---|---|
| 10.0.0.0/8 | Class A | Large enterprise internal networks |
| 172.16.0.0/12 | Class B | Mid-range private networks |
| 192.168.0.0/16 | Class C | Office / branch networks |
| 100.64.0.0/10 | Shared | ISP CGN / VPN address space |
13. Team Management
SentinelTI is built for SOC teams. Each organisation has a single shared workspace (tenant) — all members see the same IOC database, alerts, and SIEM configuration. The admin controls who can access the workspace.
▸12.1 Roles
| Role | Who has it | Key capabilities |
|---|---|---|
| Admin | First user who registers (the plan owner) | Invite/remove members, configure SIEM, access Export API key, upgrade plan, clear database, bypass plan gates |
| Analyst | Invited members | Fetch IOCs, run ML scoring, create alert rules, IP Lookup, view analytics |
▸12.2 Inviting Team Members
Only admins can invite new members. Go to Team in the sidebar → click + Invite Member → enter the work email and select a role → click Send Invite.
SentinelTI emails the invitee with a one-click join link. They set their name and password and automatically join your workspace — no new tenant is created.
▸12.3 The Invite Link
https://sentinelti-product.vercel.app/register?invite=<token>
The token is single-use — once accepted it is invalidated. You can revoke a pending invite from the Team page's Pending Invites section at any time before the invitee clicks it.
▸12.4 Removing Members
Go to Team → find the member → click the ✕ next to their name → confirm. Removed members lose access immediately — their JWT tokens fail on the next request. You cannot remove yourself; invite the new admin first, then have them remove you.
▸12.5 Pending Invites
The Team page (admin view only) lists all pending invites with the invitee email, creation date, assigned role, and a Revoke button to cancel before the link is used.
14. Account & Settings
| Action | How |
|---|---|
| Change password | Sidebar bottom-left → "Change password". Cannot set password = email. |
| Toggle theme | "DARK / LIGHT" button in the top bar. Saved in browser storage. |
| Sign out | Sidebar bottom-left → "Sign out" |
| Email report | "EMAIL REPORT" in the Command Bar — sends to your registered email |
▸Tenant Isolation — Your Data Stays Yours
SentinelTI is a multi-tenant platform. Every organisation that registers gets a completely isolated workspace — no data is ever shared between accounts.
| Layer | How isolation works |
|---|---|
| Registration | A unique tenant_id is created for your organisation the moment you register |
| Data storage | Every IOC fetched is tagged with your tenant_id in the database — other tenants's IOCs are invisible to you |
| API requests | Your JWT token carries your tenant_id — the backend enforces it on every query, no exceptions |
| Plan limits | Each tenant has its own quota — 50 IOCs per fetch, 500 stored, and 500 ingested per UTC day on the Free plan — independent of all other accounts |
| CLEAR command | Deletes only your tenant's IOCs — never touches another organisation's data |
15. Plans & Pricing
SentinelTI offers three plans. Every account starts on Free (Starter) automatically — no credit card required. Upgrade any time to unlock higher IOC limits, more users, and advanced features.
- ✓50 IOCs / fetch
- ✓500 IOCs stored
- ✓500 IOCs / day ingest
- ✓1 user
- ✓ML scoring + SHAP
- ✓IP Lookup & MITRE
- ✓Community support
- ✓500 IOCs / fetch
- ✓25,000 IOCs stored
- ✓25,000 IOCs / day ingest
- ✓Up to 5 users
- ✓Export API Key (SIEM pull)
- ✓HTML email reports
- ✓Priority enrichment
- ✓Unlimited IOCs stored
- ✓Manage unlimited client workspaces
- ✓Per-client branded PDF reports
- ✓SIEM push (all 7 connectors)
- ✓Cross-client risk rollup
- ✓BYOK enrichment keys
| Feature | Free | Pro | MSSP |
|---|---|---|---|
| IOCs per fetch | 50 | 500 | Unlimited |
| IOCs stored (total) | 500 | 25,000 | Unlimited |
| Users per org | 1 | Up to 5 | Unlimited |
| ML risk scoring | ✓ | ✓ | ✓ |
| SHAP explainability | ✓ | ✓ | ✓ |
| MITRE ATT&CK | ✓ | ✓ | ✓ |
| IP Lookup | ✓ | ✓ | ✓ |
| Custom feeds | — | ✓ | ✓ |
| Suppression list | — | ✓ | ✓ |
| Email reports | — | ✓ | ✓ |
| Export API Key | — | ✓ | ✓ |
| Alert rules | — | ✓ | ✓ |
| SIEM push (7 types) | — | — | ✓ |
| Auto-push on enrichment | — | — | ✓ |
| Client workspace management | — | — | ✓ |
| IOC TTL | 90 days | 90 days | 365 days |
| Support response | 72 business hrs | 24 business hrs | Same business day |
| Support channel | Community email | Priority + AI chat | Priority email + AI chat |
| BYOK enrichment keys | — | — | ✓ (on request) |
| Price | Free | $79/mo | $299/mo |
403, and exceeding 500 ingested IOCs in a single UTC day returns a 429 — both with an upgrade prompt. The daily ceiling exists because every ingested indicator is enriched against VirusTotal, AbuseIPDB, GreyNoise and OTX before the storage cap prunes it. Storage caps are enforced after each fetch: the oldest LOW-risk IOCs are pruned first, then MEDIUM, then HIGH-risk as a last resort only if the cap is still exceeded.▸Support SLA
Every plan includes support, with response times that scale by plan level. See Support & SLA below for the full table.
16. Frequently Asked Questions
17. Support & SLA
SentinelTI includes AI-powered support for all plans, with guaranteed human response SLAs that scale with your plan. Visit /support to access the chatbot or submit a request.
▸AI Support Chatbot
The AI assistant at /support is powered by Groq (openai/gpt-oss-120b) and has full context about SentinelTI — features, troubleshooting, SIEM integration, enrichment, plans, and pricing. It provides instant answers 24/7, free for all plans.
If the AI cannot resolve your issue, you can escalate to human support via the “Escalate” button on the support page.
▸Response SLA by Plan
| Plan | Response Time | Availability | Channels |
|---|---|---|---|
| Free | 72 business hours | Business hours | Email · AI chatbot |
| Pro | 24 business hours | Mon–Fri | Priority email · AI chatbot |
| MSSP | Same business day | Mon–Fri | Priority email · AI chatbot · BYOK setup calls |
▸Contacting Support
For all enquiries: sohamshahh@gmail.com. Include your tenant name, plan, and a description of the issue. MSSP customers should mark urgent issues with [URGENT] in the subject line for priority handling.