slides at mig.ninja/osdf16
Julien Vehent
|
Disclaimer: not strictly speaking a forensics guy.
Max just finished a whole week of code...
... and pushes his changes to github
git commit -a . && git push github master
eefc66a1e978dc9d825f28702106d4d5
efa23860086c5d12d3e6b918073c717f
f3c5c20f5c45fc401484caf72753d778
fad8f37c9bd5420f49cfd5960a60fa24
fb3495715764cdaa547f2b040c0a9b1f
(not for xml sorcerers)
$ mig file -e 20s
-path /usr -path /bin -path /sbin -path /tmp -path /opt
-md5 eefc66a1e978dc9d825f28702106d4d5
-md5 efa23860086c5d12d3e6b918073c717f
-md5 f3c5c20f5c45fc401484caf72753d778
-md5 fad8f37c9bd5420f49cfd5960a60fa24
-md5 fb3495715764cdaa547f2b040c0a9b1f
-matchany -maxdepth 2
"Maybe you could dump all the firewall configs for the datacenter and parse the ALLOW rules and..."
(but it would take forever to implement)
|
Distribute work through queues (via RabbitMQ).
Compute agent-side, not server side.
API/DB/Scheduler only pass messages around.
Assume we only have one shot to setup agents.
No dependencies, deploy static binaries.
In unmanaged environment, build the conf in the binary.
MIG Loader installs & updates agents completely autonomously.
Agent only runs something if these conditions are met:
Multiple signatures required to run sensitive modules.
Modules never grant root to systems. Taking over the MIG servers can't be escalated to the rest of the infrastructure.
Reduces operational cost (smaller DB, less bandwidth).
Helps speed up investigations (see point 1).
Prevents abuse of service by rogue investigator.
(userland only)
mig file -matchany -path /sys/devices/ -name "^uevent$" \
-content "PRODUCT=20a0/4107"
mig netstat -nm 8c:70:5a:c8:be:50
mig file -path /proc -name "^cmdline$" -maxdepth 2 \
-content "[e]lasticsearch"
{
"module": "file",
"parameters": {
"searches": {
"checkforverboselogging": {
"paths": [
"/etc/ssh/sshd_config"
],
"contents": [
"(?i)^loglevel verbose$"
]
},
"checkpasswordusageisoff": {
"paths": [
"/etc/ssh/sshd_config"
],
"contents": [
"(?i)^passwordauthentication no$"
]
}
}
}
}
{ "objects": [ {
"object": "libnss3-package",
"package": {
"name": "libnss3:amd64"
}
}
],
"tests": [ {
"test": "libnss3 test",
"object": "libnss3-package",
"evr": {
"operation": "<",
"value": "2:3.19.2"
}
}
]
}
A vulnerability database, such as Ubuntu USN, or OpenVAS NVT, is converted into a JSON Scribe policy.
Each MIG Agent runs the thousands of tests from the policy locally, and returns out-of-date package.
It's not a full feature investigation platform, it's a tool to reduce the scope of an investigation
and do so as fast as possible, and with style.
## ## _.---._ .---.
# # # /-\ ---|| | /\ __...---' .---. '---'-. '.
# #| | / || | /--\ .-''__.--' _.'( | )'. '. '._ :
# # \_/ ---| \_ \_/ \ .'__-'_ .--'' ._'---'_.-. '. '-'.
### ~ -._ -._''---. -. '-._ '.
# |\ |\ /---------| ~ -.._ _ _ _ ..-_ '. '-._''--.._
# | \| \ / |- |__ | | -~ -._ '-. -. '-._''--.._.--''.
###| \ \/ ---__| | | ~ ~-.__ -._ '-.__ '. '.
##### ~~ ~---...__ _ ._ .' '.
# /\ --- /-\ |--|---- ~ ~--.....--~
# ### /--\ | | ||-\ //
#####/ \ | \_/ | \//__