Erik Hjelmvik Gävle, 2009-06-16
Innehåll 1 Inledning...1 2 Mål och syfte...1 3 Projektbeskrivning...1 4 Leverabler och milstolpar...2 5 Resultat...3 5.1 Positiva resultat...3 5.2 Mindre positiva resultat...3 6 Vetenskapliga resultat...4 7 Utvärdering och analys...4 7.1 Utvärdering av resultat...4 7.2 Förslag på förbättringar av SPID...4 8 Framtida arbeten...5 8.1 UDP-stöd...5 8.2 Tidig identifiering av protokoll...5 8.3 Identifiering av obfuskerade protokoll...5 9 Källor...6 ii
1 Inledning Erik Hjelmvik har mellan augusti 2008 och juni 2009 genomfört projektet Statistisk Identifiering av Protokoll på uppdrag av Stiftelsen för Internetinfrastruktur (.SE). 2 Mål och syfte Syftet med projektet var att bidra till ett säkrare Internet genom att utveckla en metod för automatisk identifiering av protokoll i datakommunikation. I projektet har ingått att bland annat ta fram en proof-of-concept-applikation, samt att beskriva lösningen i en artikel eller ett akademiskt paper. Mätbara mål i för projektet är: Minst en artikel, akademiskt paper eller annan motsvarande publikation som beskriver den föreslagna lösningen skall publiceras på Internet (eller annan relevant publikationskanal) innan projektet avslutas En presentation av projektet och dess bakomliggande idé skall göras innan projektet avslutas. En proof-of-concept-applikation skall publiceras på Internet (exempelvis sourceforge.net) som öppen källkod innan projektet avslutas o Fullständig källkod skall finnas tillgänglig för allmänheten o En exekverbar version applikationen skall finnas tillgänglig, vilken skall kunna köras utan att behöva kompilera källkoden eller liknande Tre mer långsiktiga mål har även definierats för projektet: Proof-of-Concept-applikationen skall sammanlagt ha laddats ner minst 1000 gånger tre månader efter att den släppts som öppen källkod (på exempelvis sourceforge.net) Minst tre akademiska papers, artiklar eller andra publikationer skall referera den publicerade artikeln eller applikationen inom ett år efter projektets avslutande. Hela eller delar av proof-of-concept-lösningen skall, inom ett år efter att den släppts, ha använts i minst en annan applikation. 3 Projektbeskrivning Projektet har gått ut på att utveckla och analysera en algoritm (SPID-algoritmen) för att kunna identifiera protokoll i applikationslagret, det vill säga i praktiken lager 5 till 7 i OSI-modellen (ISO/IEC 7498-1). SPID-algoritmen använder statistiska modeller skapade genom analys av olika egenskaper och beteenden i applikationslagret hos träningsdata. Detta gör att information från underliggande lager i OSI-modellen, som exempelvis portnummer (vilket finns i lager 4 i OSImodellen), inte behöver användas för att identifiera protokollet i applikationslagret. 1
I projektet har ett Proof-of-Concept (PoC) tagits fram i form av en applikation som publicerats som öppen källkod på SourceForge. PoC-applikationen har dessutom använts för att utvärdera och förbättra algoritmen. Under projektets gång har Erik kommit i kontakt med ett flertal andra personer som forskar i närliggande områden. Erik har bland annat haft ett långtgående samarbete med Wolfgang John från Chalmers, de har tillsammans utvärderat SPID-algoritmens förmåga att identifiera protokoll. 4 Leverabler och milstolpar Bland leverablerna i projektet ingick bland annat att publicera en PoC-applikation av SPID på Internet samt att publicera en artikel som beskriver algoritmen. En detaljerad lista över samtliga leverabler och övriga milstolpar i projektet finns nedan i Tabell 1. Nr Leverabel Beskrivning av det förväntat resultat Planerat datum 1 Projektstart 2008-08-01 2 3 4 Alpha-version 5 6 Beskrivning av utvalda attribut 7 Beta-version 8 9 Skarp version 10 Artikel 11 Presentation Första kontakt etablerad med lämpliga samarbetspartners för att samla in statistik från nätverkstrafik i syfte att skapa statistiska signaturer för utvalda protokoll. Ett större antal attribut för protokollsignaturer finns sammanställda En första alpha-version av proof-of-conceptapplikationen färdigställd Statistisk data från nätverkstrafik insamlat för relevanta protokoll från minst tre olika källor Gallring bland attributen genomförd och de bästa attributen identifierade. En lista med de utvalda attributen levereras till.se En första beta-version av proof-of-conceptapplikationen publicerad på Internet Analys av korrektheten (procent false positives och false negatives) för applikationen genomförd En slutgiltig proof-of-concept-applikation publicerad på Internet Ett paper eller artikel, där både lösningen och hur den kan användas beskrivs, publicerad på Internet En presentation som beskriver projektet och dess resultat 2008-10-01 2008-11-01 2008-12-01 2009-02-01 2009-03-01 2009-03-01 2009-05-01 2009-07-01 2009-07-31 2009-07-31 12 Slutrapport 2009-08-31 Tabell 1 Leverabler och milstolpar i projektet PoC-implementationen av SPID-algoritmen finns att ladda ner som källkod eller körbar Windows-applikation i fyra inkrementella versioner från SourceForge på adressen: http://sourceforge.net/projects/spid/ 2
Beskrivningar av samtliga attribut (attribute meters) finns att läsa på wiki-sidan för SPIDalgoritmen på adressen: http://spid.wiki.sourceforge.net/attributemeters Två dokument, som beskriver SPID-algoritmen, har skrivits under projektets gång. Det första dokumentet är en teknisk rapport som publicerades på.se:s webbsida under oktober 2008. Syftet med denna rapport var att ha ett dokument publicerat som beskriver algoritmen, vilket var en förutsättning för att kunna diskutera algoritmen med andra personer som gör forskning inom området. Denna rapport finns tillgänglig på adressen: http://www.iis.se/docs/the_spid_algorithm_-_statistical_protocol_identification.pdf Det andra dokumentet är en forsknings-artikel (d.v.s ett akademiskt paper) med titeln Statistical Protocol IDentification with SPID: Preliminary Results som blivit accepterad av the 6:th Swedish National Computer Networking Workshop (SNCNW 09). Wolfgang John har varit medförfattare till denna artikel. Artikeln finns tillgänglig på: http://spid.sourceforge.net/sncnw09-hjelmvik_john-cr.pdf En presentation av SPID-algoritmen genomfördes också under SNCNW 09. De slides som Erik visade under presentationen finns tillgängliga på: http://spid.sourceforge.net/statistical_protocol_identification_with_spid.pdf 5 Resultat 5.1 Positiva resultat Det absolut mest positiva resultatet i projektet är att SPID-algoritmen med framgång kan användas till att identifiera applikationsprotokollet i TCP-sessioner. Med en relativt begränsad uppsättnings träningsdata för protokollen BitTorrent, edonkey, HTTP, SSL och SSH har det visats att SPID PoC v 0.3 med 92% korrekthet kan identifiera rätt protokoll i en uppsättning TCP-sessioner (Hjelmvik och John, 2009). Med mer träningsdata och en nyare version av PoCalgoritmen hade SPID förmodligen kunnat identifiera ännu större andel av TCP-sessionerna i valideringsdatat. Enkla test av PoC-applikationen har dessutom visat att SPID-algoritmen verkar kunna identifiera även protokoll som är designade med avsikt för att de ska vara svåra att identifiera. Det krypterade och obfuskerade BitTorrent-protokollet Message Stream Encryption (MSE) är ett sådant protokoll. Varenda byte i MSE-protokollet är exempevis till synes slumpmässig och paketen har slumpmässiga längder genom användning av slumpmässigt antal padding-bytes och segmentering av TCP-paket till slumpmässiga längder (AzureusWiki). Mer analys behövs dock för att med säkerhet kunna avgöra om SPID-algoritmen kan användas för att identifiera denna typ av protokoll. 5.2 Mindre positiva resultat Det fanns inga direkt negativa resultat med projektet, men en del besvikelser. En sådan besvikelse var att SPID-algoritmen inte verkade fungera lika bra om man endast använde ett fåtal av de attribute meters som har tagits fram under projektets gång. 3
Utvärderingar som gjorts i projektet har visat att algoritmen får betydligt sämre förmåga att identifiera protokoll om endast en handfull attribute meters används istället för de drygt 30 som programmet använder idag. Detta har gjort att varenda attribute meter har behövt dokumenteras inom ramen för detta projekt, vilket har krävt en hel del tid. Den största besvikelsen var dock svårigheterna med att samla in träningsdata och valideringsdata till utvärderingen av SPID-algoritmen. Det grundläggande problemet är att företag och organisationer inte kan lämna ut inspelad nätverkstrafik eftersom det skulle kunna kränka den personliga integriteten hos användarna eller avslöja sekretessklassad information. Organisationer som CAIDA 1 lämnar till exempel endast ut inspelad nätverkstrafik till personer som är anslutna till högskolor och universitet som gör forskning inom området för traffic classification. 6 Vetenskapliga resultat Forskning som gjorts inom området traffic classification, där maskininlärning har använts för att identifiera protokoll, har använt träningsdata och valideringsdata från samma nätverk och ungefär samma tidsperiod. Detta leder till att träningsdatat och verifieringsdatat är väldigt lika varandra, vilket underlättar identifieringen avsevärt. I en verklig applikation har man oftast inte möjlighet till sådan lyx, eftersom samma träningsdata bör kunna användas på olika nätverk. Något som är speciellt med den artikel som publicerats på SNCNW 09 är att analysen använder helt olika källor till nätverkstrafiken i träningsdatat respektive verifieringsdatat. Att uppnå 92% korrekthet under dessa förutsättningar är anmärkningsvärt. 7 Utvärdering och analys 7.1 Utvärdering av resultat Resultaten från projektet visar att SPID-algoritmen fungerar mycket bra för att identifiera protokoll i applikationslagret. Till skillnad från många andra algoritmer som används inom forskningsområdet traffic classification så verkar SPID-algoritmen dessutom ha de egenskaper som krävs för att den ska vara praktiskt tillämpbar i en verklig driftmiljö. Några av dessa egenskaper är: Protokollmodeller behöver inte skapas genom manuell analys av ett protokoll och dess dokumentation, allt som behövs för att skapa en modell i SPID är träningsdata Protokollmodeller skapade från samma träningsdata kan användas på olika nätverk utan att behöva tränas om Protokollet i en session kan identifieras relativt tidigt efter endast ett fåtal observerade paket 7.2 Förslag på förbättringar av SPID Insamling av mer träningsdata från fler nätverk skulle göra SPID-algoritmen mer robust, eftersom det skulle ge en mer korrekt distribution av datat i protokollmodellerna i SPID. 1 The Cooperative Association for Internet Data Analysis, www.caida.org 4
En annan förbättring vore att utöka PoC-implementationen av SPID-algoritmen så att den utöver TCP också klarar av att identifiera protokoll som använder UDP som transportlager. 8 Framtida arbeten Det finns ett flertal intressanta uppslag på fortsättningar av detta projekt. De mest intressanta och genomförbara idéerna som identifierats finns presenterade nedan. 8.1 UDP-stöd Allt fler nya protokoll dyker upp som använder slumpvist valda portar för sin kommunikation. De flesta av dessa protokoll är P2P-protokoll av olika slag, som exempelvis Skype, BitTorrent samt diverse protokoll för strömmande video eller ljud. Många av dessa protokoll använder sig dessutom helt eller delvis av UDP. Ett förslag på fortsatt arbete vore därför att implementera stöd i SPID för UDP-sessioner samt att samla in träningsdata för ett flertal sådana. 8.2 Tidig identifiering av protokoll IT-säkerhetssystem, som i realtid analyserar trafik för att kunna larma alternativt genomföra aktiva åtgärder då otillåten trafik identifieras, behöver kunna identifiera protokollet i ett mycket tidigt stadium av en session. Många av de befintliga algoritmer som kan identifiera protokoll med statistiska metoder behöver bygga upp en relativt stor statistisk modell av den observerade trafiken innan en tillförlitlig gissning kan göras av vilket protokoll som används. Eftersom SPIDalgoritmen använder sig av Kullback Leibler-algoritmen (Kullback och Leibler, 1951) så kan sannolikhetsfördelningen från ett fåtal observationer på ett tillförlitligt sätt jämföras med en den sanna fördelningen i en modell. Detta gör att SPID kräver betydligt färre observationer än andra algoritmer som använder exempelvis Bhattacharyya-avstånd för att jämföra en sannolikhetsfördelning från en observation med en modell. Hur pass bra SPID-algoritmen är på att tidigt kunna identifiera ett protokoll i en session är dock okänt. Det vore därför relevant att i ett fortsatt arbete utvärdera hur många paket som behöver observeras i en session för att med säkerhet kunna säga vilket protokoll som används. 8.3 Identifiering av obfuskerade protokoll I en eventuell fortsättning av projektet vore det även relevant att utvärdera hur väl SPIDalgoritmen klarar av att identifiera obfuskerade protokoll, som exempelvis MSE-protokollet, vilka är utformade just med avsikten att de inte skall kunna detekteras. 5
9 Källor AzureusWiki, Message Stream Encryption. http://www.azureuswiki.com/index.php/message_stream_encryption (2009-06-14) Hjelmvik E. och John W., Statistical Protocol IDentification with SPID: Preliminary Results. 6:th Swedish National Computer Networking Workshop (SNCNW); 2009. ISO/IEC 7498-1:1994, Information Technology Open Systems Interconnection Basic Reference Model. Kullback S. och Leibler R. A., On information and sufficiency. Annals of Mathematical Statistics, vol. 22, s. 49 86; 1951. 6