28
Metasploit Minus Metasploit Building APIs and abstractions for the future Adam Cammack and James Barnett

Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

MetasploitMinus Metasploit

Building APIs and abstractions for the future

Adam Cammack and James Barnett

Page 2: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Who We Are● Engineers on the Metasploit team● Made possible by our awesome community

Page 3: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

msf5 > banner .:okOOOkdc' 'cdkOOOko:. .xOOOOOOOOOOOOc cOOOOOOOOOOOOx. :OOOOOOOOOOOOOOOk, ,kOOOOOOOOOOOOOOO: 'OOOOOOOOOkkkkOOOOO: :OOOOOOOOOOOOOOOOOO' oOOOOOOOO.MMMM.oOOOOoOOOOl.MMMM,OOOOOOOOo dOOOOOOOO.MMMMMM.cOOOOOc.MMMMMM,OOOOOOOOx lOOOOOOOO.MMMMMMMMM;d;MMMMMMMMM,OOOOOOOOl .OOOOOOOO.MMM.;MMMMMMMMMMM;MMMM,OOOOOOOO. cOOOOOOO.MMM.OOc.MMMMM'oOO.MMM,OOOOOOOc oOOOOOO.MMM.OOOO.MMM:OOOO.MMM,OOOOOOo lOOOOO.MMM.OOOO.MMM:OOOO.MMM,OOOOOl ;OOOO'MMM.OOOO.MMM:OOOO.MMM;OOOO; .dOOo'WM.OOOOocccxOOOO.MX'xOOd. ,kOl'M.OOOOOOOOOOOOO.M'dOk, :kk;.OOOOOOOOOOOOO.;Ok: ;kOOOOOOOOOOOOOOOk: ,xOOOOOOOOOOOx, .lOOOOOOOl. ,dOd, .

Page 4: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

msf5 > banner .:okOOOkdc' 'cdkOOOko:. .xOOOO OOOOOOOc cOO OOOOOOOx. :OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO' oOOOO OoOO OOOOOOo dOOOO OOx lOOOOOOOO. OOOOOl .OO OO. cO .OOc. MMM OOOc oOOOOOO. .OOOO.MMM:OOO O OOOo lOOOOO.MMM.OO MMM:OOOO.MMM OOOl ;OOOO'MMM MMM:OOOO.MMM;OOOO; .dOOo’WM cccxOOOO.MX’xOOd. ,kOl M.dOk, :k OOOOO.cOk: ;kOOOO : ,xOOO , .lOO . ,dOd, .

Page 5: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

msf5 > banner .:okOOOkdc' 'cdkOOOko:. .xOOOOOOOOOOOOc cOOOOOOOOOOOOx. :OOOOOOOOOOOOOOOk, ,kOOOOOOOOOOOOOOO: 'OOOOOOOOOkkkkOOOOO: :OOOOOOOOOOOOOOOOOO' oOOOOOOOO. .oOOOOoOOOOl. ,OOOOOOOOo dOOOOOOOO. .cOOOOOc. ,OOOOOOOOx lOOOOOOOO. ;d; ,OOOOOOOOl .OOOOOOOO. .; ; ,OOOOOOOO. cOOOOOOO. .OOc. 'oOO. ,OOOOOOOc oOOOOOO. .OOOO. :OOOO. ,OOOOOOo lOOOOO. .OOOO. :OOOO. ,OOOOOl ;OOOO' .OOOO. :OOOO. ;OOOO; .dOOo .OOOOocccxOOOO. xOOd. ,kOl .OOOOOOOOOOOOO. .dOk, :kk;.OOOOOOOOOOOOO.cOk: ;kOOOOOOOOOOOOOOOk: ,xOOOOOOOOOOOx, .lOOOOOOOl. ,dOd, .

Page 6: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Be Flexible

Page 7: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Handle ALL the Cases● Different types of tasks

○ Scanning○ Exploiting○ Post-exploit gathering

● Network traffic should be re-routable● Exploit traffic should be malleable● Payloads should support transformations

Page 8: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Separate Modules and Payloads● Modules should only know enough to trigger the exploit● Maintain a wide library of payloads● C2 for a wide library of payloads● Large number of module/payload combinations

Page 9: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Current Architecture

Page 10: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Everything Touches the DB● Very Rails-oriented● Tightly coupled to the database● ONE MSF per database● Searching and filtering haphazardly organized

Page 11: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Modules Are Plugins● Read into memory, modified, and eval’d● Loaded multiple times at startup● Everything executes in the context of everything else● Shared functionality via mixins● And then there’s the datastore...

Page 12: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Networking Is Complicated● All listeners go through the switch board● Pivoting through sessions and proxies● Socket, service, and client abstractions● Ring buffers for sessions

Page 13: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Isolating Modules

Page 14: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Modules as Processes● Enhanced isolation● Parallelism● Support for any language

Page 15: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Modules as Processes

Page 16: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Full Isolation● OS process per task● Communicates via JSON over stdin/stdout● Network transparency

Page 17: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Better Performance● Separate file descriptor pool● Separate memory space● No GIL - separate● Horizontal scaling

Page 18: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

How it Works+------------+| Metasploit || | Describe yourself +-------------------+| +-------------------> | some_module.py || | | || | | || | Some metadata | || | <-------------------+ || | | || | +-------------------+| || |+------------+

Page 19: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

How it Works+------------+| Metasploit | Do a thing with| | these options +-------------------+| +-------------------> | some_module.py || | | || | | || | A bit of status | || | <-------------------+ || | | || | Moar status | || | <-------------------+ || | | || | I found a thing | || | <-------------------+ || | | || | +-------------------++------------+

Page 20: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Isolating Data Storage

Page 21: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Objectives of Project Goliath

● Make the Metasploit datastore portable

● Improve the data model

● Make sessions shareable

Page 22: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Datastore As a Service

● Collaborate with others

● Host data store anywhere

● Integrate with other tools

Page 23: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Architecture

Page 24: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Data Model Improvements

● Flexibility

● Searchability

● Re-usability

Page 25: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Session Sharing

● Separate session management from framework

● Share sessions among team members

● Host session manager in the cloud

Page 26: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Demo

Page 27: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO
Page 28: Metasploit Minus Metasploit - Rapid7€¦ · msf5 > banner.:okOOOkdc' 'cdkOOOko:..xOOOO OOOOOOOc cOO OOOOOOOx.:OOO OOOOOk, ,kOOOOO OOOOOO: 'OOOOOO OOOOO: :OO OO

Questions?https://blog.rapid7.com/2017/12/28/regifting-python-in-metasploit/https://www.metasploit.comhttps://github.com/rapid7/metasploit-frameworkhttp://garfieldminusgarfield.net