Distributed & real time digital forensics at the speed of the cloud
Перейти к файлу
Aaron Meihm 3fb3e9745d add audit and dispatch modules for Linux
This adds two new modules, audit and dispatch with additional
modifications to the agent.

The audit module can be used to read and parse the kernel audit trail on
Linux systems. The agent can then log the audit messages, or write them
to the dispatch module.

The dispatch module is a general module used for alert forwarding from
the agent. If the dispatch module is running, any alerts the agent
receives from persistent modules will be forwarded to the active
dispatch module, where the dispatch module can write the message to a
remote endpoint.
2017-09-20 15:00:41 -05:00
actions [minor] remove upgrade module and additional references to module 2016-12-21 15:08:49 -06:00
client client: add missing comments to exported functions 2017-09-20 14:30:45 -05:00
conf loader: load configuration from external configuration file 2017-09-12 09:56:55 -05:00
database doc: update config guide Postgres section 2017-09-18 16:17:42 -05:00
doc doc: include a reference to modulepack in the config guide 2017-09-19 13:01:06 -05:00
mig-agent add audit and dispatch modules for Linux 2017-09-20 15:00:41 -05:00
mig-api mig-api: commandsToComplianceItems, make Tags a map 2017-07-25 13:50:11 -05:00
mig-loader loader: support loading keyring from configuration directory 2017-09-12 09:56:55 -05:00
mig-runner client: return proper errors from FindHomedir 2017-09-20 14:30:39 -05:00
mig-scheduler [major] investigator API key authentication for API use 2017-04-11 14:55:58 -05:00
modulepack add new mig modulepack package 2017-09-12 09:56:55 -05:00
modules add audit and dispatch modules for Linux 2017-09-20 15:00:41 -05:00
pgp [minor] update pgp getPINNaïve so stty -echo is successful 2017-02-03 10:52:30 -06:00
runner-plugins runner-scribe: apply a v2bkey based on operator and team values 2017-07-27 13:13:17 -05:00
service [minor] windows: pause in service Remove to confirm removal 2017-04-13 11:56:15 -05:00
testutil [doc] add newline after license header to ignore it in godoc 2015-08-27 10:41:13 -04:00
tools remove a couple unused scripts from tools 2017-09-19 13:08:57 -05:00
vendor vendor mozilla libaudit-go 2017-09-20 15:00:41 -05:00
workers remove agent-intel-worker 2017-07-25 13:46:01 -05:00
.gitignore agent: add tests for acl configuration loads 2017-09-12 11:46:14 -05:00
.travis.yml update travis script to use container build for test 2017-09-12 09:56:55 -05:00
AUTHORS [doc] add Rob Murtha to AUTHORS file 2016-12-22 15:52:26 -06:00
CONTRIBUTING.md update CONTRIBUTING.md, remove requirement to tag commits 2017-07-12 09:43:39 -05:00
Dockerfile simplify standalone installation for docker image 2017-09-12 09:56:55 -05:00
LICENSE [medium] Makefile support 2014-02-03 10:42:36 -05:00
Makefile clean up makefile and remove a bunch of unused targets and variables 2017-09-13 16:02:07 -05:00
README.md [doc] add Docker quick start to README 2017-03-08 13:29:36 -05:00
acl.go [medium/bug] Prevent one investigator from signing multiple times 2016-09-24 21:42:24 -04:00
action.go [minor/bug] in SignAction, remove temporary file 2017-04-25 10:38:02 -05:00
agent.go in mig.Agent, declare Tags as a map for Agent type 2017-07-25 13:51:39 -05:00
command.go [doc] add newline after license header to ignore it in godoc 2015-08-27 10:41:13 -04:00
constants.go [medium/bug] terminate scheduler when heartbeat to relays fails, fixes #146 2015-11-05 08:14:00 -05:00
investigator.go [major] investigator API key authentication for API use 2017-04-11 14:55:58 -05:00
loader.go [major] investigator API key authentication for API use 2017-04-11 14:55:58 -05:00
logging_posix.go [minor] add log file rotation for file output mode 2016-04-18 21:59:28 -05:00
logging_windows.go [medium/bug] on windows, close log file before rotate 2017-05-25 15:47:50 -05:00
manifest.go add loader config to bundle manifest maps 2017-09-12 09:56:55 -05:00
misc.go [major] investigator API key authentication for API use 2017-04-11 14:55:58 -05:00
runner.go [minor] initial commit of mig-runner 2015-09-15 14:40:26 -05:00
version.go set a default version value for mig package Version variable 2017-09-13 14:22:35 -05:00

README.md

MIG: Mozilla InvestiGator

Build Status

MIG is Mozilla's platform for investigative surgery of remote endpoints.

Quick Start w/ Docker

You can spin up a local-only MIG setup using docker. The container is not suitable for production use but lets you experiment with MIG quickly.

$ docker pull mozilla/mig
$ docker run -it mozilla/mig

Once inside the container, you can use the MIG tools to query a local agent, as such:

mig@5345268590c8:~$ mig file -t all -path /usr/bin -sha2 5c1956eba492b2c3fffd8d3e43324b5c477c22727385be226119f7ffc24aad3f
1 agents will be targeted. ctrl+c to cancel. launching in 5 4 3 2 1 GO
Following action ID 7978299359234.
 1 / 1 [=========================================================] 100.00% 0/s4s
100.0% done in 3.029105958s
1 sent, 1 done, 1 succeeded
ed11f485244a /usr/bin/wget [lastmodified:2016-07-05 15:32:42 +0000 UTC, mode:-rwxr-xr-x, size:419080] in search 's1'
1 agent has found results

To explore the capabilities of MIG, take a look at the CheatSheet.

What is this?

MIG is composed of agents installed on all systems of an infrastructure that are be queried in real-time to investigate the file-systems, network state, memory or configuration of endpoints.

Capability Linux MacOS Windows
file inspection check check check
network inspection check check (partial)
memory inspection check check check
vuln management check (planned) (planned)
log analysis (planned) (planned) (planned)
system auditing (planned) (planned) (planned)

Imagine it is 7am on a saturday morning, and someone just released a critical vulnerability for your favorite PHP application. The vuln is already exploited and security groups are releasing indicators of compromise (IOCs). Your weekend isn't starting great, and the thought of manually inspecting thousands of systems isn't making it any better.

MIG can help. The signature of the vulnerable PHP app (the md5 of a file, a regex, or just a filename) can be searched for across all your systems using the file module. Similarly, IOCs such as specific log entries, backdoor files with md5 and sha1/2/3 hashes, IP addresses from botnets or byte strings in processes memories can be investigated using MIG. Suddenly, your weekend is looking a lot better. And with just a few commands, thousands of systems will be remotely investigated to verify that you're not at risk.

MIG command line demo

MIG agents are designed to be lightweight, secure, and easy to deploy so you can ask your favorite sysadmins to add it to a base deployment without fear of breaking the entire production network. All parameters are built into the agent at compile time, including the list and ACLs of authorized investigators. Security is enforced using PGP keys, and even if MIG's servers are compromised, as long as our keys are safe on your investigator's laptop, no one will break into the agents.

MIG is designed to be fast, and asynchronous. It uses AMQP to distribute actions to endpoints, and relies on Go channels to prevent components from blocking. Running actions and commands are stored in a Postgresql database and on disk cache, such that the reliability of the platform doesn't depend on long-running processes.

Speed is a strong requirement. Most actions will only take a few hundreds milliseconds to run on agents. Larger ones, for example when looking for a hash in a big directory, should run in less than a minute or two. All in all, an investigation usually completes in between 10 and 300 seconds.

Privacy and security are paramount. Agents never send raw data back to the platform, but only reply to questions instead. All actions are signed by GPG keys that are not stored in the platform, thus preventing a compromise from taking over the entire infrastructure.

Technology

MIG is built in Go and uses a REST API that receives signed JSON messages distributed to agents via RabbitMQ and stored in a Postgres database.

It is:

  • Massively Distributed means Fast.
  • Simple to deploy and Cross-Platform.
  • Secured using OpenPGP.
  • Respectful of privacy by never retrieving raw data from endpoints.

Check out this 10 minutes video for a more general presentation and a demo of the console interface.

MIG youtube video

MIG was recently presented at the SANS DFIR Summit in Austin, Tx. You can watch the recording below:

MIG @ DFIR Summit 2015

Discussion

Join #mig on irc.mozilla.org (use a web client such as mibbit).

We also have a public mailing list at list@mig.ninja.

Documentation

All documentation is available in the 'doc' directory and on http://mig.mozilla.org .

Testing

Assuming you have a dedicated Ubuntu system (like a VM), you can use the standalone installation script to deploy a test environment rapidly.

$ sudo apt-get install golang git

# must be >= 1.5
$ go version
go version go1.6.1 linux/amd64

$ export GOPATH=$HOME/go

$ mkdir $GOPATH

$ go get mig.ninja/mig

$ cd $GOPATH/src/mig.ninja/mig

$ bash tools/standalone_install.sh

This script will install all of the components MIG needs for a localhost only installation. Follow instructions at the end of the script to convert it to a real infrastructure, or read Installation & Configuration.