The app is intended to provide information about the computer's at risk within a given network and help cyber defenders decide which parts have more vulnerabilities and can be secured.
- Category: Cybersecurity
- Mobile: This app can be developed as both as mobile app and a web app.
- Story: Analyzes a user's network nodes for vulnerabilities and displays the collected analysis.
- Market: It's an open-source app available for any cyber defenders.
- Habit: This can be used periodically to gather current trends.
- Scope: First we start by providing network analysis and later can be used for preedicting future risks.
Required Must-have Stories
- User logs in to access their network information
- User access their dashboard to add nodes
- Data entry screens required for adding network data
- User has an analysis screen that shows the current state of their network
Optional Nice-to-have Stories
- Push notifications to users for network events
- Graphs
- Customizable reports
- Login
- Dashboard
- Add Node Screen
- Add Products to Node Screen
- Analysis Screen
- User Management Screen
Tab Navigation (Tab to Screen)
- Dashboard
- Analysis
Flow Navigation (Screen to Screen)
- Forced Log-in -> Account creation if no log in is available
- Dashboard -> Leads to Add Node/Product/User
- Add Node/Product/User -> Text field to be add/update/delete data.
For the mobile app to interact with the backend database, we selected CouchDB (nosql) database because it is a very flexible and scaleable document store. The database is running on our own server and the database structure is as follows.
Property | Type | Description |
---|---|---|
_id | String | unique id for the node |
_rev | String | revision # of the document |
HostName | String | Host name for the node |
HostIP | String | IP Address of the node |
HostGateway | String | IP Gateway of teh node |
HostOS | String | operating system of node |
applications | String | list of installed apps |
Property | Type | Description |
---|---|---|
_id | String | unique id for CWE |
_rev | String | revision # of the document |
name | String | CWE name |
parents | List | List of parents for the CWE |
children | List | List of children for the CWE |
Property | Type | Description |
---|---|---|
_id | String | unique id |
_rev | String | revision # doc |
name | String | CWE name |
weakness_abstraction | String | CWE Details |
status | String | CWE Details |
description | String | CWE Details |
extended_description | String | CWE Details |
related_weaknesses | String | CWE Details |
weakness_ordinalities | String | CWE Details |
applicable_platforms | String | CWE Details |
alternate_terms | String | CWE Details |
modes_of_introduction | String | CWE Details |
exploitation_factors | String | CWE Details |
likelihood_of_exploit | String | CWE Details |
common_consequences | String | CWE Details |
detection_methods | String | CWE Details |
potential_mitigations | String | CWE Details |
observed_examples | String | CWE Details |
functional_areas | String | CWE Details |
affected_resources | String | CWE Details |
taxonomy_mappings | String | CWE Details |
related_attack_patterns | String | CWE Details |
notes | String | CWE Details |
Property | Type | Description |
---|---|---|
_id | String | unique id |
_rev | String | revision # of the document |
lang | String | Language |
CWE_ID | String | unique id |
CWE_Description | String | Description |
CWE_Platform | String | Platform |
CWE_Af_Res | String | Affected Resources |
severity | String | Vulnerability Severity |
CVSS_V2 | String | CVSS V2 Score |
CVSS_V3 | String | CVSS V3 Score |
Vul_Access_Vector | String | Vulnerability Access Vector |
user_int_req | Boolean | User Interaction Required |
OS | List | Operating systems affected by Vulnerability |
SW | String | Softwares affected by Vulnerability |
Ports | String | Potential ports that can be used |
published_date | Date | Date of publication |
modified_date | Date | Modification Date |
description | String | CWE Details |
url_and_tags | List | References |
Property | Type | Description |
---|---|---|
_id | String | unique id |
_rev | String | revision # doc |
user | String | user name |
pass | String | user password |
For the mobile app to interact with the backend, we built a custom API that runs on the same server as the database. The API is capable of receiving Add/Update/Delete/Query requests and perform the related operation on database and return status messages or data in response.
- (Read/GET) Query single node data - http://hostIP:port/CyVID_functions/query/cyvid_node/{"data":"Test 12"}
- (Read/GET) Query all nodes data - http://hostIP:port/CyVID_functions/query/cyvid_node/{"all":"docs"}
- (Add/Node) Add a new node profile - http://hostIP:port/CyVID_functions/add/cyvid_node/{"HostName":"Mike's Computer", "HostIP":"192.168.1.184", "HostGateway": "192.168.1.1", "HostOS": "Microsoft Windows 10 Pro Build 12457"}
- (Add/Node) Add node applications - http://hostIP:port/CyVID_functions/addapps/cyvid_node/{"_id":"0", "_rev": "20-d41f7f5748fd2c5e568a4d9272050bd0", "applications": "Test 6.0"}
- (Update/Node) Update existing node - http://hostIP:port/CyVID_functions/update/cyvid_node/{"_id":"11", "_rev": "3-cf6bfa49a8a8665f7e90580b7dd85cba", , "data":"new value"}
- (Delete/Node) Delete an existing node - http://hostIP:port/CyVID_functions/delete/cyvid_node/{"_id":"11", "_rev": "6-85c2acee6d155b7eeecfa0e05b627385"}
- This document store is updated through a python-based agent running on the server.
- The API interacts with this database to fetch related information and feeds to the Android app.
- This document store is updated through a python-based agent running on the server.
- The API interacts with this database to fetch related information and feeds to the Android app.
- This document store is updated through a python-based agent running on the server.
- The API interacts with this database to fetch related information and feeds to the Android app.
- (Read/GET) Query single user data - http://hostIP:port/CyVID_functions/query/cyvid_users/{"user":"sarah"}
- (Read/GET) Query all users data - http://hostIP:port/CyVID_functions/query/cyvid_users/{"all":"docs"}
- (Add/Node) Add a new user profile - http://hostIP:port/CyVID_functions/add/cyvid_users/{"user":"John Albert", "pass":"john@123"}
- (Update/User) Update existing user - http://hostIP:port/CyVID_functions/update/cyvid_users/{"_id":"11", "_rev": "3-cf6bfa49a8a8665f7e90580b7dd85cba", , "pass":"new value"}
- (Delete/User) Delete an existing user - http://hostIP:port/CyVID_functions/delete/cyvid_users/{"_id":"11", "_rev": "6-85c2acee6d155b7eeecfa0e05b627385"}
- (Authenticate/User) Authenticate user - http://hostIP:port/Authenticate/{"user":"admin", "pass":"password"}
Here's a walkthrough of implemented user stories: