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; }
© Copyright 2024