Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LdapQuery Analyzer #589

Merged
merged 11 commits into from
Jan 21, 2021
Merged

LdapQuery Analyzer #589

merged 11 commits into from
Jan 21, 2021

Conversation

cyberpescadito
Copy link
Contributor

Hello,

Today I wanna share a simple LdapQuery analyzer. It's useful to get the context of an user from your organization for investigations purposes.

Configure it:

  • Configure the analyzer on Cortex (ldap server address, account to bind, attributes to fetch)
  • Add the report templates to your Hive

Run in TheHive:
-Declare an observable (accepted types: username & email address)
-Run the Analyzer

@nadouani nadouani changed the base branch from master to develop January 7, 2020 10:15
@nadouani nadouani added the category:new-analyzer New analyzer submitted label Jan 8, 2020
@nadouani
Copy link
Contributor

nadouani commented Jan 8, 2020

Hello @cyberpescadito Thanks for the PR, is it possible to add a PR for https://github.com/TheHive-Project/CortexDocs/blob/master/analyzer_requirements.md

namespace = "LDAP"
predicate = "Query"
value = "Success"
taxonomies.append(self.build_taxonomy(level, namespace, predicate, value))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any useful information you can put as the value of that taxonomie? probably the cn or the uid?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree it would be strange to not include "cn" value in attributes list to fetch from the LDAP, but if "cn" isn't declared in "attributes" list by the admin in cortex analyzer configuration it could break the summary. So i chosen to not include any value of LDAP there.
What is your point of view? should I change de program design to enforce "cn" attribute fetching ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, the idea was to make that taxonomie meaningful/useful.

If it will be always: Ldap:Query=Success then it's not worth it.

I would make a taxonomy like: LdapQuery:cn=XXX or LdapQuery:ATTRIBUTE_NAME=ARRTIBUTE_VALUE or nothing

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is value a mandatory attribute of taxonomies?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note sure, but the taxonomy aims to provide important info, without having to read the full report. You can probably show a taxonomy for important attributes if they exist?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also I'm not sure how summary can receive taxonomies_values as parameter.
Probably you can add taxonomies_values as class variable and use it here with self.taxonomies_values

@To-om To-om force-pushed the develop branch 3 times, most recently from fb8f5aa to 23be632 Compare July 29, 2020 15:56
l.protocol_version = ldap.VERSION3
l.simple_bind_s(self.username, self.password)
valid = True
except ldap.LDAPError, e:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be:
except ldap.LDAPError as e:

queryResult[strnew]=queryResult.pop(str)

# Find a value to return in value attribute of taxonomies object
if o in queryResult:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think o, cn and mail are strings and not variable in this case.
So they should be 'o', 'cn' and 'mail', correct?

namespace = "LDAP"
predicate = "Query"
value = "Success"
taxonomies.append(self.build_taxonomy(level, namespace, predicate, value))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also I'm not sure how summary can receive taxonomies_values as parameter.
Probably you can add taxonomies_values as class variable and use it here with self.taxonomies_values

@dadokkio
Copy link
Contributor

I updated your pull following our discussion.
Changes:

  • use ldap3 instead of python-ldap
  • add search field to support Active Directory
  • add port settings to support ldaps
  • template now show all fields that you decide to return

@dadokkio dadokkio added this to the 3.0.0 milestone Jan 15, 2021
@dadokkio dadokkio merged commit 288c9f2 into TheHive-Project:develop Jan 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants