SlideShare a Scribd company logo
1 of 27
Download to read offline
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u
Milan Zavoral
vedouc´ı: Ing. Peter Matula
Proˇc analyz´ator spustiteln´ych soubor˚u?
zad´an´ı: rozˇs´ıˇrit a vylepˇsit
existuj´ıc´ı n´astroj
projekt Lissom (FIT VUT)
informace pro dekompilaci
souborov´y form´at
architektura
vstupn´ı bod (entry point)
pouˇzit´y pˇrekladaˇc nebo packer
informace o pouˇzit´em pˇrekladaˇci ˇci packeru
unpacking
funkce main, instrukˇcn´ı idiomy
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 2 / 8
Proˇc analyz´ator spustiteln´ych soubor˚u?
zad´an´ı: rozˇs´ıˇrit a vylepˇsit
existuj´ıc´ı n´astroj
projekt Lissom (FIT VUT)
informace pro dekompilaci
souborov´y form´at
architektura
vstupn´ı bod (entry point)
pouˇzit´y pˇrekladaˇc nebo packer
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 2 / 8
Proˇc analyz´ator spustiteln´ych soubor˚u?
zad´an´ı: rozˇs´ıˇrit a vylepˇsit
existuj´ıc´ı n´astroj
projekt Lissom (FIT VUT)
informace pro dekompilaci
souborov´y form´at
architektura
vstupn´ı bod (entry point)
pouˇzit´y pˇrekladaˇc nebo packer
informace o pouˇzit´em pˇrekladaˇci ˇci packeru
unpacking
funkce main, instrukˇcn´ı idiomy
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 2 / 8
Existuj´ıc´ı n´astroje
objdump
readelf
PE.Explorer
efd
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 3 / 8
Existuj´ıc´ı n´astroje
objdump
readelf
PE.Explorer
efd
GNU/GPL
GNU/GPL, ELF
uzavˇren´y k´od (x86), PE
uzavˇren´y k´od (x86)
spoleˇcn´e nedetekuj´ı pouˇzit´y pˇrekladaˇc (packer)
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 3 / 8
Nov´e souborov´e form´aty
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 4 / 8
Nov´e souborov´e form´aty
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 4 / 8
Rychlostn´ı optimalizace
profilov´an´ı (gprof)
90% ˇcasu se tr´av´ı v 1 funkci (vyhled´av´an´ı v signatur´ach)
0
10
20
30
40
50
60
70
80
fileinfo 1.0 fileinfo 2.0
Čas(min)
Doba vykonávání
∼ 5500 testovac´ıch soubor˚u
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 5 / 8
Heuristick´a detekce
polymorfn´ı packery
1C 1C 26 08 3E B0 0F 6D FF 6D F5 35 BF C7 C0
74 08 52 55 66 C1 C4 10 5D 5A 51 51 0A C9 59
51 0F B6 C9 77 05 25 FF FF FF FF F8 E2 F3 59
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 6 / 8
Heuristick´a detekce
polymorfn´ı packery
1C 1C 26 08 3E B0 0F 6D FF 6D F5 35 BF C7 C0
74 08 52 55 66 C1 C4 10 5D 5A 51 51 0A C9 59
51 0F B6 C9 77 05 25 FF FF FF FF F8 E2 F3 59
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --
if( file_format == PE &&
target_architecture == INTEL X86 &&
EP_file_offset >= 0x400 &&
EP_file_offset <= 0x1400 &&
data_directories[1].size == 0x1000 &&
sections[0].name == ".text" &&
sections[1].name == ".data" &&
sections[2].name == ".idata" &&
sections[2].size == 0x200)
{
return "Morphine 1.2";
}
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 6 / 8
Experiment´aln´ı v´ysledky
PE
0
20
40
60
80
100
fileinfo 2.0 RDG fileinfo 1.0 PEiD PID Exeinfo PEDetect FastScan DiE
Přesnost(%)
Detekce názvu (např. UPX)
Detekce hlavní verze (např. UPX 3.xx)
Detekce přesné verze (např. UPX 3.05)
ELF
0
20
40
60
80
100
fileinfo 2.0 DiE fileinfo 1.0
Přesnost(%)
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 7 / 8
Z´avˇer
rozˇs´ıˇren´ı poˇctu z´ısk´avan´ych informac´ı
architekturnˇe specifick´e anal´yzy
nov´e souborov´e form´aty
rychlostn´ı optimalizace
heuristiky
experiment´aln´ı v´ysledky
J. Kˇroustek, P. Matula, D. Kol´aˇr, and M. Zavoral
Advanced Preprocessing of Binary Executable Files and its Usage in
Retargetable Decompilation
In: International Journal on Advances in Software, 2014
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 8 / 8
Z´avˇer
rozˇs´ıˇren´ı poˇctu z´ısk´avan´ych informac´ı
architekturnˇe specifick´e anal´yzy
nov´e souborov´e form´aty
rychlostn´ı optimalizace
heuristiky
experiment´aln´ı v´ysledky
J. Kˇroustek, P. Matula, D. Kol´aˇr, and M. Zavoral
Advanced Preprocessing of Binary Executable Files and its Usage in
Retargetable Decompilation
In: International Journal on Advances in Software, 2014
decompiler.fit.vutbr.cz/fileinfo
Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 8 / 8
Ot´azky oponenta
”
Pri detekci´ı viacer´ych prekladaˇcov s´u relevantnejˇsie tie, ktor´e boli
detekovan´e na z´aklade heurist´ık. Preˇco s´u detekcie pomocou heurist´ık
povaˇzovan´e za viac relevantn´e ako detekcie pomocou signat´ur?“
experiment´aln´ı v´ysledky
nˇekolik pravidel pro ˇrazen´ı
zdroj
shoda v n´azvu n´astroje
kompar´ator verz´ı
”
V rozsiahlej datab´aze signat´ur mˆoˇze doch´adzat’ ku kol´ızi´am medzi
jednotliv´ymi signat´urami. Ako by ste tento probl´em rieˇsili?“
tˇr´ıdˇen´ı signatur
detektor koliz´ı (NtCore PE Detective, vlastn´ı detektor)
stromy
Ot´azky oponenta
”
Pri detekci´ı viacer´ych prekladaˇcov s´u relevantnejˇsie tie, ktor´e boli
detekovan´e na z´aklade heurist´ık. Preˇco s´u detekcie pomocou heurist´ık
povaˇzovan´e za viac relevantn´e ako detekcie pomocou signat´ur?“
experiment´aln´ı v´ysledky
nˇekolik pravidel pro ˇrazen´ı
zdroj
shoda v n´azvu n´astroje
kompar´ator verz´ı
”
V rozsiahlej datab´aze signat´ur mˆoˇze doch´adzat’ ku kol´ızi´am medzi
jednotliv´ymi signat´urami. Ako by ste tento probl´em rieˇsili?“
tˇr´ıdˇen´ı signatur
detektor koliz´ı (NtCore PE Detective, vlastn´ı detektor)
stromy
Ot´azky oponenta
”
Pri detekci´ı viacer´ych prekladaˇcov s´u relevantnejˇsie tie, ktor´e boli
detekovan´e na z´aklade heurist´ık. Preˇco s´u detekcie pomocou heurist´ık
povaˇzovan´e za viac relevantn´e ako detekcie pomocou signat´ur?“
experiment´aln´ı v´ysledky
nˇekolik pravidel pro ˇrazen´ı
zdroj
shoda v n´azvu n´astroje
kompar´ator verz´ı
”
V rozsiahlej datab´aze signat´ur mˆoˇze doch´adzat’ ku kol´ızi´am medzi
jednotliv´ymi signat´urami. Ako by ste tento probl´em rieˇsili?“
tˇr´ıdˇen´ı signatur
detektor koliz´ı (NtCore PE Detective, vlastn´ı detektor)
stromy
Z´ısk´avan´e informace
souborov´y form´at
architektura
vstupn´ı bod
pˇrekladaˇc nebo packer
informace z hlaviˇcek
pˇr´ıznaky (flags)
typ souboru
endianita
OS, kontroln´ı souˇcet...
sekce, segmenty
symboly
relokace
dynamick´e sekce (ELF)
adres´aˇre dat (PE)
specifick´e anal´yzy (ARM)
origin´aln´ı jazyk
Form´at signatur
{
" ExePack",
"1.4",
"by 6aHguT",
"000,0FF ,33C08BC0--68---C;",
},
Form´at signatur
{
" ExePack",
"1.4",
"by 6aHguT",
"000,0FF ,33C08BC0--68---C;",
},
nov´y form´at signatur
{
" ExePack",
"1.4",
"by 6aHguT",
0,
255,
"33C08BC0 --68---C;",
},
Pouˇzit´e n´astroje a metodiky
C++
knihovny
PeLib
ELFIO
Codasip SDK
libdwarf
TinyXml
OllyDbg (reverzn´ı inˇzen´yrstv´ı)
Diagram tˇr´ıd UML
Experiment´aln´ı mˇeˇren´ı ´uspˇeˇsnosti detekce
n´astroj
jm´eno verze poˇcet signatur
fileinfo 2.0 2224
RDG Packer Detector 0.7.2 ?
fileinfo 1.0 2181
PEiD 0.95 2446
ProtectionID (PID) 0.6.5.5 543
Exeinfo PE 0.0.3.4 7794
NtCore PE Detective 1.2.1.1 2806
FastScanner 3.0 3437
Detect It Easy (DiE) 0.81 ?
Instrukˇcn´ı idiomy
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
printf("%dn",
-(a >= 0));
return 0;
}
Instrukˇcn´ı idiomy
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
printf("%dn",
-(a >= 0));
return 0;
}
# include <stdint.h>
# include <stdio.h>
int main()
{
int apple = 0;
scanf("%d", &apple);
printf("%dn",
-(apple >> 31 ^ 1));
return 0;
}
J. Kˇroustek and F. Pokorn´y
Reconstruction of Instruction Idioms in a Retargetable Decompiler
In: WAPL, Krak´ow, PL, 2013
Uk´azka v´ystupu
Input file : fileName
File format : ELF
File class : 64-bit
File type : Executable file
Architecture : x86 -64
Endianness : Little endian
Entry point address : 0x405d10
Entry point offset : 0x5d10
Entry point section index: 12
Entry point section name : .text
Bytes on entry point : 554889 e541554c...
Detected compiler/packer : GHC (7.6.3)
Original language : Haskell
Uk´azka v´ystupu
i type flags offset vaddr memsize align
-------------------------------------------------------------------------------
i - index
type - type of segment
flags - segment flags
offset - offset in file
vaddr - virtual address in memory
memsize - size in memory
align - alignment in memory and in file
-------------------------------------------------------------------------------
i type flags offset vaddr memsize align
-------------------------------------------------------------------------------
0 PHDR rx 0 x00040 0 x400040 0x001c0 0 x000008
1 INTERP r 0 x00200 0 x400200 0x00015 0 x000001
2 LOADABLE rx 0 0 x400000 0xabfcc 0 x200000
3 LOADABLE rw 0 xac000 0 x6ac000 0x15488 0 x200000
4 DYNAMIC rw 0 xac030 0 x6ac030 0x001d0 0 x000008
5 NOTE r 0 x00218 0 x400218 0x00018 0 x000004
6 OS - specific r 0 xa5898 0 x4a5898 0x0138c 0 x000004
7 OS - specific rwx 0 0 0 0 x000010
-------------------------------------------------------------------------------
Flags:
r - readable
x - executable
w - writable
Uk´azka v´ystupu
i type flags offset vaddr memsize align
-------------------------------------------------------------------------------
i - index
type - type of segment
flags - segment flags
offset - offset in file
vaddr - virtual address in memory
memsize - size in memory
align - alignment in memory and in file
-------------------------------------------------------------------------------
i type flags offset vaddr memsize align
-------------------------------------------------------------------------------
0 PHDR rx 0 x00040 0 x400040 0x001c0 0 x000008
1 INTERP r 0 x00200 0 x400200 0x00015 0 x000001
2 LOADABLE rx 0 0 x400000 0xabfcc 0 x200000
3 LOADABLE rw 0 xac000 0 x6ac000 0x15488 0 x200000
4 DYNAMIC rw 0 xac030 0 x6ac030 0x001d0 0 x000008
5 NOTE r 0 x00218 0 x400218 0x00018 0 x000004
6 OS - specific r 0 xa5898 0 x4a5898 0x0138c 0 x000004
7 OS - specific rwx 0 0 0 0 x000010
-------------------------------------------------------------------------------
Flags :
r - readable
x - executable
w - writable

More Related Content

Similar to Rozšíření nástroje pro analýzu spustitelných souborů

02 prez3(datové sítě)
02 prez3(datové sítě)02 prez3(datové sítě)
02 prez3(datové sítě)olc_user
 
Slovak Sun Training Day 2010 - OpenSolaris
Slovak Sun Training Day 2010 - OpenSolarisSlovak Sun Training Day 2010 - OpenSolaris
Slovak Sun Training Day 2010 - OpenSolarisMartin Cerveny
 
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS SolarisOracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS SolarisMartin Cerveny
 
Loskot_Bachelor_Thesis
Loskot_Bachelor_ThesisLoskot_Bachelor_Thesis
Loskot_Bachelor_ThesisMartin Loskot
 
Slasti Strasti Propasti Windows Mobile
Slasti Strasti Propasti Windows MobileSlasti Strasti Propasti Windows Mobile
Slasti Strasti Propasti Windows MobileRENESTEIN
 
Postgresql na EXT3/4, XFS, BTRFS a ZFS
Postgresql na EXT3/4, XFS, BTRFS a ZFSPostgresql na EXT3/4, XFS, BTRFS a ZFS
Postgresql na EXT3/4, XFS, BTRFS a ZFSTomas Vondra
 
2011 X33EJA Výkonové Aspekty JEE Monitoring a optimalizace
2011 X33EJA Výkonové Aspekty JEE Monitoring a optimalizace2011 X33EJA Výkonové Aspekty JEE Monitoring a optimalizace
2011 X33EJA Výkonové Aspekty JEE Monitoring a optimalizaceMartin Ptáček
 
Polytematický strukturovaný heslář
Polytematický strukturovaný heslářPolytematický strukturovaný heslář
Polytematický strukturovaný heslářCtibor Škuta
 
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v PrazeOracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v PrazeMarketingArrowECS_CZ
 
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOT
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOTMikro­kontrolér s Wi-Fi za $3! nejen pro IOT
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOTAdam Hořčica
 
MicroPython IoT vlaxa
MicroPython IoT vlaxaMicroPython IoT vlaxa
MicroPython IoT vlaxaVladan Laxa
 
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEEMartin Ptáček
 
Výkonnostní archeologie
Výkonnostní archeologieVýkonnostní archeologie
Výkonnostní archeologieTomas Vondra
 
Bloková struktura 5adičů8051
Bloková struktura 5adičů8051Bloková struktura 5adičů8051
Bloková struktura 5adičů8051olc_user
 
Czech and Slovak Sun Training Day 2007 - Solaris
Czech and Slovak Sun Training Day 2007 - SolarisCzech and Slovak Sun Training Day 2007 - Solaris
Czech and Slovak Sun Training Day 2007 - SolarisMartin Cerveny
 
Software pro čipové karty
Software pro čipové kartySoftware pro čipové karty
Software pro čipové kartyOKsystem
 
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v PrazeOracle Exadata X5-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v PrazeMarketingArrowECS_CZ
 
Teorie testy1
Teorie testy1Teorie testy1
Teorie testy1dejfbart
 
Odborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileOdborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileProfinit
 

Similar to Rozšíření nástroje pro analýzu spustitelných souborů (20)

02 prez3(datové sítě)
02 prez3(datové sítě)02 prez3(datové sítě)
02 prez3(datové sítě)
 
Slovak Sun Training Day 2010 - OpenSolaris
Slovak Sun Training Day 2010 - OpenSolarisSlovak Sun Training Day 2010 - OpenSolaris
Slovak Sun Training Day 2010 - OpenSolaris
 
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS SolarisOracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
 
Loskot_Bachelor_Thesis
Loskot_Bachelor_ThesisLoskot_Bachelor_Thesis
Loskot_Bachelor_Thesis
 
Slasti Strasti Propasti Windows Mobile
Slasti Strasti Propasti Windows MobileSlasti Strasti Propasti Windows Mobile
Slasti Strasti Propasti Windows Mobile
 
Postgresql na EXT3/4, XFS, BTRFS a ZFS
Postgresql na EXT3/4, XFS, BTRFS a ZFSPostgresql na EXT3/4, XFS, BTRFS a ZFS
Postgresql na EXT3/4, XFS, BTRFS a ZFS
 
2011 X33EJA Výkonové Aspekty JEE Monitoring a optimalizace
2011 X33EJA Výkonové Aspekty JEE Monitoring a optimalizace2011 X33EJA Výkonové Aspekty JEE Monitoring a optimalizace
2011 X33EJA Výkonové Aspekty JEE Monitoring a optimalizace
 
Polytematický strukturovaný heslář
Polytematický strukturovaný heslářPolytematický strukturovaný heslář
Polytematický strukturovaný heslář
 
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v PrazeOracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v Praze
 
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOT
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOTMikro­kontrolér s Wi-Fi za $3! nejen pro IOT
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOT
 
MicroPython IoT vlaxa
MicroPython IoT vlaxaMicroPython IoT vlaxa
MicroPython IoT vlaxa
 
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE
 
Výkonnostní archeologie
Výkonnostní archeologieVýkonnostní archeologie
Výkonnostní archeologie
 
Bloková struktura 5adičů8051
Bloková struktura 5adičů8051Bloková struktura 5adičů8051
Bloková struktura 5adičů8051
 
Czech and Slovak Sun Training Day 2007 - Solaris
Czech and Slovak Sun Training Day 2007 - SolarisCzech and Slovak Sun Training Day 2007 - Solaris
Czech and Slovak Sun Training Day 2007 - Solaris
 
EZproxy Seminar Multidata
EZproxy Seminar MultidataEZproxy Seminar Multidata
EZproxy Seminar Multidata
 
Software pro čipové karty
Software pro čipové kartySoftware pro čipové karty
Software pro čipové karty
 
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v PrazeOracle Exadata X5-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v Praze
 
Teorie testy1
Teorie testy1Teorie testy1
Teorie testy1
 
Odborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileOdborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum Mobile
 

Rozšíření nástroje pro analýzu spustitelných souborů

  • 1. Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u Milan Zavoral vedouc´ı: Ing. Peter Matula
  • 2. Proˇc analyz´ator spustiteln´ych soubor˚u? zad´an´ı: rozˇs´ıˇrit a vylepˇsit existuj´ıc´ı n´astroj projekt Lissom (FIT VUT) informace pro dekompilaci souborov´y form´at architektura vstupn´ı bod (entry point) pouˇzit´y pˇrekladaˇc nebo packer informace o pouˇzit´em pˇrekladaˇci ˇci packeru unpacking funkce main, instrukˇcn´ı idiomy Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 2 / 8
  • 3. Proˇc analyz´ator spustiteln´ych soubor˚u? zad´an´ı: rozˇs´ıˇrit a vylepˇsit existuj´ıc´ı n´astroj projekt Lissom (FIT VUT) informace pro dekompilaci souborov´y form´at architektura vstupn´ı bod (entry point) pouˇzit´y pˇrekladaˇc nebo packer Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 2 / 8
  • 4. Proˇc analyz´ator spustiteln´ych soubor˚u? zad´an´ı: rozˇs´ıˇrit a vylepˇsit existuj´ıc´ı n´astroj projekt Lissom (FIT VUT) informace pro dekompilaci souborov´y form´at architektura vstupn´ı bod (entry point) pouˇzit´y pˇrekladaˇc nebo packer informace o pouˇzit´em pˇrekladaˇci ˇci packeru unpacking funkce main, instrukˇcn´ı idiomy Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 2 / 8
  • 6. Existuj´ıc´ı n´astroje objdump readelf PE.Explorer efd GNU/GPL GNU/GPL, ELF uzavˇren´y k´od (x86), PE uzavˇren´y k´od (x86) spoleˇcn´e nedetekuj´ı pouˇzit´y pˇrekladaˇc (packer) Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 3 / 8
  • 7. Nov´e souborov´e form´aty Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 4 / 8
  • 8. Nov´e souborov´e form´aty Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 4 / 8
  • 9. Rychlostn´ı optimalizace profilov´an´ı (gprof) 90% ˇcasu se tr´av´ı v 1 funkci (vyhled´av´an´ı v signatur´ach) 0 10 20 30 40 50 60 70 80 fileinfo 1.0 fileinfo 2.0 Čas(min) Doba vykonávání ∼ 5500 testovac´ıch soubor˚u Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 5 / 8
  • 10. Heuristick´a detekce polymorfn´ı packery 1C 1C 26 08 3E B0 0F 6D FF 6D F5 35 BF C7 C0 74 08 52 55 66 C1 C4 10 5D 5A 51 51 0A C9 59 51 0F B6 C9 77 05 25 FF FF FF FF F8 E2 F3 59 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 6 / 8
  • 11. Heuristick´a detekce polymorfn´ı packery 1C 1C 26 08 3E B0 0F 6D FF 6D F5 35 BF C7 C0 74 08 52 55 66 C1 C4 10 5D 5A 51 51 0A C9 59 51 0F B6 C9 77 05 25 FF FF FF FF F8 E2 F3 59 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- if( file_format == PE && target_architecture == INTEL X86 && EP_file_offset >= 0x400 && EP_file_offset <= 0x1400 && data_directories[1].size == 0x1000 && sections[0].name == ".text" && sections[1].name == ".data" && sections[2].name == ".idata" && sections[2].size == 0x200) { return "Morphine 1.2"; } Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 6 / 8
  • 12. Experiment´aln´ı v´ysledky PE 0 20 40 60 80 100 fileinfo 2.0 RDG fileinfo 1.0 PEiD PID Exeinfo PEDetect FastScan DiE Přesnost(%) Detekce názvu (např. UPX) Detekce hlavní verze (např. UPX 3.xx) Detekce přesné verze (např. UPX 3.05) ELF 0 20 40 60 80 100 fileinfo 2.0 DiE fileinfo 1.0 Přesnost(%) Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 7 / 8
  • 13. Z´avˇer rozˇs´ıˇren´ı poˇctu z´ısk´avan´ych informac´ı architekturnˇe specifick´e anal´yzy nov´e souborov´e form´aty rychlostn´ı optimalizace heuristiky experiment´aln´ı v´ysledky J. Kˇroustek, P. Matula, D. Kol´aˇr, and M. Zavoral Advanced Preprocessing of Binary Executable Files and its Usage in Retargetable Decompilation In: International Journal on Advances in Software, 2014 Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 8 / 8
  • 14. Z´avˇer rozˇs´ıˇren´ı poˇctu z´ısk´avan´ych informac´ı architekturnˇe specifick´e anal´yzy nov´e souborov´e form´aty rychlostn´ı optimalizace heuristiky experiment´aln´ı v´ysledky J. Kˇroustek, P. Matula, D. Kol´aˇr, and M. Zavoral Advanced Preprocessing of Binary Executable Files and its Usage in Retargetable Decompilation In: International Journal on Advances in Software, 2014 decompiler.fit.vutbr.cz/fileinfo Rozˇs´ıˇren´ı n´astroje pro anal´yzu spustiteln´ych soubor˚u 8 / 8
  • 15. Ot´azky oponenta ” Pri detekci´ı viacer´ych prekladaˇcov s´u relevantnejˇsie tie, ktor´e boli detekovan´e na z´aklade heurist´ık. Preˇco s´u detekcie pomocou heurist´ık povaˇzovan´e za viac relevantn´e ako detekcie pomocou signat´ur?“ experiment´aln´ı v´ysledky nˇekolik pravidel pro ˇrazen´ı zdroj shoda v n´azvu n´astroje kompar´ator verz´ı ” V rozsiahlej datab´aze signat´ur mˆoˇze doch´adzat’ ku kol´ızi´am medzi jednotliv´ymi signat´urami. Ako by ste tento probl´em rieˇsili?“ tˇr´ıdˇen´ı signatur detektor koliz´ı (NtCore PE Detective, vlastn´ı detektor) stromy
  • 16. Ot´azky oponenta ” Pri detekci´ı viacer´ych prekladaˇcov s´u relevantnejˇsie tie, ktor´e boli detekovan´e na z´aklade heurist´ık. Preˇco s´u detekcie pomocou heurist´ık povaˇzovan´e za viac relevantn´e ako detekcie pomocou signat´ur?“ experiment´aln´ı v´ysledky nˇekolik pravidel pro ˇrazen´ı zdroj shoda v n´azvu n´astroje kompar´ator verz´ı ” V rozsiahlej datab´aze signat´ur mˆoˇze doch´adzat’ ku kol´ızi´am medzi jednotliv´ymi signat´urami. Ako by ste tento probl´em rieˇsili?“ tˇr´ıdˇen´ı signatur detektor koliz´ı (NtCore PE Detective, vlastn´ı detektor) stromy
  • 17. Ot´azky oponenta ” Pri detekci´ı viacer´ych prekladaˇcov s´u relevantnejˇsie tie, ktor´e boli detekovan´e na z´aklade heurist´ık. Preˇco s´u detekcie pomocou heurist´ık povaˇzovan´e za viac relevantn´e ako detekcie pomocou signat´ur?“ experiment´aln´ı v´ysledky nˇekolik pravidel pro ˇrazen´ı zdroj shoda v n´azvu n´astroje kompar´ator verz´ı ” V rozsiahlej datab´aze signat´ur mˆoˇze doch´adzat’ ku kol´ızi´am medzi jednotliv´ymi signat´urami. Ako by ste tento probl´em rieˇsili?“ tˇr´ıdˇen´ı signatur detektor koliz´ı (NtCore PE Detective, vlastn´ı detektor) stromy
  • 18. Z´ısk´avan´e informace souborov´y form´at architektura vstupn´ı bod pˇrekladaˇc nebo packer informace z hlaviˇcek pˇr´ıznaky (flags) typ souboru endianita OS, kontroln´ı souˇcet... sekce, segmenty symboly relokace dynamick´e sekce (ELF) adres´aˇre dat (PE) specifick´e anal´yzy (ARM) origin´aln´ı jazyk
  • 19. Form´at signatur { " ExePack", "1.4", "by 6aHguT", "000,0FF ,33C08BC0--68---C;", },
  • 20. Form´at signatur { " ExePack", "1.4", "by 6aHguT", "000,0FF ,33C08BC0--68---C;", }, nov´y form´at signatur { " ExePack", "1.4", "by 6aHguT", 0, 255, "33C08BC0 --68---C;", },
  • 21. Pouˇzit´e n´astroje a metodiky C++ knihovny PeLib ELFIO Codasip SDK libdwarf TinyXml OllyDbg (reverzn´ı inˇzen´yrstv´ı) Diagram tˇr´ıd UML
  • 22. Experiment´aln´ı mˇeˇren´ı ´uspˇeˇsnosti detekce n´astroj jm´eno verze poˇcet signatur fileinfo 2.0 2224 RDG Packer Detector 0.7.2 ? fileinfo 1.0 2181 PEiD 0.95 2446 ProtectionID (PID) 0.6.5.5 543 Exeinfo PE 0.0.3.4 7794 NtCore PE Detective 1.2.1.1 2806 FastScanner 3.0 3437 Detect It Easy (DiE) 0.81 ?
  • 23. Instrukˇcn´ı idiomy #include <stdio.h> int main() { int a; scanf("%d", &a); printf("%dn", -(a >= 0)); return 0; }
  • 24. Instrukˇcn´ı idiomy #include <stdio.h> int main() { int a; scanf("%d", &a); printf("%dn", -(a >= 0)); return 0; } # include <stdint.h> # include <stdio.h> int main() { int apple = 0; scanf("%d", &apple); printf("%dn", -(apple >> 31 ^ 1)); return 0; } J. Kˇroustek and F. Pokorn´y Reconstruction of Instruction Idioms in a Retargetable Decompiler In: WAPL, Krak´ow, PL, 2013
  • 25. Uk´azka v´ystupu Input file : fileName File format : ELF File class : 64-bit File type : Executable file Architecture : x86 -64 Endianness : Little endian Entry point address : 0x405d10 Entry point offset : 0x5d10 Entry point section index: 12 Entry point section name : .text Bytes on entry point : 554889 e541554c... Detected compiler/packer : GHC (7.6.3) Original language : Haskell
  • 26. Uk´azka v´ystupu i type flags offset vaddr memsize align ------------------------------------------------------------------------------- i - index type - type of segment flags - segment flags offset - offset in file vaddr - virtual address in memory memsize - size in memory align - alignment in memory and in file ------------------------------------------------------------------------------- i type flags offset vaddr memsize align ------------------------------------------------------------------------------- 0 PHDR rx 0 x00040 0 x400040 0x001c0 0 x000008 1 INTERP r 0 x00200 0 x400200 0x00015 0 x000001 2 LOADABLE rx 0 0 x400000 0xabfcc 0 x200000 3 LOADABLE rw 0 xac000 0 x6ac000 0x15488 0 x200000 4 DYNAMIC rw 0 xac030 0 x6ac030 0x001d0 0 x000008 5 NOTE r 0 x00218 0 x400218 0x00018 0 x000004 6 OS - specific r 0 xa5898 0 x4a5898 0x0138c 0 x000004 7 OS - specific rwx 0 0 0 0 x000010 ------------------------------------------------------------------------------- Flags: r - readable x - executable w - writable
  • 27. Uk´azka v´ystupu i type flags offset vaddr memsize align ------------------------------------------------------------------------------- i - index type - type of segment flags - segment flags offset - offset in file vaddr - virtual address in memory memsize - size in memory align - alignment in memory and in file ------------------------------------------------------------------------------- i type flags offset vaddr memsize align ------------------------------------------------------------------------------- 0 PHDR rx 0 x00040 0 x400040 0x001c0 0 x000008 1 INTERP r 0 x00200 0 x400200 0x00015 0 x000001 2 LOADABLE rx 0 0 x400000 0xabfcc 0 x200000 3 LOADABLE rw 0 xac000 0 x6ac000 0x15488 0 x200000 4 DYNAMIC rw 0 xac030 0 x6ac030 0x001d0 0 x000008 5 NOTE r 0 x00218 0 x400218 0x00018 0 x000004 6 OS - specific r 0 xa5898 0 x4a5898 0x0138c 0 x000004 7 OS - specific rwx 0 0 0 0 x000010 ------------------------------------------------------------------------------- Flags : r - readable x - executable w - writable