Linnéuniversitetet Projektrapport (4 HP) Grundläggande Operativsystem 1DV415 Test av lösenordsknäckningsattacker mot Windowsanvändare David Lundqvist, Fred Uggla 8 januari 2014
Sammanfattning Med hjälp av programmen Ophcrack och Hashcat som medföljder i operativsystemet Kali Linux har vi försökt att knäcka Windows SAM-databas. Windows använder sig inte utav saltning av hasharna vilket var väldigt betydande för att göra vår undersökning möjlig. Ett dussin användarkonton skapades till en början i Windows 7 med varierande lösenord med gemener, versaler samt siror. På så vis uppnåddes en viss svårighetsgrad för att i slutändan få ett relevant resultat. Programmet Ophcrack innehöll i grunden inga hash-register och vi ck därför ladda ner Rainbow-paket med liknande teckenuppsättning gentemot de tidigare skapande användarlösenorden. Windows SAM-databas var låst till en början men eftersom vi använde oss utav ett Linux-baserat operativsystem var det i slutändan enkelt att få åtkomst till den. Denna metod i helhet fungerar på så sätt att den provar enormt många hashar och ser om dessa överensstämmer med de bentliga i Windows. När en trä uppstår bevittnar sig det ursprungliga lösenordet till ett visst användarkonto. Ophcrack hade dock endast stöd för den engelska teckenuppsättningen. Hashcat användes därför för att försöka knäcka de svenska lösenorden.
1 Introduktion En PC blir idag väldigt personlig med tiden. De vi lagrar på våra diskenheter är ofta känslig data. Med denna undersökning skall vi försöka få en uppfattning om hur lätt det är att få tillgång till ett användarkonto i Windows genom att försöka knäcka dess lösenord, utifrån fysisk åtkomst. Hur säkert är Windowsinloggning är frågan vi nu ställer inför denna undersökning. Som metod används två snarlika ordlistetekniker. Med denna metod så testas ett enormt stort antal hashar mot de bentliga i Windows och försöker på så sätt få en överenstämmelse. Ett dussin användarkonton med varierande lösenord skapades på en fullt uppdaterad Windows 7 maskin som kördes virtuellt i WMware Workstation 10. Dessa lösenord lagras som vanligt i Windows SAM-databas som hashar lösenorden med MD5. Dock utan salt, vilket innebär att alla lösenord på alla datorer som kör Windows genererar samma serie bokstäver och siror för att dölja det riktiga lösenordet. Det främsta verktyget som användes var operativsystemet Kali Linux[1]. Ett OS gjort för penetrationstest av system och tjänster som kommer med ett stort antal program samt ett graskt gränssnitt vilket gör det förhållandevis enkelt att använda i jämförelse med att endast ha tillgång till en terminal. Operativsystemet Kali Linux som innehåller de nödvändiga programmen kommer att bootas upp på denna Windows-maskin. Under experimentet användes lösenordsknäckningsprogrammen Ophcrack[2] och senare även Hashcat[3] i denna undersökning. Ophcrack används främst till att dumpa hasharna från Windows databas och jämföra dem med tidigare beräknande hashar i en separat databas. Dessa databaser kallas rainbow tables[4] och innehåller samtliga hashar för en serie lösenord. En sådan lista går att generera själv med hjälp av Kali Linux, det nns också ett stort utbud online. Tillgängligt med lite enkelt googlande. Den tabell som nyttjades främst under experimentet täckte följande hashar. Lösenordslängd på 6 tecken Teckenkodning: 0123456789abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[] _`{ } (mellanrum) Lösenordslängd på 7 tecken Teckenkodning: 0123456789abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ Lösenordslängd på 8 tecken Teckenkodning: 0123456789abcdefghijklmnopqrstuvwxyz 2
Den sammanlagda storleken på alla de ler som lagrar hasharna är cirka 8GB. Det fanns mycket större och mer heltäckande rainbow tables tillgängliga. Nackdelen är att ingen innehåller åäö. Det går förstås, som nämndes ovan, att generera en egen tabell med stöd för åäöåäö. Istället användes hashcat med en svensk ordlista. Ordlistan som användes var en enkel textl med en stor mängd svenska ord och namn, dock inte hashade utan det gör hashcat i realtid. Det nns även stora möjligheter till mutationer på ordlistan. Exempelvis kan varje ord prövas med storbokstav i början, eller med en sekvens siror på slutet. Självfallet ökar då tiden det tar att gå igenom en ordlista från början till slut. Under körningen av programmen utfördes en enkel tidtagning med mål att se hur snabbt individuella lösenord kan knäckas som hur lång tid det tar för programmen att slutföra sin uppgift. Anledningen till experimentet ligger främst i vår egen nykenhet. Hur säkra är nyare versioner av Windows egentligen? Hur svårt är det att lära sig knäcka lösenord och hur lång tid tar det att utföra en attack med hjälp av en vanlig persondator? 2 Experiment En virtuell maskin skapades i VMware Workstation och Microsoft Windows 7 installerades med de senaste uppdateringarna samtidigt som ett ertal användare med lösenord av varierande svårighetsgrad kongurerades. Lösenord var tänkta att efterlikna realistiska lösenord som vanliga användare skulle kunna använda sig av. Efter det utgick vi från scenariot att vi ville attackera datorn och komma åt lösenorden. Dock utan administratörsrättigheter, men med obegränsad fysisk tillgång till själva maskinen. Security Accounts Manager (SAM) är den l i Windows som har lösenorden sparade. Den är delvis krypterad, helt låst och går inte att komma åt såvida användaren inte har administratörsrättigheter. En ISO-l med Kali Linux monterades och laddades utan problem in i RAM. Windowsdisken monterades automatiskt och SAM-len låg nu öppen för vem som helst att hämta. I Kali Linux användes först Ophcrack för att dumpa SAM-len och komma åt de hashar som var sparade i databasen. De skydd som vanligtvis låser len från åtkomst i Windows var inte aktiva eftersom hårddisken var monterad i Linux och dekrypteringen är enkel då nyckeln nns sparad i samma katalog som 3
databasen. Hasharna jämfördes sedan mot ett antal rainbow tables med olika räckvidd. Samtliga lösenord inom spannet gick att knäcka på under 15 minuter. Lösenord 1234 0:01 1234567890 1:00 password 1:00 123qwe 1:10 ullis90 1:30 ill3rn 7:00 yoggi45 8:00 hest3n 8:00 JUle0st 9:40 p2ssw0rd 11:30 m4tt90 15:00 Tidsåtgång (mm:ss) Eftersom de inladdade tabellerna som kördes inte innehöll åäö i varken gemener eller versaler var det några hashar som förblev oknäckta. Under Kali Linux nns möjligheten att generera egna rainbow tables med exempelvis stöd för åäö. Det är dock en väldigt tidsödande process och istället kördes hashcat med en ordlista med svenska namn, ord och lösenord från en svensk sida med ett antal mutationer. Varje alternativ provades med sirorna 0-99 i slutet. Lösenord som mårten89, stockholm13 och lmjölk75 gick att knäcka på under en minut och att gå igenom hela ordlistan med mutationer tog strax över 1 minut. Det innebär drygt 150 000 kombinationer per sekund. Hashcat saknar graskt gränssnitt men syntaxen är enkelt och att använda Hashcat istället för Opcrack är eektivt och snabbt mot vissa typer av lösenord. Även obskyra lösenord går att knäcka förutsatt att en ordentlig ordlista nns tillgänglig. Den ordlista som användes var en kombination av olika källor som tillsammans med mutationer gav någorlunda bra resultat. Dock går det självklart att skapa en mycket mer heltäckande ordlista förutsatt tid och kunskap. Nackdelen i jämförelse med exempelvis brute force[5] är resultatet. Med brute force garanteras att alla lösenord går att hitta så länge det nns tid och processorkraft. Att skapa en kraftfull maskin dedikerad till hashcat är inte alls omöjligt då programmet har stöd för att använda 128 GPUer samtidigt. Dock är det en engångprocess, rainbow tables kan såklart användas ottaliga gånger och går att bygga ut vid behov. Begränsningen ligger endast i lagringsutrymme. En tredje metod att knäcka en hash prövades även. Att helt enkelt använda hashen som sökord i valfri sökmotor gav väldigt ofta resultat på enklare lösenord och det nns många onlinedatabaser som tillåter vem som helst att söka efter lösenord/hashar. 4
3 Slutsats Vi läste oss till att det skulle vara förhållandevis enkelt att knäcka Windows skydd och komma åt lösenorden, vi trodde dock inte att det skulle vara så enkelt. Finns det fysisk tillgång till SAM-databasen är det i princip redan över, administratörsrättigheter på maskinen i sig spelar ingen som helst roll. Nu tog vi lösenord som vi ansåg realistiska, men det hade varit intressant att köra 'riktiga' lösenord från privatpersoner eller vänner i klassen. Det hade även varit intressant att köra ophcrack och hashcat på en dedikerad maskin för att kunna få ut pålitlig statistik. Dock gick processen förvånansvärt snabbt. Att på under en minut pröva cirka tio miljoner lösenord med hjälp av en vanlig persondator var långt mycket snabbare än vi förväntade oss. Det skulle också vara intressant att undersöka varför Microsoft inte uppdaterar sin säkerhet med exempelvis obligatorisk saltning av lösenord. Det hade gjort vår attack bra mycket svårare. En intressant jämförelse är förstås att utföra liknande tester på populärare Linux distributioner och på OS X. 5
Litteraturförteckning [1] M. Aharoni. (2013, 12) Kali linux. Oensive Security. [Online]. Available: http://www.kali.org/ [2] C. Tissieres. (2013, 06) Ophcrack. Objectif Sécurité. [Online]. Available: http://ophcrack.sourceforge.net [3] J. Steube. (2013, 12) Hashcat. [Online]. Available: http://hashcat.net/ hashcat/ [4] M. M.. B. Dua, A review of ntlm rainbow table generation techniques, Global Journal of Computer Science and Technology Network, Web & Security, 2013, https://globaljournals.org/gjcst_volume13/ 9-A-Review-of-NTLM-Rainbow-Table.pdf. [5] D. J. Bernstein, Understanding brute force, Department of Mathematics, Statistics, and Computer Science, 2005, http://cr.yp.to/snue/ bruteforce-20050425.pdf. 6