Beispiel #1
0
def process_iocs(results):
    """Return data formatted for Splunk from Malshare."""
    if results != None:
        provided_iocs = [y for x in results for y in x.values()]
    else:
        provided_iocs = sys.argv[1:]

    session = commons.create_session()
    api_key = commons.get_apikey("malshare")
    splunk_table = []

    for provided_ioc in set(provided_iocs):
        provided_ioc = commons.deobfuscate_string(provided_ioc)
        provided_ioc = provided_ioc.lower()

        if validators.ipv4(provided_ioc) or validators.domain(provided_ioc) or \
            re.match("^[a-f\d]{32}$", provided_ioc) or re.match("^[a-f\d]{64}$", provided_ioc):
            pass
        else:
            splunk_table.append({"invalid": provided_ioc})
            continue

        ioc_dicts = query_malshare(provided_ioc, api_key, session)

        for ioc_dict in ioc_dicts:
            splunk_table.append(ioc_dict)

    session.close()
    return splunk_table
Beispiel #2
0
def get_feed():
    """Return the latest report summaries from the feed."""
    session = commons.create_session()
    api_key = commons.get_apikey("greynoise")
    tags = query_list(session)

    if tags == None:
        return

    if api_key != None:
        session.params = {"key": api_key}
    return query_tags(tags, session)
Beispiel #3
0
def create_session():
    """Return Twitter session."""
    keys = commons.get_apikey("twitter")
    auth = tweepy.OAuthHandler(keys["consumer_key"], keys["consumer_secret"])
    auth.set_access_token(keys["access_token"], keys["access_token_secret"])
    session = tweepy.API(auth)

    try:
        session.rate_limit_status()
    except:
        sc = session.last_response.status_code
        msg = session.last_response.content
        return {"error": "HTTP Status Code {}: {}".format(sc, msg)}
    return session
Beispiel #4
0
def process_iocs(results):
    """Return data formatted for Splunk from Hybrid-Analysis."""
    params = [
        'authentihash', 'av_detect', 'context', 'country', 'domain', 'env_id',
        'filename', 'filetype_desc', 'filetype', 'hash', 'host', 'imp_hash',
        'port', 'similar_to', 'ssdeep', 'tag', 'url', 'verdict', 'vx_family'
    ]

    if results != None:
        provided_iocs = [y for x in results for y in x.values()]
    elif sys.argv[1] == "terms" and sys.argv[2] in params:
        if len(sys.argv) > 2:
            endpoint = sys.argv[1]
            param = sys.argv[2]
            provided_iocs = sys.argv[3:]
    elif sys.argv[1] == "hash" and sys.argv[2] == "hash":
        if len(sys.argv) > 2:
            endpoint = sys.argv[1]
            param = sys.argv[2]
            provided_iocs = sys.argv[3:]

    session = commons.create_session()
    api_domain = commons.get_apidomain("hybrid-analysis")
    api_key = commons.get_apikey("hybrid-analysis")
    splunk_table = []

    for provided_ioc in set(provided_iocs):
        provided_ioc = commons.deobfuscate_string(provided_ioc)
        provided_ioc = provided_ioc.lower()

        ioc_dicts = query_hybridanalysis(endpoint, param, provided_ioc,
                                         api_domain, api_key, session)

        for ioc_dict in ioc_dicts:
            splunk_table.append(ioc_dict)

    session.close()
    return splunk_table