Skip to content
Merged

v6.1.0 #2436

Show file tree
Hide file tree
Changes from 91 commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
43a13be
Fix phoneinfoga name
0ssigeno Jun 5, 2024
1cd7c42
Start with --traefik/--traefik_local option. Closes #2305 (#2351)
agnorance Jun 5, 2024
1cbf3bc
Fix url
0ssigeno Jun 6, 2024
f63fde0
Visualizer improvements (#2366)
carellamartina Jun 10, 2024
8e3a0e1
fixed start script
drosetti Jun 10, 2024
6423974
Split folder creation into two parts removing sudo (#2373)
fgibertoni Jun 11, 2024
1335439
Bump elasticsearch-dsl from 8.13.0 to 8.14.0 in /requirements (#2370)
dependabot[bot] Jun 12, 2024
144498f
Bump quark-engine from 24.5.1 to 24.6.1 in /requirements (#2371)
dependabot[bot] Jun 12, 2024
daa8bba
Auto creation default test user with debug=true#1189 (#2369)
g4ze Jun 12, 2024
3c84625
Bump library/nginx from 1.26.0-alpine to 1.27.0-alpine in /docker (#2…
dependabot[bot] Jun 12, 2024
86dd937
Bump authlib from 1.3.0 to 1.3.1 in /requirements (#2368)
dependabot[bot] Jun 12, 2024
3e33005
detect-it-easy analyzer, closes #1590 (#2354)
g4ze Jun 12, 2024
570a797
Bi update (#2326)
cristinaascari Jun 12, 2024
e563ebd
mign fix (#2375)
g4ze Jun 12, 2024
c9d5c38
watchman adjusts test (#2349)
mlodic Jun 12, 2024
8e85d0d
Malprob analyzer, closes #1521 (#2357)
g4ze Jun 12, 2024
67cab86
Passive_DNS playbook and visualizer (#2374)
carellamartina Jun 19, 2024
cf6e174
Add create user docs (#2381)
g4ze Jun 24, 2024
4bbb33f
fixed capesandbox short analysis time limit (#2364)
federicofantini Jun 24, 2024
ca232cf
added info installation process
mlodic Jun 24, 2024
05a1a8b
Orkl_search analyzer, closes #1274 (#2380)
g4ze Jun 25, 2024
a5f729a
Frontend - no more required analyzer in scan form (#2397)
carellamartina Jun 25, 2024
1b8af02
removed bad migration
mlodic Jun 26, 2024
ff5b59b
Bump whitenoise from 6.6.0 to 6.7.0 in /requirements (#2396)
dependabot[bot] Jun 26, 2024
933f507
Bump greynoise from 2.1.0 to 2.2.0 in /requirements (#2389)
dependabot[bot] Jun 26, 2024
53656ed
crtsh (#2379)
g4ze Jun 26, 2024
93747b2
Added external link to output (#2399)
fgibertoni Jun 27, 2024
fb19c62
Fixed load_env() parsing of .env files (#2400)
fgibertoni Jun 27, 2024
7a93c23
Spamhaus_WQS Analyzer, closes #1526 (#2378)
g4ze Jun 27, 2024
7b169b0
Pdf uri extractor and pivoting (#2391)
federicofantini Jul 1, 2024
cb3b4ba
Malware bazaar ingestor (#2259)
federicofantini Jul 1, 2024
8e7704b
fixed empty analyzer report
drosetti Jul 2, 2024
03f4189
Adguard dns analyzer, closes #1361 (#2363)
g4ze Jul 3, 2024
6fc1ed2
Fix ingestor (#2405)
federicofantini Jul 3, 2024
b245e21
fixed migration ingestors (#2406)
federicofantini Jul 3, 2024
08d91b8
ja4db analyzer, closes #2361 (#2402)
g4ze Jul 4, 2024
62ff738
Goresym analyzer, fixes#1451 and fixes executable file support (#2401)
g4ze Jul 8, 2024
ed93ebc
Fix ingestor dump
0ssigeno Jul 8, 2024
64ce41b
Bump djangorestframework from 3.15.1 to 3.15.2 in /requirements (#2398)
dependabot[bot] Jul 9, 2024
2fbc7c1
Bump jsonschema from 4.22.0 to 4.23.0 in /requirements (#2409)
dependabot[bot] Jul 9, 2024
0b813ae
Bump quark-engine from 24.6.1 to 24.7.1 in /requirements (#2410)
dependabot[bot] Jul 9, 2024
2f68f3a
Bump flake8 from 7.0.0 to 7.1.0 in /requirements (#2388)
dependabot[bot] Jul 9, 2024
05cf2cf
fix duplicated ingestor users (#2412)
federicofantini Jul 11, 2024
f4b0484
Bump django from 4.2.11 to 4.2.14 in /requirements (#2415)
dependabot[bot] Jul 11, 2024
e6c8014
Playbook choice for pivot and ingestor (#2411)
0ssigeno Jul 11, 2024
2c2cb45
Fix serializer
0ssigeno Jul 12, 2024
d5f827c
Fixes
0ssigeno Jul 15, 2024
5c21bde
Fix
0ssigeno Jul 15, 2024
3cd2ebc
Fix
0ssigeno Jul 15, 2024
b8b2d57
Frontend - Replaced the time picker with a date picker (#2413)
carellamartina Jul 15, 2024
7310cb3
Fix
0ssigeno Jul 15, 2024
d7ff418
updated frontend dependencies
drosetti Jul 15, 2024
ffe18eb
Speed up query
0ssigeno Jul 15, 2024
d113336
Leakix analyzer, closes#1256 (#2423)
g4ze Jul 17, 2024
7f14b6e
fix tasks duplicates (#2424)
federicofantini Jul 18, 2024
44a86c8
Apivoid analyzer, closes 1245 (#2428)
g4ze Jul 20, 2024
bb0f8e1
Iocextract analyzer#1228 (#2426)
g4ze Jul 22, 2024
0bd5dc4
IocFinder Analyzer, closes #1229 (#2427)
g4ze Jul 22, 2024
97987f3
spamhaus_drop analyzer, closes #2408 (#2422)
g4ze Jul 22, 2024
ae52f03
Criminalip analyzer closes#1240 (#2435)
g4ze Jul 24, 2024
b8bfbfb
Bump checkdmarc from 5.3.1 to 5.4.0 in /requirements (#2433)
dependabot[bot] Jul 24, 2024
79170c3
Bump setuptools in /integrations/malware_tools_analyzers/requirements…
dependabot[bot] Jul 24, 2024
c4a7207
Default value
0ssigeno Jul 29, 2024
18392a6
Enable/disable admin actions
0ssigeno Jul 29, 2024
f6ccece
removed recaptcha (#2437)
drosetti Jul 29, 2024
7872b2b
Criminalip_Scan analyzer closes#1240 (#2438)
g4ze Jul 29, 2024
f127d18
adjusted investigation filters (#2440)
carellamartina Jul 30, 2024
6d1fb4b
fix deepsource
mlodic Aug 6, 2024
a508531
Bump greynoise from 2.2.0 to 2.3.0 in /requirements (#2446)
dependabot[bot] Aug 7, 2024
3d759ab
job_id BI (#2449)
cristinaascari Aug 7, 2024
ee206c6
Polyswarm analyzer closes#1255 (#2439)
g4ze Aug 8, 2024
504d6d8
Knock analyzer (#2448)
g4ze Aug 8, 2024
b8ca576
Fix triage (#2452)
cristinaascari Aug 9, 2024
d1cf26f
Bump quark-engine from 24.7.1 to 24.8.1 in /requirements (#2459)
dependabot[bot] Aug 13, 2024
f5b6a53
Bump polyswarm-api from 3.8.0 to 3.9.0 in /requirements (#2458)
dependabot[bot] Aug 13, 2024
4e8c896
Bump django-filter from 24.2 to 24.3 in /requirements (#2457)
dependabot[bot] Aug 13, 2024
5c7670f
Bump dnstwist[full] from 20240116 to 20240812 in /requirements (#2456)
dependabot[bot] Aug 13, 2024
4f42b7a
Bump elasticsearch-dsl from 8.14.0 to 8.15.0 in /requirements (#2455)
dependabot[bot] Aug 13, 2024
db51ed2
Bump django from 4.2.11 to 4.2.15 in /requirements (#2450)
dependabot[bot] Aug 16, 2024
e48d0e7
updated blint
mlodic Aug 16, 2024
34c3c67
removing documentation in favor of new doc repo
mlodic Aug 16, 2024
16c0a43
removing documentation in favor of new doc repo
mlodic Aug 16, 2024
8378503
update test-requirements and pr template
mlodic Aug 17, 2024
7d559bd
chore: update pluginTableColumns.jsx (#2466)
eltociear Aug 17, 2024
7557f44
removed quotes
mlodic Aug 17, 2024
2ff8244
Merge remote-tracking branch 'origin/develop' into develop
mlodic Aug 17, 2024
753cb9f
get back images for the ReadME
mlodic Aug 19, 2024
cdfdf7d
updated frontend dependencies
drosetti Aug 19, 2024
a1a7a58
Improved PE_info analyzer (#2464)
g4ze Aug 19, 2024
1161af9
[WIP] Adding docstrings in IntelOwl Codebase. (#2430)
aryan-bhokare Aug 19, 2024
5462bdc
fixed frontend issues
drosetti Aug 19, 2024
eb2b059
updated PR automation
mlodic Aug 20, 2024
17aedcf
Bump django-iam-dbauth from 0.1.4 to 0.2.0 in /requirements (#2476)
dependabot[bot] Aug 20, 2024
157e9e9
Bump checkdmarc from 5.4.0 to 5.5.0 in /requirements (#2475)
dependabot[bot] Aug 20, 2024
c5c061b
fixed wrong task deletion (#2477)
federicofantini Aug 20, 2024
1cd9488
email cc sender (#2468)
0ssigeno Aug 20, 2024
f1ad466
removed obsolete docker compose version
mlodic Aug 20, 2024
92b0441
updated readme
mlodic Aug 20, 2024
96bfb47
improved quad9 analyzers (#2453)
drosetti Aug 21, 2024
4aa7360
Refactor old documentation link. (#2465)
aryan-bhokare Aug 21, 2024
2a534f5
misp fix: invalid json (#2481)
g4ze Aug 22, 2024
d2d765e
updated readme
mlodic Aug 23, 2024
facd3de
Added docstrings in API_APP for api documentation (#2484)
aryan-bhokare Aug 26, 2024
722312a
mobsf (#2461)
g4ze Aug 26, 2024
4455979
Droidlysis analyzer closes#1591 (#2454)
g4ze Aug 26, 2024
77843d9
Bump pefile from 2023.2.7 to 2024.8.26 in /requirements (#2489)
dependabot[bot] Aug 27, 2024
15d632a
Bump django-silk from 5.1.0 to 5.2.0 in /requirements (#2487)
dependabot[bot] Aug 27, 2024
270839e
Bump django-celery-beat from 2.6.0 to 2.7.0 in /requirements (#2488)
dependabot[bot] Aug 27, 2024
c28aafa
apk artifacts analyzer closes#2444 + upgraded stringsifter (#2469)
g4ze Aug 27, 2024
5b29315
fixed Thug and CI complaints + changelog + bump
mlodic Aug 28, 2024
406d360
removed quotes
mlodic Aug 17, 2024
d1ee5f1
Merge branch 'master' of github.com:intelowlproject/IntelOwl into dev…
mlodic Aug 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .flake8
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[flake8]
max-line-length = 88
max-line-length = 140
ignore =
W503,
E231,
Expand Down
4 changes: 2 additions & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ Please delete options that are not relevant.
- [ ] The pull request is for the branch `develop`
- [ ] A new plugin (analyzer, connector, visualizer, playbook, pivot or ingestor) was added or changed, in which case:
- [ ] I strictly followed the documentation ["How to create a Plugin"](https://intelowl.readthedocs.io/en/latest/Contribute.html#how-to-add-a-new-plugin)
- [ ] [Usage](https://github.com/intelowlproject/IntelOwl/blob/master/docs/source/Usage.md) file was updated.
- [ ] [Advanced-Usage](https://github.com/intelowlproject/IntelOwl/blob/master/docs/source/Advanced-Usage.md) was updated (in case the plugin provides additional optional configuration).
- [ ] [Usage](https://github.com/intelowlproject/docs/blob/main/docs/IntelOwl/usage.md) file was updated.
- [ ] [Advanced-Usage](https://github.com/intelowlproject/docs/blob/main/docs/IntelOwl/advanced_usage.md) was updated (in case the plugin provides additional optional configuration).
- [ ] I have dumped the configuration from Django Admin using the `dumpplugin` command and added it in the project as a data migration. (["How to share a plugin with the community"](https://intelowl.readthedocs.io/en/latest/Contribute.html#how-to-share-your-plugin-with-the-community))
- [ ] If a File analyzer was added and it supports a mimetype which is not already supported, you added a sample of that type inside the archive `test_files.zip` and you added the default tests for that mimetype in [test_classes.py](https://github.com/intelowlproject/IntelOwl/blob/master/tests/analyzers_manager/test_classes.py).
- [ ] If you created a new analyzer and it is free (does not require any API key), please add it in the `FREE_TO_USE_ANALYZERS` playbook by following [this guide](https://intelowl.readthedocs.io/en/latest/Contribute.html#how-to-modify-a-plugin).
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/pull_request_automation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ jobs:
BUILDKIT_PROGRESS: "plain"
STAGE: "ci"
REPO_DOWNLOADER_ENABLED: false
WATCHMAN: false

- name: Startup script launch (Fast)
if: "!contains(github.base_ref, 'master')"
Expand All @@ -98,7 +97,6 @@ jobs:
BUILDKIT_PROGRESS: "plain"
STAGE: "ci"
REPO_DOWNLOADER_ENABLED: false
WATCHMAN: false

- name: Docker debug
if: always()
Expand Down
26 changes: 0 additions & 26 deletions .github/workflows/sphinx_build_on_release.yml

This file was deleted.

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,6 @@ coverage.xml
*.cover
.hypothesis/
/.env

# post run dev
integrations/malware_tools_analyzers/clamav/sigs
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
repos:
- repo: https://github.com/psf/black
rev: 23.7.0
rev: 24.8.0
hooks:
- id: black
- repo: https://github.com/PyCQA/flake8
rev: 6.1.0
rev: 7.1.1
hooks:
- id: flake8
- repo: https://github.com/pycqa/isort
Expand Down
24 changes: 0 additions & 24 deletions .readthedocs.yml

This file was deleted.

14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<img src="docs/static/intel_owl_positive.png" width=547 height=150 alt="Intel Owl"/>
<img src="static/intel_owl_positive.png" width=547 height=150 alt="Intel Owl"/>

[![GitHub release (latest by date)](https://img.shields.io/github/v/release/intelowlproject/IntelOwl)](https://github.com/intelowlproject/IntelOwl/releases)
[![GitHub Repo stars](https://img.shields.io/github/stars/intelowlproject/IntelOwl?style=social)](https://github.com/intelowlproject/IntelOwl/stargazers)
Expand Down Expand Up @@ -42,9 +42,9 @@ It provides:
- *playbooks* that are meant to make analysis easily repeatable


### Documentation [![Documentation Status](https://readthedocs.org/projects/intelowl/badge/?version=latest)](https://intelowl.readthedocs.io/en/latest/?badge=latest)
### Documentation
We try hard to keep our documentation well written, easy to understand and always updated.
All info about installation, usage, configuration and contribution can be found [here](https://intelowl.readthedocs.io/)
All info about installation, usage, configuration and contribution can be found [here](https://intelowlproject.github.io/docs/)

### Publications and Media

Expand Down Expand Up @@ -73,22 +73,22 @@ Because of this, we joined [Open Collective](https://opencollective.com/intelowl

#### Certego

<a href="https://certego.net/?utm_source=intelowl"> <img style="margin-right: 2px" width=250 height=71 src="docs/static/Certego.png" alt="Certego Logo"/></a>
<a href="https://certego.net/?utm_source=intelowl"> <img style="margin-right: 2px" width=250 height=71 src="static/Certego.png" alt="Certego Logo"/></a>

[Certego](https://certego.net/?utm_source=intelowl) is a MDR (Managed Detection and Response) and Threat Intelligence Provider based in Italy.

IntelOwl was born out of Certego's Threat intelligence R&D division and is constantly maintained and updated thanks to them.

#### The Honeynet Project

<a href="https://www.honeynet.org"> <img style="border: 0.2px solid black" width=125 height=125 src="docs/static/honeynet_logo.png" alt="Honeynet.org logo"> </a>
<a href="https://www.honeynet.org"> <img style="border: 0.2px solid black" width=125 height=125 src="static/honeynet_logo.png" alt="Honeynet.org logo"> </a>

[The Honeynet Project](https://www.honeynet.org) is a non-profit organization working on creating open source cyber security tools and sharing knowledge about cyber threats.

Thanks to Honeynet, we are hosting a public demo of the application [here](https://intelowl.honeynet.org). If you are interested, please contact a member of Honeynet to get access to the public service.

#### Google Summer of Code
<a href="https://summerofcode.withgoogle.com/"> <img style="border: 0.2px solid black" width=150 height=89 src="docs/static/gsoc_logo.png" alt="GSoC logo"> </a>
<a href="https://summerofcode.withgoogle.com/"> <img style="border: 0.2px solid black" width=150 height=89 src="static/gsoc_logo.png" alt="GSoC logo"> </a>

Since its birth this project has been participating in the [Google Summer of Code](https://summerofcode.withgoogle.com/) (GSoC)!

Expand All @@ -99,7 +99,7 @@ If you are interested in participating in the next Google Summer of Code, check

#### ThreatHunter.ai

<a href="https://threathunter.ai?utm_source=intelowl"> <img style="border: 0.2px solid black" width=194 height=80 src="docs/static/threathunter_logo.png" alt="ThreatHunter.ai logo"> </a>
<a href="https://threathunter.ai?utm_source=intelowl"> <img style="border: 0.2px solid black" width=194 height=80 src="static/threathunter_logo.png" alt="ThreatHunter.ai logo"> </a>

[ThreatHunter.ai®](https://threathunter.ai?utm_source=intelowl), is a 100% Service-Disabled Veteran-Owned Small Business started in 2007 under the name Milton Security Group. ThreatHunter.ai is the global leader in Dynamic Threat Hunting. Operating a true 24x7x365 Security Operation Center with AI/ML-enhanced human Threat Hunters, ThreatHunter.ai has changed the industry in how threats are found, and mitigated in real time. For over 15 years, our teams of Threat Hunters have stopped hundreds of thousands of threats and assisted organizations in defending against threat actors around the clock.

Expand Down
41 changes: 37 additions & 4 deletions api_app/admin.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# This file is a part of IntelOwl https://github.com/intelowlproject/IntelOwl
# See the file 'LICENSE' for copying permission.
from gettext import ngettext
from typing import Any

from django.contrib import admin
from django.contrib import admin, messages
from django.contrib.admin import widgets
from django.db.models import JSONField, ManyToManyField
from django.http import HttpRequest
Expand Down Expand Up @@ -69,10 +70,12 @@ class JobAdminView(CustomAdminView):
)
list_filter = ("status", "user", "tags")

def has_add_permission(self, request: HttpRequest) -> bool:
@staticmethod
def has_add_permission(request: HttpRequest) -> bool:
return False

def has_change_permission(self, request: HttpRequest, obj=None) -> bool:
@staticmethod
def has_change_permission(request: HttpRequest, obj=None) -> bool:
return False

@admin.display(description="Tags")
Expand Down Expand Up @@ -151,7 +154,8 @@ class AbstractReportAdminView(CustomAdminView):
def has_add_permission(request):
return False

def has_change_permission(self, request: HttpRequest, obj=None) -> bool:
@staticmethod
def has_change_permission(request: HttpRequest, obj=None) -> bool:
return False


Expand Down Expand Up @@ -193,6 +197,7 @@ class AbstractConfigAdminView(CustomAdminView):
list_filter = ("disabled",)
# allow to clone the object
save_as = True
actions = ["disable", "enable"]

@admin.display(description="Disabled in orgs")
def disabled_in_orgs(self, instance: AbstractConfig):
Expand All @@ -202,6 +207,34 @@ def disabled_in_orgs(self, instance: AbstractConfig):
)
)

def disable(self, request, queryset):
counter = queryset.update(disabled=True)
self.message_user(
request,
ngettext(
f"{counter} {queryset.model._meta.verbose_name} was disabled.",
f"{counter} {queryset.model._meta.verbose_name_plural} were disabled.",
counter,
),
messages.SUCCESS,
)

disable.short_description = "Disable configurations"

def enable(self, request, queryset):
counter = queryset.update(disabled=False)
self.message_user(
request,
ngettext(
f"{counter} {queryset.model._meta.verbose_name} was enabled.",
f"{counter} {queryset.model._meta.verbose_name_plural} were enabled.",
counter,
),
messages.SUCCESS,
)

enable.short_description = "Enable configurations"


class PythonConfigAdminView(AbstractConfigAdminView):
list_display = AbstractConfigAdminView.list_display + ("routing_key",)
Expand Down
4 changes: 2 additions & 2 deletions api_app/analyzers_manager/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
from api_app.analyzers_manager.models import AnalyzerConfig, AnalyzerReport


# flake8: noqa
@admin.register(AnalyzerReport)
class AnalyzerReportAdminView(AbstractReportAdminView):
...
class AnalyzerReportAdminView(AbstractReportAdminView): ...


@admin.register(AnalyzerConfig)
Expand Down
15 changes: 15 additions & 0 deletions api_app/analyzers_manager/classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,24 @@ class BaseAnalyzerMixin(Plugin, metaclass=ABCMeta):
@classmethod
@property
def config_exception(cls):
"""Returns the AnalyzerConfigurationException class."""
return AnalyzerConfigurationException

@property
def analyzer_name(self) -> str:
"""Returns the name of the analyzer."""
return self._config.name

@classmethod
@property
def report_model(cls):
"""Returns the AnalyzerReport model."""
return AnalyzerReport

@classmethod
@property
def config_model(cls):
"""Returns the AnalyzerConfig model."""
return AnalyzerConfig

def get_exceptions_to_catch(self):
Expand Down Expand Up @@ -98,6 +102,12 @@ def _validate_result(self, result, level=0, max_recursion=190):
return result

def after_run_success(self, content):
"""
Handles actions after a successful run.

Args:
content (any): The content to process after a successful run.
"""
super().after_run_success(self._validate_result(content, max_recursion=15))


Expand Down Expand Up @@ -194,6 +204,11 @@ def read_file_bytes(self) -> bytes:

@property
def filepath(self) -> str:
"""Returns the file path, retrieving the file from storage if necessary.

Returns:
str: The file path.
"""
if not self.__filepath:
self.__filepath = self._job.file.storage.retrieve(
file=self._job.file, analyzer=self.analyzer_name
Expand Down
Loading