Comments (1)
Rough plan:
TI Providers are of 2 types:
- those that support one observable at a time
- those that support queries with multiple observables (e.g. Sentinel provider)
The architecture is currently
TILookup
- (with main funcslookup_ioc
andlookup_iocs
) is a facade/proxy class that handles dispatching calls to each configured provider- it simple iterates through the providers in a for loop and combines the results to be returned in a DF
- ti_providers are derived from
ti_provider_base
. Thelookup_iocs
implemented inti_provider_base
simply iterates (via a generator) through the supplied iterable/DF of observables, calling thelookup_ioc
method implemented for the specific provider.
Constraints:
- we probably don't want to default to hammering TI providers with a big set of async requests since we'll probably quickly hit request limits.
- some users may have enterprise licenses and want the requests for some providers to be async - so maybe we need handle async requests differently depending on user configuration.
- can we handle per-provider request limits? What would this look like? Process N reqs per minute then sleep until minute expires? (N is req limit/min)
Proposed solution:
Phase 1
- in TILookup create an async task list for each provider
- For multiple requests, split the list into some multiple of batches (for feedback via TQDM) - e.g. 10
- TQDM look tracks # of batches (not # of providers)
- Have synchronous for loop handle request chunks
- Dispatch to async tasks for each configured provider.
Phase 2
- Allow individual providers to be configured for async
- Re-implement async version of ti_provider_base.lookup_iocs that can dispatch batch of requests asynchronously
- When called with async=True (config) send via async
- Otherwise just look synchronously.
from msticpy.
Related Issues (20)
- [Bug]: Search on ReadtheDocs for msticpy is not working HOT 1
- GPT Request for TI investigation and enrichment HOT 1
- Add support for package-based msticpy extensions and plugins HOT 2
- [Bug]: Dataprovider bugs
- [Bug]: IoCExtract classifies a FQDN as EMAIL HOT 2
- Add Panel Perspective Widget for Pivot Table Functionality HOT 2
- Loading the credentials from msticpyconfig.yaml on SplunkUploader HOT 5
- Integrate IntelOwl as a new TI provider for enrichment HOT 3
- [Bug]: QueryProvider connect method fails to extract IDs from a connection string HOT 2
- [Bug]: Query splitting on a pre-defined query returns a runtime error HOT 2
- [Bug]: Username-Password Credentials in Environmental Variables don't Work HOT 1
- Add certificate based authentication for data provider using an Azure AD Application HOT 3
- [Bug]: AttributeError: 'LogsQueryPartialResult' object has no attribute 'tables' on large response limits. HOT 2
- Username & Password authentication to M365D/MDE as same as Azure Sentinel HOT 2
- [Bug]: KeyError: 'label' when using df.mp.whois HOT 1
- [Bug]: ValueError: endog must have ndim <= 1 HOT 1
- Add Rich Text Editor Widget for Reporting and Documentation Purposes HOT 2
- [Bug]: MSSentinel Provider - No errors thrown for partial query errors when using split_query_by parameter
- [Bug]: Conda installation not working
- Potential Logic Error HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from msticpy.