I den här självstudien kommer brute force -attacken att diskuteras och några verktyg för att genomföra denna attack kommer att nämnas. Först och främst är det att säga vad brute force handlar om, även om man med namnet kan tänka sig det.
Det är en teknik som är baserad på försök och fel, den används för att få lösenord eller dekryptera data, den här metoden söker inte efter en intelligent strategi, utan testar snarare alla möjliga kombinationer tills den hittar nyckeln.
Är det möjligt att få något lösenord eller dekryptera vilken fil som helst? Om vår tid förmodligen var oändlig, men eftersom det inte är det, är svaret nej, lösenord eller långa nycklar och med olika faktorer (versaler, gemener, siffror, specialtecken), skulle det ta lång tid att få ut dem med detta metod (under en livstid kommer vi inte att uppnås).
Vi kan använda den här metoden för att kontrollera säkerheten för våra lösenord eller kryptering mot denna typ av attack. Om du vill veta hur man skapar ett starkt lösenord, Jag rekommenderar att du läser den här självstudien. En krypteringsalgoritm som är sårbar för denna typ av attack är DES, motsatsen är fallet med AES, som inte är sårbar för brutal kraft. Det är bäst att förstå området för kryptografi väl.
Kryptografins värld
Att ha ett starkt lösenord är det första steget, men du kan också lägga ett ytterligare skyddslager med dubbel faktor autentisering I dina konton (åtminstone de mest värdefulla) finns det redan idag tjänster som erbjuder det integrerat och gratis, till exempel Google, Twitter och Linkedin. Dessa system skickar normalt ett meddelande till din mobil med en kod när du har angett rätt lösenord, så tills du anger den koden kommer du inte att kunna ange ditt konto.
I synnerhet brute force kombineras ofta med ordbokattackerDenna attack består av att ha en fil med mer typiska lösenord (folk brukar använda kända ord för sina lösenord, så de kommer ihåg dem bättre) och prova dem alla tills de hittar nyckeln eller avslutar lösenorden utan framgång. Attacken i allmänhet är mer effektiv, men om vi använder flera faktorer i vårt lösenord minskar chanserna att lyckas avsevärt.
Brute force verktyg
John Ripper
Det är öppen källkod och gratis, du brukar hitta det distribuerat i källkod.Det främsta målet är att hitta svaga lösenord i UNIX -operativsystem.
THC Hydra
Med det här verktyget kan du tillämpa brute force på fjärrautentiseringstjänster. Du kan utföra ordbokattacker mot mer än 50 protokoll.
manet
Det är ett modulärt verktyg, det fungerar parallellt med brute force -inloggningar. Kompatibel med protokoll som FTP, HTTP, IMAP, SSH, etc.
Ncrack
Det är ett verktyg för att knäcka nätverksautentiseringar, det fungerar snabbt. Du kan utöka verktyget genom att skapa dina egna moduler.
Cain & Abel
Det är ett verktyg som är avsett att återställa lösenord i Windows, för att knäcka det kan du använda brutal kraft, men också ordbokattacker och attacker med regnbågstabeller (Rainbow Table).
Jag kommer att lägga under en kod i Python som får lösenord som bara innehåller siffror från en webbsida, upp till 5 siffror, det kan också göras med bokstäver, större längd, etc. Först lämnar jag dig kod som serverar postförfrågningar i PHP:
Vi ser att vi inte har gränser för försök, att användaren och dess lösenord definieras precis där (för att undvika databaser och komplikationer till koden), om användaren och lösenordet är korrekta returnerar vi en kod 200 och om inte en 403.
Därefter lämnar jag Python -koden som är ansvarig för att skicka förfrågningar till den tidigare koden.
importera http.client, urllib.parsefrom tid import target time = "/bruteForce/index.php"headers = {" Content-type ":" application / x-www-form-urlencoded "," Accept ":" application / xhtml + xml, text / html; q = 0,9, text / plain; ",} found = Falsepassword = 0home = time () medan lösenord <= 99999 och inte hittat: parameters = urllib.parse.urlencode ({'user': ' josue ',' pass ': password}) connection = http.client.HTTPConnection ("localhost") connection.request ("POST", target, parameters, headers) response = connection.getresponse () if (response.status == 200): print ("Lösenord hittat för användare josue, es", lösenord) print ("Det tog tid: {0: .2f} s" .format ((time () - start))) found = True else: print (lösenord) anslutning.slut () lösenord + = 1 om inte hittats: skriv ut ("Inget lösenord hittades för josue")Denna kod gör postförfrågningarna, i varje pass till slingan är allt vi gör att ändra lösenordet och lägga till 1 till det, så vi kommer att försöka alla möjliga lösenord från 0 till 99999 (om vi inte hittar det tidigare). Måla alla siffror som du hittar, för det var så jag ville ha det för exemplet, du kan ta bort det, för detta eliminerar du det andra. Låt oss köra den här koden för att se om den hittar lösenorden.
Det första exemplet vi ska lansera för att hitta lösenordet 2087, nedan är bilden, du kan se att det inte tar mig 18 sekunder att få det.
Om jag tar bort det andra så att det inte målar på skärmen tar varje nummer mycket mindre tid, här kan du se en skärmdump:
Nu för andra och sista försöket lägger jag in lösenordet 20870 för att se hur lång tid det tar den här tiden.
Du kan se skillnaden när du lägger till ytterligare ett tecken i lösenordet, men ändå är det en tid som vi kan vänta utan problem, även om vi lägger trådar skulle tiden minska. Det är därför vi använder starka lösenord och robust autentisering i våra applikationer, som inte kan automatisera denna attack.
Om du vill se ett praktiskt exempel där lösenordet för en zip eller en rar är trasigt kan du besöka följande handledning:
Bryt .rar eller .zip lösenord
Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng