Labs 5 to 6. Reverse Engineering

Labs 5 to 6. Reverse Engineering

DEPARTMENT OF COMPUTER SCIENCE Labs 5 to 6. Reverse Engineering Dan Bruce, David Clark and Hector D. Menendez Department of Computer Science University College London October 30, 2017 License Creative Commons 3 “Share Alike” Modified from Xeno Kovah slides of Open Security Training Dan, David and Hector (UCL) Assembly October 30, 20171 33 DEPARTMENT OF COMPUTER SCIENCE Introduction This Lectures aims to teach a practical tool of Reverse Engineering. Dan, David and Hector (UCL) Assembly October 30, 20172 33 DEPARTMENT OF COMPUTER SCIENCE Reverse Engineering Processes of extracting knowledge or design information from anything man-made and re-producing it or reproducing anything based on the extracted information. Dan, David and Hector (UCL) Assembly October 30, 20173 33 DEPARTMENT OF COMPUTER SCIENCE Reverse Engineering in Software Three different possibilities: Communication sniffers. Disassembly. Decompilation. Dan, David and Hector (UCL) Assembly October 30, 20174 33 DEPARTMENT OF COMPUTER SCIENCE Tools for Reverse Engineering Radare: Portable reversing framework for Windows, Linux or Mac OS. Olly debugger: 32-bit assembler level analysing debugger for Microsoft Windows. IDAPro: Windows, Linux or Mac OS X hosted multi-processor disassembler and debugger that offers so many RE features. Dan, David and Hector (UCL) Assembly October 30, 20175 33 DEPARTMENT OF COMPUTER SCIENCE Radare Features Disassemble (and assemble for) many different architectures. Debug with local native and remote debuggers (gdb, rap, webui, r2pipe, winedbg, windbg). Run on Linux, *BSD, Windows, OSX, Android, iOS, Solaris and Haiku. Perform forensics on filesystems and data carving. Be scripted in Python, Javascript, Go and more. Support collaborative analysis using the embedded webserver. Visualize data structures of several file types. Patch programs to uncover new features or fix vulnerabilities. Use powerful analysis capabilities to speed up reversing. Aid in software exploitation. Dan, David and Hector (UCL) Assembly October 30, 20176 33 DEPARTMENT OF COMPUTER SCIENCE Olly Features Intuitive user interface, no cryptical commands. Code analysis - traces registers, recognizes procedures, loops, API calls, switches, tables, constants and strings. Directly loads and debugs DLLs. Object file scanning - locates routines from object files and libraries. Allows for user-defined labels, comments and function descriptions. Understands debugging information in Borland format. Saves patches between sessions, writes them back to executable file and updates fixups. Open architecture - many third-party plugins are available. No installation - no trash in registry or system directories. Debugs multithread applications. Dan, David and Hector (UCL) Assembly October 30, 20177 33 DEPARTMENT OF COMPUTER SCIENCE Radare2 Reverse Engineering Framework. Library. Shell commands. Accessible from JS/Python/Ruby. More than 8 years working. Dan, David and Hector (UCL) Assembly October 30, 20178 33 DEPARTMENT OF COMPUTER SCIENCE Applications Malware Classification. Drivers analysis. Vulnerabilities Detection. Generate cracks. Industrial espionage. Computer Forensics. Dan, David and Hector (UCL) Assembly October 30, 20179 33 DEPARTMENT OF COMPUTER SCIENCE Internal tools Multi-platform Debugger. Multi-platform disassembler. Binary Parsers. Code Analyser. Web interfaces. Dan, David and Hector (UCL) Assembly October 30, 2017 10 33 DEPARTMENT OF COMPUTER SCIENCE Advantages Open source. Modular. Active Community. Under Development. Multi-language. Dan, David and Hector (UCL) Assembly October 30, 2017 11 33 DEPARTMENT OF COMPUTER SCIENCE Installing Radare From git: https://github.com/radare/radare2 Install it: cd radare2 sh sys/install.sh Dan, David and Hector (UCL) Assembly October 30, 2017 12 33 DEPARTMENT OF COMPUTER SCIENCE Starting with Radare To start Radare just go to a shell and run: > r2 f i l e . bin Dan, David and Hector (UCL) Assembly October 30, 2017 13 33 DEPARTMENT OF COMPUTER SCIENCE Basic Commands s: move. px: hexdump. aa: analyse. pdf: disassemble. afl: function list. ii: imports. iz: strings. Dan, David and Hector (UCL) Assembly October 30, 2017 14 33 DEPARTMENT OF COMPUTER SCIENCE Commands Logic Each command is related to a letter, therefore the following commands are related: px: print hex. pd: print disassembly. w: write. q: quit. s: seek. i: info. Dan, David and Hector (UCL) Assembly October 30, 2017 15 33 DEPARTMENT OF COMPUTER SCIENCE Prefix ?: conditional. !: run shell command. #: comment. #!: hashbang. .: interpreter. (: macro. $: alias. ”: quote?. `: evaluation and insertion. Dan, David and Hector (UCL) Assembly October 30, 2017 16 33 DEPARTMENT OF COMPUTER SCIENCE Suffix ∼: internal grep/cut. j: pipe to process. >: pipe to file. >>: cat to file. @: temporal seek. @@: iterator. *: command output. j: json output. ?: help. Dan, David and Hector (UCL) Assembly October 30, 2017 17 33 DEPARTMENT OF COMPUTER SCIENCE Help Menu ?: main help. suffix ?: command help. ???. ?@?. ?$?. Dan, David and Hector (UCL) Assembly October 30, 2017 18 33 DEPARTMENT OF COMPUTER SCIENCE First Step Get as much information of the binary as possible: File type Libraries Entrypoints Imports Symbols Strings Dan, David and Hector (UCL) Assembly October 30, 2017 19 33 DEPARTMENT OF COMPUTER SCIENCE Rabin2 This tool analyse the file and provide information about it: Multi-platform Different output format. Allows tiny-bins API access. Dan, David and Hector (UCL) Assembly October 30, 2017 20 33 DEPARTMENT OF COMPUTER SCIENCE Code Analysis Describe Opcodes. Pseudo Disassembly. Flags. Convert. Analyse functions. Dan, David and Hector (UCL) Assembly October 30, 2017 21 33 DEPARTMENT OF COMPUTER SCIENCE Graphs They are helpful for analysing the code flow Graphviz Ascii ART Web Interface Dan, David and Hector (UCL) Assembly October 30, 2017 22 33 DEPARTMENT OF COMPUTER SCIENCE Debugger Run $> r2 -d Stepping / Tracing / Breakpoints / Continue. Syscalls / signals / maps. Dan, David and Hector (UCL) Assembly October 30, 2017 23 33 DEPARTMENT OF COMPUTER SCIENCE Emulator Allows the emulation of specific code fragments. Describe each instruction with text. Dan, David and Hector (UCL) Assembly October 30, 2017 24 33 DEPARTMENT OF COMPUTER SCIENCE Example 1 1 #include<s t d i o . h> 2 #include<s t r i n g . h> 3 #include<s t d l i b . h> 4 i n t main ( i n t argc , char ∗ argv [ ] ) 5 f 6 7 i n t a , b ; 8 a=atoi(argv[1]); 9 b=atoi(argv[2]); 10 printf(”A+B=%d”,a+b); 11 g Dan, David and Hector (UCL) Assembly October 30, 2017 25 33 DEPARTMENT OF COMPUTER SCIENCE Example 1 Introduce this in Radare for analysing and showing the disassembly code: > aa > pdf > pdf @ sym.main > i z Dan, David and Hector (UCL) Assembly October 30, 2017 26 33 DEPARTMENT OF COMPUTER SCIENCE Dan, David and Hector (UCL) Assembly October 30, 2017 27 33 DEPARTMENT OF COMPUTER SCIENCE Example 2 1 #include<s t d i o . h> 2 #include<s t r i n g . h> 3 #include<s t d l i b . h> 4 i n t add ( i n t a , i n t b ) 5 f 6 return a+b ; 7 g 8 9 i n t main ( i n t argc , char ∗ argv [ ] ) 10 f 11 i n t a , b ; 12 a= a t o i ( argv [ 1 ] ) ; 13 b= a t o i ( argv [ 2 ] ) ; 14 printf(”A+B=%d”,add(a,b)); 15 g Dan, David and Hector (UCL) Assembly October 30, 2017 28 33 DEPARTMENT OF COMPUTER SCIENCE Example 2 Introduce this in Radare for analysing and showing the disassembly code: > aa > pdf > pdf @ sym.main > pdf @ sym.add Dan, David and Hector (UCL) Assembly October 30, 2017 29 33 DEPARTMENT OF COMPUTER SCIENCE Example 3 1 #include<s t d i o . h> 2 #include<s t r i n g . h> 3 #include<s t d l i b . h> 4 i n t add ( i n t a , i n t b ) 5 f 6 return a+b ; 7 g 8 i n t main ( i n t argc , char ∗ argv [ ] ) 9 f 10 i n t a , b ; 11 a= a t o i ( argv [ 1 ] ) ; 12 b= a t o i ( argv [ 2 ] ) ; 13 i f ( a > b ) 14 printf(”A+B=%d”,add(a,b)); 15 else 16 p r i n t f ( ”B-A=%d ” , add(-a , b ) ) ; 17 g Dan, David and Hector (UCL) Assembly October 30, 2017 30 33 DEPARTMENT OF COMPUTER SCIENCE Example 3 Introduce this in Radare for analysing and showing the disassembly code: > aa > pdf > pdf @ sym.main > pdf @ sym.add > V >> q > V @ sym . main >> V Dan, David and Hector (UCL) Assembly October 30, 2017 31 33 DEPARTMENT OF COMPUTER SCIENCE Dan, David and Hector (UCL) Assembly October 30, 2017 32 33 DEPARTMENT OF COMPUTER SCIENCE Exercises Time to Crack files: You have to find the passwords of the following files using Radare2: Crack0 Crack1 Explain the solutions. Dan, David and Hector (UCL) Assembly October 30, 2017 33 33.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    33 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us