Академический Документы
Профессиональный Документы
Культура Документы
1
Jason Jones
Sr Sec Research Analyst @ Arbor
ex-TippingPoint ASI
Interests / Research
DDoS
Botnet tracking
Malware Clustering
Bug hunting
RE Automation
2
Jasiel Spelman
3
So what are these
GraphDBs you speak of?
Very much like it sounds
Database designed to store vertices, edges, and properties attached to those edges
Graph traversals go from one vertex and follow edges until a condition is met
4
GraphDB vs RDBMS
RDBMS == Relational Database Management System
5
GraphDB vs RDBMS
Graphs initially lost against RDBMS
Loosely structured
6
Maltego
Created by Imperva
7
TitanGraph
Made by Aurelius
MSHTML/MSO Disassembly?
JJos favorite
8
Gremlin Query Language
Simple query language to traverse query graph paths
Examples:
gremlin> hercules.out('battled').map
==>{name=nemean, type=monster}
==>{name=hydra, type=monster}
==>{name=cerberus, type=monster}
gremlin> hercules.outE('battled').has('time',T.gt,1).inV.name
==>hydra
==>cerberus
gremlin>
pluto.out('brother').as('god').out('lives').as('place').select{it.name}
==>[god:jupiter, place:sky]
==>[god:neptune, place:sea]
9
Spark GraphX
Alternative to Hadoop
10
Spark GraphX Features
Aims to merge data parallel and graph parallel
PageRank
Connected Components
Triangle Counting
11
Tinkerpop
Blueprints - Common interface
Pipes - Dataflow
12
Neo4J
Pluggable architecture
Gremlin supported
Very mature
13
Cypher Query Language
Very similar to SQL
14
BinNavi
Java Client
15
IDA Pro
Everyones favorite
disassembler
16
How does this relate to
reversing?
IDA Pro was the last for a reason
CALLs/JMPs as edges
17
Path finding/traversals
18
Path finding (cont.)
!
19
20
Path finding (cont.)
Overly simplistic example
21
Taint Tracing
Idea courtesy of Stephen Ridley (s7ephen) via twitter
conversation
22
Code identification
Similar idea to BinDiff
23
Mutational Fuzzing
24
FileFormat PoC - MP4
Titan doesnt have built-in visualization
25
Collaboration / Sharing
Seems to still be an unsolved problem, though many have tried
Use IDA-loading code to store all relevant IDB information into the graph
Load in comments, names, structs, enums, etc. into local IDA from graph
Useful when
26
Joern
Uses Neo4j
27
Joern
Taint arguments to functions
Variable uses/definitions
28
What's next?
Jasiel
Jason
Graph comparison
29
Wrap-Up
30
Questions?
31
References
http://thinkaurelius.github.io/titan/
http://thinkaurelius.com/blog/
http://www.neo4j.org/
http://www.orientechnologies.com/orientdb/
https://spark.apache.org/docs/1.0.0/graphx-programming-guide.html
http://mlsec.org/joern/
http://www.tinkerpop.com/docs/current/
32