Brev til kunder inkl. skatteguide (September)

Transcription

Brev til kunder inkl. skatteguide (September)
Onde filer
Mathias Meldgaard Andersen
Jens Thomas Vejlby Nielsen
Thomas Stig Jacobsen
Morten Holt Pedersen
Elias Ringhauge
Christian Aagaard Larsen
Jackie Engberg Christensen
December 2010
Første Studieår
Naturvidenskab
Strandvejen 12-14
9000 Aalborg
http://tnb.aau.dk
Titel: Onde filer
Tema: Onde filer
Projektperiode: 11-10.2010 – 21.12.2010
Projektgruppe: B121
Deltagere:
Elias Ringhauge
Jackie Engberg Christensen
Thomas Stig Jacobsen
Morten Holt Pedersen
Christian Aagaard Larsen
Mathias Meldgaard Andersen
Jens Thomas Vejlby Nielsen
Vejledere:
Kenneth Moeller Nielsen
Synopsis:
This project has worked on the subject of
malicious files. The primary focus of the
project has been malicious PDF-files. This
focus was determined through an analysis
of the most used attacked file types today.
To fully understand the problem and the
technical difficulties regarding this subject,
terms like heap spraying, buffer overflows
etc. has been investigated. Moreover this
newly gathered information has created the
base for creating a program which is able to
decode PDF-files and scan for malicious
content, with a special focus on heap sprays
constructed in JavaScript. The problem of
this project has been partially solved
technically, and the effects onto society
have been considered.
Sideantal: 47
Bilagsantal og -art: 1, program
Afsluttet den 21.12.2010
Rapportens indhold er frit tilgængeligt, men offentliggørelse (med kildeangivelse) må kun ske efter aftale med forfatterne.
Forord
Denne rapport er udarbejdet i forbindelse med projektperioden ”P1”p˚
a Aalborg Universitet p˚
a studielinien Datalogi. Rapporten er udarbejdet af 7 personer p˚
a dette studie, over en periode af 10 uger. Form˚
alet med opgaven er
at undersøge om og hvordan man som computerbruger kan beskytte sig imod
onde filformater. Til dette skal et tilhørende program skrives i programmeringssproget C.
I rapporten dækkes et problems omfang, en teknisk analyse af et delproblem,
samt en endelig løsning p˚
a dette problem, i form af det omtalte C program.
Rapporten er opdelt i kapitler med tilhørende sektioner samt undersektioner. Vi starter rapporten med en introduktion samt analyse af problemet
hvorefter vi har et kapitel med teknisk teori i forbindelse med det problem vi
arbejder med. Til sidst i rapporten beskriver vi det C program vi har udviklet
i projektet. Der vil undervejs ogs˚
a være kontekstuelle forbindelser til emnet.
Kilderne er markeret med tal, som henviser itl kildelisten sidst i rapporten.
2
Indhold
1 Introduktion
1.1 Indledning . . . . . . . . . . . . . .
1.2 Problemanalyse . . . . . . . . . . .
1.3 Hacker/Cracker . . . . . . . . . . .
1.4 ˚
Arsager og motiver . . . . . . . . .
1.5 Hackernes m˚
al . . . . . . . . . . . .
1.6 Malware - hackerens værktøjer . . .
1.7 Ramte filtyper og programmer . . .
1.8 Problemet i samfundet . . . . . . .
1.8.1 Økonomiske tab . . . . . . .
1.8.2 Problemet i Danmark . . . .
1.8.3 Politisk indflydelse . . . . .
1.8.4 Psykisk indflydelse . . . . .
1.9 Juridisk . . . . . . . . . . . . . . .
1.9.1 Gældende dansk lovgivning
1.9.2 CERT . . . . . . . . . . . .
1.10 Problemformulering . . . . . . . . .
1.11 Problemafgrænsning . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Computer sikkerhed
2.1 Computer sikkerhed . . . . . . . . . . . . . .
2.2 Social Engineering . . . . . . . . . . . . . .
2.3 Inficeringsmodel . . . . . . . . . . . . . . . .
2.4 PDF filer - struktur og inficeringsmuligheder
2.4.1 Struktur af PDF filformatet . . . . .
2.5 Angrebs typer . . . . . . . . . . . . . . . . .
2.5.1 Heap spray . . . . . . . . . . . . . .
2.5.2 Buffer overflows . . . . . . . . . . . .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
6
6
7
9
10
13
15
15
17
18
18
19
19
20
21
21
.
.
.
.
.
.
.
.
23
23
27
28
30
30
36
36
37
3 Problem og løsning
3.1 Løsning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Programkrav . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Flowdiagram . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Programbeskrivelse . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1 Initialisering . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2 Dekodning af encoded streams . . . . . . . . . . . . . .
3.4.3 Analyse af decoded streams . . . . . . . . . . . . . . .
3.4.4 Præsentation af resultat . . . . . . . . . . . . . . . . .
3.4.5 Eventuelle problemer med programmets nuværende funktionalitet . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5 Programtest . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 Perspektivering af program . . . . . . . . . . . . . . . . . . . .
3.7 Konklusion . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
38
39
40
41
41
41
41
42
42
42
43
44
4 Bilag
48
4.1 Programmet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4
Kapitel 1
Introduktion
1.1
Indledning
Igennem dette projekt vil der blive arbejdet med emnet onde filer. Projektet
vil ende ud i en rapport samt et tilhørende produkt i form af et computer
program skrevet i programmeringssproget C. Med onde filer menes der filer
- s˚
asom MP3, PDF og DOCX osv. - der indeholder samt udfører noget kode
der er skadeligt for dit system. Virus, orme, spyware, malware samt trojanske
heste er eksempler p˚
a ondsindet kode, der har eksisteret siden før internettet
blev udbredt, men som siden hen er blevet meget mere udviklet og derfor
ogs˚
a væsentligt mere skadelige. Disse former for ondsindet kode kan have
forskellige konsekvenser for de systemer de f˚
ar adgang til. De kan blandt
andet lamme eller sænke responstiden p˚
a et system, overtage systemet, slette
vigtige filer der gør at systemet ikke længere virker, stjæle og videresende
fortrolige oplysninger og meget andet. Som internettet er blevet mere og
mere udbredt er opmærksomheden indenfor virus o.l. ogs˚
a blevet mere og
mere udbredt og der findes nu meget mere beskyttelse software der skal
forhindre at angreb kan finde sted. P˚
a trods af dette finder stadig flere og
flere angreb sted og cyberkriminaliteten (it-kriminaliteten) verden over er
stigende. Som beskyttelsessoftwaren blive bedre og bedre bliver hackerne
der laver disse virus o.l. ogs˚
a bedre og bedre til at lave dem s˚
a de bliver
sværere og sværere at opdage. Denne rapport vil komme nærmere ind p˚
a
nogle af de konsekvenser der er ved hacking, komme med ˚
arsager og motiver
til hvorfor folk hacker samt give informationer omkring diverse former for
ondsindet kode. Der vil i rapporten være fokus p˚
a PDF filtypen, som er en
af de filformater der hackere bruger mest frekvent i deres angreb hvilket vil
blive omtalt yderligere i rapporten. Der vil blive beskrevet hvordan PDF
filtypen er opbygget og hvordan angreb fra hackere kan lade sig gøre gennem
5
den p˚
agældende filtype.
Problemformulering der bliver arbejdet med lyder:
1. Hvorfor inficeres PDF - filer?
2. Hvordan inficerer man PDF - filer?
3. Hvordan beskytter man sig mod inficerede PDF-filer?
Rapporten afgrænser sig til detektionen af kode der kan være ondsindet i
et PDF dokument. Projektet vil munde ud i et program der kan detektere
potentielt ondsindet kode i et PDF dokument. Sidste vil gruppen konkludere
p˚
a projektet, dets forløb, samt komme med en perspektivering til eventuel
videreudvikling af projektets produkt.
1.2
Problemanalyse
For at forst˚
a problemet ved ondsindede filer, som et led af cyberkriminalitet (it-kriminalitet), m˚
a problemet undersøges og analyseres. De kommende
afsnit vil komme ind p˚
a det, eller de overordnede problemer, der ligger bag
ondsindede filer samt hacking.
1.3
Hacker/Cracker
Først er det vigtig at danne en forst˚
aelse for hvad der i denne rapport menes
med en hacker og hacking. En hacker var oprindeligt en computer ekspert
som var meget dygtig til at programmere og “beherske” alle computerens
muligheder. Senere begyndte medierne at tage udtrykket til sig og bruge
betegnelsen hacker som et synonym til cracker. En cracker er en person som
laver cyberkriminalitet, og er dermed en næsten komplet modsætning til hvad
en hacker originalt blev betragtet som. Ordet hacking bliver ogs˚
a tit brugt
i forbindelse med at en person eller computer trænger uønsket ind p˚
a en
anden computer, server eller databaser. Man kan sammenligne det med en
tyv der bryder ind i en bankboks med en hængel˚
as p˚
a døren bare inden for
IT-systemer i stedet for. Da ordet hacker er s˚
a meget oppe i tiden og for det
meste bruges overalt som en betegnelse for en cyberkriminel, bruger vi derfor
ogs˚
a betegnelsen hacker i denne rapport. [1] [2]
6
I det kommende afsnit vil gennemg˚
a hackernes motiv, m˚
al og m˚
algruppe,
samt en opgørelse af hvilke typer malware, der oftest distribueres med ondsindede filer.
1.4
˚
Arsager og motiver
[3] Mange tilfælde af hacking er grundet simpel nysgerrighed eller en lyst
til at eksperimentere med sin kunnen med en computer. Hackeren i dette
tilfælde prøver sig enten frem eller gør brug af allerede skrevne scripts til at
udføre deres angreb med. Denne type hacker er, p˚
a trods af at det stadig er
ulovligt, ikke altid lige s˚
a farlig for ofret da der sjældent bliver forvoldt skade
p˚
a ofret rent økonomisk eller personligt. Det kan dog ogs˚
a ske at skaden p˚
a
ofrets system er omfattende da denne type hacker ikke altid ved hvad det
er han laver, og har derfor et potentiale til lave rod i systemet. Denne type
hacker er ofte ikke den man hører om, n˚
ar der i medierne bliver berettet om
store hackerangreb, det er ofte bare en enkelt person der afprøver grænserne for hvad man kan p˚
a en computer eller prøver at f˚
a medie-opmærksomhed.
Der findes ogs˚
a hackere, der gør det med andre bagtanker. Der findes mange
eksempler p˚
a hackere som har lavet orme og vira designet til at f˚
a fat i den
inficerede computers ejers vigtige oplysninger, s˚
asom f. eks. bankoplysninger.
At blive udsat for et s˚
adan hacker angreb kan sammenlignes med at hackeren
bryder ind i dit hus og stjæler eller kopierer alle dine værdigenstande med
henblik p˚
a at tjene penge p˚
a dem. Hackeren har i dette tilfælde ofte en god
forst˚
aelse for det system der angribes da ofrets uvished er vigtig. P˚
a trods
af den umiddelbare tydelige gevinst ved et s˚
adant angreb er det ofte ikke
besværet værd at prøve at tømme et offers bankkonti for penge. Banken fra hvilken pengene er forsvundet - kan ofte spore pengene n˚
ar de er overført
elektronisk og det er derfor svært at slippe godt fra et s˚
adant forsøg. P˚
a
trods af at en hacker ikke s˚
a let kan f˚
a noget konkret ud af at stjæle net-bank
informationer er der stadig andre ting som du kunne have p˚
a din computer
som en hacker kunne have glæde af. Dette kunne være services som du har
betalt for som hackeren kan overtage. F.eks. dine log-ind informationer til
et web domain eller lignende internet baseret service, hvorfra hackeren ville
kunne overtage siden og ændre den som han havde lyst til for at tjene penge
eller for at inficere de brugere der bruger domænet. En Facebook profil kunne
ogs˚
a være et populært m˚
al for en s˚
adan hacker for at sprede sig til s˚
a mange
som muligt for at f˚
a mest mulig indtjening. Motivationen for disse hackere
er oftest rent økonomisk, alts˚
a hacking med det form˚
al at indtjene penge.
7
Et andet motiv til at hacke kunne være hævn, en medarbejder der er blevet
uretsmæssigt fyret fra et firma eller en person der har et personligt vendetta
mod et firma - eller en organisation eller lignende - fordi han føler sig p˚
a
anden vis uretsmæssigt behandlet. Form˚
alet med denne form for hacking er
generelt rent destruktiv da hackeren gerne vil forsage lige s˚
a meget skade til
dem han føler har svigtet ham som den skade han føler de har gjort mod ham.
N˚
ar et firmas servere bliver hacket og der bliver hentet firma-hemmeligheder
o.l. kan det f˚
a ret store konsekvenser. Dette motiv udgør absolut en trussel,
da det i modsætning til n˚
ar en privatperson bliver hacket, kan f˚
a katastrofale
økonomiske konsekvenser b˚
ade for firmaet og i sidste ende samfundet.
Endnu en type hacker er dem der gør det for at n˚
a et politisk m˚
al. I dette
tilfælde er det ofte en større gruppe hackere der er g˚
aet sammen om et fælles
m˚
al. Eksempler p˚
a dette kan ses i statistikker n˚
ar antallet af angreb mod
bestemte lande, steder eller etniske grupper stiger som følge af en beslutning
eller handling. Denne type hacker gør det dog oftest for at udtrykke sin uenighed omkring en handling eller beslutning. En hacker af denne type er ikke
s˚
a farlig for den generelle befolkning men kan dog stadig forsage problemer
hvis det lykkedes hackerne at f˚
a ændret indhold af hjemmesider eller m˚
aske
endda skabe s˚
a meget trafik til siden at ingen andre kan besøge den. Oftest er
disse angreb hurtigt overst˚
aet da det sjældent er hackerens mening at forvolde varig skade, men nærmere at f˚
a sit eget budskab ud eller forhindre andre i
det samme. Disse DDOS (Destributed Denial Of Service) angreb, der skaber
s˚
a meget trafik p˚
a en web-server, at normal brug ikke længere er muligt, er
ogs˚
a blevet anvendt imellem konkurrerende firmaer, som eks. net-butikker og
kasinoer eller andre forretninger, som er stærkt afhængige af en hjemmesides
drift. Hvor man alts˚
a har forsøgt at ødelægge en konkurrents image, eller
m˚
aske endda opkræve en løsesum, for at standse angrebet.[4]
Disse hackere kan ogs˚
a være ”guns-for-hire”som nogle politiske grupper bare
bruger som et middel til at f˚
a deres budskab ud, hvilket betyder at disse
hackere i nogle tilfælde er velfunderet. Disse hackere er yderst professionelle
og bliver typisk brugt som digitale spioner. P˚
a trods af at sikkerheden hele
tiden bliver forbedret sker der stadig mange hackerangreb p˚
a computere der
ikke er beskyttet ordenligt og efter h˚
anden som flere og flere informationer
bliver lagret p˚
a computere bliver gevinsten større og større.
En af nutidens absolut farligste, men samtidig ogs˚
a mest udbredte eksempler
p˚
a malwarebrug er s˚
akaldte botnets. Et botnet kendetegner sig ved, at en
række vilk˚
arlige computere inficeret med en malware, som en ”master”kan
anvende og kotrollere til egne behov. Disse botnets bliver oftest solgt p˚
a det
sorte internet marked til spammere eller lejet bort.
8
Det kan alts˚
a konkluderes, at penge oftest er motivatoren til angreb, hvor den
mest udbredte malwaretype er spambots, der forsøger at reklamere. De politisk motiverede angreb er et stigende problem, da størrelsen af div. netværk
er steget, kommunikationen er blevet hurtigere, hvorved den teknologiske
barriere er blevet formindsket, da det ikke længere kræver speciel forst˚
aelse
eller kunnen for at lave effektive angreb, eks. mod hjemmesider. Hadmotiverede hackere eksistere der ikke mange af, men deres evner er ofte gode,
og deres effekt kan p˚
a den m˚
ade have en stor betydning, da hackerens m˚
al
normalt er en konkret skade p˚
a offeret. Eksperimentielle hackere er ikke af
speciel interesse, da disse sjældet distribueres eller fungerer i et problematisk
omfang, trods mange er motiveret af at eksperimentere med dette.
[4]
1.5
Hackernes m˚
al
Hackernes m˚
al ligger sig ofte tæt op ad motivationen og ˚
arsagen til et angreb. Hackerens kunnen har ogs˚
a en stor indflydelse p˚
a m˚
algruppen, da en
uerfaren hacker ikke ville have ret meget success med at hacke sig ind i store
firmaers databaser. De uerfarene hackeres m˚
algruppe vil for det meste være
private personer med lav sikkerhed p˚
a deres computere. I og med de ikke har
ret meget erfaring med at hacke vil de starte hvor det er lettest og derefter
bevæge sig op ad stigen i sværhedsgrad som de bliver bedre og bedre. Det
fører selvfølgelig videre til at de mere erfarne hackeres m˚
al vil være mindre
virksomheder eller større grupper af privatpersoner da udbyttet her vil være
større. De professionelle hackere vil derimod g˚
a efter de helt store fisk eller
efter at brede sig til s˚
a mange som muligt.
N˚
ar man ser p˚
a motivet er sammenhængen lidt anderledes. Hackere der er
drevet af penge vil have en meget bred m˚
algruppe da de ville kunne tjene
penge p˚
a rigtig mange brugere da flere og flere benytter sig af IT-systemer til
at holde styr p˚
a deres økonomi. Udbyttet ville højest sandsynligt være større
med virksomheder, men da disse ofte er sværere at hacke sig ind i, ville hackerens tid m˚
aske være bedre brugt ved at fokusere p˚
a en større gruppe af
privatpersoner.
De hævnmotiverede hackeres m˚
algruppe vil være kilden til deres vrede. Denne m˚
algruppe kan derfor være meget varierende da lysten til hævn kan skyl9
des mange forskellige ˚
arsager. Hævn mod privatpersoner vil fra en hackers
perspektiv ikke umiddelbart give den store tilfredsstillelse da skaden forvoldt
i de fleste tilfælde ikke vil være svært at komme over igen. Hævn mod en
arbejdsgiver - for eksempel en virksomhed - ville kunne forvolde en del mere
skade da der typisk vil være flere der bliver ramt af konsekvenserne og derfor
vil tilfredsstillelsen bag angrebet ogs˚
a være større.
Politisk motiverede hackeres m˚
algruppe vil i mange tilfælde være politiske
sider eller politiske forbilleder da deres m˚
al er at stoppe eller sprede et politisk budskab. De vil for det meste operere p˚
a nettet ved at hacke sig ind p˚
a
sider og ændre deres indhold for at sprede et bestemt budskab til de folk der
benytter sig af siderne.
Nogle hackere har ingen m˚
algruppe eller rettere de er ligeglade. De hacker
bare for at hacke og for at vise at de er klogere end dem bag det IT-system
de hacker. Deres m˚
algruppe kunne være hvemsomhelst da de ikke g˚
ar efter
noget bestemt udbyttet anden end følelsen af at være dominerende.
1.6
Malware - hackerens værktøjer
N˚
ar en hacker har et m˚
al samt et motiv, s˚
a skal selve angrevet udføres, hvor
det praktisk talt kun er fantasien der sætter grænserne. Fokus i denne rapport roterer dog omkring ondsindede filer, hvilket begrænser omfanget af
værktøjer til denne type malware:
Orme
Orme er en virus som kopierer sig selv til andre computere p˚
a netværket.
I dag ofte spredt ved hjælp af e-mails, IM (Instant Messaging) eller sociale
netværk. Orme bruges som fundament til botnets, da mængden af computere
har meget høj betydning for effektiviteten af s˚
adanne. Orme bruges herigennem til spam, magtfulde server-angreb mm.[5]
Et eks. p˚
a et meget fokuseret og højprofessionelt orm-angreb, s˚
a man i, sep.
2010, hvor en orm spredte sig p˚
a Siemens’ industri-computere p˚
a atom-anlæg
i Iran.[6]
Trojansk hest
Trojanske heste er en virustype som har f˚
aet sit navn efter den græske myte
om den store træ hest som grækerne gemte sig i da de angreb Troja. Myten
fortæller at grækerne, efter i lang tid - uden success - havde forsøgt at ind10
tage byen Troja, gemte en lille gruppe græske soldater inde i heste hvorefter
de gav det som en gave til byen Troja som de prøvede at indtage. Hesten
blev bragt ind i byen og da natten faldt p˚
a sneg de græske soldater sig ud af
hesten og ˚
abnede byens porte for den græske hær hvorefter byen faldt. [7]
Virusen virker p˚
a samme m˚
ade, den giver sig ud for at være en harmløs fil og
p˚
a den m˚
ade kommer den ind bag computerens sikkerhed. N˚
ar brugeren har
startet den trojanske hest vil den ˚
abner eventuelle bagdøre s˚
a bagmanden let
kan f˚
a adgang til computeren efterfølgende.
Brugen af hestens funktion, ses ofte sammen med ormen, da de største botnet lever p˚
a en løbende kontrol over computeren. Der findes dog ogs˚
a andre
kendte form˚
al, hvor man simpelthen forsøger at lave uønsket reklame popups eller web-browser toolbars, som alle er drevet af en økonomisk interesse.
Hvilke muligheder der ligger i den trojanske hest afviger igennem koden, men
potentielt s˚
a, vil alle ændringer og tilføjelser p˚
a en computer være mulige.
[8]
Spyware
Spyware er software der, n˚
ar installeret p˚
a computeren, overv˚
ager aktivitet
p˚
a computeren og sender infomationen til hackeren. Spywares kan gøre pc’en
langsommere med tiden. [9]
Præcis som navnet udtrykker, spionere sofwaren kun, hvilket kan anvendes i
form af en keylogger, som vidersender tastetryk p˚
a keyboardet, men spyware
begrænser sig i sin helhed ikke. Alt fra vigtige koder til samtaler kan være af
interesse for folk der distribuere spyware. [10]
Adware
Adware er lidt p˚
a samme m˚
ade som spyware software som, n˚
ar installeret p˚
a
computeren, tvinger bruger til at se reklamer. Adware kan ogs˚
a gøre pc’en
langsommere med tiden. [9]
Keylogger
Keylogger bruges til at opsnappe bruger input, dette kan fx. være ens login
infomation til net banker, chats og fora’er og evt spil hvor der er penge i at
stjæle ens account og sælge den videre. Keyloggers er normalt ikke skadelig
over for computer systemerne, men ens informationer kan misbruges og bringe skade p˚
a andre omr˚
ader. [11]
Backdoor
”Backdoor”eller p˚
a dansk en bagdør er en form for trojansk der ˚
abner en
bagdør p˚
a pc’en som en evt. hacker kan bruge til at for mere eller mindre
fuld adgang til ens computer samt filer. Dette kan sker uden pc’ens bru11
ger/ejer selv ved noget til det. [11]
12
1.7
Ramte filtyper og programmer
N˚
ar malware finder frem til computere gennem ondsindede filer, forg˚
ar det
oftest ved at udnytte den klient som h˚
andterer denne fil. Her er nogle af de
udbredte eksempler Adobe Reader, Microsoft Word, Microsoft Excel, osv.
Udbredelsen af malware, har som regel stor interesse for hackeren, derfor
vil de mest udbredte og brugte programmer automatisk komme i søgelyset.
F-secure, en større antivirus leverandør, har offentliggjort statistikker for de
mest malware-inficeret filtyper, som lyder [12]:
Figur 1.1: Ramte Filtyper 2008
Figur 1.2: Ramte Filtyper 2009
P˚
a overst˚
aende firgur ses tydeligt at den meget anvendte Adobe Reader,
samt Microsoft Office pakkens elementerne, er i højsædet. Endvidere ses det
tydeligt at udviklingen fra 2008 til 2009 har betydet et endnu større fokus
p˚
a Adobe Reader og dermed PDF-filer.
13
N˚
ar man ser p˚
a udbredelsen af filtypernes klienter, vil man ogs˚
a kunne se en
sammenhæng, imellem mængden af angreb og brug af filtyperne. Herunder
ses en undersøgelse lavet af Steam, som viser hvor stor en andel af brugerne
anvender forskellige programmer. Steam findes i dag p˚
a over 30 millioner
privat-computere verden over. [13]
Figur 1.3: Brugte applikationer [14]
Ifølge Adobe er deres Reader blevet downloaded mere end 500 millioner gange
[15]. Hvilket alts˚
a er en markant mængde af klienter, set overfor Microsoft
Word og Excel, som ender p˚
a F-sercures anden og tredjeplads.
Adobe er ikke det eneste firma der producerer PDF-læsere, men den store
udbredelse af PDFens anvendelse, gør at ogs˚
a andre PDF-læsere kommer
under angreb. Dog afhænger dette altid af m˚
aden læseren bliver udnyttet
p˚
a, og da langt størstedelen af brugerne, anvender Adobes software, s˚
a er det
ogs˚
a dette program der oftest er forsøgt udnyttet.
14
1.8
Problemet i samfundet
I dette afsnit vil det blive beskrevet hvordan cyberkriminalitet p˚
avirker samfundet p˚
a forskellig vis. Cyberkriminalitet har adskillige konsekvenser for
samfundet alt efter m˚
al, motiv samt omfanget af problemet. Det er et stigende problem og det p˚
avirker samfundet mere og mere som computere bliver
brugt til mere og mere verden over.
1.8.1
Økonomiske tab
Cyberkriminalitet forsager store tab i vores samfund idag. Konsekvenserne
ved cyberkriminalitet er afhængig af hvem hackeren er og hvad m˚
alet er, men
i de fleste tilfælde er tabet tid og penge. En af konsekvenserne kan være at
IT-systemer g˚
ar ned, og det kan lamme flere virksomheder eller offentlige instanser, hvilket kan gøre at man ikke længere kan f˚
a adgang til sin netbank,
selvbetjeninsgsløsninger eller e-mail. Tabet, fra angreb med form˚
alet at lamme systemer, kommer ofte fra de ressourcer som systemets IT-administratorer
skal bruge p˚
a at f˚
a systemet op og køre igen eller tabt arbejdsfortjenste igennem de medarbejdere som er afhængige af de ramte systemer, derudover kan
der ogs˚
a være tale om kundetab fordi kunden ikke har kunnet kommunikere
med virksomheden.
En anden type angreb, med form˚
alet at stjæle data, har nogle lidt anderledes konsekvenser. Her er konsekvenserne forskellige fra angreb til angreb,
afhængig af hvem ofret er. Hvis den stj˚
alne data er store firma hemmligheder
er tabets størrelse anderledes end hvis det var en enkeltpersons data. D´et at
et firma kan f˚
a stj˚
alet deres dybeste hemmelighed kan koste meget dyrt og i
sidste ende m˚
aske gøre at firmaet g˚
ar konkurs.
Et eksempel p˚
a vira som har forvoldt skader for milliarder af kroner er virussen ”Love”, der tilbage i 2000 ødelage værdier globalt for ansl˚
aet 52 mia kr.
[16] Foruden de ovennævnte skader kan cyberkriminalitet ogs˚
a være med til
at sløve systemer ned, som egentlig ikke er et direkte kontant tab men som
i det længere løb vil koste brugerene af systemet tid og derfor ogs˚
a penge.
Nogle af de organisationer som prøver at bekæmpe denne cyberkriminalitet har sat nogle tal p˚
a omfanget af problemet. Internet Crime Complaint
Center, som er en hjemmeside udarbejdet af FBI og National White Collar
Crime Center, hvis m˚
al er at gøre det nemmere for de amerikanske borgere
at indrapportere kriminalitet p˚
a internettet, melder at antallet af rapporterede angreb stiger. I 2009 er antallet af indrapporterede tilfælde af internet
kriminalitet steget fra 275.284 tilfælde i 2008 til 336.655 tilfælde i 2009, blot
i USA. De fleste af disse tilfælde resulterede i et finansielt tab. Det samlede
15
antal tabte dollars er sat til at være omkring 559,7 millioner dollar, hvilket
er væsentligt højere end ˚
aret før hvor der blev tabt omkring 264.6 millioner
dollar.
Som det fremg˚
ar af grafen nedenfor fra 2009, er de hyppigst rapporterede
angreb forskellige former for bedrageri: [17]:
fig.1
Dette er dog kun statistikken for indberettede tilfælde. FBI regner med
at det koster USA milliarder af dollars hvert ˚
ar p˚
a at reparere skaderne efter
internet kriminalitet [18]
Fra Computer Security Institute (CSI), der er en organisation hvis m˚
al er at
uddanne den generelle befolkning i IT-sikkerhed, kommer der statistikker der
viser den samme tendens. CSI er i deres ˚
arlige sikkerhedsundersøgelse, der
er dannet ved hjælp af frivillig indsendelse af statistikker fra professionelle
IT-sikkerhedsfolk, n˚
aet frem til at p˚
a top 3 listen over typer af angreb der er
lidt mest tab p˚
a:
• Finansielt bedrageri ($21.1 mio)
• Virusser, orme og trojans ($8.4 mio)
• Udefrakommende indbrud i computersystemer ($6.8 mio)
Samtidig viser undersøgelsen at 90% af deltagerne i undersøgelsen har haft
mindst et tilfælde af sikkerhedsproblemer i løbet af de sidste 12 m˚
aneder. [19]
16
1.8.2
Problemet i Danmark
Problemet forekommer ikke kun i USA men ogs˚
a i resten af verden. Fra
Danmarks Statistik kommer det at i 2010 har
”29 pct. af internetbrugere har været udsat for computervirus
de seneste 12 m˚
aneder, og hver anden har modtaget spam (uønsket
e-post). 4 pct. af internetbrugere oplyser, at de har været udsat
for misbrug af personoplysninger. Kun en mindre andel oplever
sikkerhedsproblemer som børns adgang til upassende indhold eller
økonomisk tab for˚
arsaget af it-sikkerhedsproblemer.”[20]
Yderligere viser nedenst˚
aende figur, at 29% af internetbrugerene i Danmark
har oplevet problemer med computervirus eller andre skadelige programtyper.
Desuden viser figuren ogs˚
a hvor udbredt sikkerhedssoftware er da 89% af de
danske internetbrugere benytter sig af s˚
adan værktøj
fig.2
17
Ud fra de ovenst˚
aende tal er det klart at der er tale om et globalt re´elt og
stigende problem. Dette kommer ogs˚
a til udtryk i teknologir˚
adets rapport,
IT-kriminalitet overskrider grænser - fra 2007, hvor det ogs˚
a bliver angivet
at malware som computervirus, orme og spyware p˚
a globalt plan kostede
virksomheder 85 mia. kr. i 2005. [21]
1.8.3
Politisk indflydelse
Umiddelbart forbinder man ikke hackere med politik, men hackere har ogs˚
a
nogle gange indflydelse p˚
a politik verden over. N˚
ar hackere sætter sig for
at angribe specifikke politiske sider for enten at lukke siden ned eller for at
stresse serveren s˚
a meget at den bliver utilgængelig har det en politisk konsekvens. I og med politiske grupper bruger internettet mere for at sprede deres
budskab f˚
ar hackere ogs˚
a mere og mere politisk indflydelse.
I den seneste tid s˚
a verden et eksempel p˚
a hackers politiske interesse og internettets generelle krav om total ytringsfrihed i forbindelse med WikiLeaks
sagen og arresten af WikiLeaks grundlæggeren Julian Assange. WikiLeaks
er en orginasation som offentliggør lækkede og ofte hemmelighedsstemplede
dokumenter fra organisationer og lande. Efter arresten p˚
a WikiLeaks grundlægger samt muligheden for at støtte WikiLeaks financielt via Mastercard,
Visa og Paypal blev stoppet af de nævnte organisationer, startede en gruppe
internetbrugere ”Operation Payback”, denne operation blev udført og administreret af hackere som demonstrerede ved at ramme organisationernes
hjemmesider med DDOS-angreb, af en s˚
adan karakter at det p˚
avirkede betalinger globalt set.
1.8.4
Psykisk indflydelse
Selvom økonomiske tab er en af de største konsekvenser ved hacking er der
ogs˚
a andre lidt skjulte konsekvenser som har en indflydelse p˚
a ofrene der er
blevet udsat for at blive hacket. Grunden til at disse konsekvenser er lidt
skjulte er fordi man sjældent taler om andet end økonomiske konsekvenser
n˚
ar man taler om de konsekvenser der er ved cyberkriminalitet. En anden
grund er ogs˚
a at mange ofre for cyberkriminalitet ikke rapportere at de er
blevet udsat for cyberkriminalitet. Det bliver i en undersøgelse fra Symantec
estimeret at omkring 44
Ikke overraskende er disse andre konsekvenser de samme som de er ved almindelig kriminalitet. Ofrene føler sig ofte vrede, irriterede og snydte. Dette
er ikke mærkeligt da at blive udsat for cyberkriminalitet minder meget om
18
at blive udsat for almindelig kriminalitet, hvor nogen bryder ind i din bolig
og ødelægger din ejendom, alt dette sker bare p˚
a computeren i stedet. Som
med almindelig kriminalitet er der ogs˚
a ofre der bliver bange og tilmed paranoide af at blive udsat for cyberkriminalitet. De bliver bange for at bruge
internettet efter at have været udsat for at blive hacket - enten for penge
eller identitetstyveri - og stopper helt med at bruge internettet til alt der
involvere private informationer. Andre stopper fuldstændigt af frygt for at
blive terroriseret af hackerne. [22]
Det m˚
a alts˚
a konstateres at IT kriminalitet er et problem der omfatter
mange mennesker og der absolut er mening i at forsøge at løse.
1.9
Juridisk
Det meste af den cyberkriminalitet der bliver rapporteret i Danmark kommer
fra udlandet. Hvilket gør, at for at bekæmpe den organiserede cyberkriminalitet, er myndighedere nødt til at samarbejde p˚
a tværs af landegrænser. Da
lovgivningen ikke er ens for alle lande er det meget vanskligt at Det Danske
politi har arbejdet med det amerikanske forbundspoliti FBI, for at forbedre
de danske myndigheders viden og teknologi om at bekæmpe IT kriminalitet.
[23]
Fordi de organiserede cyberkriminelle skaber større problemer er det ogs˚
a
den gruppe der bliver brugt flest af myndighedernes ressourcer p˚
a at finde
og anholde. Der findes dog ogs˚
a enkeltpersoner som udøver kriminalitet p˚
a
internettet, disse er dog sværere at fange da de ofte ikke er s˚
a aktive som de
organiserede grupper.
1.9.1
Gældende dansk lovgivning
I den danske straffelov st˚
ar der om formueforbrydelser at enhver person som
udnytter en anden persons manglende indsigt eller letsind til at opn˚
a en ydelse der st˚
ar væsenligt misforhold til modydelser er strafbart. paragraf 282.
Denne lov er ofte brudt n˚
ar der er tale om cyberkriminalitet da det i mange
tilfælde kræver at oftret bliver lokket til at foretage en handling som vedkommende ikke selv ved er farlig.
Ved cyberkriminalitet bliver ogs˚
a paragraf 263 brudt da loven siger at det
er strafbart med fængsel eller bøde hvis man:
19
1 bryder eller unddrager nogen et brev, telegram eller anden lukket meddelelse eller optegnelse eller gør sig bekendt med indholdet.
2 skaffer sig adgang til andres gemmer.
3 uberettiget skaffer sig adgang til en andens oplysninger eller programmer, der er bestemt til at bruges i et informationssystem.
Under skærpede omstændigheder som f.eks. virksomheders evhvervshemmeligheder eller foreg˚
ar i mere systematisk eller organiseret, kan straffen være
fængsel op til 6 ˚
ar. Straffen kan forøges hvis de stj˚
alne informationer uretmæssigt ehvervsmæssigt bliver solgt videre.
Som det fremg˚
ar af paragrafudsnittene bliver cyberkriminalitet betragtet
som en seriøs forbrydelse og derfor straffet h˚
ardt.
1.9.2
CERT
CERT er en forkortelse for Computer Emergency Response Team og er navnet p˚
a en tjeneste, som eksisterer i flere lande, med form˚
alet at bekæmpe
cyberkriminalitet. CERT findes i flere lande. I Danmark hedder tjenesten
DK-CERT hvor den tilsvarende tjeneste i USA hedder US-CERT. DK-CERT
arbejder aktivt sammen med US-CERT. DK-CERT blev oprettet som svar
p˚
a en af Danmarks første hackersager i 1991. DK-CERTs primære opgave
er at r˚
adgive og advare borgere og mindre virksomheder om IT-sikkerhed og
s˚
arbarheder i systemer. Samtidig er det ogs˚
a DK-CERTs mission at analysere anmeldelser fra personer eller virksomheder der har været udsat for et
IT-sikkerhedsproblem. [24]
20
1.10
Problemformulering
Ud fra vores analyse af problemet kan vi konkludere at problemet er meget reelt og noget der har stor betydning for b˚
ade private samt institutioner
verden over især økonomisk. Cyberkriminalitet har en væsentlig indflydelse p˚
a samfundet som helhed som følge af blandt andet de økonomiske tab
og problemet er voksende. P˚
a trods af de mange tilbud der findes inden for
bekæmpelse af internet kriminalitet er det dog stadig ikke nok til at løse
problemet. Gruppen vil med dette projekt forsøge at løse en lille del af det
store problem. Vi vil gøre det sværere for de kriminelle at inficere ofrenes
computere.
Vi er kommet frem til følgelde punkter som vi vil løse gennem rapporten,
og komme op med en konklusion p˚
a.
1. Hvorfor inficeres PDF - filer?
2. Hvordan inficerer man PDF - filer?
3. Hvordan beskytter man sig mod inficerede PDF-filer?
Vi har valgt at fokusere p˚
a at bearbejde vores problem ud fra PDFfiltypen, da vi efter analyse af problemets omfang er kommet frem til at denne
filtype er meget udbredt og samtidig indeholder muligheden for at indeholde
potentiel ondsindet kode. P˚
a trods af at Adobe, som er producenten til den
mest brugte PDF-reader, kommer ud med opdateringer indeholdende sm˚
a
rettelser til deres software næsten ugenligt, er der stadig problemer. Vi vil
derfor prøve at udvilke et værktøj der kan gøre det mere sikkert for brugeren
at bruge PDF-filer.
1.11
Problemafgrænsning
Det er tydeligt at se at det er PDF filtypen, der i største omfang bliver misbrugt og udnyttet til distribution af ondsindet kode. Baggrunden for den store
fokus p˚
a PDF filerne, skyldes den store udbredelse af anvendelsen, og filtypernes originale klient, Adobe reader, som i dag findes p˚
a langt størstedelen
af verden computere.
Pga. den store aktivitet omkring PDFen, vil der fremover i rapporten, være
fokus p˚
a misbrug og prævention af samme, for PDF filtypen.
Grundet begrænsningerne for projektet, vil program-løsningen fremg˚
a som
en kode, hvor der ligges fokus p˚
a selve funktionen af scanning, samt detektion af elementer der anses som farlige eller potentielt farlige, hvis filen læses.
21
Destruktion eller neutralisering af filens farlige elementer, vil ikke forekomme. Man vil alts˚
a kunne se p˚
a funktionen, som værende en mindre bid af
et antivirus program. Der vil være en lille eller ikke eksisterende interesse i
bruger-venlighed og fladen.
22
Kapitel 2
Computer sikkerhed
2.1
Computer sikkerhed
Computer sikkerhed varierer alt efter, hvad man prøver at beskytte sig imod
og hvordan man vælger at gøre det. Man kan dele disse forskellige metoder
op i kategorier, der beskriver den form for sikkerhed de varetager. Nogle af
dem er ikke s˚
a vigtige for dette projekt, og vil derfor blot blive nævnt kort,
hvorimod nogle andre er mere væsentlige og vil blive beskrevet mere grundigt. De forskellige metoder kan beskrives som: Fysisk sikkerhed, kryptering,
software sikkerhed, hardware sikkerhed, netværks sikkerhed og den personlige sikkerhed. Da vores program er et stykke software til computeren vil der
være lagt mest fokus p˚
a denne del af sikkerheden heriblandt anti-virus. Dette
er væsentligt da vores løsning har nogle af de samme funktioner som noget
anti-virus software har.
Fysisk sikkerhed dækker blandt andet over den sikkerhed, som forhindrer
en angriber i at f˚
a fysisk adgang til computeren. Denne form for sikkerhed er
ofte ting som; højere hegne, bedre og mere sikre hængel˚
ase, adgangskort til
indgange og eventuelt sikkerhed gørende brug af biometrisk data som f.eks.
iris scanning eller figeraftryk scanning.
En anden type af fysisk sikkerhed er sikkerheds kort, eller sikkerhedsnøgler
som man ogs˚
a kalder dem. USB nøgler bliver især meget brugt til dette, s˚
a
det kun er personen der er i besiddelse af USB nøglen der umiddelbart kan
f˚
a adgang til computeren. Men der findes andre hardware sikkerhedsforanstaltninger.
Kryptering er en sikkerhedsform der har været fremme i meget lang tid.
Hovedpointen med kryptering er at gøre data ulæseligt for folk der ikke har
23
metoden til at dekryptere med. S˚
a en hacker der m˚
aske allerede har fysisk
adgang til din computer, men ikke har en nøgle til at dekryptere filer p˚
a
computeren med, vil ikke f˚
a et ret stort udbytte.
Software sikkerhed dækker over en række sikkerhedsforanstaltninger der normalt er indbygget i software. Blandt andet kodeord, adgangs restriktioner til
hukommelse, filer samt databaser, restriktioner af handlinger der bruger processor kræft, udviklings- og vedligeholdelseskontroller og revision. Disse ting
er noget der typisk set er bygget ind i styresystemet p˚
a en computer, men
det kan ogs˚
a installeres som tilbehør til styresystemet. Kodeordet er noget
alle nok stort set kender til, men der er mange der ikke har ret meget viden
om at lave det man kan kalde for et godt kodeord, hvilket er en af grundene
til at passwords ikke altid er lige sikre. Dette software kan blandt andet være
det man kalder for en firewall, der prøver at forhindre at udefrakommende
kan komme ind i din computer, samt kontrollerer programmers adgang til
forskellige funktioner i computeren. Dette kan man eksempelvis se i Windows Vista samt Windows 7 hvor man hver gang man prøver at ˚
abne et nyt
program, bliver spurgt om man vil tillade programmet adgang. Udviklingsog vedligeholdskontrol g˚
ar ud p˚
a at der bliver stillet nogle krav til softwaren
som det skal kunne overholde, og disse krav holdes løbende ved lige i form
at opdateringer. Opdateringer til software er vigtige da de tit lapper nogle
af de forskellige huller der eventuelt er blevet fundet i softwarens sikkerhed.
Revision g˚
ar ud p˚
a at holde styr p˚
a hvilke brugerhandlinger der er blevet
fortaget p˚
a computeren, hvilket kan være meget nyttigt hvis man skal finde
ud af hvad der er g˚
aet galt i et computersystem eller til at finde ud af om der
blevet foretaget illegale handlinger fra brugerens side. Det er derfor vigtigt
at disse filer er umulige at ændre i.
Hvis computeren p˚
a trods af den indbyggede sikkerhed er blevet inficeret
af en fil eller et program, kan man prøve at bruge anti-virus software til at
udrydde truslen med.
Anti-virus software virker ved at scanne den information der findes p˚
a eller
er p˚
a vej ind i systemet og hvis den finder noget inficeret information prøver
den at desinficere det. Figuren her til venstre giver et godt indblik i hvordan anti-virus software udfører scanning af data trafik. Source system er et
udtryk for udgangspunktet af den data der skal overføres f.eks. en cd. Destination system er stedet hvor dataet p˚
a cd’en skal hen alts˚
a destinationen.
For at komme til destinationen bliver dataet først opsnappet af anti-virus
softwaren og derefter disinficeret hvis den finder noget inficeret data. N˚
ar
dataet er blevet scannet og en trussel er blevet fundet sker der typisk en
ud af to ting. Enten bliver dataet renset for truslen og derefter sendt videre
24
Figur 2.1: Computer sikkerhed [25]
til destinationen uden at brugeren umiddelbart er klogere. Hvis dette ikke
sker bliver der sendt en advarsel til brugeren, hvorefter brugeren selv skal
tage stilling til hvad der s˚
a skal ske med det inficerede data. Alt scanning af
den indkommende data foreg˚
ar uden brugeren skulle kunne mærke det, alts˚
a
sker det lige s˚
a hurtigt som dataet bliver overført. Dataet kan blive scannet
p˚
a to forskellige m˚
ader. Den ene metode scanner ved at sammenligne det
scannede data med en virus database ogs˚
a kendt som virus signaturer eller
virus definitioner. Hvis der bliver fundet noget data der matcher nogle af de
virus signaturer der er i databasen kan anti-virus softwaret konkludere at
filen er inficeret og derefter enten sætte filen i karantæne, slette virussen eller
slette filen helt. Den anden metode scanner ved at analysere hvordan dataet
opfører sig og sammenligne dette med en liste af farlige aktivitets mønstre.
Det kunne for eksempel være at anti-virus softwaret scanner noget data der
kan formatere harddiske men dette betyder ikke umiddelbart at det er virus
der er tale om da der ogs˚
a findes software der er lavet til at formatere harddiske med. Det anti-virus softwaret gør i dette tilfælde er at lade brugeren
vide hvad den har fundet og derefter skal brugeren tage stilling til om dataet
skal forblive eller om det skal slettes. Begge disse metoder har deres fordele
og ulemper. Virus signaturer skal konstant opdateres for at være brugelige
da der bliver opdaget omkring 15 nye virusser hver dag, s˚
a hvis anti-virus
softwaret ikke bliver opdateret regelmæssigt vil der være huller i sikkerheden. Ulempen ved at søge efter farlige mønstre og lade brugeren tage stilling
25
er at brugen til sidst kunne ende op med at blive immun over for advarsels
beskederne, da størstedelen af alle advarsler er harmløse. Det svare lidt til at
installere nyt software p˚
a en computer hvor de fleste personer bare trykker
næste, næste, næste for at komme videre til installationen af programmet.
Der kunne i nogle tilfælde st˚
a hvad som helst uden at brugeren ville lægge
mærke til det. Fordelen er dog at nye virusser der endnu ikke findes i virus
signaturerne ville kunne blive detekteret ud fra m˚
aden den opfører sig p˚
a. I
forlængelse af hinanden virker disse to metoder rigtigt godt, og størstedelen
af alt kommerciel anti-virus software benytter sig ogs˚
a af begge metoder p˚
a
samme tid.
Den største trussel mod et computer system er en fejl 40. Med dette menes
der menneskelige fejl, alts˚
a personen der sidder 40 centimeter fra skærmen
kludre i det. Personlige fejl er skyld i at virusser er blevet spred s˚
a meget som
de er. Folk der ˚
abner e-mails fra usendte afsendere, eller besøger sider og klikker p˚
a links der henter skadeligt data ned p˚
a computeren. Brugeruddannelse
er lige s˚
a vigtig for computerens sikkerhed som et hvilket som helst stykke
software kan være. Brugere der ikke har forstand p˚
a det stykke værktøj de
sidder og h˚
andtere kan tit være skyld i at værktøjet ender op med at g˚
ai
stykker. [26] [37]
26
2.2
Social Engineering
Social engineering er det at f˚
a fat i oplysninger gennem manipulation af mennesket. Det kan gøres p˚
a flere forskellige m˚
ader - enten ved at man over en
periode f˚
ar fat i oplysninger fra virksomhedens ansatte - eller ved at man f˚
ar
fat i dataene gennem de offentlige kanaler virksomheden har. En anden mulighed er at f˚
a fat i gamle dokumenter fra virksomheden, da de kan indeholde
login information, eller oplysninger der kan hjælpe med at skaffe dem.
N˚
ar en hacker s˚
a har skaffet informationer, vil de kunne misbruge dem til
at komme ind i en virksomhed, og eventuelt inficere den med filer, som ikke
ville kunne komme gennem det sikkerhedssystem der er sat op p˚
a systemet.
Social engineering kommer i mange forskellige former inden for IT-branchen.
Fælles for dem alle, er at de bygger p˚
a at (mis)bruge folks tro p˚
a andre, til
at f˚
a adgang til det der ønskes adgang til. Gennem e-mails kan det være at
mailen sendes fra en troværdig kilde, og bliver skrevet s˚
a den ligner noget
personen kunne finde p˚
a at skrive. P˚
a den m˚
ade kan en eventuelt hacker
lokke information som personen normalt ikke ville opgive. Den information
kan s˚
a bruges til at starte kontakt med en anden person inden for hackerens
m˚
algruppe, og det kan til sidst gøre at en evt. hacker har adgang til alt den
information han/hun skal bruge. Det kan ogs˚
a bruges til at f˚
a lagt en ond fil
af en eller anden art.
En anden grund til at social engineering er s˚
a hyppigt brugt er at det tit er
nemmere at hacke mennesket, end det er at komme gennem sikkerhedssystemerne, da mange stoler for meget p˚
a sikkerheden, og ikke regner med at der
kan ske læk, som gør at folk kan skaffe information omkring virksomheden,
som de kan bruge til at trænge ind. [27]
27
2.3
Inficeringsmodel
Før den ondsindede software kan udføre sit arbejde, skal den distribueres til
ofrenes computere. Dette kræver normalt en form for handling fra offerets
side som ˚
abning af en inficeret hjemmeside, vedhæftede filer i en mail eller
fra en flytbar disk.
Følgende figur er en model som illustrerer hvordan en computer bliver inficeret og hvilke hændelser man tit ser efter en infektion.
Fig.1 - Inficeringsmodel
Tit bruger bagmændene metoder som social engineering [27], social engineering er en metode til at overbevise ofret om at deres handling er sikker
28
og filerne er sikre. Det sker tit ved inficering igennem e-mails, da man har
muligheden for at lave e-mail adresser der ligner en sikker adresse. I stedet
for den ægte adresse vil man modtage en e-mail fra en adresse der har en
stavefejl eller kommer fra et andet domæne. Et sent eksempel p˚
a hvor effektiv social engeneering kan være, er facebook-teknikken ”likekacking”, hvor
man bliver lokket af uvilk˚
arligt indhold, men skal trykke ”like”, for at komme igennem til indholdet. [39] Denne teknik kan snyde brugere ind p˚
a andre
hjemmesider, hvor en givent malware kan overføres. I december m˚
aned 2010,
blev over 100.000 danske facebook brugere p˚
a denne m˚
ade, snydt til at g˚
a
ind p˚
a en ekstern hjemmeside. Heldigvis for ofrene, blev de kun dirigeret til
reklameindhold, og ikke malware eller en phisingside. [28]
29
2.4
PDF filer - struktur og inficeringsmuligheder
For at kunne forst˚
a problemet og dets omfang er det ogs˚
a vigtigt at kunne
forst˚
a hvad problemet omhandler. Derfor ville dette afsnit beskrive PDFfilers generelle opbygning samt nævne nogle af de ting som gør sig gældende
i forhold til formatering, syntax og sikkerhed i PDF formatet.
2.4.1
Struktur af PDF filformatet
PDF-filer kan være opbygget af data b˚
ade af ASCII eller binært data og de
kan være en kombination af de to. Endvidere kan de enkelte objekter i PDF
dokumentet indeholde streams med komprimeret data.
Det første som der mødes i et PDF dokument er headeren af dokumentet.
Denne korte linje fortæller PDF parseren hvilken version af PDF specifikationerne som følges i renderingen af dette dokument. I et dokument som bruger
PDF version 1.1 vil headeren se s˚
aledes ud:
%PDF-1.1
Alle linjer i et PDF dokument som starter med et %-tegn er en kommentarlinje og ignoreres derfor af parseren. Der findes dog 2 undtagelser - disse er
for header og EOF (End Of File) som markerer filens afslutning for parseren.
Alts˚
a findes der 2 undtagelser for comments i parseren:
Header: %PDF-X.Y
EOF (End Of File): %%EOF
Mellem disse 2 undtagelser som definerer PDF dokumentets krop befinder
selve dokumentets indhold sig i nummererede indirekte objekter som har et
par forskellige attributter. Et eksempel p˚
a et objekt kan være som følgende:
Linje 1 og 7 begrænser objektet og lader parseren vide hvor objektets krop
30
g˚
ar fra og til. Linje 1 nummerer objektet og fortæller parseren hvilken version
af objektet har. S˚
a objektet som startes p˚
a linje 1 har nummer 1 og version
0. Linje 7 afslutter dette objekt.
Typen af objekt 1 0 (kataloget) er et dictionary, dictionaries er meget normale type objekter i PDF dokumenter og deres indhold omsluttes med ¡¡ og ¿¿.
De enkelte emner i et dictionary best˚
ar af en key (nøgle) og en value (værdi).
Et dictionary kan indeholde elementer, objekter og andre dictionaries. Emner
i et dictionary defineres alts˚
a:
Key Value
Du e
I eksemplet; linje 3, 4 og 5:
/Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R
Hvor er key’en /Outlines er en reference til objektet 2 0, hvilket beskriver
dokumentets outline. Efterfølgende linje henviser til objektet 3 0 som beskriver dokumentets sider. Underneden er objekterne 2 0 og 3 0 skrevet. Disse 2
objekter er refereret til i root objektet 1 0. 2 0 objektet er af typen /Outlines
og dets værdi Count er lig med 0. 3 0 objektet er af typen /Pages og har
andre værdier til keys /Kids og /Count hhv. en reference til 4 0 objektet og
værdien 1.
Det næste objekt vi ser p˚
a er 4 0 som i dette tilfælde er af typen /Page
med forskellige selvsigende keys og values. Keyen /Contents er en reference
til sidens indhold i objektet 5 0. Keyen /Resources er ikke en reference men
31
er derimod et objekt for sig selv. Keyen /MediaBox definerer sidens størrelse.
Sidens indhold er defineret i objekt 5 0. Dette objekt er af en anden type, det er et stream objekt. Stream objekter har deres indhold omgivet af
ordene stream og endstream. Javascriptet placeres f.eks. i streams i PDF dokumentet. Et eksempel p˚
a et almindeligt stream objekt kunne være:
I dette tilfælde er streamen skrevet i normal ASCII men i langt de fleste
tilfælde vil en s˚
adan stream være komprimeret med et af filtrene som PDF
formatet understøtter f.eks. gzip komprimering. Disse komprimerings metoder kaldes for Filters i PDF sammenhæng. En stream kan derudover gøre
brug af mere end et filter. PDF-formatet understøtter følgende filtre:
• ASCII85Decode
• LZWDecode
• FlateDecode
• RunLengthDecode
• CCITTFaxDecode
• JBIG2Decode
32
• DCTDecode
• JPXDecode
• Crypt
Yderligere dokumentation til overst˚
aende findes i [29].
I linje 2 af objektet 5 0 bliver længden af objektet defineret til 42 bytes.
Denne stream i objektet 5 0 beskriver hvordan en tekst i dokumentet skal
renderes, denne beskrivelse er omsluttet af BT og ET. I disse instruktioner
st˚
ar der:
• Brug font F1 med størrelse 24
• G˚
a til position 100 700
• Render teksten Hello World
Grunden til at parenteserne omkring Hello World ikke bliver renderet er
fordi at strings i PDF specifikationen af omsluttet af parenteser.
Objekt 6 0 er den font type som bliver brugt af content i objekt 5 0. Sammenhængen mellem key og value burde være selvsigende.
Den sidste del af PDF dokumentet er traileren. Traileren beskriver hvilke
objekter som findes i dokumentet og traileren definerer hvilket objekt som
starter dokumentet (root objektet). Hvert objekt i dokumentet vil have et
index i traileren kaldet en xref reference. Denne reference best˚
ar af et objektsnummer, versionsnummer og en absolut position af objektet i dokumentet.
Det første objekt af dokumentet skal have objektnummer 0 og versionsnummer 65535 (216 – 16 bit unsigned int). Et eksempel p˚
a en trailer kan være
følgende:
33
Her er der defineret 7 indirekte objekter. Først startes traileren med ordet xref. Derefter er det første tal objektsnummeret p˚
a det første objekt i
dokumentet, det andet tal p˚
a linje 2 er størrelsen af xref tabellen.
For hvert index i xref tabellen fortæller den første kolonne p˚
a hvilken absolutte position i dokumentet objektet starter. Den anden kolonne fortæller
som versionsnummeret og den tredje kolonne fortæller om objektet er i brug
(n) eller er frit (n).
Derefter defineres root objektet i trailer directoriet:
Slutteligt definerer vi den absolutte position af xref tabellen for dokumentet
(i dette eksempel i position 612) og angiver dokumentets afslutning for PDF
parseren:
Det samlede kodeeksempel brugt kan findes i appendix, kodeeksemplet er
en redigeret udgave af det eksempel brugt i [30]
I forhold selve udviklingen af exploits i PDF filer er det typisk at udnytte PDF parserens funktionalitet til at eksekvere Javascript. Gennem usikre
implementeringer af Javascript funktioner i parseren bliver der typisk udført
34
f.eks. heap sprays for at udnytte f.eks. buffer overflows og derigennem plante
kode i ofret hukommelse for at blive ført til eksekvering og derigennem f.eks.
plante rootkits, trojanske heste osv. p˚
a ofrets computer.
For yderligere specifikation af PDF formatet henvises til Adobes egen dokumentation [29].[41]
35
2.5
Angrebs typer
I følgende afsnit vil angrebstypen heap spraying blive præsenteret i forbindelse med udnyttelse af PDF-filers understøttelse af Javascript som kan misbruges i forbindelse med afvikling af netop heap sprays. I denne forbindelse vil
konsekvenserne af et heap spray blive præsenteret nemlig heap buffer overflows. Herudover vil andre former for overflows i forbindelse med applikation
hacking og exploit udvikling blive præsenteret.
2.5.1
Heap spray
Et heap spray fungerer ved at allokere flere objekter indeholdende angriberens kode i programmets heap [31]. Hvor programmets heap er defineret som
den del hukommelse som bruges i forbindelse med dynamisk lager allokering
af programmet [32].
Et heap spray ”sprayer”programmets heap med blokke af angriberens egen
kode, typisk sammen med en NOP-sled. Et heap spray ender oftest med et
heap buffer overflow som kan føre til kørsel af angriberens egen kode (shellcode) ved f.eks. at ændre en pointer til at pege p˚
a placeringen af angriberens
egen kode.
NOP st˚
ar for no-operation, det er en enkelt byte instruktion i assembly til
CPU’en om at gøre ingenting, CPU’en kører derfor bare videre i eksekveringen af koden. En NOP instruktion har derfor ingen effekt, men ved at
skabe større arrays af disse NOP instruktioner kan der skabes en form for
en ”sled”(slæde). S˚
a ved at have et stort array af NOP instruktioner før sin
egen kode kan angriberen skabe et større ”m˚
alomr˚
ade” i heap. S˚
a hvis han
bare hammer et sted i heap men i hans NOP-sled s˚
a vil CPU’en blot køre
igennem alle NOP instruktionerne og dermed til sidst komme til angriberens
kode. [40] NOP koden for Intel x86 CPU familien er 0x90 (et alias for assembly koden XCHG EAX, EAX) [38].
Et eksempel p˚
a en NOP-sled kunne være: Det er p˚
a denne m˚
ade heap
spraying øger udnyttelsesgraden af svagheder i forbindelse med hukommelses
korruption (memory corruption). Angriberens udnyttelsesgrad fordi chancen
for at hoppe til et sted i heap og eksekvere angriberens kode bliver forøget.
Heldigvis er heap sprays relativt nemme at detektere. [33] Heap sprays i
PDF-filer bliver udført af Javascript, ofte sløret af encoded streams. For at
sikre at angriberens kode bliver gemt rigtigt i heap vil kildekoden ofte blive
set unicode encoded. Derfor skal funktionen unescape ofte bruges til decode
kildekode inden den bliver sprayet til heap. Derfor kan vi i se efter specifikke
36
Figur 2.2: Heap Sprays
funktioner og unicode strenge i Javascript kode og f˚
a en god fornemmelse
af om dette Javascript indeholder et heap spray. Se et eksempel p˚
a et heap
spray i Javascript i [42]. Underneden vil forskellige typer af overflows blive
præsenteret.
2.5.2
Buffer overflows
Der findes flere forskellige slags buffer overflows som er relevante at opn˚
a
kendskab om i forbindelse med dette projekt, den primære forskel p˚
a disse
overflows er ofte m˚
aden som hukommelsen som overskrides er opn˚
aet op og
derved ogs˚
a hukommelsens placering. Blandt forskellige typer af angreb p˚
a
applikationer er buffer overflows en af de mest kendte typer og selvom de kan
være svære at identificere og udnytte bliver de stadig i høj grad identificeret
og udnyttet i en lang række applikationer, gamle s˚
adan som nye.
Et buffer overflow opst˚
ar n˚
ar et program prøver at putte mere data i en
buffer end der var allokeret til bufferen. Eller n˚
ar et program prøver at putte
data i hukommelse som ligger udenfor bufferens allokerede hukommelse. N˚
ar
der tales om en buffer menes der en sekuential del af hukommelsen som kan
indeholde alt fra heltal (integers) til karakterer (chars eller strings). En hvor
en allokeret del af hukommelsen befinder sig har ogs˚
a noget at sige i forhold
til udnyttelsen i s˚
arbarheder. [34]
Hvis hukommelsen er allokeret i det som kaldes stack, det vil sige at den allokerede hukommelse er en lokal variabel eller parametre til funktioner, alts˚
a
bruges stack til variabler og lign. som er af statisk størrelse. Heap derimod
bruges til variabler som er allokeret dynamisk (ofte gennem POSIX funktionen malloc()). [34] [35]. Stack baserede buffer overflows havde sin storheds
tid i 1980’erne og 1990’erne, hvor heap baserede buffer overflows havde sin i
de sene 1990’ere, men begge former er stadig brugt i stor stil idag. [36]
37
Kapitel 3
Problem og løsning
3.1
Løsning
Løsningen p˚
a vores problemformulering best˚
ar i et program, som kan scanne
en pdf fil igennem og finde forskellige typer af kode, som muligvis kan udgøre
en trussel for ens computer. Det kunne f.eks. være Javascripts eller start af
eksterne programmer. Efter analyse af PDF-filen vil programmet præsentere
dets analyseresultater for brugeren som kan bruge disse resultater til at træffe
en beslutning om hvorvidt filen er sikker eller usikker.
Programmet er lavet uden et grafisk interface (GUI) som s˚
adan. Dette er gjort
af flere ˚
arsager og med flere betydninger for benyttelsen af programmet. I og
med at der ikke findes et grafisk interface for programmet kræver benyttelsen
af programmet i sig selv en smule teknisk viden. Det vil sige at programmet
et m˚
alrettet mod de teknisk dygtige som eventuelt bruger programmet i en
analyse af potentielt skadelig PDF-filer.
Programmet i sig selv kan ses som en specialiseret del af f.eks. en pakke af
analyse værktøjer eller s˚
agar en del af et anti-virus program som varetager
analysen af PDF-filer dog uden en tolkning af resultaterne som s˚
adan.
38
3.2
Programkrav
Selve produktet i dette projekt vil være et program skrevet i C, da det er
dette sprog som bliver undervist i p˚
a dette semester. Dette programs funktionalitet vil best˚
a i at analysere en PDF-fil for skadeligt indhold, her tænkes
specielt p˚
a at lokalisere eventuelle heap sprays (defineret tidligere) udført i
Javascript og eventuelt sløret af encoded/komprimerede streams i PDF-filen.
Programmet vil kunne tage stien til en given PDF-fil som argument og p˚
a
baggrund af denne sti indlæse, analysere og præsentere resultater for filen.
Programmet vil præsentere dets resultater m˚
alrettet mod it-kyndige personer som kan bruge programmet som et værktøj i analysen af skadelige filer
af typen PDF.
I udviklingen af programmet vil effektivitet i nøjagtighed vægtes over hastighed i og med at programmet er m˚
alrettet som et værktøj til den IT-kyndige
i en analytisk sammenhæng hvor resultatet er vigtigere end den hastighed
resultatet opn˚
as.
39
3.3
Flowdiagram
Figur 3.1: Flowdiagram
40
3.4
3.4.1
Programbeskrivelse
Initialisering
Programmet vil tage et argument i dets kald. Dette argument vil være den
absolutte sti til den PDF-fil som ønskes analyseret. Hvis ikke dette argument
bliver benyttet vil programmet spørge efter en sti til PDF-filen inden analysen kan foretages. I initialiseringen vil filen blive ˚
abnet og filen vil blive
gennemlæst linje for linje. Her vil programmet notere antallet af objekter
som kan have skadelig karakter (disse er omtalt tidligere). Programmet vil se
efter linjer som definerer filtre brugt p˚
a streams da disse betyder at der snart
vil komme en stream som afkodes før analyse, programmet vil ogs˚
a registrere
hvilke filtre bliver defineret og skrive disse, hvis de ikke er understøttet.
3.4.2
Dekodning af encoded streams
Det antages af programmet at den seneste registrerede stream passer til det
senest registrerede filter. Hvis programmet først møder filtret FlateDecode
antager programmet at den næste stream den vil møde gør brug af netop
FlateDecode. Programmet vil i denne version (et Proof Of Concept om man
vil) kun understøtte filtret FlateDecode som er en komprimerings teknik defineret i det populære bibliotek zlib. Denne begrænsede understøttelse af filtre
skyldes implementeringstiden i programmet og for at beholde programmet
enkelthed i forhold til projekts m˚
al om fremstilling af en model. Allerede ved
brugen af encoded streams i en PDF-fil skal der overvejes om det p˚
agældende
objekt skal betyde en mindre troværdighed overfor PDF-filen s˚
avel som dens
udgiver da encoded streams ofte kan bruges til at sløre en PDF-files sande
indhold. Men samtidig skal det noteres at encoded streams ikke kan undg˚
as
i store og ofte kommercielle PDF-filer da indkodningen af streams bruges til
at gemme billedfilers binære data i en form som er komprimeret s˚
avel som
flytbar i HEX eller ASCII format.
3.4.3
Analyse af decoded streams
Efter analysen af de nu decoded/dekomprimerede streams kan den egentlige
analyse af den eventuelle Javascript kode skjult i disse streams begynde.
Der vil blive tjekket for tegn p˚
a heap sprays udført i Javascript som har
nogle forskellige kendetegn som vil blive tjekket efter. Selve NOP-slæden
og angriberens kode er ofte encoded for at sikre korrekt skrivning af det
til heap. Derfor er javascript funktionen unescape benyttet i langt de fleste
41
heap sprays. Inde i funktionskaldet til unescape vil der derfor ogs˚
a befinde
sig encoded data. Dette data kan ogs˚
a detekteres da det ofte har et
3.4.4
Præsentation af resultat
Programmet vil præsentere brugeren med en oversigt over antallet af muligt
skadelige objekter samt en oversigt over antallet af streams, hvor mange
var encoded og i hvor mange streams blev der fundet tegn p˚
a heap sprays
(skadelig kode).
3.4.5
Eventuelle problemer med programmets nuværende funktionalitet
Vi har oplevet nogle problemer som ikke har haft sucess med at løse. En
af problemerne indtræffer n˚
ar en stream indeholdende newlines (hex-værdi
0A) forsøges inflated. I disse tilfælde stopper inflate funktionen uventet efter
første newline og inflater derfor ikke hele stream korrekt. Det andet problem
vi har støt p˚
a sent i udviklingen, er n˚
ar vi finder et filter og søger efter
hvilken type filter der bruges, s˚
a kan filtret være lokeret i samme sætning
som /filter kommandoen. Hvis FlateDecode ikke findes, antages det at den
er i næste sætning, men findes kommandoen stream i denne sætning, opdager
vi at vores program crasher. Disse problemer bør ved eventuel videreudvikling
løses hurtigst muligt. Til trods for de to problemer viser programmet stadig
en god model og god funktionalitet for en scanner af skadelige PDF-filer.
3.5
Programtest
Programmet er blevet testet med flere forskellige PDF-filer med og uden
skadeligt kode inkluderet. Der er kun løbet p˚
a problemer f˚
a gange. Disse
problemer er tidligere beskrevet og taget højde for.
Udover dette ene problem virker programmet efter hensigten i b˚
ade dekomprimerings og analyse delen af programmet.
42
3.6
Perspektivering af program
Programmet er meget fokuseret p˚
a PDF-filer og understøtter kun Zlib’s FlateDecode. Desuden er programmet ogs˚
a s˚
a specifikt og simpelt at dens brug
henvender sig mere til erfarende computerbrugere pga. lav prioriteret brugervenlighed. Dette valg af fokus p˚
a programmet’s brugervenlighed indskrænker
naturligvis vores m˚
algruppe for programmet.
I udviklingen af programmet vil det være relevant at gøre programmet mere
brugervenligt, s˚
adan uerfarende computerbrugere kan blive understøttet af
vores program og dermed blive en del af vores m˚
algruppe. Derefter kan man
arbejde med mulighderne for at understøtte andre filtyper og afkodnings
algoritmer, samt muligheden for at scanne filer i baggrunden af opperativ
systemet ligesom mere kommercielle antivirus systemer p˚
a markedet.
43
3.7
Konklusion
Vi har dokumenteret at cyberkriminalitet er et stort problem og at der skal
gøres noget for at bekæmpe det. Selvom vores løsning p˚
a problemet med
brug af onsindet kode i ofte brugte filtyper behjælper et meget lille omr˚
ade
af det overordnede problem med cyberkriminalitet, mener vi alligevel at vores
produkt kan hjælpe et lille stykke i den rigtige retning.
Vi har løst den afgrænsning af problemet der var mulig inden for den tid og
med de ressourcer vi havde til r˚
adighed. Vores program kan scanne PDF-filer
for den type af onsindet kode som vi har valgt at fokusere p˚
a (Javascript)
og p˚
a fornuftig vis f˚
a dokumenteret for brugeren hvad den scannede PDF-fil
m˚
atte indeholde af potentiel ondsindet kode.
Programmet er gennemtestet og har vist at fange den type onsindet kode vi
har testet. Dog vil der altid blive opdaget eller ˚
abnet for nye muligheder at
inficere en computer p˚
a og vi kan af tid og ressourcemæssige ˚
arsager ikke
opdatere vores program til at kunne bekæmpe disse nye trusler der m˚
atte
komme.
44
Litteratur
[1] http://blogs.techrepublic.com.com/security/?p=1400.
[2] http://www.iwriteiam.nl/HackerDef.html.
[3] http://www.networkworld.com/supp/2004/cybercrime/
112904profile.html.
[4] http://www.securelist.com/en/threats/detect?chapter=72.
[5] http://www.telegraph.co.uk/technology/microsoft/4345295/
Windows-worm-Securityexperts-waiting-for-activation-of-botnet.
html.
[6] http://www.guardian.co.uk/world/2010/sep/26/
iran-stuxnet-worm-nuclear.
[7] http://www.catalysoft.com/definitions/trojanHorse.html.
[8] http://www.cisco.com/web/about/security/intelligence/
virus-worm-diffs.html#6.
[9] http://www.pandasecurity.com/homeusers/security-info/
types-malware/spyware/what-is.htm.
[10] http://www.spychecker.com/spyware.html.
[11] http://www.howstuffworks.com/zombie-computer1.htm.
[12] http://www.f-secure.com/weblog/archives/00001676.html.
[13] http://store.steampowered.com/news/4502/.
[14] http://store.steampowered.com/hwsurvey/.
45
[15] http://woview.infomedia.dk/?url=http://www.comon.dk/
nyheder/Nyt-kritisk-sikkerhedshul-i-Adobe-Reader-1.370791.
html&OpointData=78728c3acf061215c2658a4a86960229JmlkX3NpdGU9NDMxJmlkX2FydGljb
=.
[16] http://www.tekno.dk/pdf/projekter/it-sec2007/2007_
It-sikkerhed-paa-tvaers-af-graenser_rapport.pdf.
[17] http://scamfraudalert.wordpress.com/2010/03/13/
fbi-2009-cybercrime-statistics/.
[18] http://www.fbi.gov/about-us/investigate/cyber/
computer-intrusions.
[19] http://www.computer-forensics-recruiter.com/home/cyber_
crime_statistics.html.
[20] http://www.dst.dk/upload/nr510.pdf.
[21] http://www.tekno.dk/pdf/nummer234.pdf.
[22] http://blogs.techrepublic.com.com/security/?p=4438.
[23] http://www.politi.dk/da/aktuelt/nyheder/2005/itseminar_
230905.htm.
[24] https://www.cert.dk/kontakt/.
[25] http://www.net-security.org/article.php?id=485.
[26] http://www.antivirusworld.com/articles/antivirus.php.
[27] http://www.symantec.com/connect/articles/
social-engineering-fundamentals-part-i-hacker-tactic.
[28] http://www.csis.dk/da/csis/news/3089.
[29] www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/
PDF32000_2008.pdf.
[30] http://didierstevens.com/files/data/
malicious-pdf-analysis-ebook.zip.
[31] http://www.darkreading.com/security/vulnerabilities/
221901428/index.html.
46
[32] http://download.intel.com/design/PentiumII/manuals/
24319102.PDF.
[33] http://download.intel.com/design/PentiumII/manuals/
24319102.PDF.
[34] http://www.owasp.org/index.php/Buffer_Overflow.
[35] http://www.windowsecurity.com/articles/Analysis_of_Buffer_
Overflow_Attacks.html.
[36] http://www.chicagocon.com/images/stories/
library/media_lab/2008s/ChicagoCon2008s_JKoziol_
UnderstandingHeapOverflowExploits.pdf.
[37] R.C. Dorf. Computers, Software Engineering, and Digital Devices.
Electrical Engineering Handbook. Taylor and Francis, 2005.
[38] J. Erickson. Hacking: the art of exploitation. No Starch Press Series. No
Starch Press, 2003.
[39] Organisation for Economic Co-operation and Development. Computer
viruses and other malicious software: a threat to the Internet economy.
OECD, 2009.
[40] J.R. Hanly and E.B. Koffman. Problem solving and program design in
C. Pearson Education, 2009.
[41] Didier Stevens.
Anatomy of malicious pdf documents.
http://iaclub.ist.psu.edu/files/PDF_Seminar/anatomy_of_
malicious_pdfs.pdf.
[42] Didier Stevens.
Anatomy of malicious pdf documents.
http://iaclub.ist.psu.edu/files/PDF_Seminar/anatomy_of_
malicious_pdfs.pdf.
47
Kapitel 4
Bilag
4.1
Programmet
48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include
#include
#include
#include
#include
<stdio.h>
<stdlib.h>
<string.h>
<ctype.h>
<easyzlib.h>
typedef struct {
int js, java, encrypt, autoopen, autoopen2, flash, acro, warn;
} scanResult;
int detectJS(char* inputString) {
if (strstr(inputString, "%") != NULL)
return 1;
if (strstr(inputString, "unescape") != NULL)
return 1;
if (strstr(inputString, "eval") != NULL)
return 1;
if (strstr(inputString, "while") != NULL)
return 1;
if (strstr(inputString, "new Array") != NULL)
return 1;
return 0;
}
void detectCom(char* str, int* js, int* java, int* encrypt, int* autoopen, int* autoopen2
, int* flash, int* acro, int* warn) {
if (strcmpi(str, "/js") == 0)
(*js)++;
if (strcmpi(str, "/javascript") == 0)
(*java)++;
if (strcmpi(str, "/encrypt") == 0)
(*encrypt)++;
if (strcmpi(str, "/aa") == 0)
(*autoopen)++;
if (strcmpi(str, "/openaction") == 0)
(*autoopen2)++;
if (strcmpi(str, "/acroform") == 0)
(*acro)++;
if (strcmpi(str, "/richmedia") == 0)
(*flash)++;
}
char* inflateString(char* currentStream) {
long int nUDstLen = 0, nUSrcLen = 0;
int ret = 0;
unsigned char* pUDstBuf = NULL;
unsigned char* pUSrcBuf = NULL;
unsigned char* pUDest = NULL;
unsigned char* pUSrc = NULL;
nUSrcLen = strlen(currentStream);
nUDstLen = nUSrcLen;
pUDstBuf = calloc(nUSrcLen + 200, sizeof(unsigned char));
pUSrcBuf = calloc(nUSrcLen, sizeof(unsigned char));
strcpy((char*) pUSrcBuf, currentStream);
pUDest = pUDstBuf;
pUSrc = pUSrcBuf;
strcpy((char*) pUDstBuf, "");
ret = ezuncompress(pUDest, &nUDstLen, pUSrc, nUSrcLen);
return (char*) pUDstBuf;
free(pUDstBuf);
}
int main(int argc, char* argv[]) {
FILE* fp;
char str[400000];
char path[512];
int lineNumb = 1;
char* currentStream = calloc(490800, sizeof(char));
int decode, obj, js, java, encrypt, autoopen, autoopen2, flash, acro, stream,
captureobj, captureStream, warn;
decode = obj = js = java = encrypt = autoopen = autoopen2 = flash = acro = stream =
captureobj = captureStream = warn = 0;
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
if(argv[1] == NULL) {
printf("\nEnter the path to the file you want to scan\n");
scanf("%s",path);
} else {
strcpy(path,argv[1]);
}
fp = fopen(path, "rb");
if( ! fp) {
printf("Could not find the designated file. Ending application.");
getchar();
getchar();
return 0;
}
while ( ! feof(fp)) {
fscanf(fp, " %s", str);
detectCom(str, &js, &java, &encrypt, &autoopen, &autoopen2, &flash, &acro, &warn);
if (strcmpi(str, "obj") == 0) {
obj++;
captureobj = 1;
}
if (captureobj == 1) {
decode = 2;
while(strstr(str, ">>") == 0) {
fscanf(fp, "%s", str);
if (strstr(str, "/Filter") != 0) {
if (strstr(str, "/FlateDecode") != 0) {
decode = 1;
}
fscanf(fp, "%s", str);
if (strstr(str, "/FlateDecode") != 0)
decode = 1;
else
printf("\nUnsupported filter: \"%s\" is used, skipping decode", str
);
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
}
}
captureobj = 0;
}
if (captureStream == 1) {
if (strcmpi(str, "endstream") == 0) {
captureStream = 0;
printf("\nLine: %d\n", lineNumb);
if(decode == 1)
{
char* inflatedStream = inflateString(currentStream);
int warning = detectJS(inflatedStream);
printf("Result: %d Inflated string: %s\n",warning, inflatedStream);
}
printf("Length: %d, String: %s\n", strlen(currentStream), currentStream);
strcpy(currentStream, "");
} else if(strcmpi(str, "endstream") != 0 && strlen(currentStream) > 0) {
strncat(currentStream, " ", 490800);
}
if (captureStream == 1)
strncat(currentStream, str, 490800);
}
if (strcmpi(str, "stream") == 0) {
stream++;
captureStream = 1;
}
//printf("Line: %d\n", lineNumb);
lineNumb++;
}
// Clean up duty
fclose(fp);
// Result
printf("\nAntal encrypt: %i\n", encrypt);
printf("Antal obj: %i\n", obj);
printf("Antal stream : %i\n", stream);
printf("Antal
printf("Antal
printf("Antal
printf("Antal
js: %i\n", js);
javascripts: %i\n", java);
AA: %i\n", autoopen);
OpenAction: %i\n", autoopen2);
165
166
167
168
169
170
171
172
173
174
printf("Antal AcroForm: %i\n", acro);
printf("Antal flash : %i\n", flash);
printf("Antal java warns : %i\n", warn);
getchar();
getchar();
// Done
return 0;
}