SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
radare2
//rooted
     pancake
  pancake@nopcode.org

      nibble
  nibble.ds@gmail.com
Overview
radare2 is a rewrite of radare (r1) focusing on:
 - API (refactor, clean)
 - Por tability (osx,linux,bsd,w32)
 - Modularity (˜40 modules)
 - Scripting and bindings (valaswig)
Status of 0.4
 - Aiming to be as compatible as possible with r1
 - Some command and concepts has been redefined
 - Runtime >10x faster
 - Smar t and cleaner code (40% of LOCs)
 - Refactoring never ends -:)
radare2 // 0.4 release

Download sources:
 http://www.radare.org/get/radare2-0.4.tar.gz
Debian packages:
 http://www.radare.org/get/r2deb
Chiptune session: (Thanks neuroflip!)
 http://www.radare.org/get/r2-0.4.mp3

6 months from 0.3 and ˜300 commits
Language bindings
* C is fun, but people love to loose CPU cycles..
  - Automatic bindings generated by valaswig
  - Vala and Genie by default
  - Python, Perl, Lua and Ruby (more will come)
  - Access to full internal API
  - Binded code can use native instances and viceversa
  - Transparent access to generics, collections, iterators,
    classes, enums, structures, arrays, basic types..
* Valaswig is a .vapi to .i translator
   $ hg clone http://hg.youterm.com/valaswig
   $ wget http://radare.org/get/valaswig-0.1.tar.gz
Scripting demo

$ python
>>> import libr
>>> core = libr.RCore()
>>> core.loadlibs()
>>> file = core.file_open("dbg:///bin/ls", False)
>>> core.dbg.use("native")
>>> core.cmd0("dp=%d"%file.fd)

$ lua
> require "r_bin"
> file = arg[1] or "/bin/ls"
> b = r_bin.RBin ()
> b:load (file, "")
> baddr = b:get_baddr ()
> s = b:get_sections ()
> for i=0,s:size()-1 do
>   print (string.format (’0x%08x va=0x%08x size=%05i %s’,
      s[i].offset, baddr+s[i].rva, s[i].size, s[i].name))
> end
Scripting demo (2)

$ ruby <<EOF
require ’libr’
core = Libr::RCore.new
core.file_open("/bin/ls", 0);
print core.cmd_str("pd 20");
EOF

$ perl <<EOF
require "r2/r_asm.pm";
sub disasm {
  my ($a, $arch, $op) = @_;
  $a->use ($arch);
  my $code = $a->massemble ($op);
  if (defined($code)) {
    my $buf = r_asmc::RAsmCode_buf_hex_get ($code);
    print "$op | $arch | $bufn";
  }
}
my $a = new r_asm::RAsm();
disasm ($a, ’x86.olly’, ’mov eax, 33’);
disasm ($a, ’java’, ’bipush 33’);
EOF
r2w
Aims to be a web frontend for radare2
 - Written in python (no dependencies)
 - jQuer y and CSS hardly simplifies the design of the gui
 - At the moment it is just a PoC
 - Assembler/disassembler, debugger, hasher demos
 $ python main.py
 Process with PID 20951 started...
 URL=http://127.0.0.1:8080/
 ROOT=/home/pancake/prg/r2w/www

$ surf http://127.0.0.1:8080
 ...


                      (demo)
Searching bytes
* One of the very basic features of r1 has been rewritten
  in order to offer a clean API to search keywords with
  binar y masks, patterns, regular expressions and strings.

 /* Genie example search patterns */
 uses
      Radare.RSearch
 init
     var s = new RSearch (Mode.KEYWORD)
     s.kw_add ("lib", "")
     s.begin ()
     var str = "foo is pure lib"
     s.update_i (0, str, str.len ())
Debugging
* Several APIs affected: (debug, reg, bp, io)
  - No os/arch specific stuff
  - Same code works on w32, OSX, BSD and GNU/Linux
  - Basics on x86-32/64, PowerPC, MIPS and ARM
  - Not all functionalities of r1 implemented (work in progress)
  - Debugger is no longer an IO backend
  - Program transplant between different backends
  - Some basics on backtrace, process childs and threads
  - Memor y management (user/system memory maps)
  - Only software breakpoints atm
  - Traptracing, and software stepping implemented
Demo
Sample debugging session
 $ r2 -V
 radare2 0.4 @ linux-lil-x86

 $ r2 -d ls
 [0x080498a0]> ds   # step one instruction
 [0x080498a0]> dsl # step source line
 [0x080498a0]> dr= # display registers
  eip 0xb7883812   oeax 0xffffffff    eax 0xbfd89800
  ecx 0x00000000    edx 0x00000000    esp 0xbfd89800
  esi 0x00000000    edi 0x00000000 eflags 0x00000292
 [0x080498a0]> dcu sym.main # continue until sym.main
 [0x080498a0]> dpt # display process threads
  6064 s (current)
  6064 s thread_0
 [0x080498a0]> dbt # display backtrace

NOTE: Debugger commands no longer relay on IO backend ’!’
r2rc the relocatable code compiler
* Simple and minimal compiler for x86 32/64
  - arm and powerpc suppor t will follow
  - C-like syntax, with low-level hints
  - Allows to generate assembly code ready to be injected
  - Used as interface for native and crossplatform injection
* Accessible thru shell and API
 # r_sys_cmd_str -> r_asm_massemble -> r_debug_inject
 $ r2rc main.r > main.asm
 $ rasm2 -f main.asm > main.hex
 $ r2 -d ls
 [0x08048594]> wF main.hex @ eip # write hexpairs
 [0x08048594]> dc                 # continue execution
r2rc code example

main@global(128) {
        .var80 = "argc = %dn";                         # arguments
        printf (.var80, .arg0);
        .var80 = "0x%08x : argv[%02d] = %sn";
        .var0 = 0;
        .var4 = *.arg1;
        while (.var0 <= .arg0) {
                printf (.var80, .var4, .var0, .var4);
                .var0 += 1;                             # increment counter
                .arg1 += 4;                             # increment pointer
                .var4 = *.arg1;                         # get next argument
        }
        .var80 = "0x%08x : envp[%02d] = %sn";          # environ
        .var0 = 0;
        .var4 = *.arg2;
        { printf (.var80, .var4, .var0, .var4);
                .var0 += 1;                             # increment counter
                .arg2 += 4;                             # increment pointer
                .var4 = *.arg2;                         # get next environ
        } while (.var4);
        0;
}
RAnal
* Data and code analysis
* Analyzed data is accessible from opcode level to
  function level (opcode, BB, functions, vars, xrefs...)
* Combine data is very quickly
  Eg.: Filter bb by function, graph bb hierarchy,
  analyze references...
* Graph output in graphviz format (dot)
Demo
* Code & Data analysis
* Graph generation
  - Full
  - Par tial
* Source code graph
RAnal
RBin
* Header analysis
* Suppor ts:
  ELF32, ELF64, PE32, PE32+, MACH-O,
  MACH-O64, CLASS...
* Format-Agnostic API
* All sub-libs have been written from scratch
* All sub-libs offer a complete API for working
  with specific formats
* Keeps reversing (and minimalism) in mind
RBin
* Read support
  - Impor ts
  - Symbols (Exports)
  - Sections
  - Linked libraries
  - Strings
  - Binar y info
    object type
    endianness
    debug data/stripped
    static/dynamic...
RBin
* Write support (*)
  - Add/Remove/Resize {sections, impor ts, symbols}
  - Edit header fields
* Metadata support (*)
(*) = Work in progress
Demo
* Format-agnostic API
 $ python imports.py ls
 $ python imports.py user32.dll
 $ python imports.py osx-ls.1

$ cat imports.py
#!/usr/bin/python
from libr import *
import sys
if (len (sys.argv) == 2):
        file = sys.argv[1]
else:
        file = "/bin/ls"
        b = RBin ()
        b.load(file, None)
        baddr= b.get_baddr()
        print ’-> Imports’
        for i in b.get_imports ():
                 print ’offset=0x%08x va=0x%08x %s’ % (
                           i.offset, baddr+i.rva, i.name)
RAsm
* (Dis)Assembly library
* Suppor ts x86, x86-64, PPC, MIPS, ARM,
  SPARC, m68k, psosvm...
* Uses:
  - (Dis)Assembly backed
  - Compile inline code in order to be injected
  - Assembly backend of rcc
* All parameters (arch, wordsize...) can be modified
  in runtine, so generic injection are easy to implement
Demo
* Interactive disassembler
 $ ./widget-asm
Demo
* XorPacker
  - ELF structure
Demo (XorPacker)

$ rabin2 -S test |   cut -d ’ ’ -f 2,6-7
[...]
address=0x08048340   privileges=-r-x name=.text
address=0x080484fc   privileges=-r-x name=.fini
address=0x08048518   privileges=-r-- name=.rodata
[...]
Demo (XorPacker)
- Xor from .text to .rodata
- Execution flow
  Entr ypoint -> Init -> main
- Analyze entrypoint
  Get init address
- Overwrite init with the packer payload
  Change page permissions with mprotect
  Xor from .text to .data (take care of payload code)
Demo (XorPacker)

$ rabin2 -z test | grep "section=.rodata"
  | cut -d ’ ’ -f 1,5-6
address=0x08048520 section=.rodata string=passw0rd
address=0x08048529 section=.rodata string=ROOTED!
address=0x08048531 section=.rodata string=Ooops
$ rabin2 -z a.out | grep "section=.rodata"
  | cut -d ’ ’ -f 1,5-6
address=0x08048518 section=.rodata string=jiiihiki
address=0x08048528 section=.rodata string=i;&&=,-Hi&
$ ./a.out foo
Ooops
$ ./a.out passw0rd
ROOTED!
Demo
* ITrace
Demo (ITrace)
- Edit all plt entries but hijacked impor t
- Analyze entrypoin
  Get init address
- Write Hook code into init
  Push interesting parameters
  Call hijacked impor t
  Fix stack
  jump to the first PLT entry
- LD_PRELOAD library containing hijacked impor t
Demo (ITrace)

$ LD_PRELOAD=./preload.so ./a.out
Fake sleep call from import 0x8 @ 0x804830c
Fake sleep call from import 0x18 @ 0x804832c
ROOTED!
Fake sleep call from import 0x18 @ 0x804832c
ROOTED!
Fake sleep call from import 0x18 @ 0x804832c
ROOTED!
ˆC
So...
EOF
• Ideas, questions?




                      Thanks for listening!

Weitere ähnliche Inhalte

Was ist angesagt?

Esprima - What is that
Esprima - What is thatEsprima - What is that
Esprima - What is thatAbhijeet Pawar
 
Perl one-liners
Perl one-linersPerl one-liners
Perl one-linersdaoswald
 
AST - the only true tool for building JavaScript
AST - the only true tool for building JavaScriptAST - the only true tool for building JavaScript
AST - the only true tool for building JavaScriptIngvar Stepanyan
 
AST Rewriting Using recast and esprima
AST Rewriting Using recast and esprimaAST Rewriting Using recast and esprima
AST Rewriting Using recast and esprimaStephen Vance
 
Yapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed PerlYapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed PerlHideaki Ohno
 
Interceptors: Into the Core of Pedestal
Interceptors: Into the Core of PedestalInterceptors: Into the Core of Pedestal
Interceptors: Into the Core of PedestalKent Ohashi
 
Rust LDN 24 7 19 Oxidising the Command Line
Rust LDN 24 7 19 Oxidising the Command LineRust LDN 24 7 19 Oxidising the Command Line
Rust LDN 24 7 19 Oxidising the Command LineMatt Provost
 
ROP 輕鬆談
ROP 輕鬆談ROP 輕鬆談
ROP 輕鬆談hackstuff
 
PHP Tips for certification - OdW13
PHP Tips for certification - OdW13PHP Tips for certification - OdW13
PHP Tips for certification - OdW13julien pauli
 
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 appsRaul Fraile
 
Quick tour of PHP from inside
Quick tour of PHP from insideQuick tour of PHP from inside
Quick tour of PHP from insidejulien pauli
 
various tricks for remote linux exploits  by Seok-Ha Lee (wh1ant)
various tricks for remote linux exploits  by Seok-Ha Lee (wh1ant)various tricks for remote linux exploits  by Seok-Ha Lee (wh1ant)
various tricks for remote linux exploits  by Seok-Ha Lee (wh1ant)CODE BLUE
 

Was ist angesagt? (20)

Esprima - What is that
Esprima - What is thatEsprima - What is that
Esprima - What is that
 
Perl one-liners
Perl one-linersPerl one-liners
Perl one-liners
 
AST - the only true tool for building JavaScript
AST - the only true tool for building JavaScriptAST - the only true tool for building JavaScript
AST - the only true tool for building JavaScript
 
AST Rewriting Using recast and esprima
AST Rewriting Using recast and esprimaAST Rewriting Using recast and esprima
AST Rewriting Using recast and esprima
 
Yapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed PerlYapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed Perl
 
Perl basics for Pentesters
Perl basics for PentestersPerl basics for Pentesters
Perl basics for Pentesters
 
Klee and angr
Klee and angrKlee and angr
Klee and angr
 
Php engine
Php enginePhp engine
Php engine
 
PHP5.5 is Here
PHP5.5 is HerePHP5.5 is Here
PHP5.5 is Here
 
PHP7 is coming
PHP7 is comingPHP7 is coming
PHP7 is coming
 
Interceptors: Into the Core of Pedestal
Interceptors: Into the Core of PedestalInterceptors: Into the Core of Pedestal
Interceptors: Into the Core of Pedestal
 
Rust LDN 24 7 19 Oxidising the Command Line
Rust LDN 24 7 19 Oxidising the Command LineRust LDN 24 7 19 Oxidising the Command Line
Rust LDN 24 7 19 Oxidising the Command Line
 
ROP 輕鬆談
ROP 輕鬆談ROP 輕鬆談
ROP 輕鬆談
 
PHP Tips for certification - OdW13
PHP Tips for certification - OdW13PHP Tips for certification - OdW13
PHP Tips for certification - OdW13
 
High Performance tDiary
High Performance tDiaryHigh Performance tDiary
High Performance tDiary
 
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
 
Quick tour of PHP from inside
Quick tour of PHP from insideQuick tour of PHP from inside
Quick tour of PHP from inside
 
various tricks for remote linux exploits  by Seok-Ha Lee (wh1ant)
various tricks for remote linux exploits  by Seok-Ha Lee (wh1ant)various tricks for remote linux exploits  by Seok-Ha Lee (wh1ant)
various tricks for remote linux exploits  by Seok-Ha Lee (wh1ant)
 
dotCloud and go
dotCloud and godotCloud and go
dotCloud and go
 
Perl basics for pentesters part 2
Perl basics for pentesters part 2Perl basics for pentesters part 2
Perl basics for pentesters part 2
 

Ähnlich wie Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010]

Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...RootedCON
 
Getting Started with Raspberry Pi - DCC 2013.1
Getting Started with Raspberry Pi - DCC 2013.1Getting Started with Raspberry Pi - DCC 2013.1
Getting Started with Raspberry Pi - DCC 2013.1Tom Paulus
 
[FT-11][suhorng] “Poor Man's” Undergraduate Compilers
[FT-11][suhorng] “Poor Man's” Undergraduate Compilers[FT-11][suhorng] “Poor Man's” Undergraduate Compilers
[FT-11][suhorng] “Poor Man's” Undergraduate CompilersFunctional Thursday
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)shimosawa
 
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...Vincenzo Iozzo
 
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...Modern Data Stack France
 
C from hello world to 010101
C from hello world to 010101C from hello world to 010101
C from hello world to 010101Bellaj Badr
 
Specialized Compiler for Hash Cracking
Specialized Compiler for Hash CrackingSpecialized Compiler for Hash Cracking
Specialized Compiler for Hash CrackingPositive Hack Days
 
Pragmatic Optimization in Modern Programming - Demystifying the Compiler
Pragmatic Optimization in Modern Programming - Demystifying the CompilerPragmatic Optimization in Modern Programming - Demystifying the Compiler
Pragmatic Optimization in Modern Programming - Demystifying the CompilerMarina Kolpakova
 
Introduction to Assembly Language
Introduction to Assembly LanguageIntroduction to Assembly Language
Introduction to Assembly LanguageMotaz Saad
 
Design Summit - Rails 4 Migration - Aaron Patterson
Design Summit - Rails 4 Migration - Aaron PattersonDesign Summit - Rails 4 Migration - Aaron Patterson
Design Summit - Rails 4 Migration - Aaron PattersonManageIQ
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64FFRI, Inc.
 
[AI04] Scaling Machine Learning to Big Data Using SparkML and SparkR
[AI04] Scaling Machine Learning to Big Data Using SparkML and SparkR[AI04] Scaling Machine Learning to Big Data Using SparkML and SparkR
[AI04] Scaling Machine Learning to Big Data Using SparkML and SparkRde:code 2017
 
C programming language tutorial
C programming language tutorial C programming language tutorial
C programming language tutorial javaTpoint s
 
Xdp and ebpf_maps
Xdp and ebpf_mapsXdp and ebpf_maps
Xdp and ebpf_mapslcplcp1
 
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB DevroomMore on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB DevroomValeriy Kravchuk
 
Go Native : Squeeze the juice out of your 64-bit processor using C++
Go Native : Squeeze the juice out of your 64-bit processor using C++Go Native : Squeeze the juice out of your 64-bit processor using C++
Go Native : Squeeze the juice out of your 64-bit processor using C++Fernando Moreira
 
How to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsHow to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsJulien Le Dem
 
Spark Streaming Programming Techniques You Should Know with Gerard Maas
Spark Streaming Programming Techniques You Should Know with Gerard MaasSpark Streaming Programming Techniques You Should Know with Gerard Maas
Spark Streaming Programming Techniques You Should Know with Gerard MaasSpark Summit
 

Ähnlich wie Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010] (20)

Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
 
Getting Started with Raspberry Pi - DCC 2013.1
Getting Started with Raspberry Pi - DCC 2013.1Getting Started with Raspberry Pi - DCC 2013.1
Getting Started with Raspberry Pi - DCC 2013.1
 
[FT-11][suhorng] “Poor Man's” Undergraduate Compilers
[FT-11][suhorng] “Poor Man's” Undergraduate Compilers[FT-11][suhorng] “Poor Man's” Undergraduate Compilers
[FT-11][suhorng] “Poor Man's” Undergraduate Compilers
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)
 
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
 
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
 
C from hello world to 010101
C from hello world to 010101C from hello world to 010101
C from hello world to 010101
 
Specialized Compiler for Hash Cracking
Specialized Compiler for Hash CrackingSpecialized Compiler for Hash Cracking
Specialized Compiler for Hash Cracking
 
Pragmatic Optimization in Modern Programming - Demystifying the Compiler
Pragmatic Optimization in Modern Programming - Demystifying the CompilerPragmatic Optimization in Modern Programming - Demystifying the Compiler
Pragmatic Optimization in Modern Programming - Demystifying the Compiler
 
Introduction to Assembly Language
Introduction to Assembly LanguageIntroduction to Assembly Language
Introduction to Assembly Language
 
Design Summit - Rails 4 Migration - Aaron Patterson
Design Summit - Rails 4 Migration - Aaron PattersonDesign Summit - Rails 4 Migration - Aaron Patterson
Design Summit - Rails 4 Migration - Aaron Patterson
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64
 
Debug generic process
Debug generic processDebug generic process
Debug generic process
 
[AI04] Scaling Machine Learning to Big Data Using SparkML and SparkR
[AI04] Scaling Machine Learning to Big Data Using SparkML and SparkR[AI04] Scaling Machine Learning to Big Data Using SparkML and SparkR
[AI04] Scaling Machine Learning to Big Data Using SparkML and SparkR
 
C programming language tutorial
C programming language tutorial C programming language tutorial
C programming language tutorial
 
Xdp and ebpf_maps
Xdp and ebpf_mapsXdp and ebpf_maps
Xdp and ebpf_maps
 
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB DevroomMore on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
 
Go Native : Squeeze the juice out of your 64-bit processor using C++
Go Native : Squeeze the juice out of your 64-bit processor using C++Go Native : Squeeze the juice out of your 64-bit processor using C++
Go Native : Squeeze the juice out of your 64-bit processor using C++
 
How to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsHow to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analytics
 
Spark Streaming Programming Techniques You Should Know with Gerard Maas
Spark Streaming Programming Techniques You Should Know with Gerard MaasSpark Streaming Programming Techniques You Should Know with Gerard Maas
Spark Streaming Programming Techniques You Should Know with Gerard Maas
 

Mehr von RootedCON

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRootedCON
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...RootedCON
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRootedCON
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_RootedCON
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...RootedCON
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...RootedCON
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...RootedCON
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRootedCON
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...RootedCON
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRootedCON
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...RootedCON
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRootedCON
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...RootedCON
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRootedCON
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRootedCON
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRootedCON
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...RootedCON
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...RootedCON
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRootedCON
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRootedCON
 

Mehr von RootedCON (20)

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amado
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molina
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopez
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jara
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
 

Kürzlich hochgeladen

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010]

  • 1. radare2 //rooted pancake pancake@nopcode.org nibble nibble.ds@gmail.com
  • 2. Overview radare2 is a rewrite of radare (r1) focusing on: - API (refactor, clean) - Por tability (osx,linux,bsd,w32) - Modularity (˜40 modules) - Scripting and bindings (valaswig) Status of 0.4 - Aiming to be as compatible as possible with r1 - Some command and concepts has been redefined - Runtime >10x faster - Smar t and cleaner code (40% of LOCs) - Refactoring never ends -:)
  • 3. radare2 // 0.4 release Download sources: http://www.radare.org/get/radare2-0.4.tar.gz Debian packages: http://www.radare.org/get/r2deb Chiptune session: (Thanks neuroflip!) http://www.radare.org/get/r2-0.4.mp3 6 months from 0.3 and ˜300 commits
  • 4. Language bindings * C is fun, but people love to loose CPU cycles.. - Automatic bindings generated by valaswig - Vala and Genie by default - Python, Perl, Lua and Ruby (more will come) - Access to full internal API - Binded code can use native instances and viceversa - Transparent access to generics, collections, iterators, classes, enums, structures, arrays, basic types.. * Valaswig is a .vapi to .i translator $ hg clone http://hg.youterm.com/valaswig $ wget http://radare.org/get/valaswig-0.1.tar.gz
  • 5. Scripting demo $ python >>> import libr >>> core = libr.RCore() >>> core.loadlibs() >>> file = core.file_open("dbg:///bin/ls", False) >>> core.dbg.use("native") >>> core.cmd0("dp=%d"%file.fd) $ lua > require "r_bin" > file = arg[1] or "/bin/ls" > b = r_bin.RBin () > b:load (file, "") > baddr = b:get_baddr () > s = b:get_sections () > for i=0,s:size()-1 do > print (string.format (’0x%08x va=0x%08x size=%05i %s’, s[i].offset, baddr+s[i].rva, s[i].size, s[i].name)) > end
  • 6. Scripting demo (2) $ ruby <<EOF require ’libr’ core = Libr::RCore.new core.file_open("/bin/ls", 0); print core.cmd_str("pd 20"); EOF $ perl <<EOF require "r2/r_asm.pm"; sub disasm { my ($a, $arch, $op) = @_; $a->use ($arch); my $code = $a->massemble ($op); if (defined($code)) { my $buf = r_asmc::RAsmCode_buf_hex_get ($code); print "$op | $arch | $bufn"; } } my $a = new r_asm::RAsm(); disasm ($a, ’x86.olly’, ’mov eax, 33’); disasm ($a, ’java’, ’bipush 33’); EOF
  • 7. r2w Aims to be a web frontend for radare2 - Written in python (no dependencies) - jQuer y and CSS hardly simplifies the design of the gui - At the moment it is just a PoC - Assembler/disassembler, debugger, hasher demos $ python main.py Process with PID 20951 started... URL=http://127.0.0.1:8080/ ROOT=/home/pancake/prg/r2w/www $ surf http://127.0.0.1:8080 ... (demo)
  • 8. Searching bytes * One of the very basic features of r1 has been rewritten in order to offer a clean API to search keywords with binar y masks, patterns, regular expressions and strings. /* Genie example search patterns */ uses Radare.RSearch init var s = new RSearch (Mode.KEYWORD) s.kw_add ("lib", "") s.begin () var str = "foo is pure lib" s.update_i (0, str, str.len ())
  • 9. Debugging * Several APIs affected: (debug, reg, bp, io) - No os/arch specific stuff - Same code works on w32, OSX, BSD and GNU/Linux - Basics on x86-32/64, PowerPC, MIPS and ARM - Not all functionalities of r1 implemented (work in progress) - Debugger is no longer an IO backend - Program transplant between different backends - Some basics on backtrace, process childs and threads - Memor y management (user/system memory maps) - Only software breakpoints atm - Traptracing, and software stepping implemented
  • 10. Demo Sample debugging session $ r2 -V radare2 0.4 @ linux-lil-x86 $ r2 -d ls [0x080498a0]> ds # step one instruction [0x080498a0]> dsl # step source line [0x080498a0]> dr= # display registers eip 0xb7883812 oeax 0xffffffff eax 0xbfd89800 ecx 0x00000000 edx 0x00000000 esp 0xbfd89800 esi 0x00000000 edi 0x00000000 eflags 0x00000292 [0x080498a0]> dcu sym.main # continue until sym.main [0x080498a0]> dpt # display process threads 6064 s (current) 6064 s thread_0 [0x080498a0]> dbt # display backtrace NOTE: Debugger commands no longer relay on IO backend ’!’
  • 11. r2rc the relocatable code compiler * Simple and minimal compiler for x86 32/64 - arm and powerpc suppor t will follow - C-like syntax, with low-level hints - Allows to generate assembly code ready to be injected - Used as interface for native and crossplatform injection * Accessible thru shell and API # r_sys_cmd_str -> r_asm_massemble -> r_debug_inject $ r2rc main.r > main.asm $ rasm2 -f main.asm > main.hex $ r2 -d ls [0x08048594]> wF main.hex @ eip # write hexpairs [0x08048594]> dc # continue execution
  • 12. r2rc code example main@global(128) { .var80 = "argc = %dn"; # arguments printf (.var80, .arg0); .var80 = "0x%08x : argv[%02d] = %sn"; .var0 = 0; .var4 = *.arg1; while (.var0 <= .arg0) { printf (.var80, .var4, .var0, .var4); .var0 += 1; # increment counter .arg1 += 4; # increment pointer .var4 = *.arg1; # get next argument } .var80 = "0x%08x : envp[%02d] = %sn"; # environ .var0 = 0; .var4 = *.arg2; { printf (.var80, .var4, .var0, .var4); .var0 += 1; # increment counter .arg2 += 4; # increment pointer .var4 = *.arg2; # get next environ } while (.var4); 0; }
  • 13. RAnal * Data and code analysis * Analyzed data is accessible from opcode level to function level (opcode, BB, functions, vars, xrefs...) * Combine data is very quickly Eg.: Filter bb by function, graph bb hierarchy, analyze references... * Graph output in graphviz format (dot)
  • 14. Demo * Code & Data analysis * Graph generation - Full - Par tial * Source code graph
  • 15. RAnal
  • 16. RBin * Header analysis * Suppor ts: ELF32, ELF64, PE32, PE32+, MACH-O, MACH-O64, CLASS... * Format-Agnostic API * All sub-libs have been written from scratch * All sub-libs offer a complete API for working with specific formats * Keeps reversing (and minimalism) in mind
  • 17. RBin * Read support - Impor ts - Symbols (Exports) - Sections - Linked libraries - Strings - Binar y info object type endianness debug data/stripped static/dynamic...
  • 18. RBin * Write support (*) - Add/Remove/Resize {sections, impor ts, symbols} - Edit header fields * Metadata support (*) (*) = Work in progress
  • 19. Demo * Format-agnostic API $ python imports.py ls $ python imports.py user32.dll $ python imports.py osx-ls.1 $ cat imports.py #!/usr/bin/python from libr import * import sys if (len (sys.argv) == 2): file = sys.argv[1] else: file = "/bin/ls" b = RBin () b.load(file, None) baddr= b.get_baddr() print ’-> Imports’ for i in b.get_imports (): print ’offset=0x%08x va=0x%08x %s’ % ( i.offset, baddr+i.rva, i.name)
  • 20. RAsm * (Dis)Assembly library * Suppor ts x86, x86-64, PPC, MIPS, ARM, SPARC, m68k, psosvm... * Uses: - (Dis)Assembly backed - Compile inline code in order to be injected - Assembly backend of rcc * All parameters (arch, wordsize...) can be modified in runtine, so generic injection are easy to implement
  • 22. Demo * XorPacker - ELF structure
  • 23. Demo (XorPacker) $ rabin2 -S test | cut -d ’ ’ -f 2,6-7 [...] address=0x08048340 privileges=-r-x name=.text address=0x080484fc privileges=-r-x name=.fini address=0x08048518 privileges=-r-- name=.rodata [...]
  • 24. Demo (XorPacker) - Xor from .text to .rodata - Execution flow Entr ypoint -> Init -> main - Analyze entrypoint Get init address - Overwrite init with the packer payload Change page permissions with mprotect Xor from .text to .data (take care of payload code)
  • 25. Demo (XorPacker) $ rabin2 -z test | grep "section=.rodata" | cut -d ’ ’ -f 1,5-6 address=0x08048520 section=.rodata string=passw0rd address=0x08048529 section=.rodata string=ROOTED! address=0x08048531 section=.rodata string=Ooops $ rabin2 -z a.out | grep "section=.rodata" | cut -d ’ ’ -f 1,5-6 address=0x08048518 section=.rodata string=jiiihiki address=0x08048528 section=.rodata string=i;&&=,-Hi& $ ./a.out foo Ooops $ ./a.out passw0rd ROOTED!
  • 27. Demo (ITrace) - Edit all plt entries but hijacked impor t - Analyze entrypoin Get init address - Write Hook code into init Push interesting parameters Call hijacked impor t Fix stack jump to the first PLT entry - LD_PRELOAD library containing hijacked impor t
  • 28. Demo (ITrace) $ LD_PRELOAD=./preload.so ./a.out Fake sleep call from import 0x8 @ 0x804830c Fake sleep call from import 0x18 @ 0x804832c ROOTED! Fake sleep call from import 0x18 @ 0x804832c ROOTED! Fake sleep call from import 0x18 @ 0x804832c ROOTED! ˆC
  • 29. So...
  • 30. EOF • Ideas, questions? Thanks for listening!