Dobre pytanie i cieszę się, że je zadałeś. Chcę, aby ludzie znaleźli ten wątek, gdy go wygooglują, aby - miejmy nadzieję - nie popełnili tych samych błędów, które popełnia wiele innych firm.
Nie należy po prostu używać hash
hasła, należy je posolić
i upewnić się, że algorytm haszujący używa jakiejś formy SlowEquals
. Nie powinieneś na tym poprzestać: powinieneś używać bezpiecznego algorytmu haszującego, który jest bardzo odporny na collisions
, takiego jak bcrypt lub scrypt.
Dlaczego Sól? Co to są kolizje?
Zamierzam użyć md5 jako przykładu, ponieważ jest on bardzo dobrze znany. Nie używaj go, ponieważ jest podatny na kolizje i jest bardzo szybki , co oznacza, że znacznie łatwiej go złamać. Wyobraźmy sobie, że po prostu haszujesz swoje hasła bez soli. Skończyło się na tym, że generowałbyś statyczny sygnał wyjściowy prawie za każdym razem.
Na przykład „ myDarnPassword
” zostałby przekonwertowany na „ aca6716b8b6e7f0afa47e283053e08d9
” po zaszyfrowaniu jako md5. W tym momencie możesz stworzyć atak słownikowy i użyć tęczowych tabel. Można nawet wygenerować bazę danych, która konwertuje dowolną liczbę losowych znaków na łatwą do przeszukiwania bazę danych, która nie będzie wymagała czasochłonnego wyszukiwania w tęczowych tabelach. Możesz to powoli tworzyć w miarę upływu czasu i wyszukiwać skróty później.
Utworzyłbyś taką tabelę, która wygląda następująco:
+ --------- ---------- + ---------------------------------- + | HASŁO | UNSALTED_HASH | + ------------------- + --------------------------- ------- + | myDarnPassword | aca6716b8b6e7f0afa47e283053e08d9 | + ------------------- + --------------------------- ------- + | pleaseDontSueMe11 | 0dd395d0ec612905bed27020fb29f8d3 | + ------------------- + --------------------------- ------- +
Następnie wybierasz z bazy danych mniej więcej tak:
SELECT [hasło] FROM [table] WHERE [ unsalted_hash] = 'aca6716b8b6e7f0afa47e283053e08d9'
I zwróciłoby myDarnPassword
, plus wszelkie kolizje, które wystąpiły.
Mając wystarczającą moc obliczeniową i czas, można stworzyć biliony kombinacji i całkiem łatwo złamać dużą liczbę haseł w bardzo krótkim czasie (polecam podzielenie baz danych na długości haseł ze względu na samą ich liczbę ). Potrzebowałbyś jednak do tego ogromnej ilości miejsca na dysku twardym.
W tym momencie wszystko, co naprawdę musisz zrobić, to sprawdzić to bez marnowania mocy obliczeniowej na brutalne forsowanie wszystkiego za każdym razem. A jeśli w przeszłości ukradłeś hasła innych osób z bazy danych, możesz je dodać i przekonwertować na skróty. Wiele witryn internetowych już to zrobiło.
Kiedy witryna sprawdza poprawność hasła, porównuje je z zapisanym hashem, a jeśli pasuje do skrótu w bazie danych, jest uważane za prawidłowe hasło. Możesz wtedy pozwolić użytkownikowi na zalogowanie się.
Salting hasha może pomóc w pokonaniu tego ataku, ale nie uchroni Cię przed kolizjami. Możesz porównać zhakowane skróty ze swoją listą skrótów, które wygenerowały kolizje, a następnie wprowadzić to hasło w witrynie internetowej, nawet jeśli masz nieprawidłowe hasło: tak długo, jak hash jest poprawny, otrzymujesz hasło .
Kogo obchodzi, jeśli ktoś złamie moje hasła? Nie obchodzi mnie to!
Poniżej znajduje się tylko niewielki zbiór przykładów tego, co phisherzy i inne złośliwe osoby mogą zrobić z Twoimi niezaszyfrowanymi i niesolonymi hasłami w postaci zwykłego tekstu. Niekoniecznie musi być używane do bezpośredniego kierowania na Ciebie, ale powiedzmy, że Haker
chce skierować reklamy do Osoby A
. Wywnioskujmy, w jaki sposób możesz dotrzeć do Osoby A
.
- Jesteś
Hackerem
. Twoim zadaniem jest hakowanie witryn internetowych i tworzenie bazy danych w celu zebrania tych informacji. -
Osoba A
to osoba, która Cię interesuje. Osoba A
pojawia się w bazie danych jednej z zaatakowanych witryn. Znasz teraz ich adres e-mail i hasło
, którego używają w tej witrynie.
- Teraz możesz spróbować zalogować się na ich
adres e-mail
za pomocą hasła
, które ukradłeś z tej witryny. Świetnie, to działa! - Teraz, gdy masz już dostęp do ich poczty e-mail, możesz pobrać wszystkie ich e-maile przez
IMAP
lub przez ich pocztę internetową. W tym miejscu znajdziesz wiele interesujących rzeczy. Komunikują się z osobą B
. - W rzeczywistości możesz wygooglować nazwy użytkowników i adresy e-mail niektórych osób, a także wyświetlić witryny internetowe, w których piszą. Spowoduje to wyświetlenie innych witryn internetowych, z których korzysta użytkownik. Może możesz spróbować zhakować te witryny, a może po prostu wywnioskować, do czego one służą. Teraz możesz
udawać, że jesteś taki jak oni
lub znaleźć dodatkowe informacje. Informacje / działania mogą obejmować: - Nazwy użytkowników .
Osoba A
publikuje posty online jako Mark Buffalo
. To stosunkowo unikalna nazwa. Następnie możesz wygooglować Marka Buffalo i poszukać witryn, na których publikuje. Może ujawnia więcej swojej osobowości na innych stronach? - Hasła . Może
Mark Buffalo
ma to samo hasło na tej stronie. Może możesz zalogować się do tej witryny i przeglądać jego prywatną korespondencję z innymi?
- Dane osobowe . Ponieważ znasz tożsamość
Mark Buffalo
, co będzie, jeśli udostępni on dane osobowe
w witrynie certains? Co jeśli opublikuje na Craigslist, szukając eskort męskich lub żeńskich, i zostawił tam swój numer telefonu? Znalazłeś już informacje o jego telefonie, więc możesz znaleźć sposób na skonfigurowanie go i szantażowanie go o pieniądze / informacje / władzę. Nie ma to wiele wspólnego z podalaniem haseł, chyba że nie podasz numeru telefonu, ale dzięki wyciekowi znajdują swój numer telefonu na innej stronie internetowej. To jeden z wielu bardzo potężnych sposobów gromadzenia informacji i wykorzystywania ich przeciwko tobie. W końcu jest to forum Information Security
, więc chcę skorzystać z tego przykładu. - Informacje rodzinne . Teraz robi się strasznie. Mamy dane osobowe Marka Buffalo. Przyjrzyjmy się jego sieciom społecznościowym. Och, ma konto
Facebook
(ja nie). Czy możemy uzyskać do tego dostęp za pomocą tego samego hasła? Jeśli Buffalo używa tej samej kombinacji hasła i adresu e-mail, prawdopodobnie. Prawdopodobnie możesz wywnioskować to z jego e-maila, do którego uzyskałeś dostęp wcześniej, w którym znalazłeś wiele interesujących rzeczy. Możemy się teraz zalogować i czytać jego wiadomości na Facebooku. Teraz wiemy, kim są członkowie jego rodziny. Dzięki temu możemy łatwiej koordynować atak szantażowy. - Inne dane logowania . Ponieważ wcześniej uzyskaliśmy dostęp do jego poczty elektronicznej, widzimy, że ma on również konto Skype. Jeden z nich jest tajny. Logujemy się i widzimy, że flirtuje z ludźmi na Skype. Mamy teraz więcej materiałów do szantażu.
- Podszywanie się pod inne osoby . Możesz teraz logować się i podszywać się pod Buffalo na różnych stronach internetowych. Może w rzeczywistości jest prostym strzelcem i nigdy nie ścigał żadnej eskorty ani niczego w tym rodzaju? Cóż, teraz możesz zmienić go w potępionego, szukającego eskorty, przynajmniej z wyglądu, używając jego danych uwierzytelniających do podszywania się pod niego online. Wyobraź sobie szkody, jakie może wyrządzić politykowi, który został niesłusznie oskarżony i zmuszony do rezygnacji.
- Rzeczy, które ułatwiają włamywanie się do innych osób . Następnie możesz wysyłać e-maile do
Osoby B
z zainfekowanymi załącznikami i udawać, że go znasz. Przeczytałeś wystarczająco dużo e-maili, więc jesteś w stanie naśladować Marka Buffalo
do tego stopnia, że wyglądasz jak on. Tworzysz wiadomość e-mail w taki sposób, że Osoba B
niczego nie podejrzewa, co się naprawdę dzieje, a teraz możesz zrobić to samo z Osobą B
lub gorzej.
A to tylko niewielki zbiór pomysłów. Poświadczenia kogoś innego można wykorzystać na wiele różnych sposobów. Sól i haszuj swoje hasła, używaj odpornych na kolizje algorytmów mieszających, takich jak bcrypt i scrypt, oraz zapobiegaj atakom polegającym na wstrzykiwaniu SQL. Proszę, nie zamieniaj mnie w potępieńcę szukającego eskorty! Uratuj Marka Buffalo!
(Zdaję sobie sprawę, że niektóre witryny internetowe mogą blokować próbę dostępu do ich usług przy użyciu innego adresu IP, ale istnieje wiele sposobów obejścia tego problemu i nie wszystkie to robią) .
Swoją drogą, gratuluję potencjalnego pozwu zbiorowego, jeśli zostaniesz zhakowany.