Sockets. Processkommunikation Sammanfattning. Sockets. Domän, typ och protokoll

Relevanta dokument
Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Säkerhet. De onda. Vilka är farorna?

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Installera din WordPress med 9 enkla steg

LEX INSTRUKTION LEX LDAP

MESI i Intel Core 2 Duo

10 TIPS FÖR ATT SÄKRA DIN HEMSIDA. Hur du gör för skydda dig mot att din hemsida ska hackas.

Föreläsning 3. Datorkunskap 50p Marcus Weiderstål Bromma Gymnasium

SÄKERHET KUNSKAPER OM SÄKERHET OCH FÖRMÅGA ATT IDENTIFIERA OCH MOTARBETA ATTACKER

Föreläsning 2. Operativsystem och programmering

Introduktion till programmering och Python Grundkurs i programmering med Python

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

Instruktion: Trådlöst nätverk för privata

Föreläsning 5: Introduktion av pekare

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Linuxadministration I 1DV417 - Laboration 7 SSH-magi och systemtrolleri. Marcus Wilhelmsson 6 mars 2013

Ladda upp filer fra n PLC till PC

Installationsanvisningar. till IST Analys

Säkerhetsbrister & intrång

*Pekarvärden *Pekarvariabler & *

Innehållsförteckning Introduktion Installation, konfiguration & Matchning Installation på primära domänkontrollanten...

Att använda pekare i. C-kod

Föreläsning 10. Pekare (Pointers)

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet

Allmänt om programvaror och filer i Windows.

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

F5: Högnivåprogrammering

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

Möte 10: Kommunikation mellan processer - (PI)

F5: Högnivåprogrammering

Instruktion: Trådlöst nätverk för privata enheter

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

Access till Centrum För Affärssystems Virtuella Affärssystemspark.

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

För att använda detta system behöver du en dator med internetåtkomst samt din G&D iphone.

Instruktion: Trådlöst utbildningsnät orebro-utbildning

Datakommunika,on på Internet

FC-kurs Röbäcks skolområde femmor och sexor

Tentamen den 18 mars svar Datorteknik, EIT070

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

GSM Axcess 2/3 Snabbstart

Kom igång med Provectus Groupware

Compose Connect. Hosted Exchange

DIG IN TO Nätverksteknologier

Säkerhet. Vad är det vi pratar om??

Filöverföring i Windowsmiljö

BRUKSANVISNING FÖR NÄTVERKSANVÄNDARE

Koppla din Gavlenetmail till mobilen/surfplattan

Installationsanvisning - Kopplingen mellan GK96 och golf.se -

Innehåll Information om hemkatalog och lagring av filer... 2 PC... 2 GDA-dator, Windows

Laboration 2 Datorverktyg vid LiU

Felsökningsguide för Asgari-kameror

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Introduktion till användning av linux-servern sledge och några övningsuppgifter

Administrationsmanual ImageBank 2

uppgifter Närvarorapportering via mobiltelefon 3 via webben 5 Klarmärkning av närvarorappportering 6 Statistik 7 Teckenförklaring 8

Strängar. Strängar (forts.)

via webbgränssnittet. Du har även tystnadsplikt gällande dina identifikationsuppgifter.

Innehåll Information om hemkatalog och lagring av filer... 2 PC... 3 DAFGU-/GDA-dator, Windows

Objektorienterad Programmering (TDDC77)

Filsystem. Varför? Hur? För att kunna lagra data mer permanent än i RAM. Vettig organisation Vettiga namn

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser

Lösenordsregelverk för Karolinska Institutet

Lathund för Novell Filr

TDDC77 Objektorienterad Programmering

Säkerhet, eller nått. Tomas Forsman

På servern För att registrera och köra en Topocad 17 nätverkslicens krävs att man installerar den senaste Licensservern

Åtkomst och användarhandledning

Win95/98 Nätverks Kompendium. av DRIFTGRUPPEN

Operativsystem IS1350

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

Programbeskrivning. Chaos på Web. Version

Handbok Dela Skrivbord. Brad Hards Översättare: Stefan Asserhäll

JobOffice SQL databas på server

Konfigurering av eduroam

Grundläggande datavetenskap, 4p

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Filleveranser till VINN och KRITA

Norman Endpoint Protection (NPRO) installationsguide

Introduktion till programmering

Foto: Björn Abelin, Plainpicture, Folio bildbyrå Illustrationer: Gandini Forma Tryck: Danagårds Grafiska, 2009

Handhavande manual problemhantering

Nätsäkerhetsverktyg utöver kryptobaserade metoder

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Anvisningar för inkoppling till Mikrodataåtkomst vid SCB

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Program & programmering

Instruktion för integration mot CAS

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015

Inledande programmering med C# (1DV402) Introduktion till programmering

Datorsystemteknik Föreläsning 7DAVA14

... Funktionsanrop. Vad händer när man kör ett program?

Lösenordhantering i Device Config.

ESIM 110. GSM Axcess 2 Snabbstart. Se:

Utförande: I exemplet så kommer vi att utgå från att man gör laborationen i en Virtuell miljö (Virtualbox).

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Transkript:

Processkommunikation Sammanfattning Pipes Kan användas då processerna har en gemensam föräldraprocess. Tillgängligt överallt FIFO Som pipor fast processerna behöver inte ha någon gemensam förälder. XSI IPC (Allmänt rätt krångligt med många olika systemanrop etc.) Message Queues Krångligt rätt långsamt sätt att kommunicera. Delat minne Snabbt sätt att kommunicera, datat behöver inte kopieras mellan processerna/till någon buffert. Kräver att vi använder någon form av synkronisering så att vi vet när vi kan läsa/skriva till det delade minnet Semaforer För att synkronisera processer. Sockets Kan användas för kommunikation mellan processer på olika 238datorer. Sockets 239 Sockets Domän, typ och protokoll Ett till sätt att kommunicera. Med sockets så kan vi även kommunicera över nätverk eller lokalt på en maskin. Lite bökiga att komma igång med då vi kan välja många olika protokoll för kommunikationen etc. (för internetförbindelser kan vi t.ex. välja mellan TCP och UDP). Många utav funktionerna som jobbar med fildeskriptorer funkar också med sockets Domänen tillhandahåller ett adresseringssystem och ett antal protokoll. Sockets ansluter bara till andra sockets i samma domän AF_INET Internet AF_UNIX Internt på en unixdator Typen bestämmer semantiken för kommunikationen SOCK_STREAM Tillförlitlig tvåvägs byteström. Socketarna måste vara hopkopplade med connect. Vi kan använda read och write SOCK_DGRAM otillförlitlig meddelande (fix längd) kommunikation. Vi skickar meddelanden med sendto och tar emot med recvfrom Protokoll kan oftast bestämmas utifrån domän och typ. T.ex. AF_INET och SOCK_STREAM ger protokollet TCP 241 240 241

Unix domain sockets Domänen AF_UNIX Sockets lokalt på en dator. Använder sig av filsystemet för adresser socketpair(int domain, int type, int protocol, int socket_vector[2]) Genererar två hopkopplade sockets som man kan kommunicera mellan på ett liknande sätt som om vi använt pipe. Båda socketarna går dock att både läsa och skriva från 242 243 Operationer för en server socket Skapar en namnlös socket bind Ger socketen en adress (ett namn) listen Meddelar att processen är villig att ta emot anslutningar till socketen accept acceptera ett anslutningsförsök. Ger tillbaka en ny socket med samma egenskaper som kan användas för den faktiska kommunikationen med klienten Och för en klient som vill ansluta sig till servern socket Skapar en namnlös socket connect Anslut socketen till en annan socket 244 245

246 247 Mer info För mer info om sockets och de olika protokollen man kan använda och deras egenskaper rekommenderar jag att ni läser en datakommunikationskurs Säkerhet 248 249

Normal flow Information source Information destination Vilka är farorna? Interruption Interception Modification Fabrication 250 Sabotage (virus, trojaner, spionprogram) Intrång ( inbrott eller slarv) Olyckor (diskfel, fummel vid tgb) Handhavande (studenter som hittar tentor) Fysisk säkerhet (kommer man åt servern) Identitet (verifiering av maskiner och personer) Programfel (ex buffer overflow, lita på skitig information Systemfel (dåliga policybeslut) 251 De onda Spioner Crackern Slumpen Medarbetare - slarvern Medarbetare - spionen Säkerhet Viktigt!!!! Stort och komplext Lite granna datorkommunikation Lite granna matte Lite granna programutveckling Lite granna organisation Lite granna planering & policy 252 253

Programfel Ett alldeles för vanligt fel Slarviga eller ovetande programmerare Fel algoritmer Tankefel Testar inte alla fall Generell säkerhet Här finns det inga direkta rätt eller fel. Snarare saker man bör tänka på när man implementerar ett program. Kort sagt: Efter att du kommit på hur du tänkt göra, sov på saken och tänk en gång till... 254 255 Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix loggar alla inloggningsförsök. Om en användare av misstag skriver in sitt lösenord istället för användarnamn kommer det att stå i klartext i logfilerna. Om det sedan loggar in en användare 3 sekunder senare är det inte svårt att lista ut och matcha användarnamn och lösenord. Problemet är att man vill kunna logga ev. intrångsförsök. Vid användarnamn som inte finns, ska man logga det automatiskt? Loggning fortsättning Webservern Apache loggar komplett Url, även det som står efter?-tecknet. Det som står efter?-tecknet (query-strängen) brukar innehålla användarnamn och ev. lösenord för gästböcker och liknande. Behövs det verkligen dyka upp i log-filerna? Problemet är att man vill kunna se vem som gjort ett inlägg i en gästbok t.ex.. En lösning: använda metoden post istället för get när det gäller känslig data. Då måste man själv göra nödvändiga loggningar för att kunna kontrollera vem som gjort vad på sin hemsida. Tänk på vad som ska loggas när ni skriver ett program. Ska allt loggas även om det riskerar att innehålla känsliga uppgifter? Vem ska kunna läsa logfilerna? 256 257

Lösenord - Hur säkert är det? Ett lösenord på 8 tecken kan vara ett av 256^8 kombinationer. Men i realiteten kan man lista ut ganska mycket om ett lösenord. För det första brukar man inte tillåta svenska tecken och tecken som man inte kan skriva på ett normalt tangentbord. Redan då är man nere i ca 127^8 kombinationer. Därefter kan man anta att ett lösenord inte innehåller fler siffror än tecken, inte fler specialtecken än vanliga tecken, inte fler versaler än gemener osv... Helt plötsligt är man nere i ännu färre kombinationer. Lösenord forts Dessutom använder många användare samma lösenord på flera ställen. Vad finns det för garantier att ett lösenord lagras på ett säkert sätt på ett annat system? Vid ett nytt system, kan man tvinga användaren att använda ett nytt lösenord? Hur ska man lagra lösenordet så att det inte går att komma åt även om man hackar datorn som det ligger lagrat på? Mer läsning finns på http://www.psychpage.com/tech/passwords.html 258 259 Programinfo - Vem är du? Många datorer och program sprider gladeligen ut information om vad och vilken version de kör. Om nu den versionen har en säkerhetsbrist är det väldigt enkelt för en hackare att skanna runt i ett nätverk för att få reda på vilka datorer som är känsliga för en attack. Om den inte på ett enkelt sätt visar versionsnummer är det svårt för sysadmins att hålla koll på att man har de senaste patcharna. Ska vem som helt kunna få ut information om ett system? Behöver alla användare få reda på vilken tid och med vilka flaggor ett visst program kompilerades? Om man portscannar en dator kan man få en hel del info om möjliga mål för en attack. Programmering Varje program får ett eget minnesutrymme som det körs i (i exemplet nedan endast 256byte, i verkligheten 4GB. Principen är densamma). Själva programmet läses in och hamnar på ett ställe och variablerna hamnar på ett annat. För att man ska kunna ha lokala variabler i varje funktion reserveras nytt minne varje gång en funktion anropas. 260 261

Buffer overflow Varje instans av en funktion har en egen minnesplats för sina variabler. Men t.ex. printf kan ju anropas från flera ställen i koden, hur vet den då vart den var innan anropet? Genom att just innan det "lokala" minnet lägga upp den plats den var på, kan den sen hittat tillbaka till vart den var innan funktionsanropet. På så vis kan man anropa samma funktion från flera ställen i koden. När printf avslutar kollar den den sk återhoppsadressen och hoppar tillbaka dit i koden. Det som händer vid en buffer overflow är att man t.ex. skriver utanför en array. Eftersom allt ligger i närheten av varandra i minnet riskerar man då att skriva över adressen som den använder för att hitta tillbaka i koden. 262 263 264 265

Utnyttja buffer overflow Vid en exploit så gör man en kontrollerad buffer overflow. Istället för att skriva sönder återhoppsadressen skriver man dit ett värde som gör att programmet hoppar till den kod som man själv vill köra. Den programkoden får man oftast in via stdin, inläsning från en fil, en miljövariabel via en nätverksuppkoppling eller liknande. Huvudsaken att den finns någonstans i minnet. 266 267 KONTROLLERA ALL INDATA!! Speciellt om ni skriver ett nätverksprogram eller ett program som ska köras av root/med root-rättigheter. Annars kan programmet hackas på ett väldigt enkelt sätt... Har man en buffert på 10 byte ska man inte undra några omständigheter kunna försöka fylla den med mer än 10 byte. Hur skyddar sig operativsystem mot detta? Vissa Lagrar en checksumma på vissa ställen i stacken och kan då märka om något som inte borde ha ändrats har gjort det Spärra stacken från att kunna exekveras Byta plats på stacken mellan körningar Alla dessa går att ta sig runt (även om det gör det hela betydligt bökigare) 268 269

Olika typer av fel Segmentation fault Får man om man försöker komma åt en minnesadress man inte har tillgång till eller försöker skriva till en adress som är read-only. T.ex. (NULL). Vanligen har man tappat kontrollen över en pekare eller att återhoppsadressen är trasig och pekar på någon minnesposition som är fel. Illegal instruction Får man om man försöker köra kod som inte är giltig maskinkod. Trolig orsak: kvaddad återhoppsadressen. Bus error Beror på att processorn försöker optimera läsning till och från minnet. På en 32-bitarsmaskin läser den in 4 byte (32- bitar) åt gången. För att det ska bli snabbt måste adressen som den läser/skriver vara jämt delbar med 4. Är den inte det blir det ett bus error. Trolig orsak: man har tappat kontrollen över en pekare eller, återhoppsadressen är trasig. Vidare läsning På kurssidan finns flertalet artiklar att läsa om man är intresserad av att läsa mer. Vill man lära sig mer om hur buffer overflows fungerar på riktigt rekommenderas http://apossum.alfaspace.net/eng/syngress.buffer. Overflow.Attacks.Dec.2004.ISBN1932266674.pdf www.phrack.org har en massa artiklar inom området Secure-Programs-HOWTO.pdf är en ganska komplett genomgång på olika fel man kan göra. Inte enbart i C- programmering. Rekommenderas att skumma igenom om man vill få en överblick över vilka fallgropar som finns när man skriver kod. 270 271