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

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

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

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

Installera din WordPress med 9 enkla steg

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

*Pekarvärden *Pekarvariabler & *

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Att använda pekare i. C-kod

GSM Axcess 2/3 Snabbstart

Ladda upp filer fra n PLC till PC

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Lösenordhantering i Device Config.

Introduktion till programmering och Python Grundkurs i programmering med Python

Övning från förra gången: readword

Föreläsning 5: Introduktion av pekare

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

Objektorienterad Programmering (TDDC77)

Strängar. Strängar (forts.)

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

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

Föreläsning 2. Operativsystem och programmering

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

LEX INSTRUKTION LEX LDAP

Allmänt om programvaror och filer i Windows.

ESIM 110. GSM Axcess 2 Snabbstart. Se:

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

Programbeskrivning. Chaos på Web. Version

Registrering i EU login

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT data

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

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

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

4.4 Swing ett interaktivt grafiskt gränssnitt

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

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

MESI i Intel Core 2 Duo

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

Instruktion för registrering

Variabler, värden och typer

Variabler, värden och typer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 10. Pekare (Pointers)

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

Visma Proceedo. Att logga in - Manual. Version 1.3 /

Beställa varor från webbutiken för provtagningsmateriel, remisser och övrigt materiel.

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Det finns många flaggor till g++,

Föreläsning 6 pekare och pekare tillsammans med arrayer

LEU240 Mikrodatorsystem

Det virtuella tangentbordet

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

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

Tentamen TEN1 HI

TUTORIAL: SAMLING & KONSOLL

Koppla din Gavlenetmail till mobilen/surfplattan

Lösenordsregelverk för Karolinska Institutet

Felsökningsguide för Asgari-kameror

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

Felhantering TDDD78, TDDE30, 729A

Mejladressen är i formatet

Tentamen den 18 mars svar Datorteknik, EIT070

FC-kurs Röbäcks skolområde, åk 5-6

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Beställa varor från webbutiken för provtagningsmateriel, remisser och övrigt materiel.

Lathund för BankID säkerhetsprogram

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

Handledning för att söka gymnasieutbildning i Dexter

Tentamen TEN1 HI

Bilaga D - Intervjuer

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Enkla datatyper minne

Uppkoppling med Pulse Secure och Symantec VIP Access

BRUKSAVISNING EASY GSM

Deklarera en struct som kan användas för att representera en rät linje

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Lathund för Novell Filr

HI1024 Programmering, grundkurs TEN

Allmän information ITS Fjärrskrivbord

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Planering Programmering grundkurs HI1024 HT 2014

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

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

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

Viktigt! Läs igenom hela anvisningen innan du påbörjar inloggningen för första gången.

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

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

Tentamen i Introduktion till programmering

Installationsguide Android 8

Handledning hantera förfrågan och lämna offert i IBX Quote

Dok nr OSF/AV-15:003, ver E Inloggning till Treserva via extern dator

Möte 9: Relationer mellan körande processer - (PI)

Öppna filer och filsystem i PintOS Hemuppgift TDDI81, 21/

1 Installationsinstruktioner

Transkript:

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... 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 3sek 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 tex. 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? 1

Lösenord - Hur säkert är det? Ett lösenord på 8a 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 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. 2

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. 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 (se exemple3.c) riskerar man då att skriva över adressen som den använder för att hitta tillbaka i koden. 3

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. 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. 4

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 hur man skriver en egen exploit och hur buffer overflows fungerar på riktigt rekommenderas smashing.txt som är tagen från www.phrack.org. 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. Dessa artiklar och de andra som finns där håller ganska hög nivå men är väldigt intressanta om man sätter sig in i de. 5