Coder Social home page Coder Social logo

intelowlproject / intelowl-ng Goto Github PK

View Code? Open in Web Editor NEW
86.0 11.0 20.0 2.68 MB

IntelOwl's Web Interface. Built with Angular 10.

Home Page: https://intelowlclient.firebaseapp.com/

License: GNU Affero General Public License v3.0

JavaScript 0.99% TypeScript 73.04% HTML 19.91% Dockerfile 0.15% SCSS 5.91%
threat-intelligence threatintel intelowl osint angular ngx-admin django-angular cybersecurity analysis hacktoberfest

intelowl-ng's People

Contributors

eshaan7 avatar m0mosenpai avatar sp35 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intelowl-ng's Issues

Show only allowed analyzers while requesting scan

To extend on Issue #3 and Issue #5, while requesting a scan currently all analyzers are shown unfiltered. This is error prone since each analyzer is supported for a limited types of observable or file type. Once we have solved #5, we can create a parser function that allows selection from only those analyzers which support the current marked observable type on the form.

Multiple logout calls

I noticed a very strange behavior. Clean state. Login from gui -> logout from gui -> everything ok. Login again -> logout again -> everything ok but I noticed that /logout endpoint was called 2 times at the same moment. Then I do login and logout again and this time /logout endpoint was called 3 times...and going on the times when /logout is called increase every time by 1.

I replicated this behavior so it wasn't a one time case.

Research a more user-friendly visualization for the Job Results.

There are 2 different views of an analyzer result:

  • table one, integrated with the web interface style
  • raw one, classic navigable JSON

I noticed that in the case of a very long result for an analyzer (try VT analyzer or OTX), the first view could become completely unreadable. In particular it is bad when there are a lot of dictionaries inside other dictionaries inside other dictionaries and so on. I think that we could try to keep the "raw" one because it always worth, in particular for debugging, while we could try to let the "table" one more user-friendly. Maybe, by default, we can only show the first keys of the dict and then we let the user choose by clicking which one he wants to expand and see more.

Waiting for your feedback and your proposals about this

Fetch analyzers_config.json from backend

Currently, to view the list of available analyzers, one needs to refer to the IntelOwl's documentation online. That’s tiresome so here’s a better solution:

https://intelowlclient.firebaseapp.com/pages/analyzers

Along with ^this, there should be another tabular view to display the list of analyzer's available with description and use case (not yet provided). The table data could be filtered based on classifications such as: inbuilt, external_service, free, paid, etc. This will help the user in 3 ways:

  • Prevent from requesting analyzers for which API keys are not defined
  • Prevent gathering noise by requesting only necessary analyzers
  • Speed up execution and retrieval of job results

New loading animation

We should change the loading animation (just a spinner for now) with something unique to the Intel Owl project.

Use IndexedDB efficiently

At the moment, we only store the last 10 recent scans requested by the user in indexedDB. We could extend this to store the list of jobs and the analyzer configuration perhaps even more, this has many advantages:

  • less load on the backend/Database.
  • application can be served offline (in case of poor or no network connection)
  • fetching from indexedDB is obviously faster than making a http call to the Django API so application loads faster.

[Layout enhancement] Job Result: one view of all the findings

Was using IntelOwl for IP and URL analysis to begin building a profile on the source. I didn't see a way to consolidate the resulting search data and had to view the output for each separately. It would be nice to be able to skip blank results or get the combined output into a single export of results - one view of all the findings.

Ghost 401 request

I noticed the alarm "401 unauthorized" for /api/jobs when clicking on the "Dashboard" button. The point is the jobs are correctly visualized

Also, there are times when I login and this happens every time I click on the "Dashboard". Other times I login and this does not happen at all.

Valid Domains with Second Level domains showing as Invalid

When testing some domain submissions i have notice any domain with a second level domain reports as invalid
Tested with:
.co.uk
.co.nz

{
"is_sample": false,
"observable_classification": "domain",
"observable_name": "google.co.uk",
"analyzers_requested": [],
"force_privacy": false,
"disable_external_analyzers": false,
"running_only": false,
"run_all_available_analyzers": true,
"tags_id": []
}

Enable LGTM

We should enable and configure LGTM analysis for this project.

Adjusts on "Table tree"

in the "Table tree", external_service and leaks_info boolean could contain a little tooltip to explain what do they mean.
Also, I would show a proper icon when the flag is not set instead of "N/A" because, in this case, it is like a "No". Maybe we can use the same icon used for failed analysis.
Last, the search "Yes/No" does not work properly.

little tweaks in the GUI

Is it possible to insert the year dynamically?
image

The tooltip for this component is wrong
image
It should say: "analysis won't be repeated if already exists as running or reported without fails"

little adjustments to buttons in the report page

this is a very little thing. When hovering on this button, it does not show the hand pointer, like for the other buttons

image

Also, these three buttons are very close to each other in my opinion and it is pretty easy to click a wrong one.
image

Considering that the "Analysis reports" table (the following one)
image
is always shorter than the main one on the left, it could make sense to move those buttons above the "analysis report" page in a dedicated section.

Idk if I explained my idea clearly. In any case, let me know your thoughts

Add `kill` button to the job result page

We could add a kill button to the job (analysis) result page. This button when invoked should stop all ongoing celery tasks (i.e. all running analyzers) for the particular job. The status of such job should then be marked failed or killed.

Originally posted by @eshaan7 in intelowlproject/IntelOwl#225 (comment)

EDIT: The kill button should be visible (use ng-if) only if job.status != "running" and the tooltip should read kill running analyzers and mark as "killed".

Add job actions to dashboard

image
As I understand, we want this part to be made into a new separate component and then use it on the Results page and the Dashboard both. Where in the dashboard is it going to be displayed?

Yes, those buttons are to be extracted into their own component. For now, I'd say let's not think about where to place it in the dashboard. The main aim is to break down the large JobResult component into seperate components so it's easier to maintain.

So all you have to do is create that new component and use it inside JobResult. We can add it to the dashboard later.

Originally posted by @eshaan7 in #83 (comment)

Fetch and display job result on (angular)

Task 5:

  • API call to fetch job results from backend
  • The user should be able to easily fetch and view the report for any particular job
  • Implement a similar tabular view for file analyzers based results
  • Write modular and reusable code so one can reuse components between the file and observable result viewers.

Scanning Service (Angular)

Task 2:

  • Ability to request observable scan from angular client
  • Ability to request file scan from angular client

Dashboard (angular)

Task 3 - Dashboard [Web] & related Documentation:

  • Implement API endpoints and SQL queries to fetch visualization data.
  • DataService in Angular to fetch and save this data
  • Implement UI to list all the jobs with filtering, sorting functionality
  • Test the performance for large sets of data.
  • Documentation of how and what the visualizations can be used for.

Redirect "/" to the Dashboard when logged

At the moment, if we are logged or not, when we navigate to the root URL we are being redirected to the login interface. In the case we are already logged, we should be redirected to the Dashboard instead

Dashboard for Connectors' Management

Add a new section Connectors Management:

Connectors

  • Information related to the connectors - name, configurations added, secrets required, and health status.
  • health check (#130 )

- Toggle button for switching active status (should be triggered or not)
- Pie chart filters to filter connectors by active status and health status (not needed now)

Connector Reports

  • Tab Switch on the Job results page to view both analyzer and connector reports

Utilities

  • Kill any ongoing connector call (#123 )
  • Rerun any connector if the call failed ( #123 )

Mockups can be found here: IntelOwl Connectors Mockups.pdf

Understanding which analyzers are running

image

There could be the case when there are some analyzers that do not finish fast.
The result could be that a user is waiting for those analyzers but cannot understand which ones are still running because there is nothing that tells him this in the GUI. As you can see in the example, it just tells you the number of completed / number of total analyzers to be executed.

At the moment, the analysis report page is updated every x seconds with the values of the analyzers that terminated the execution in a failed or successful way.
One idea could be to show every analyzer since the start of the very analysis and, every x seconds, update the status like before but reordering the list by setting:

  • successful ones at top
  • failed ones after
  • still running ones at the end (with a new icon different from the others 2)

image

Authentication Service (Angular)

Task 1 - Authentication Service [Web]:

  • Write secure API endpoints for logging-in and logging-out users.
  • Implement Login Form and Logout functions.
  • Write the HTTP-interceptor to deal with API tokens

Dockerfile (Angular)

Dockerfile to package the angular application as a production ready build. Along with a docker-compose.yml file.

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.