majunyang / oswatcher

An open database of operating systems - Tracking the evolution of OS over time

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OSWatcher

Join the chat at https://gitter.im/kvm-vmi/Lobby standard-readme compliant

Track the evolution of operating systems over time

Table of Contents

Overview

OSWatcher is an ambitious project that aims to track the evolution of operating systems by making diffs between recognizable characteristics.

The core of OSWatcher is to build a reference database about every OS releases, that is to be populated by an extractor in charge of capturing the various information that can be extracted from an installed operating system, both online and offline, in a reproducible way.

Offline:

  • filesystem hierarchy
  • setuid binaries
  • executable properties
  • library graph dependencies
  • statistics around perl/sh/python scripts
  • syscall tables
  • kernel configuration
  • cronjobs
  • /etc configuration

Online:

  • IDLE memory consumption
  • default processes running
  • mapped libraries
  • listening ports and associated services
  • DNS requests sent
  • unix sockets
  • dbus traffic
  • iptables rules
  • loaded drivers

Requirements

  • Docker
  • libguestfs
  • python3
  • virtualenv

Install

virtualenv --system-site-packages -p python3 venv
source venv/bin/activate
pip install -r requirements.txt

Note: We have to use --system-site-packages because libguestfs is not available on pip.

Neo4j database

OSWatcher's data is stored on a neo4j database.

Follow the instructions in the db directory to run a it inside a docker container.

Usage

(venv) $ python -m oswatcher.capture <vm_name> hooks.json

Example: Capturing ubuntu filesystem

Access Neo4j web interface at http://localhost:7474 ubuntu etc neo4j

neo4j

MATCH(n)
RETURN(n)
LIMIT 300;

Troubleshooting

libguestfs

If libguestfs fails to initialize, you can use the libguestfs-test-tool to quickly understand the root cause of the failure.

Maintainers

@Wenzel

Contributing

PRs accepted.

Small note: If editing the Readme, please conform to the standard-readme specification.

License

GNU General Public License v3.0

About

An open database of operating systems - Tracking the evolution of OS over time

License:GNU General Public License v3.0


Languages

Language:Python 41.1%Language:JavaScript 37.2%Language:Vue 17.1%Language:PowerShell 2.0%Language:Batchfile 1.0%Language:HTML 0.6%Language:Shell 0.5%Language:Dockerfile 0.4%