Data Structure Reverse Engineering
|
|
|
- Delphia Stevenson
- 10 years ago
- Views:
Transcription
1 Data Structure Reverse Engineering Digging for Data Structures Polymorphic Software with DSLR Scott Hand October 28 th, 2011
2 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
3 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
4 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
5 The Current Situation
6 The Current Situation What s Happening? Effectiveness of AV solutions not what it used to be Some are calling for dissolution of AV industry (Source) Lots of botnets
7 The Current Situation What s Happening? Why? Effectiveness of AV solutions not what it used to be Some are calling for dissolution of AV industry (Source) Lots of botnets Signature checking just greps for patterns Weak against obfuscation Packing Code polymorphism Junk bytes
8 The Current Situation Example of AV Weakness Whitepaper published by SANS institute examined efficacy of AV apps in detecting Metasploit payloads. Obfuscation on payload that was detected by 14 out of 32 AV engines led to its detection by only 4 out of 32 engines. This was only on the Windows platform. Linux AV tools failed 100% of the time.
9 Motivation for New Approach Why Data Structures? Previous weaknesses focused on problems with code matching approaches Such obfuscation attempts change code but maintain abstractions Maybe we can find a way to look for patterns in those abstract structures...
10 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
11 Description of Data Structure Approach Some Properties All programs use data structures These data structures are abstractions of implementation details The data structures used tend to be very similar between programmers
12 Description of Data Structure Approach Some Properties All programs use data structures These data structures are abstractions of implementation details The data structures used tend to be very similar between programmers Approach: We can try to look for general compound data structures.
13 Laika Overview Key Challenges Identify position and size of objects Use potential pointers in image to estimate object positions and sizes Determine which objects are similar Convert objects from sequences of raw bytes into sequences of semantically valued blocks "Probably pointer blocks", "probably string blocks", etc Cluster objects with similar sequences of blocks using Bayesian unsupervised learning
14 Laika Overview Empirical Approach 1 Built a virus checker on top of Laika 2 Check against conventional scanners 3 Results Laika has 99% accuracy ClamAV has 85% accuracy
15 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
16 Classification Input is a set of unknown objects Identifies distinguishing features (feature selection problem) Train a classifier Make inferences about the class of each object Output is set of objects with tagged classes
17 Types of Classification - Data Tagging Supervised Learning Inference engine is trained on labeled data with a set of given classes. Easier, more effective, simpler to validate. Labeled data not always possible. Unsupervised Learning Inference engine is given data set and asked to generate a set of classes. Engine finds number of distinct classes and tags items accordingly
18 Types of Classification - Underlying Learning Method Generative - Learning machine attempts to learn an underlying probability distribution. This is helpful because probabilistic methods such as expectation maximization (or its Bayesian counterpart maximum a posteriori) become available to use. Discriminative - Learning machine attempts to learn the best way to determine class boundaries. This is often more specialized and data efficient at the cost of flexibility.
19 Feature Selection Nature of the Problem Feature selection is the most important part of designing any classifier Often independent of classification method Especially hard for this problem, as objects from same class will still often have completely different byte values Block Types Convert each machine word into a block type Basic types: Address Zero Char Data
20 Feature Selection Atom Types Classes are represented as vector of atoms Atoms are a collection of blocks, so we need to identify atoms from block streams Basic atom types: Pointer Zero String Integer Looks like there s some relation between atom and block types... A block type is an atomic type with some error. This can be observed by examining P(blocktype atomictype)
21 Finding Data Structures Basic Process 1 Scan through memory and identify pointers 2 Tentatively estimate the start position of objects using locations from pointers 3 Find the end position using estimation done during clustering 4 The rest of the block past the end of the object is classified as random noise 5 Introduce a random atomic type to handle this noise
22 Heuristics Exploiting Malloc Example: Using the Lea allocator in GNU libc leaks chunk size information. More general: Most malloc algorithms keep similar objects in the same area of memory. Extremely effective, but does not improve Laika s accuracy. Why?
23 Heuristics Exploiting Malloc Example: Using the Lea allocator in GNU libc leaks chunk size information. More general: Most malloc algorithms keep similar objects in the same area of memory. Extremely effective, but does not improve Laika s accuracy. Why? Laika s similar size estimations leads to it already knowing that nearby objects are similar
24 Bayesian Model The lth machine word of memory image M is notated M l. The kth atomic type of class j is ω jk. X is the input list, with X i indicating the position ith object in X. We want to maximize the most likely objects and classes given a memory image. An equation for this can be obtained with the following steps: 1 Bayesian approach means MAP. We can get this from Bayes rule as P(Θ X) = P(X Θ)P(Θ) P(X). 2 Plugging in the values specific to this problem we get P(ω, X M) = P(M ω,x)p(ω,x) P(M). 3 Applying the chain rule to the class and object joint distribution, we obtain P(ω, X M) = P(M ω,x)p(x ω)p(ω) P(M).
25 Bayesian Model Our normalizing constant P(M) can be dropped as we only care about the likelihood, not the probability We assume independence both between and within classes This lets us calculate the prior distribution easily as P(ω) = j k P(ω jk). P(X ω) represents the probability of locations and sizes of the list of objects based on our class model. The term is 0 for illegal solutions and 1 otherwise. P(M ω, X) represents the model s fitness for the data. This can be calculated as P(M ω, X) = l P(M l ω, X) The previous method of calculating the likelihood equation makes a Naive Bayes assumption; it assumes data is conditionally independent to other data.
26 Bayesian Model - Putting It All Together As stated, the probability being sought is P(ω, X M) P(M ω, X)P(X ω)p(ω)
27 Bayesian Model - Putting It All Together As stated, the probability being sought is P(ω, X M) P(M ω, X)P(X ω)p(ω) Substituting the prior distribution yields P(M ω, X)P(X ω) j k P(ω jk)
28 Bayesian Model - Putting It All Together As stated, the probability being sought is P(ω, X M) P(M ω, X)P(X ω)p(ω) Substituting the prior distribution yields P(M ω, X)P(X ω) j k P(ω jk) Taking the function δ : X ω {0, 1} returning 0 for illegal solutions and 1 otherwise, adding in the list suitability factor yields δ(x, ω)p(m ω, X) j k P(ω jk)
29 Bayesian Model - Putting It All Together As stated, the probability being sought is P(ω, X M) P(M ω, X)P(X ω)p(ω) Substituting the prior distribution yields P(M ω, X)P(X ω) j k P(ω jk) Taking the function δ : X ω {0, 1} returning 0 for illegal solutions and 1 otherwise, adding in the list suitability factor yields δ(x, ω)p(m ω, X) j k P(ω jk) Finally, adding in the model fitness factor yields P(ω, X M) δ(x, ω) l P(M l ω, X) j k P(ω jk)
30 Bayesian Model - Final Equation Maximize: P(ω, X M) δ(x, ω) l P(M l ω, X) j Intuition First term does sanity checking k P(ω jk) Second term penalizes Laika for putting an object into an unlikely class and makes sure the solution reflects the particular memory image Third term encourages simple solutions by penalizing approaches with many classes
31 More Optimizations Typed Pointers Simple pointer/integer classifications produce reasonable results, but we can further optimize by introducing typed pointers If all instances of class have a pointer at the same offset, it s likely that the targets of those pointers share a class Good for small classes and objects with no pointers Increases computational complexity. Breaks our previous independence assumptions Will cause small errors to propagate
32 One More Consideration... Dynamically-Sized Arrays Not all classes have feature vectors of the same size. We will allow objects to wrap around modulo the size of a class. This means an object can be classified as a contiguous set of instantiations of a given class - an array.
33 Implementation Code Details Done in Lisp Unsupervised learning is difficult Use approximation scheme based on computing P(ω, X M) incrementally Uses typed pointers as a guiding heuristic Empirical Method Used Gentoo Linux to build applications and libraries with minimal optimizations, debugging symbols Wrote a wrapper for malloc to track allocations and evaluate Laika s ability to identify them
34 Results Data Structure Detection Mostly correct Some difficulties Heap is extremely noisy Only 30% of objects contained a pointer, remaining 70% classified by objects pointing to them Poor software practices such as tail accumulator array in X Window data structure. Solution? Send X Window developers a dirty sock. Percentage of success was around 65% without malloc info, around 0.78 with malloc info.
35 Results Program Classification Agobot % (83% ClamAV) Kraken % (85% ClamAV) Storm % (100% ClamAV)
36 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
37 Analysis of Laika Good At worst, it is defense in depth by posting malware authors different challenges At best, it can synergize with code analysis Bad Won t work with large class of simple malware Much more resource intensive
38 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
39 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
40 How Can We Beat Laika? Polymorphic Data Structures Randomize data structure layout Done during compilation Can evade Laika-style detection Can also help foil rootkit attacks
41 More about Data Structures They are ubiquitous Network protocol reverse engineering (guided fuzzing) Buffer overflow attacks Kernel rootkits require knowledge of OS data structures Attack signatures (Laika)
42 A Few Things about Randomization... Examples where it doesn t work 1 Not as helpful in network communication because other parties are involved 2 Public definitions cannot be randomized 3 Tail accumulator arrays rely on the zero-length array to be at the end of the data structure 4 Programmers may use direct data offsets to access some fields 5 When data structure order is used during value initialization How to address this?
43 A Few Things about Randomization... Similar issues Monoculture leads to large-scale reproductive attacks We should aim to embrace randomization Similar solutions: Address space randomization Instruction set randomization Data randomization In a similar spirit, let s examine data structure layout randomization (DSLR)
44 Randomizable Data Structures Mitigation steps Data structures are randomizable if and only if it is not exposed to external programs or does not violate gcc syntax or programmer intention We ask the programmer to indicate when a data structure is randomizable
45 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
46 A Simple Approach Reorder Data Structure Layout Pretty straightforward Given n structures each with m fields, this gives (m!) n program combinations. Is it actually that simple?
47 A Simple Approach Reorder Data Structure Layout Pretty straightforward Given n structures each with m fields, this gives (m!) n program combinations. Is it actually that simple? Identical Layouts This occurs when reordering the data structure produces an isomorphic data structure Example: a data structure containing int followed by int is not changed by reordering Solution? Insert junk data into the data structure
48 Implementation with gcc Possible places to do randomization 1 Abstract Syntax Tree (AST) 2 GIMPLE (representation with at most three operands) 3 Static single assignment (SSA) tree representation 4 Register-transfer language (RTL) tree
49 Implementation with gcc Possible places to do randomization 1 Abstract Syntax Tree (AST) 2 GIMPLE (representation with at most three operands) 3 Static single assignment (SSA) tree representation 4 Register-transfer language (RTL) tree Reasons for choosing AST AST retains a lot of program source code information AST is easier to understand and more convenient to modify AST occurs before gcc has determined layout of data structures, so we can reorder data structure members without computing specific memory addresses.
50 Which Data Structures to Randomize Our choices struct class Function stack variables
51 Example 5 Original Randomized test struct test { int a; char b; int *c; }; a test b c b G G c a (a) (b) (c) Fig. 1: Example of data structure randomization: (a) the original definition, (b) the original AST, and (c) the randomized AST. The G nodes represent the garbage fields added to the data structure. The dotted arrows represent the order of the fields. ing time will be reordered differently (with different randomization seeds); and (2) the same data structure at different project building times will be reordered differently. We use project building time instead of compile time because when building a project, gcc usually compiles each file individually (as specified in the
52 DSLR Implementation in GCC Four Key Components 1 Keyword Recognizer 2 Re-orderer 3 Padder 4 Randomization Driver
53 Keyword Recognizer A few new keywords are introduced: 1 obfuscate - This lets gcc know that a data structure may be randomized. It is followed by some specific options. 2 reorder - This tells gcc to reorder the elements in a structure. 3 garbage - This tells gcc to insert garbage into the data structure.
54 Implementation Details Reorder Padder When generating AST for a program, gcc chains members of a data structure to a list. When finished, the reorder keyword is encountered and it uses a seed from the randomization driver to reorders the chain. Carried out in the process as reordering Size of garbage items is determined by randomization driver
55 Implementation Details Randomization Driver We need to be able to ensure randomization consistency across a single project build Stores a random value (either from project build file or from the glibc function random then stored) and a count of the number of randomized fields. Reordering is done with a recursive Knuth shuffle Padding selects fields from sizes in the set 1, 2, 4, 8.
56 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
57 Empirical Analyses Effectiveness Apply to goodware and malware Goodware includes programs such as openssh Malware includes programs from offensive computing and VX Heavens Achieves a code difference between 3 and 17%. Rootkit Defense Used DSLR to randomize the task_struct data structure in the version Linux kernel Prevented 4 out of 6 rootkits tested
58 Empirical Analyses Evaluation against Laika One small problem: Laika s released version only works on Windows binaries, DSLR uses gcc Had to manually execute the randomization methods Tried 3 Windows programs: agobot, 7-zip, and notepad. Laika could not process notepad, so proceeded with only the other two Worked well with agobot (used previously to demonstrate Laika) 7-zip was not quite as effective. Possible reasons include that 7-zip has lots of unrandomizable structures and that high library code usage. However, data structure analysis might not be a great idea when library usage is so high
59 Empirical Analyses Performance Overhead Caused mainly by random value lookup, field count, and field reordering On average, only around 2% performance overhead to gcc Some applications were actually faster, possibly due to data locality improvements
60 Limitations and Future Work Does not support other languages such as Java, as it uses gcc at a language specific AST level. Randomizability of a data structure cannot be determined automatically Could use some other techniques such as struct and class splitting
61 Outline 1 Digging for Data Structures Motivations Introduction Laika Details Conclusion 2 Polymorphic Software with DSLR Introduction Technical Challenges Evaluation 3 Concluding Remarks
62 Concluding Remarks Any questions?
63 References Cozzie, Anthony and Stratton, Frank and Xue, Hui and King, Samuel T. Digging for data structures. Proceedings of the 8th USENIX conference on Operating systems design and implementation Lin, Zhiqiang and Riley, Ryan D. and Xu, Dongyan Polymorphing Software by Randomizing Data Structure Layout. Proceedings of the 6th International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment.
Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc()
CS61: Systems Programming and Machine Organization Harvard University, Fall 2009 Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc() Prof. Matt Welsh October 6, 2009 Topics for today Dynamic
7.1 Our Current Model
Chapter 7 The Stack In this chapter we examine what is arguably the most important abstract data type in computer science, the stack. We will see that the stack ADT and its implementation are very simple.
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
Software security. Buffer overflow attacks SQL injections. Lecture 11 EIT060 Computer Security
Software security Buffer overflow attacks SQL injections Lecture 11 EIT060 Computer Security Buffer overflow attacks Buffer overrun is another common term Definition A condition at an interface under which
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation. Mathias Payer, ETH Zurich
I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation Mathias Payer, ETH Zurich Motivation Applications often vulnerable to security exploits Solution: restrict application
Jonathan Worthington Scarborough Linux User Group
Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.
Big Data & Scripting Part II Streaming Algorithms
Big Data & Scripting Part II Streaming Algorithms 1, Counting Distinct Elements 2, 3, counting distinct elements problem formalization input: stream of elements o from some universe U e.g. ids from a set
Memory Allocation. Static Allocation. Dynamic Allocation. Memory Management. Dynamic Allocation. Dynamic Storage Allocation
Dynamic Storage Allocation CS 44 Operating Systems Fall 5 Presented By Vibha Prasad Memory Allocation Static Allocation (fixed in size) Sometimes we create data structures that are fixed and don t need
The following themes form the major topics of this chapter: The terms and concepts related to trees (Section 5.2).
CHAPTER 5 The Tree Data Model There are many situations in which information has a hierarchical or nested structure like that found in family trees or organization charts. The abstraction that models hierarchical
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
Unix Security Technologies. Pete Markowsky <peterm[at] ccs.neu.edu>
Unix Security Technologies Pete Markowsky What is this about? The goal of this CPU/SWS are: Introduce you to classic vulnerabilities Get you to understand security advisories Make
Semester Review. CSC 301, Fall 2015
Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16
Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz [email protected] Assistant: Iulian Dragos INR 321, 368 64
Email Spam Detection Using Customized SimHash Function
International Journal of Research Studies in Computer Science and Engineering (IJRSCSE) Volume 1, Issue 8, December 2014, PP 35-40 ISSN 2349-4840 (Print) & ISSN 2349-4859 (Online) www.arcjournals.org Email
Linux Driver Devices. Why, When, Which, How?
Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Agenda. Taxonomy of Botnet Threats. Background. Summary. Background. Taxonomy. Trend Micro Inc. Presented by Tushar Ranka
Taxonomy of Botnet Threats Trend Micro Inc. Presented by Tushar Ranka Agenda Summary Background Taxonomy Attacking Behavior Command & Control Rallying Mechanisms Communication Protocols Evasion Techniques
Lecture 9. Semantic Analysis Scoping and Symbol Table
Lecture 9. Semantic Analysis Scoping and Symbol Table Wei Le 2015.10 Outline Semantic analysis Scoping The Role of Symbol Table Implementing a Symbol Table Semantic Analysis Parser builds abstract syntax
Intrusion Detection Systems and Supporting Tools. Ian Welch NWEN 405 Week 12
Intrusion Detection Systems and Supporting Tools Ian Welch NWEN 405 Week 12 IDS CONCEPTS Firewalls. Intrusion detection systems. Anderson publishes paper outlining security problems 1972 DNS created 1984
2) Write in detail the issues in the design of code generator.
COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage
Eugene Tsyrklevich. Ozone HIPS: Unbreakable Windows
Eugene Tsyrklevich Eugene Tsyrklevich has an extensive security background ranging from designing and implementing Host Intrusion Prevention Systems to training people in research, corporate, and military
General Introduction
Managed Runtime Technology: General Introduction Xiao-Feng Li ([email protected]) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime
Parasitics: The Next Generation. Vitaly Zaytsev Abhishek Karnik Joshua Phillips
Parasitics: The Next Generation. Vitaly Zaytsev Abhishek Karnik Joshua Phillips Agenda Overview W32/Xpaj analysis Overview of a virtual machine Software protection trends W32/Winemmem analysis W32/Induc
Polyglot: Automatic Extraction of Protocol Message Format using Dynamic Binary Analysis
Polyglot: Automatic Extraction of Protocol Message Format using Dynamic Binary Analysis Juan Caballero, Heng Yin, Zhenkai Liang Carnegie Mellon University Dawn Song Carnegie Mellon University & UC Berkeley
Streaming Lossless Data Compression Algorithm (SLDC)
Standard ECMA-321 June 2001 Standardizing Information and Communication Systems Streaming Lossless Data Compression Algorithm (SLDC) Phone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: http://www.ecma.ch
umps software development
Laboratorio di Sistemi Operativi Anno Accademico 2006-2007 Software Development with umps Part 2 Mauro Morsiani Software development with umps architecture: Assembly language development is cumbersome:
MapReduce. MapReduce and SQL Injections. CS 3200 Final Lecture. Introduction. MapReduce. Programming Model. Example
MapReduce MapReduce and SQL Injections CS 3200 Final Lecture Jeffrey Dean and Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. OSDI'04: Sixth Symposium on Operating System Design
Shellshock. Oz Elisyan & Maxim Zavodchik
Shellshock By Oz Elisyan & Maxim Zavodchik INTRODUCTION Once a high profile vulnerability is released to the public, there will be a lot of people who will use the opportunity to take advantage on vulnerable
COSC 6374 Parallel Computation. Parallel I/O (I) I/O basics. Concept of a clusters
COSC 6374 Parallel I/O (I) I/O basics Fall 2012 Concept of a clusters Processor 1 local disks Compute node message passing network administrative network Memory Processor 2 Network card 1 Network card
CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study
CS 377: Operating Systems Lecture 25 - Linux Case Study Guest Lecturer: Tim Wood Outline Linux History Design Principles System Overview Process Scheduling Memory Management File Systems A review of what
Testing for Security
Testing for Security Kenneth Ingham September 29, 2009 1 Course overview The threat that security breaches present to your products and ultimately your customer base can be significant. This course is
Hydra. Advanced x86 polymorphic engine. Incorporates existing techniques and introduces new ones in one package. All but one feature OS-independent
Hydra Advanced x86 polymorphic engine Incorporates existing techniques and introduces new ones in one package All but one feature OS-independent Random register operations Different synonymous instructions
Design: Metadata Cache Logging
Dana Robinson HDF5 THG 2014-02-24 Document Version 4 As an aid for debugging, the existing ad-hoc metadata cache logging functionality will be made more robust. The improvements will include changes to
Secure Programming with Static Analysis. Jacob West [email protected]
Secure Programming with Static Analysis Jacob West [email protected] Software Systems that are Ubiquitous Connected Dependable Complexity U Unforeseen Consequences Software Security Today The line between
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
1 Introduction. 2 An Interpreter. 2.1 Handling Source Code
1 Introduction The purpose of this assignment is to write an interpreter for a small subset of the Lisp programming language. The interpreter should be able to perform simple arithmetic and comparisons
Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)
Unit- I Introduction to c Language: C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating
Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI)
Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI) SYSTEM V APPLICATION BINARY INTERFACE Motorola M68HC05, M68HC08, M68HC11, M68HC12, and M68HC16 Processors Supplement Version 2.0
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead
Technical paper review. Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald.
Technical paper review Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald Garvit Pahal Indian Institute of Technology, Kanpur October 28, 2014 Garvit
CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS
66 CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS 5.1 INTRODUCTION In this research work, two new techniques have been proposed for addressing the problem of SQL injection attacks, one
Classifying Large Data Sets Using SVMs with Hierarchical Clusters. Presented by :Limou Wang
Classifying Large Data Sets Using SVMs with Hierarchical Clusters Presented by :Limou Wang Overview SVM Overview Motivation Hierarchical micro-clustering algorithm Clustering-Based SVM (CB-SVM) Experimental
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
File Management. COMP3231 Operating Systems. Kevin Elphinstone. Tanenbaum, Chapter 4
File Management Tanenbaum, Chapter 4 COMP3231 Operating Systems Kevin Elphinstone 1 Outline Files and directories from the programmer (and user) perspective Files and directories internals the operating
Physical Data Organization
Physical Data Organization Database design using logical model of the database - appropriate level for users to focus on - user independence from implementation details Performance - other major factor
Helping you avoid stack overflow crashes!
Helping you avoid stack overflow crashes! One of the toughest (and unfortunately common) problems in embedded systems is stack overflows and the collateral corruption that it can cause. As a result, we
Chapter 12 File Management
Operating Systems: Internals and Design Principles, 6/E William Stallings Chapter 12 File Management Dave Bremer Otago Polytechnic, N.Z. 2008, Prentice Hall Roadmap Overview File organisation and Access
Chapter 12 File Management. Roadmap
Operating Systems: Internals and Design Principles, 6/E William Stallings Chapter 12 File Management Dave Bremer Otago Polytechnic, N.Z. 2008, Prentice Hall Overview Roadmap File organisation and Access
Obfuscation: know your enemy
Obfuscation: know your enemy Ninon EYROLLES [email protected] Serge GUELTON [email protected] Prelude Prelude Plan 1 Introduction What is obfuscation? 2 Control flow obfuscation 3 Data flow
Data Structure with C
Subject: Data Structure with C Topic : Tree Tree A tree is a set of nodes that either:is empty or has a designated node, called the root, from which hierarchically descend zero or more subtrees, which
LASTLINE WHITEPAPER. Why Anti-Virus Solutions Based on Static Signatures Are Easy to Evade
LASTLINE WHITEPAPER Why Anti-Virus Solutions Based on Static Signatures Are Easy to Evade Abstract Malicious code is an increasingly important problem that threatens the security of computer systems. The
ECS 165B: Database System Implementa6on Lecture 2
ECS 165B: Database System Implementa6on Lecture 2 UC Davis, Spring 2011 Por6ons of slides based on earlier ones by Raghu Ramakrishnan, Johannes Gehrke, Jennifer Widom, Bertram Ludaescher, and Michael Gertz.
SkyRecon Cryptographic Module (SCM)
SkyRecon Cryptographic Module (SCM) FIPS 140-2 Documentation: Security Policy Abstract This document specifies the security policy for the SkyRecon Cryptographic Module (SCM) as described in FIPS PUB 140-2.
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
Memory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example
Announcements Memory management Assignment 2 posted, due Friday Do two of the three problems Assignment 1 graded see grades on CMS Lecture 7 CS 113 Spring 2008 2 Safe user input If you use scanf(), include
Passive Vulnerability Detection
Page 1 of 5 Passive Vulnerability Detection "Techniques to passively find network security vulnerabilities" Ron Gula [email protected] September 9, 1999 Copyright 1999 Network Security Wizards
Fast Arithmetic Coding (FastAC) Implementations
Fast Arithmetic Coding (FastAC) Implementations Amir Said 1 Introduction This document describes our fast implementations of arithmetic coding, which achieve optimal compression and higher throughput by
Lecture 1: Data Storage & Index
Lecture 1: Data Storage & Index R&G Chapter 8-11 Concurrency control Query Execution and Optimization Relational Operators File & Access Methods Buffer Management Disk Space Management Recovery Manager
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
Source Code Security Analysis Tool Functional Specification Version 1.0
Special Publication 500-268 Source Code Security Analysis Tool Functional Specification Version 1.0 Paul E. Black Michael Kass Michael Koo Software Diagnostics and Conformance Testing Division Information
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
Lecture 18-19 Data Types and Types of a Language
Lecture 18-19 Data Types and Types of a Language April 29, 2014 Data Types and Types of a Language Data, Data Types and Types Type: Generalities Type Systems and Type Safety Type Equivalence, Coercion
Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science [email protected] Names, Bindings, and Scopes A name is a symbolic identifier used
Host-based Intrusion Prevention System (HIPS)
Host-based Intrusion Prevention System (HIPS) White Paper Document Version ( esnhips 14.0.0.1) Creation Date: 6 th Feb, 2013 Host-based Intrusion Prevention System (HIPS) Few years back, it was relatively
Programming Language Pragmatics
Programming Language Pragmatics THIRD EDITION Michael L. Scott Department of Computer Science University of Rochester ^ШШШШШ AMSTERDAM BOSTON HEIDELBERG LONDON, '-*i» ЩЛ< ^ ' m H NEW YORK «OXFORD «PARIS»SAN
Data Mining For Intrusion Detection Systems. Monique Wooten. Professor Robila
Data Mining For Intrusion Detection Systems Monique Wooten Professor Robila December 15, 2008 Wooten 2 ABSTRACT The paper discusses the use of data mining techniques applied to intrusion detection systems.
Departamento de Investigación. LaST: Language Study Tool. Nº 143 Edgard Lindner y Enrique Molinari Coordinación: Graciela Matich
Departamento de Investigación LaST: Language Study Tool Nº 143 Edgard Lindner y Enrique Molinari Coordinación: Graciela Matich Noviembre 2005 Para citar este documento: Lindner, Edgard; Enrique Molinari,
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
Review and Exploit Neglected Attack Surface in ios 8. Tielei Wang, Hao Xu, Xiaobo Chen of TEAM PANGU
Review and Exploit Neglected Attack Surface in ios 8 Tielei Wang, Hao Xu, Xiaobo Chen of TEAM PANGU BlackHat 2015 Agenda ios Security Background Review of Attack Surfaces Fuzz More IOKit and MIG System
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
A new Approach for Intrusion Detection in Computer Networks Using Data Mining Technique
A new Approach for Intrusion Detection in Computer Networks Using Data Mining Technique Aida Parbaleh 1, Dr. Heirsh Soltanpanah 2* 1 Department of Computer Engineering, Islamic Azad University, Sanandaj
PROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON
PROBLEM SOLVING WITH SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON Addison Wesley Boston San Francisco New York London
Question 2 Naïve Bayes (16 points)
Question 2 Naïve Bayes (16 points) About 2/3 of your email is spam so you downloaded an open source spam filter based on word occurrences that uses the Naive Bayes classifier. Assume you collected the
TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION
TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION Theodore S. Norvell and Michael P. Bruce-Lockhart Electrical and Computer Engineering Faculty of Engineering and Applied Science Memorial University
CS 300 Data Structures Syllabus - Fall 2014
CS 300 Data Structures Syllabus - Fall 2014 Catalog Description Data structures are fundamental to advanced, efficient programming. Topics including asymptotic analysis, stacks, queues, linked lists, trees,
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
DATA OBFUSCATION. What is data obfuscation?
DATA OBFUSCATION What data obfuscation? Data obfuscations break the data structures used in the program and encrypt literals. Th method includes modifying inheritance relations, restructuring arrays, etc.
1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
Computer Security DD2395
Computer Security DD2395 http://www.csc.kth.se/utbildning/kth/kurser/dd2395/dasakh11/ Fall 2011 Sonja Buchegger [email protected] Lecture 7 Malicious Software DD2395 Sonja Buchegger 1 Course Admin Lab 2: - prepare
CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions
CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly
Comprehensive Malware Detection with SecurityCenter Continuous View and Nessus. February 3, 2015 (Revision 4)
Comprehensive Malware Detection with SecurityCenter Continuous View and Nessus February 3, 2015 (Revision 4) Table of Contents Overview... 3 Malware, Botnet Detection, and Anti-Virus Auditing... 3 Malware
Krishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C
Tutorial#1 Q 1:- Explain the terms data, elementary item, entity, primary key, domain, attribute and information? Also give examples in support of your answer? Q 2:- What is a Data Type? Differentiate
1/20/2016 INTRODUCTION
INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We
Chapter 2: Elements of Java
Chapter 2: Elements of Java Basic components of a Java program Primitive data types Arithmetic expressions Type casting. The String type (introduction) Basic I/O statements Importing packages. 1 Introduction
. 1/ CHAPTER- 4 SIMULATION RESULTS & DISCUSSION CHAPTER 4 SIMULATION RESULTS & DISCUSSION 4.1: ANT COLONY OPTIMIZATION BASED ON ESTIMATION OF DISTRIBUTION ACS possesses
MODERN malware use a variety of techniques to cause
72 IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY, VOL. 9, NO. 1, JANUARY 2014 Data-Centric OS Kernel Malware Characterization Junghwan Rhee, Member, IEEE, Ryan Riley, Member, IEEE, Zhiqiang Lin,
Bypassing Browser Memory Protections in Windows Vista
Bypassing Browser Memory Protections in Windows Vista Mark Dowd & Alexander Sotirov [email protected] [email protected] Setting back browser security by 10 years Part I: Introduction Thesis Introduction
