Lösenord
Lösenord är vardagsmat för en datoranvändare. Man behöver dem i stort sett överallt där man kan påverka innehållet. Idag skall vi informera lite om just lösenord. Vi skall försöka skriva så alla förstår därför utelämnar vi en del detaljer och använder enkla ord.
Hur fungerar det
Så gott som alltid används lösenord tillsammans med ett användarord. Kombinationen av dessa två gör det mycket besvärligt för vanliga användare att ta sig in i andras konton, om användarordet är okänt. På forum och diverse andra platser är det så att användarnamn och kontots namn (alias) är densamma. Där ger inte systemet ett tvåvägsskydd men på “molnet” är det så gott som alltid så att användarnamnet är okänt. Under sådana omständigheter är skyddet mycket gott även vid enklare lösenord. I dessa fall har jag inte räknat med hackare som i vissa lägen kan ta sig runt lösenordskravet, mer om det längre ner. Om det nu är så att lösenorden lagrades i klartext är risken hundra procent att en hackare plockar ut lösenordslistan och sprider den på internet, som de av någon anledning tycks njuta av att göra.
Lösenordskryptering
För att förhindra lösenord i klartext krypteras lösenordet. Kryptering i sin enklast form kan bestå i att man flyttar fram alla tecken i ett lösenord ett steg. Om lösenordet är “qwert“, som tyvärr är ett mycket vanligt lösenord på nätet och kan hackas på mindre än 0,1 sekund, flyttas “q” ett tecken fram till “r” och “w” flyttas till “x” osv. När vi flyttat klart alla tecknen får vi ett krypterat lösenord som ser ut så här: “exfsu“. Om någon får ut lösenordlistan kan de inte logga in med dessa krypterade lösenord. Tyvärr kan man lista ut hur krypteringen flyttar tecken genom att skapa en hel massa konton, ett med bara “a“, ett med bara “b” osv. Det är inte ovanligt att de skapar samma antal konton som det finns tecken i en dator. När de sedan får ut lösenordslistan undersöker de hur många steg varje teckenordning flyttas av krypteringsverktyget. Inte sällan görs detta på någon sekund i ett datorprogram eller med ett skript.
Lösenord smakar salt
Innan lösenordet krypteras läggs speciella genererade tecken in i lösenordet. Ofta läggs dessa tecken in i början och i slutet av densamma. Även detta kan listas ut av hackare med sina egna konton på sajten. Det är inte helt lätt, ens för begåvade hackare, då man inte vet i förväg hur långa lösenord folk använt men det är inte helt omöjligt. Svårare blir det då sajten lagt in salt mitt i teckenraden efter ett mönster som för en hackare ser slumpmässigt ut. En sådan typ av saltning är mycket svår att forcera om inte helt omöjlig. Med lösenord som lagras i klartext kan administratörer logga in i ditt konto. Om lösenordet är krypterat kan inte ens de logga in eller se vad för lösenord du använder. Krypterade lösenord går inte att dekryptera igen. Själva krypteringenyckeln är lösenordet självt, det är ju krypterat och borta för alla utom för ägaren till lösenordet.
Gissa lösenord
När lösenordet är väl skyddad finns bara ett sätt att komma in, att gissa lösenordet. Till sin hjälp har hackare speciella datorprogram eller skript som kan leta upp rätt lösenord. Först används speciella lösenordslistor som kan bestå av hundratusentals vanliga lösenord som programmet testar. Om lösenordet inte kunde hittas bland dessa börjar den söka efter en bestämd logaritm som är utformat att efterlikna hur en människa tänker ut sitt lösenord. Tjänsten här nedan är ett sådant program men jobbar omvänt. Den undersöker hur säker ditt lösenord är genom att räkna ut hur lång tid det tar för en dator med lösenordslistor och logaritmisk sökning av lösenord skulle ta på sig för att hitta lösenordet. Som ni ser är det av högsta vikt att använda långa lösenord utan innehållande ord som betyder något. Mitt namn “kent” som lösenord tar ingen tid alls att hitta. Lägger jag till efternamnet också, kent carlsson, tar det 2.000 år att hitta. Kent Carlsson, med två stora bokstäver, tar det 923.000 år att hitta. Ett av mina lösenord tar så lång tid att hitta att universum inte längre existerar när det är klart. Ett lösenord med 20 “a” tar minst 16 miljarder år att hitta med dagens datorer. Lägger vi till ett “a” ökar tiden till över 400 miljarder år. Använder vi i stället slumpvis andra tecken talar vi om så många år att det är svårt att förstå.
Mejladressen är en åtråvärd teckensamling
När man skaffar ett konto måste så gott som alltid en mejladress anges. När hackare inte kan komma åt lösenorden kan man i en hackad databas hitta alla kontons mejladresser. Om kontohavarna skaffat konton på andra platser och de platserna inte skyddar sina kontohavare, med exempelvis krypterade lösenord som saltats, kan man ur dessa databaser får ut lösenord. Folk på nätet använder tyvärr ofta samma alias och samma lösenord på flera ställen, så det är ingen match för hackarna att till slut kunna logga in på flera konton som annars är väl skyddade. Därför börjar fler och fler att också kryptera mejladressen. För att skydda sig från denna typ av hacking bör man använda mejladresser speciellt skapat för den plats man skaffar konto på och inte använda den någon annanstans.
Vi har 40.000 mejladresser från konton på Flashback. Varje gång jag tar mig tid att söka på nätet efter dessa adresser hittar jag alltid platser på nätet där var och varannan mejladress använts. Därefter är det inga problem att hitta ägaren till adressen. I vissa fall hittar vi också ett alias som samma person använder på Flashback och plötsligt har vi en ny användare att lägga på hög.
Unika användare
På sajter, som blir fler och fler, där “användare” inte är ett alias kan man göra det svårare att ta sig in för utomstående. Ofta används då mejladressen som “användare” (user). I detta fall kan man skapa en speciell mejladress för den platsen som är som ett lösenord. Så här kan det se ut: gbdbJ[NVB]!%&/2548@mittkonto.se. En sådan mejladress är så gott som omöjlig att gissa. Ett bra lösenord och en sådan användare gör det oerhört svårt, eller helt omöjligt, att ta sig in bara genom att gissa med programvara. Om programvaran kan hitta rätt lösen lär det vara omöjligt att hitta både rätt lösen och rätt användare samtidigt.
Hacka sig förbi lösen
Ett sätt att försöka komma runt lösenordet är att logga in genom att ange en php-kod. En rätt sådan kod kan få inloggningssystemat att godkänna hackaren och som inloggad kan ta över kontot eller hela sajten om det är en administratör. Väl där inne kan användaren stängas ute från att komma in och hackaren kan i lugn och ro, om det är ett administrativt konto, skriva om inlägg eller helt enkelt förstöra sajten helt. Metoden kallas för ”SQL injection” och går ut på att utnyttja en svaghet i systemet genom att i inloggningsrutorna skriva in exempelvis ‘ OR ‘1’=’1. Det som skrivs in i inloggningsrutorna går genom en ”WHERE”-sats och med hjälp av den inskickade (injection) ordet ”OR” jämförs 1 mot 1 som returnerar svaret ”TRUE” alltså att inloggningen stämmer och hackaren är inne. Så här kan meddelandet som skickas till databasen och godkänns se ut: SELECT username FROM usertable WHERE username = ‘‘ OR ‘1’=’1‘ AND password = ‘‘ OR ‘1’=’1‘.
Kan stoppas
Som med allt annat kan detta stoppas på olika sätt. Det vanligaste är att man lägger till escape-tecknet \ till tecknet ‘ i inloggningskoden och blir då så här: \’. Med den metoden ser meddelandet till databasen ut så här: OR \’1\’=\’1\‘. Escapetecken i koden är egentligen till för att strängar skall läsas korrekt där det annars kan förväxlas. Exempelvis kan inte denna sträng läsas av php-motorn på servern: ‘jag gick ut för att ‘stjäla’ mat’. Det går inte läsas därför att ciationstecknen är fler än två. Strängen kan inte läsas om citationstecken omsluts av andra citationstecken. Det löser man genom att lägga till escapetecknet \. Då blir koden så här: ‘jag gick ut för att \’stjäla\’ mat’. Man kan enkelt uttryckt säga att citationstecknen neutraliseras där escapetecknen finns och strängen kan läsas. Genom att lägga till sådana escapetecken till citationstecknen i inloggningsförsöket ser php-motorn inte längre en fungerande kod utan bara en textsträng som vilken annan sträng som helst och returnerar svaret ”FALSE” och inloggningen misslyckades. “I folkets Intresse” utsätts ofta för detta. Det denna eller dessa hackare bla använt sig av är följande:
\’-1\’ or \’97\’=\’97’ och \’1′ och ‘\\’|dir\’ och \’../..//../..//../..//../..//../..//../..//../..//../..//windows/win.ini\’ och \’${@print(md5(acunetix_wvs_security_test))}\’ osv.
Lägg märke till alla \ Det är escapetecken som neutraliserar injection-koden och får tolken att läsa detta som ofarliga strängar. Det är dock högst märkligt att hackarna fortsätter med denna metod när sidan är skyddad mot den metoden. Det kan tyda på en hackare som lärt sig hur man gör men inte lärt sig hur det ser ut när sajten är skyddad, dvs det är en fjant som bara härmar hackarna. Numer är nästan alla sajter skyddade från ”SQL injection”.
Cross-site scripting
Cross-site scripting (XSS) är också en metod som används men det blir allt för avancerat att beskriva så vi väntar med det.
Långa lösen
Kom ihåg:
- använd långa lösen med alla möjliga tecken
- använd alltid unika och svåra mejladresser
- använd aldrig samma lösen på mer än en plats
- skaffa aldrig konton där lösen lagras i klartext
- skriv aldrig mer än du kan stå för, vi kan hitta dig oavsett lösen eller mejladress