Giter Site home page Giter Site logo

scorelab / opendf Goto Github PK

View Code? Open in Web Editor NEW
56.0 30.0 90.0 107.58 MB

Digital Forensics project

License: Apache License 2.0

Java 3.98% HTML 3.42% CSS 0.87% JavaScript 1.85% Makefile 6.18% C++ 12.43% Shell 14.66% Perl 0.53% Python 0.15% C 53.51% M4 1.48% Roff 0.91% Objective-C 0.04%

opendf's Introduction

OpenDF: A Digital Forensics Cloud Tool

Build Status

Nowadays, digital forensic tools are often used to investigate cyber crimes, which are becoming more and more frequent. In the world of digital forensics, the more powerful the tool is, the easier it is to gather evidence. SCoRE aims to develop a powerful digital forensics tool through OpenDF, using the power of cloud computing to enable investigators to mine evidence more effectively and generate reports more successfully.

Please refer to the Wiki for more information as well as documentation about this project

Technologies Used:

  1. Java EE
  2. EJB
  3. JMS
  4. JPA
  5. JAX-RS
  6. JNI
  7. JAXB
  8. MySQL
  9. Bootstrap
  10. AngularJS

opendf's People

Contributors

agentmilindu avatar braalfa avatar coderaashir avatar dmtpdisanayaka avatar kmehant avatar kumariuthpala avatar lucasjones avatar malshanadeeshanie avatar mgdmadusanka avatar padamchopra avatar philipjar avatar rehrumesh avatar tdevinda avatar thejoycekung 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

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

opendf's Issues

XSS vulnerability in login page

There is an XSS (Cross-site scripting) vulnerability in the login page of OpenDF that allows an attacker to inject arbitrary javascript into the user's browser. This could potentially be used to gain access to the user's account, or to reveal information stored in OpenDF.

For example, if the user's browser loads the URL (could be through a link, or an iframe)
http://localhost:8080/OpenDF-web/login.jsp?msg=%3Cscript%3Ealert(%22xss%22)%3C/script%3E
it will display an alert dialog, demonstrating the code injection
XSS Popup

Capturing a new disc image

The system should have the capability of capturing an image from a given device. To provide proof of the data integrity the hash values can be used.

  1. Devices which the images can be captured (external hard disc, iPod, thumb drive, mobile phone etc.)
  2. Hash value of the files captured. (to prove that the files have not been modified during analyzing and processing)
  3. Specifying the location of the device to be captured.
  4. Date and time of the image captured.
  5. Storage location of the files to be captured and stored.

Optimize the Dockerfile

Should follow the best practices like chaining commands, etc to achieve optimize layers and sizes of the Docker image.

Repo should follow Gitflow Workflow

This repos should follow Gitflow workflow and follow are the items you have to check. 
- [ ] There is a `master` branch and a `develop` branch.
- [ ] `master` branch is locked for direct commits and, 
  - [ ] Require pull request reviews before merging is active
  - [ ] Require status checks to pass before merging is active
    - [ ] Require branches to be up to date before merging
    - [ ] Appropriate Status checks are required
  - [ ] Enforce all configured restrictions for administrators is active
  - [ ] Restrict only maintainers group can push to the master branch
- [ ] `develop` branch is locked for direct commits and,
  - [ ] Require pull request reviews before merging
    - [ ] Dismiss stale pull request approvals when new commits are pushed is active
  - [ ] Require pull request reviews before merging is active
  - [ ] Require status checks to pass before merging is active
    - [ ] Require branches to be up to date before merging
    - [ ] Appropriate Status checks are required
  - [ ] Enforce all configured restrictions for administrators is active
  - [ ] Restrict only maintainers group can push to the master branch

Accent colours on OpenDF site

Although the OpenDF site is very clean because of its fonts/styling, the white backgrounds make it seem very bland and uninteresting. Putting in an accent colour in order to draw attention to certain areas or even certain elements such as links would make it more appealing.

Dockers should have proper Label Schema labels

This repos has a Dockerfile but it does not contain any Label Schema labels. Following are the lables we have to have on our Dockers.

  • name
  • description Shoud be on user's perspective.
  • url Should be SCoRe website
  • vcs-url Should point to GitHub repo
  • vcs-ref
  • vendor Shoudl be "SCoRe Lab"
  • version
  • schema-version

Improving appearence of the OpenDF and adding a helping and contact page

It would be nice if the app had more colors and use flat design as I posted before for the OpenDf website. So, it would be great if both the web page and the app followed the same style.
Also, it would be nice to change the default icons, the folder and image icon, for example. Instead it would be nice to have minimalistic and well finished icons.
Someone had the idea of adding a contact link in the OpenDF site, and I think it would be good to add a contact page(with information about SCoRe like the webpage link, phone numbers, social media pages, etc...) or just a link to the OpenDF website or the SCoRe site.
Also, I would suggest to add a ' help ' page with information about the functionality of OpenDF. Another better (but harder) idea is to add like a little tutorial the first time that someone gets into the app, like in the Google Compute Engine web page.

Also, it'd be nice if there is a 'colaborate' link that takes the people to the OpenDF github page.

Well, those are all my suggestions by the time.

Elasticsearch integration

When a disk is processed, all the files on the disk should be added to Elasticsearch, then we can search for documents using Elasticsearch.

Complete the Vagrant file

Vagrant file seems incomplete, it just spawn a VM and just that. Have to include the essential tools and code base.

Dockers should have proper Label Schema labels

This repos has a Dockerfile but it does not contain any Label Schema labels. Following are the lables we have to have on our Dockers.

  • name
  • description Shoud be on user's perspective.
  • url Should be SCoRe website
  • vcs-url Should point to GitHub repo
  • vcs-ref
  • vendor Shoudl be "SCoRe Lab"
  • version
  • schema-version

Push file/folder data to Elasticsearch instance

Data of files and folders extracted from Disk Images should be pushed to Elasticsearch, thus we can search for them using a file browser which works like Kibana for logs. Other modules can fetch and add more data.

Installation Wizard

We need an installation wizard, may be in steps, where the first step would be getting the details of the administrator and setting up administrator account, second step would be getting the details of the organisation, like organisation name, logos, etc. The final step would be cleaning up the installation wizard and making sure no one can come along the same path and create a new administrator account. You can refer the WordPress's installation steps.

Adding icons and animations to the OpenDF site

I think that the OpenDF page needs to have more icons, using flat design or the Google material design, in order to look more attractive when you first see the page.
Also it would be really good if the page has animations while scrolling down (like images becoming more and more transparent until they dissapear), in order to make more proffesional.

Restructure the API and finalize the Dockers

Our REStful APIs are not following the REST best practices very well yet, we have to restructure the API and the API consumers. Have to change both backend and frontend accordingly.

Then we have to Finalize the Dockers and get everything working together, all the modules running together with Docker Compose or/and Kubernetes.

[GCI 2015] Opendf

I have recently visited the opendf website I found it to be
very interesting but it has some bugs which needs to be
corrected.

  1. The opendf website is not very colorful so it does not
    seem to be very interesting by the user.
  2. The top most image is displayed for a very small duration so it creates a problem to the user to see what basically opendf is.
    Rest all the things are awesome.
    Please think about my idea about opendf.
    Thank you,
    Srijan

Details to be included during Image capturing

Please check in the tasks if already exists or once completed.

  • Case Number (unique) : Each case should have a unique case number for court issues.
  • Organization number and details :Organization number and details can be used when generating the reports.
  • Who brought in the case.

Deployments with Docker Compose

We should add a Dockerfile with proper build scripts and entry scripts. We can use docker-compose to enable fast deployment with Dockers.

Implement a base Image Recognition Model

Implement a base Image Recognition Model using some known Pre-trained Image Recognition Models.

Sub-tasks

  • Write tests

  • Write a Main class to use the model via CLI

Google Code-In 2017: Getting Started Issue

THIS IS A NOT A REAL ISSUE BUT A PLACEHOLDER.

All the practising PRs for Google Code-In 2017 should refer this issue. PRs referring this issue will be closed without merging. Do not refer this issue if you are NOT submitting a practice PR and need your work merged.

Add hashing for credential storage

Currently the username and passwords are stored as plain text in the database. (except in the first instance when the administrator is created). The passwords can hashed and salted. (a separate table has to be created to store the salts)

About page organization

The use of headers is good, however it does not really draw my attention in to read any one of the various sections because the headers are not very eye-catching.

Adding contact form to OpenDF site. (GCI)

Currently in the contact section there is only a link to the google group. I would like to suggest to integrate a contact form in the website and also include additional information such as Phone no. or a link to an email.
The reason I suggest this is-
It would offer users more options as one user might prefer email to another option.
It would provide a better integration to the site and keep users interested as they won't be redirected to different sites.

Use Jekyll Instead of MySQL

As this is an Open Source Project, We can use Jekyll Instead of MySQL to store evidence. And Github Pages could be activated and Previewed while Jekyll is in use.

More social icons

Right now there are only Facebook and Google+, but the addition of more (Twitter, possibly?) would help spread the word about OpenDF.

Calculating hash value of each file.

The hash values of each file should be recorded to to prove the integrity during analyzing and processing.

This can be run as a service if possible so that during each operation on a disc image or file if the original hash differs from the current hash the user can be notified.

Find a suitable React boilerplate

Should find an open source, licence compatible, React boilerplate to start developing the front end. Having other needed plugins like Redux, testing tools, etc configured is a plus.

Permission validation on API endpoints

I noticed that many of the servlets do not perform checks that either the user is an admin, has access to the project they are updating, or are even logged in at all. This means that the data stored in OpenDF will not be secure, as anyone who can access the server through HTTP can retrieve any data returned through these unauthenticated endpoints.

As an example, I can query the URL /api/project/54 without being logged in, and it will return the name, status and description of the project.
The endpoint to list all projects required authentication, but the project ID is sequential and easy to predict, so it doesn't take many HTTP calls to retrieve information for all projects.

Response from unauthenticated api call (/api/project/54):

<project>
    <createdDate>2016-01-17T14:37:01Z</createdDate>
    <description>This is the first project</description>
    <idProject>54</idProject>
    <name>First project</name>
    <status>1</status>
</project>

As another example, you can also list all investigators assigned to a project without any authentication.

Making a HTTP GET request to /api/project/54/investigators returns:

<users>
    <user>
        <avatar>img/user.jpg</avatar>
        <email>[email protected]</email>
        <idUser>11</idUser>
        <level>0</level>
        <name>Lucas</name>
        <password>
            bcrypt:$2a$10$oMNkknFFKh.K/vJKa.4PSOSmTpgwpmxxv9EC64Kvfd3hQVsPjQotS
        </password>
        <username>lucas</username>
    </user>
</users>

This even returns the investigator's password hashes (which would have been in plaintext before I modified it to hash passwords with bcrypt), which can be attacked to retrieve the original password (for example using a dictionary attack with common passwords).
If the attacker breaks the password hash they would have full and persistent access to an investigator's account if broken, even after adding authentication to the endpoint if their password didn't change.

User Levels

Three user levels giving the administrator full rights and restrict access down the hierarchy to have proper control. The proposed model is as follows.
Please mark as done if this model is already in place*

  • Administrator
  • Investigator - Level 1 (Add/Analyze)
  • Investigator - Level 2 (Analyze /Reporting)

Static files( frontend ) should be served by an NGINX server

Serving static files ( HTMLs, CSS, JS and image file of the front-end ) with NGINX server is good IMO. Once the front-end is updated, the files could be merged, minified, versioned and put in a 'dist' directory. We then can served these files though NGINX.

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.