Giter VIP home page Giter VIP logo

minemeld-core's Introduction

minemeld-core

This repo contains the code for the engine and the API of MineMeld, an extensible Threat Intelligence processing framework.

For details check the MineMeld Wiki

minemeld-core's People

Contributors

jonas337 avatar jtschichold avatar kevinsteves avatar kidmose avatar pdasilva avatar scoggins avatar sddj avatar shaishav11 avatar xhoms avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

minemeld-core's Issues

Output Syslog in CEF Format

Hi everyone,

Currently we have an syslog to local logstash prototype available as an output. We however utilize ArcSight and would love to be able to receive either the 'logstash' syslog or a CEF formatted one. CEF syntax can be found here.

Creating such an prototype would support the ArcSight community out there!

Regards,
Forseti

Node position incorrect in "Config" Tab

Hello,
When node of type "Output" is enabled, in "Config" Tab its position is shown as "Processor". However, when the node is disabled, its position correctly matches the type - "Output"

TAXII miner scalability

Current implementation of TAXII miner uses MITRE python library and loads the full response in memory. This doesn't scale too well and should be changed into an event-based STIX parser.

'ascii' codec can't encode in taxii.DataFeed

Following exception is thrown when indicator contains non ASCII characters:

Traceback (most recent call last):
File "/opt/minemeld/engine/0.9.26/local/lib/python2.7/site-packages/minemeld/comm/amqp.py", line 358, in _callback
m(**params)
File "/opt/minemeld/engine/0.9.26/local/lib/python2.7/site-packages/minemeld/ft/base.py", line 121, in _counter
f(self, *args, **kwargs)
File "/opt/minemeld/engine/0.9.26/local/lib/python2.7/site-packages/minemeld/ft/base.py", line 494, in update
value=fltvalue
File "/opt/minemeld/engine/0.9.26/local/lib/python2.7/site-packages/minemeld/ft/base.py", line 121, in _counter
f(self, *args, **kwargs)
File "/opt/minemeld/engine/0.9.26/local/lib/python2.7/site-packages/minemeld/ft/taxii.py", line 920, in filtered_update
self._add_indicator(now, indicator, value)
File "/opt/minemeld/engine/0.9.26/local/lib/python2.7/site-packages/minemeld/ft/taxii.py", line 842, in _add_indicator
indicator
UnicodeEncodeError: 'ascii' codec can't encode characters in position 77-80: ordinal not in range(128)

Exception in syslogMiner when rule has no fields

Version: 0.9.18

How to reproduce:

  • create a syslog miner node
  • create a rule in syslog miner with no fields
  • check minemeld-engine.log

Exception is thrown:

2016-07-22T11:14:03 (5015)launcher._run_chassis ERROR: Exception in chassis main procedure
Traceback (most recent call last):
  File "/opt/minemeld/engine/0.9.18/local/lib/python2.7/site-packages/minemeld/run/launcher.py", line 45, in _run_chassis
    c.configure(fts)
  File "/opt/minemeld/engine/0.9.18/local/lib/python2.7/site-packages/minemeld/chassis.py", line 90, in configure
    config=ftconfig.get('config', {})
  File "/opt/minemeld/engine/0.9.18/local/lib/python2.7/site-packages/minemeld/ft/__init__.py", line 25, in factory
    config=config
  File "/opt/minemeld/engine/0.9.18/local/lib/python2.7/site-packages/minemeld/ft/syslog.py", line 371, in __init__
    super(SyslogMiner, self).__init__(name, chassis, config)
  File "/opt/minemeld/engine/0.9.18/local/lib/python2.7/site-packages/minemeld/ft/base.py", line 194, in __init__
    self.configure()
  File "/opt/minemeld/engine/0.9.18/local/lib/python2.7/site-packages/minemeld/ft/syslog.py", line 410, in configure
    self._load_side_config()
  File "/opt/minemeld/engine/0.9.18/local/lib/python2.7/site-packages/minemeld/ft/syslog.py", line 491, in _load_side_config
    cf = self._compile_rule(fname, f)
  File "/opt/minemeld/engine/0.9.18/local/lib/python2.7/site-packages/minemeld/ft/syslog.py", line 466, in _compile_rule
    result['fields'] = [fld for fld in fields if type(fld) == str]
TypeError: 'NoneType' object is not iterable

TAXII Output

Background
Users would like to share indicators with platforms supporting STIX/TAXII. This is currently not possible.

Requirements

  • create new output node for TAXII Data Feed
  • implement TAXII protocol in via Flask
  • add support for basic authentication, where users are not MineMeld admins

URL specific aggregator

Right now URLs are handled using a naive aggregator, where aggregation and whitelisting are based on string matching.
A URL specific aggregator should:

  • support whitelist with wildcards/regexs
  • handle indicators with wildcards
  • handle different URLs formats (with or without protocol, ...)
  • match on the host part of the URL should be case insensitive

Add support for persistent registered-ip in DagPusher

Currently DagPusher supports only non-persistent registered-ips. We should support also persistent registered-ips:

  • it should be possible to specify the default value of persistent flag via prototype
  • it should be possible to override the default value inside the device list

Exception handling domains in minemeld.ft.taxii.DataFeed

Exception handling domain indicators in taxii.DataFeed. Trace:

2016-09-12T17:09:19 (3329)amqp._callback ERROR: Exception in handling update on topic domainAggregator with params {u'source': u'domainAggregator', u'indicator': u'bestinghana.com', u'value': {u'confidence': 70, u'share_level': u'red', u'sources': [u'autofocusMMDemoEL'], u'autofocus_label': u'mmdemo', u'first_seen': 1473370831665L, u'type': u'domain', u'last_seen': 1473370831665L}}
Traceback (most recent call last):
  File "/opt/minemeld/engine/0.9.20/local/lib/python2.7/site-packages/minemeld/comm/amqp.py", line 344, in _callback
    m(**params)
  File "/opt/minemeld/engine/0.9.20/local/lib/python2.7/site-packages/minemeld/ft/base.py", line 122, in _counter
    f(self, *args, **kwargs)
  File "/opt/minemeld/engine/0.9.20/local/lib/python2.7/site-packages/minemeld/ft/base.py", line 453, in update
    value=fltvalue
  File "/opt/minemeld/engine/0.9.20/local/lib/python2.7/site-packages/minemeld/ft/base.py", line 122, in _counter
    f(self, *args, **kwargs)
  File "/opt/minemeld/engine/0.9.20/local/lib/python2.7/site-packages/minemeld/ft/taxii.py", line 838, in filtered_update
    self._add_indicator(now, id_, indicator, value)
  File "/opt/minemeld/engine/0.9.20/local/lib/python2.7/site-packages/minemeld/ft/taxii.py", line 777, in _add_indicator
    type_mapper['mapper'](oid, indicator, value)
  File "/opt/minemeld/engine/0.9.20/local/lib/python2.7/site-packages/minemeld/ft/taxii.py", line 608, in _stix_domain_observable
    type_="FQDN"
TypeError: __init__() got an unexpected keyword argument 'type_'

Optimize IPv4 Aggregator

  • branch factor should be more aggressive, most of the IPv4 indicators are unicast. Keep unicast in a dedicated table ? Would help in open-close interval
  • move ST to native extension

TAXII Miner some times generates IPv6 indicators with type IPv4

2016-09-25T22:19:30 (6395)amqp._callback ERROR: Exception in handling update on topic taxii_test with params {u'source': u'taxii_test', u'indicator': u'::ffff:1.1.1.1', u'value': {u'confidence': 40, u'sources': [u'taxii_test'], [...], u'type': u'IPv4', [...]}}

Some error message spelling typos in minemeld/ft/base.py

$ find . -name '*.py' -exec grep -s recev x {} ;
./minemeld-core/minemeld/ft/base.py: LOG.error("update recevied from checkpointed source")
./minemeld-core/minemeld/ft/base.py: raise AssertionError("update recevied from checkpointed source")
./minemeld-core/minemeld/ft/base.py: LOG.error("withdraw recevied from checkpointed source")
./minemeld-core/minemeld/ft/base.py: raise AssertionError("withdraw recevied from checkpointed source")

MineMeld specific user agent in base poller

Currently the User-Agent header generated by the base poller Miners doesn't contain any reference to MineMeld. Adding a MineMeld specific string with version would help the feed sources to have a sense of the number of accesses performed via MineMeld.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.