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

UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Kürzlich hochgeladen (20)

UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

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!