DZWON

Są tacy, którzy czytają tę wiadomość przed tobą.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Nazwa
Nazwisko
Jak chcesz czytać Dzwon?
Bez spamu

Korzystając z Internetu i komputerów mamy coraz więcej haseł. Są to hasła i loginy do skrzynki pocztowej, do Skype'a, do stron, na których się zarejestrowaliśmy (VKontakte, koledzy z klasy itp.), a bardziej zaawansowani użytkownicy używają również haseł do różnych programów, haseł FTP, kluczy licencyjnych i to lista może być trwało przez długi czas. Im więcej mamy haseł (oczywiście także loginów do nich), tym bardziej oczywiste jest, że potrzebujemy dla nich pewnego rodzaju niezawodnego przechowywania. Oczywiście możemy stworzyć dokument .txt i wszystko tam nagrywać i przechowywać. Być może czytając te wiersze, myślisz: „Po prostu to robię, dlaczego jest źle?”. Może nieźle, ale nie jest to wygodne, poza tym jest ich więcej Najlepszym sposobem przechowywanie haseł. Jestem pewien, że Ci się spodoba. W ten sposób jest za pomocą menedżera haseł o nazwie KeePass... Jakie są jego zalety?

1) Wszystkie Twoje hasła znajdują się w programie, który jest niezawodnie chroniony przed włamaniem za pomocą hasła i jednocześnie są szyfrowane algorytmem AES (128-bitowy szyfr blokowy przy użyciu 256-bitowego klucza). Wchodząc do programu, musisz podać hasło, w przeciwnym razie nie uzyskasz dostępu. Zaleca się, aby hasło miało co najmniej 20 znaków, jeśli atakujący chce odgadnąć takie hasło, będzie potrzebował dziesięcioleci; mało kto będzie zainteresowany odgadnięciem tak długiego hasła;
2) Wygodny interfejs programów można łączyć grupy w hasła (na przykład grupa „ Portale społecznościowe", Grupa" Poczta ");
3) Funkcja automatycznego wybierania - program może automatycznie wprowadzić nazwę użytkownika i hasło;
4) Przenośna wersja KeePass umożliwia wygodne noszenie przy sobie wszystkich haseł na dysku flash USB;
5) KeePass posiada generator haseł, więc teraz nie musisz ich samodzielnie wymyślać. Generator haseł zawiera również dodatkowe ustawienia, co pozwala określić, których znaków należy używać, a których nie, oraz ile razy powinny pojawiać się w tym samym haśle.

To są główne korzyści. Przyjrzyjmy się teraz, jak pracować z programem KeePass. Zacznijmy od zainstalowania i zrusyfikowania KeePass. (Pobierz oprogramowanie KeePass na końcu tego artykułu)... Instalacja jest intuicyjna, więc nie będziemy się nad nią rozwodzić. Po instalacji program musi zostać zrusyfikowany. Aby to zrobić, w pobranym archiwum znajdź plik „Rosyjski” i skopiuj go do folderu z zainstalowany program... Zwykle ścieżka to „C / Programm Files / KeePass Password Safe”. Ale może być inny sposób, w zależności od ustawień.

Następnie uruchamiamy program. Po pierwszym uruchomieniu pojawi się takie okno:

Pytamy, czy uwzględnić automatyczna aktualizacja... Oczywiście trzeba to zrobić, dlatego wybieramy pierwszą opcję: „Włącz (polecam)”. Zobaczymy główne okno programu:

KeePass jest nadal w języku angielskim i musisz ukończyć rusyfikację. Aby go zakończyć, przejdź do: Wyświetl / Zmień język. Zrzut ekranu:

Tutaj wybieramy język rosyjski

W ten sposób KeePass jest zrusyfikowany.

Teraz zacznijmy tworzyć naszą bazę haseł. Aby to zrobić, naciśnij: Plik / Nowy lub po prostu Ctrl + N.

Wymyśl nazwę dla naszej bazy danych i kliknij "Zapisz". Zwróć uwagę na to, gdzie zapisujesz bazę haseł, ponieważ od teraz wszystkie Twoje hasła będą tutaj przechowywane. Na przykład, jeśli chcesz przenieść Bazę haseł na inny komputer, musisz skopiować ten plik. Mogą wystąpić inne sytuacje, w których potrzebny będzie plik bazy danych haseł. Dlatego trzymaj go tam, gdzie możesz go łatwo znaleźć. Weź to ważny punkt niezwykle ostrożnie.

Tutaj musimy wymyślić główne hasło, które będzie używane podczas wchodzenia do programu. Musi mieć co najmniej 20 znaków, jak wspomniano na początku artykułu. Nie należy używać hasła krótszego niż 20 znaków; nie oszczędzaj na ilości znaków w haśle. Teraz będzie to jedyne hasło, które musisz zapamiętać, inne będą przechowywane w programie. Zaznacz również pole obok „Plik klucza”, bez niego, nawet znając hasło, nie będziesz mógł wejść do programu. Ten krok utrudni złamanie bazy haseł, jeśli ktoś spróbuje to zrobić. W ten sposób KeePass go chroni. Kliknij „Nowy”.

Tutaj ustawiamy nazwę pliku klucza i zapisujemy go. Zapamiętaj, gdzie go zapisujesz. Plik bazy danych haseł i plik klucza- są to dwa główne pliki, które są wymagane do wejścia do bazy haseł. Nie możesz ich zgubić, w przeciwnym razie nie będziesz mógł odzyskać dostępu do haseł zapisanych w KeePass.

W tym oknie musisz wygenerować liczby losowe. Choć brzmi to skomplikowanie, jest to bardzo proste do zrobienia. Przesuń kursor myszy nad szary obszar, a losowe liczby zostaną wygenerowane. „Ile czasu zajmuje przesunięcie myszy nad szarym obszarem?” - ty pytasz. Zauważ, że na dole znajduje się pusty obszar (druga strzałka wskazuje na to). Poruszaj myszą w losowej kolejności, aż ten obszar zostanie wypełniony.

Jaki powinien być wynik? Zobacz zrzut ekranu:

Widzimy, że liczba bitów wynosi 256, co oznacza, że ​​zrobiliśmy wszystko dobrze i teraz klikamy „OK”. Nasz klucz jest gotowy!

Teraz i tutaj wszystko jest gotowe. Kliknij OK".

W oknie „Utwórz nową bazę haseł” kliknij „OK”.

Wszystko gotowe i na zrzucie ekranu możemy zobaczyć jak wygląda KeePass.

Jak wspomniano na początku artykułu, w tym programie hasła można sortować w grupy. W nim domyślnie zostały już utworzone grupy do przechowywania haseł i testowe rekordy haseł. Grupy po lewej i hasła po prawej. Oczywiście nie potrzebujemy zapisów z testów. Usuwamy je.

Usuwamy również grupy. Jeśli już istniejące grupy Ci odpowiadają, nie musisz ich usuwać. Usuniemy istniejące grupy i utworzymy kolejne, nowe. Aby usunąć grupę, kliknij na nią kliknij prawym przyciskiem myszy myszką i wybierz pozycję "Usuń grupę".

Tak więc grupy zostały usunięte, a teraz tworzymy nowe. Aby to zrobić, przejdź do Edytuj / Dodaj grupę

Wpisz nazwę grupy. Niech w tej grupie będziemy przechowywać hasła do naszego skrzynki pocztowe... Nazwijmy tę grupę haseł - „Poczta”. Zrzut ekranu:

Jak widać, mamy grupę haseł, które stworzyliśmy o nazwie „Mail”. Dobrze dobrana nazwa ułatwia zrozumienie, do czego odnoszą się przechowywane tam hasła. Wniosek: podaj jasne nazwy, a łatwiej i szybciej znajdziesz wymagany wpis.

Kolejnym zadaniem jest dokonanie wpisu w grupie. Jak można się domyślić, w rekordzie będzie przechowywany login i hasło do poczty, a także kilka innych przydatnych rzeczy. Porozmawiajmy o nich nieco dalej. Zobaczmy teraz, jak dodać wpis do grupy. Aby to zrobić, przejdź do "Edytuj / Dodaj rekord ..."

Otworzyliśmy okno „Dodaj rekord”

Wypełniamy formularz, 1) wymyślamy nazwę do rekordu, 2) nazwa jest loginem, 3) usuwamy hasło, które już istnieje i wpisujemy to, którego używamy do poczty, można również ustawić link do strony, na której będziesz musiał podać swój login i hasło, oraz napisać więcej i komentarze. W komentarzach możemy wskazać odpowiedź na Pytanie bezpieczeństwa lub inne dane, które podaliśmy podczas rejestracji, ogólnie wszystko, czego potrzebujemy. Oto przykład:

Tak wygląda stworzony post.

Nawiasem mówiąc, login (w KeePass nazywa się to Nazwą) można ukryć za pomocą gwiazdek, podobnie jak ukrywane jest hasło. W tym celu przejdź do zakładki Widok i wybierz odpowiedni element.

Podsumujmy wykonaną pracę. Dodaliśmy cały jeden wpis i to wystarczy, aby zrozumieć, jak przebiega ten proces. Teraz w podobny sposób przeniesiesz wszystkie swoje hasła do tego programu. W ten sposób stworzysz własną bazę danych i będziesz mógł wygodnie i szybko znaleźć potrzebne kombinacje nazw użytkowników i haseł.

Jak mogę teraz „wyciągnąć” login i hasło z rekordu? Kliknij wpis prawym przyciskiem myszy. Zobacz zrzut ekranu:

Pojawiło się menu. Po uważnym przejrzeniu można zobaczyć, że można skopiować nazwę, skopiować hasło, zmienić i usunąć wpis. To są najbardziej podstawowe funkcje. Ale jest jeszcze jeden bardzo użyteczna funkcja o nazwie „Rozpocznij automatyczne wybieranie”. Jak z niego korzystać? Najpierw umieszczamy kursor w polu logowania w formularzu na stronie, a następnie przechodzimy do rekordu i wybieramy „Rozpocznij automatyczne pisanie”. Program automatycznie wprowadzi twoją nazwę użytkownika i hasło.

Kolejną przydatną rzeczą, którą ma KeePass, jest generator haseł. Co to jest i dlaczego jest potrzebne, mam nadzieję, że wszyscy zrozumieją. Znajduje się w zakładce narzędzi. Wszystko jest tam intuicyjnie jasne, myślę, że łatwo będzie to zrozumieć.

Na tym możemy zakończyć. Najlepsze życzenia dla Ciebie.

Czy da się jakoś zhakować KeePass i połączyć hasła?

Jeśli ktoś nie wie, czym jest KeePass, to w skrócie - jest to program do zarządzania hasłami, który pozwala przechowywać jedno hasło główne poprzez zapamiętywanie. Możesz przeczytać więcej o menedżerach haseł na naszej stronie internetowej.

Do niedawna włamanie do KeePass było niemożliwe, ale kilka dni temu pewien Denis Andzakovic zamieścił w sieci darmowe narzędzie KeeFarce, który pozwala atakującemu ukraść hasła popularnego menedżera haseł.

Możesz pobrać KeeFarce za darmo pod tym bezpośrednim linkiem.

Hakowanie KeePass za pomocą KeeFarce

Zhakować menedżera Hasła KeepPass i konieczne jest scalanie haseł tak, aby było otwarte, tj. aby użytkownik zalogowany przy użyciu hasła głównego nie zamykał programu przez jakiś czas.

KeeFarce jest bardzo łatwy w użyciu. Po prostu skopiuj pliki do folderu KeePass:

  • BootstrapDLL.dll
  • KeeFarceDLL.dll
  • Microsoft.Diagnostic.Runtime.dll

I uruchom plik wykonywalny KeeFarce.exe


Po uruchomieniu program wstrzykuje do uruchomiony proces KeepPass. Narzędzie następnie eksportuje wszystkie hasła do plik csv do folderu appdata.

Jak chronić się przed hackami KeePass

Przede wszystkim sprawdź swój komputer pod kątem trojanów (), ponieważ ten schemat może zostać zaimplementowana, jeśli atakujący: zdalny dostęp do komputera lub mieć fizyczny dostęp, pozostawiając menedżera haseł otwarty na chwilę z dala od komputera.

Po drugie i najważniejsze, nie pozostawiaj menedżera haseł otwartego przez dłuższy czas. Weszliśmy do programu, wyciągnęliśmy wymaganą nazwę użytkownika i hasło, zalogowaliśmy się na stronie i natychmiast zamknęliśmy menedżera. Dowiedz się więcej o prawidłowe ustawienie Możesz przeczytać KeePass w artykule „”. Nawiasem mówiąc, mówiłem tam o tym zagrożeniu i radziłem skrócić czas automatycznego zamykania programu w czasie bezczynności, jeszcze zanim pojawiło się to narzędzie.

A co z innymi menedżerami haseł?

Ta luka (nie to konkretne narzędzie) może być również wykorzystana do kradzieży haseł z innych programów do przechowywania haseł. Myślę, że wkrótce pojawi się duża liczba takich narzędzi, zarówno oddzielnych, jak i wbudowanych w różne szkodliwe programy.

Czy powinieneś przestać używać menedżerów haseł?

Ty decydujesz. Osobiście uważam, że przy prawidłowym korzystaniu z KeePass i odpowiedniej higienie komputera nie powinno być problemu.

W jednym z poprzednich filmów mówiłem już o programie do bezpiecznego przechowywania haseł. Jednak w wyniku pewnych eksperymentów okazało się, że przechowywanie w nim haseł nie jest tak bezpieczne, ale dotyczy to klasycznej wersji programu. Dlatego w tym filmie rozważymy profesjonalną wersję KeePass. Co więcej, jest tak samo darmowy, jak wersja klasyczna. Jeśli po raz pierwszy słyszysz o tym programie, radzę najpierw zapoznać się z moją recenzją wersji klasycznej, aby nie mieć zbędnych pytań.

A więc, co zrobimy w tej lekcji:

Zacznijmy łamać klasyczną wersję KeePass Password Safe za pomocą Keyloggera;

Importujemy bazę z wersji klasycznej do profesjonalnej;

Rozważmy główne różnice i innowacje;

A my spróbujemy zhakować profesjonalną wersję Keyloggera.

A przede wszystkim przejdźmy do strony twórców programu www.keepass.info \ download. Obie wersje pobieramy w formacie przenośnym, ponieważ noszę bazę danych z hasłami na dysku flash, program do ich przeglądania należy również uruchamiać z dysku flash, bez instalowania go w systemie operacyjnym.

Już to zrobiłem, a także stworzyłem testową bazę danych dla wersji klasycznej. Na ten moment, W moim systemie jest uruchomione oprogramowanie szpiegujące LanAgent. Program ten należy do Keyloggerów, czyli programy, które rejestrują wszystkie działania użytkownika na komputerze. Więc teraz dowiemy się, jak niezawodny ten program chroni nasze hasła!

Uruchamiamy wersję klasyczną i otwieramy w niej utworzoną bazę danych, wpisujemy hasło do bazy i logujemy się do serwisu Rutracker.org.

Zobaczmy teraz, co LanAgent był w stanie przechwycić, zaktualizuj logi i zobaczmy, że program przechwycił zarówno klucz główny, jak i login i hasło do witryny Rutracker. Nawet jeśli spróbujemy wprowadzić dane przez schowek, program przechwyci również zawartość schowka. Z drugiej strony hasło do bazy jest bezużyteczne, jeśli atakujący nie ma do czego go zastosować, tj. baza znajduje się na naszym pendrive'ie. Ale w tej sytuacji programy mogą: tło skopiować zawartość pendrive'a lub plików, do których uzyskano dostęp, a tym samym niezauważone przez nas, bazę danych można skopiować, a wszystkie hasła otworzyć za pomocą klucza głównego!

Ogólnie możemy wyciągnąć następujący wniosek, klasyczna wersja jest odpowiednia, aby nie przechowywać haseł w postaci zwykłego tekstu, ale podczas korzystania z oprogramowania szpiegującego nie pomoże. A w pozbyciu się tej luki pomoże nam wersja profesjonalna!

1) Zrusyfikuj program, aby uzyskać wygodniejszą pracę ( www. zasrać. informacje \ Tłumaczenia \ język angielski\2.28\rozpakuj go do folderu z programem \Pogląd \ Reszta Język \ język angielski)

2) Utwórz nowa baza (Plik \ Nowy \ Podaj ścieżkę i nazwę \ Podaj główne hasło)

3) Przeniesiemy dane ze starej bazy danych, aby nie sterować wszystkim ręcznie ( Plik \ Importuj \KeePass 1. x\ Podaj ścieżkę do starej bazy \ OK \ Podaj hasło do bazy \ Nowe identyfikatory)

Teraz spójrzmy, co nowego i ciekawego w tej wersji. Nie będę rozważał wszystkich innowacji, zajmie to dużo czasu, ale skupię się na najbardziej, moim zdaniem, interesujących:

1) Wprowadzanie hasła głównego w trybie bezpiecznym, który umożliwia zablokowanie Keyloggera podczas wprowadzania hasła głównego ( Serwis \ Ustawienia \ Bezpieczeństwo \ Wprowadź hasło główne w trybie chronionym)

2) Generator haseł tworzy jednocześnie 30 haseł, zgodnie z wybraną złożonością. Z którego możesz wybrać, Twoim zdaniem, najtrudniejszy.

3) Język automatycznego pisania jest łatwiejszy w użyciu niż wersja klasyczna. Nie mówiłem o tym w recenzji wersji klasycznej, więc zobaczmy, jak to może pomóc!

Domyślnie podczas automatycznego wprowadzania wyzwalana jest następująca sekwencja poleceń. Login, TAB, hasło i ENTER są wprowadzane w aktywne pole. Tę sekwencję można zobaczyć, jeśli otwórz wpis \ Automatyczne wybieranie \ Użyj następującej sekwencji... ORAZ ta opcja pasuje przez większość czasu, jak zbliżało się wejście do rutrackera.

Nie nadaje się jednak do logowania do poczty za pośrednictwem strony internetowej www.mail.ru. Ponieważ moje pole testowe nie znajduje się na mail.ru, ale na bk.ru, dla tej witryny możesz wprowadzić indywidualny algorytm wejściowy (NAZWA UŻYTKOWNIKA) (TAB) (HASŁO) (TAB) (W DÓŁ) (W DÓŁ) (W DÓŁ) (TAB) (ENTER).

Lista poleceń jest podana tutaj, jest też pomoc, chociaż jest w języku angielskim, ale jeśli chcesz, możesz to rozgryźć. Z własnej praktyki radziłbym czasem użyć polecenia (OPÓŹNIENIE 1000), jest to opóźnienie między poleceniami. Po prostu zdarza się, że przy wolnym Internecie przeglądarka nie ma czasu na zaakceptowanie sekwencji poleceń, dlatego potrzebuje czasu na przemyślenie, w tej sytuacji ta komenda pomoże (5000 - 5 sekund opóźnienia).

4) Podwójna komplikacja zestawu - kiedy Ta metoda, program nie wprowadza wprost danych, pobiera część loginu i hasła ze schowka, a część wpisuje symbolami.

Sprawdźmy teraz, czy LanAgent może złamać nasze hasła!? Jak widać, nie wyszło, dlatego program działał idealnie i teraz Twoje hasła są chronione w jak największym stopniu!

  • Instruktaż

Pewnego dnia musiałem wdrożyć odszyfrowanie bazy danych KeePass. Byłem zdumiony, że nie ma ani jednego dokumentu, ani jednego artykułu z wyczerpującymi informacjami na temat algorytmu deszyfrowania plików .kdb i .kdbx, biorąc pod uwagę wszystkie niuanse. To skłoniło mnie do napisania tego artykułu.


Obecnie istnieją 2 wersje KeePass:

  • KeePass 1.x (generuje pliki .kdb);
  • KeePass 2.x (generuje pliki .kdbx).

Struktura pliku bazy danych KeePass (.kdb, .kdbx) składa się z 3 części:

  • Podpis (niezaszyfrowany);
  • Tytuł (niezaszyfrowany);
  • Dane (szyfrowane).

Odszyfrowywanie bazy danych KeePass

Sekwencjonowanie:
  1. Odczytujemy sygnaturę bazy danych.
  2. Odczytujemy nagłówek bazy danych.
  3. Generujemy klucz główny.
  4. Odszyfrujemy bazę danych.
  5. Sprawdzamy integralność danych.
  6. Jeśli plik został skompresowany, rozpakuj go.
  7. Odszyfrowujemy hasła.

Pozycje 5, 6 i 7 dotyczą tylko plików .kdbx!

Podpis
BaseSignature (4 bajty)

Pierwszy podpis jest taki sam dla plików .kdb i .kdbx. Ona to mówi ten plik to baza danych KeePass:

  • 0x9AA2D903
Wersja Signature (4 bajty)

Drugi podpis wskazuje wersję KeePass i dlatego jest inny dla plików .kdb i .kdbx:

  • 0xB54BFB65 — KeePass 1.x (plik .kdb).
  • 0xB54BFB66 — wersja wstępna KeePass 2.x (plik .kdbx).
  • 0xB54BFB67 — KeePass 2.x po wydaniu (plik .kdbx).
Wersja pliku (4 bajty)

Tylko pliki .kdbx mają trzeci podpis i zawierają wersję pliku. Dla plików .kdb ta informacja zawarte w nagłówku bazy danych.


Tak więc w KeePass 1.x długość podpisu wynosi 8 bajtów, a w KeePass 2.x 12 bajtów..

Nagłówek

Po podpisaniu bazy zaczyna się nagłówek.

Nagłówek KeePass 1.x

Nagłówek pliku .kdb składa się z następujących pól:

  1. Flagi (4 bajty): to pole informuje, jakie typy szyfrowania zostały użyte podczas tworzenia pliku:
    • 0x01 - SHA256;
    • 0x02 - AES256;
    • 0x04 - ARC4;
    • 0x08 – Dwójka.
  2. Wersja (4 bajty): wersja pliku.
  3. Master Seed (16 bajtów): służy do tworzenia klucza głównego.
  4. Szyfrowanie IV (16 bajtów): Służy do odszyfrowywania danych.
  5. Liczba grup (4 bajty): Całkowita liczba grup w bazie danych.
  6. Liczba wpisów (4 bajty): Całkowita liczba wpisów w bazie danych.
  7. Hash zawartości (32 bajty): skrót odszyfrowanych danych.
  8. Transform Seed (32 bajty): służy do tworzenia klucza głównego.
  9. Transform Rounds (4 bajty): używane do tworzenia klucza głównego.
Nagłówek KeePass 2.x

W plikach kdbx każde pole nagłówka składa się z 3 części:

  1. Pole ID (1 bajt): Możliwe wartości od 0 do 10.
  2. Długość danych (2 bajty).
  3. Dane ([długość danych] bajty)

Nagłówek pliku .kdbx składa się z następujących pól:

  • ID = 0x01 Komentarz: To pole może być obecne w nagłówku, ale nie było go w mojej bazie danych.
  • ID = 0x02 Cipher ID: UUID wskazujący zastosowaną metodę szyfrowania (na przykład dla AES 256 UUID =).
  • ID = 0x03 Flagi kompresji: ID algorytmu użytego do kompresji bazy danych:
    • 0x00: brak;
    • 0x01: GZip.
  • ID = 0x04 Master Seed: używane do tworzenia klucza głównego.
  • ID = 0x05 Transform Seed: używane do tworzenia klucza głównego.
  • ID = 0x06 Transform Rounds: używane do tworzenia klucza głównego.
  • ID = 0x07 Szyfrowanie IV: Służy do odszyfrowywania danych.
  • ID = 0x08 Protected Stream Key: używany do odszyfrowywania haseł.
  • ID = 0x09 Stream Start Bytes: pierwsze 32 bajty odszyfrowanej bazy danych. Służą do sprawdzania integralności odszyfrowanych danych oraz poprawności klucza głównego. Te 32 bajty są generowane losowo za każdym razem, gdy w pliku zapisywane są zmiany.
  • ID = 0x0A Inner Random Stream ID: ID algorytmu używanego do odszyfrowywania haseł:
    • 0x00: brak;
    • 0x01: ARC4;
    • 0x02: Salsa20.
  • ID = 0x00 Koniec nagłówka: Ostatnie pole nagłówka bazy danych, po którym następuje sama baza danych.
Generowanie klucza głównego

Klucz główny jest generowany w 2 etapach:

  1. Generowanie klucza złożonego;
  2. Generowanie klucza głównego na podstawie klucza złożonego.
1. Generowanie klucza złożonego

Algorytm skrótu SHA256 służy do generowania klucza złożonego. Poniższe tabele zawierają pseudokod do generowania klucza złożonego na podstawie używanej wersji KeePass i danych wejściowych wymaganych do odszyfrowania bazy danych (tylko hasło, tylko plik klucza lub oba):


KeePass 1.x



KeePass 2.x



Zwracam uwagę, że jeśli do odszyfrowania bazy danych potrzebnych jest kilka encji (na przykład hasło i plik klucza), to najpierw trzeba uzyskać hash od każdego podmiotu, a następnie połączyć je ze sobą (concat) i weź hash z połączonej sekwencji.

2. Generowanie klucza głównego na podstawie klucza złożonego
  1. Niezbędny zaszyfrować klucz złożony uzyskany powyżej przy użyciu algorytmu AES-256-ECB.
    • Użyj Transform Seed z nagłówka jako klucza.
    • To szyfrowanie musi być wykonane razy Transform Rounds (z nagłówka).
  2. Używając SHA256, otrzymujemy skrót z zaszyfrowanego klucza złożonego.
  3. Łączymy Master Seed z nagłówka z otrzymanym hashem.
  4. Używając SHA256 otrzymujemy hash z połączonej sekwencji - to jest nasz klucz główny!

Pseudo kod

void GenerateMasterKey() (// zaszyfruj klucz złożony Czasy transformacjiRounds dla (int i = 0; i< TransformRounds; i++) { result = encrypt_AES_ECB(TransformSeed, composite_key); composite_key = result; }

// pobierz hash z zaszyfrowanego klucza złożonego hash = sha256 (composite_key); // połącz wynikowy hash z polem MasterSeed z klucza nagłówka = concat (MasterSeed, hash); // pobierz hash z sekwencji połączonej powyżej master_key = sha256 (key);

Odszyfrowywanie danych KeePass 1.x

Zaraz po nagłówku rozpoczyna się sama zaszyfrowana baza danych. Algorytm deszyfrowania wygląda następująco:

  1. Cały pozostały fragment pliku odszyfrować
  2. Używając SHA256, otrzymujemy hash z odszyfrowanych danych ( bajty z poprzedniego akapitu nie są brane pod uwagę).
  3. Sprawdzamy, czy otrzymany hash pasuje do pola Content Hash z nagłówka:
    • jeśli hash pasuje, to pomyślnie odszyfrowaliśmy naszą bazę danych! Możesz zapisać odszyfrowane dane jako plik .xml i upewnić się, że wszystkie loginy z hasłami są poprawnie odszyfrowane,
    • Jeśli skrót nie pasuje, oznacza to, że podano nieprawidłowe hasło lub plik klucza albo dane zostały uszkodzone.

Pseudo kod

bool DecryptKeePass1x() (// określa długość zaszyfrowanej bazy danych // (rozmiar pliku - rozmiar podpisu - rozmiar nagłówka) db_len = rozmiar_pliku - rozmiar_sygnatury - rozmiar_nagłówka;

// odszyfruj dane decrypted_data = decrypt_AES_256_CBC (klucz_główny, EncryptionIV, zaszyfrowane_dane); // sprawdź liczbę "dodatkowych" bajtów extra = decrypted_data; // pobierz hash z danych (z wyłączeniem dodatkowych bajtów!) content_hash = sha256 (decrypted_data [:( db_len - extra)]); // sprawdź, czy otrzymany hash pasuje do pola СontentHash z nagłówka if (СontentHash == content_hash) return true; w przeciwnym razie zwróć false;

Odszyfrowywanie danych KeePass 2.x

Natychmiast po polu nagłówka End of Header rozpoczyna się sama zaszyfrowana baza danych. Algorytm deszyfrowania wygląda następująco:

  1. Cały pozostały fragment pliku odszyfrować przy użyciu algorytmu AES-256-CBC.
    • Jako klucz używamy klucza głównego wygenerowanego powyżej.
    • Używamy Encryption IV z nagłówka jako wektora inicjującego.
  2. Ostatnie kilka bajtów odszyfrowanej bazy danych jest zbytecznych - to kilka identycznych bajtów na końcu pliku (dopełnienie). Aby wyeliminować ich wpływ, należy odczytać ostatni bajt odszyfrowanej bazy danych - jest to ilość „dodatkowych” bajtów, których nie należy brać pod uwagę w przyszłości.
  3. Sprawdzamy, czy pierwsze 32 bajty odszyfrowanej bazy danych pasują do pola nagłówka Stream Start Bytes:
    • jeśli dane się zgadzają, wygenerowaliśmy poprawny klucz główny,
    • Jeśli dane się nie zgadzają, oznacza to, że podano nieprawidłowe hasło, plik klucza lub WUA lub dane są uszkodzone.
  4. Jeśli poprzedni krok się powiedzie, odrzucamy pierwsze 32 bajty. Sprawdzanie pola nagłówka Flagi kompresji. Jeśli użyłeś kompresji GZip pliku, rozpakuj dane.
  5. Zacznijmy sprawdzać integralność danych. Dane są podzielone na bloki, maksymalny rozmiar bloku to 1024 * 1024. Każdy blok danych zaczyna się od nagłówka. Struktura nagłówka wygląda następująco:
    • ID bloku (4 bajty): numer bloku zaczynający się od 0;
    • Skrót danych bloku (32 bajty);
    • Rozmiar bloku (4 bajty).
  6. Dlatego procedura wygląda następująco:
    • Czytamy nagłówek bloku.
    • Czytamy dane bloku.
    • Używając SHA256, otrzymujemy hash z danych bloku.
    • Sprawdzamy, czy hash zgadza się z hashem z nagłówka.
  7. Wykonujemy sekwencję działań z poprzedniego akapitu dla każdego bloku danych. Jeśli dane we wszystkich blokach są zapisane, wycinamy wszystkie nagłówki bloków, a wynikowa sekwencja jest odszyfrowaną bazą danych.
  8. UWAGA: nawet w odszyfrowanym pliku .kdbx hasła mogą być szyfrowane.
  9. Odszyfrowane i zdekapitowane dane zapisujemy jako plik .xml.
  10. Znajdujemy w nim wszystkie węzły o nazwie „Wartość”, atrybut „Zabezpieczony”, wartość tego atrybutu to „Prawda” i przyjmujemy wartości tych węzłów. To wciąż są zaszyfrowane hasła.
  11. Wszystkie zaszyfrowane hasła dekodujemy za pomocą algorytmu base64decode.
  12. W polu Inner Random Stream ID nagłówka zobacz, który algorytm został użyty do szyfrowania haseł. W moim przypadku była to Salsa20.
  13. Generujemy pseudolosową sekwencję 64 bajtów za pomocą algorytmu Salsa20:
    • Jako klucz używamy skrótu pola nagłówka Protected Stream Key uzyskanego przy użyciu SHA256.
    • Jako wektora inicjującego używamy stałej 8-bajtowej sekwencji 0xE830094B97205D2A.
  14. WAŻNY: Dzięki tej 64-bajtowej sekwencji możesz dokładnie odszyfrować 64 znaki w kolejności połączone razem zdekodowane hasła... Jeśli to nie wystarczy do odszyfrowania wszystkich haseł, musisz wygenerować następną pseudolosową sekwencję i kontynuować odszyfrowywanie haseł itp. do końca.
  15. Aby uzyskać ostateczne hasło, musisz XOR zdekodowane hasło base64decode z pseudolosową sekwencją uzyskaną w poprzednim akapicie (sekwencja działań jest bardziej przejrzysta w pseudokodzie poniżej).
  16. BARDZO WAŻNE: hasła muszą być odszyfrowane w kolejności! Dokładnie w kolejności, w jakiej są przedstawione w plik xml.
  17. Znajdź w pliku xml wszystkie węzły o nazwie „Value”, atrybut „Protected”, wartość tego atrybutu to „True”:
    • Zmień wartość atrybutu na „Fałsz”.
    • Zamieniamy wartość węzła na odszyfrowane hasło.
  18. I dopiero teraz mamy całkowicie odszyfrowaną bazę danych KeePass 2.x! Hurra! =)

Pseudo kod

bool DecryptKeePass2x() (// określa długość zaszyfrowanej bazy danych // (rozmiar pliku - rozmiar podpisu - rozmiar nagłówka) db_len = rozmiar_pliku - rozmiar_sygnatury - rozmiar_nagłówka;

// odszyfruj dane decrypted_data = decrypt_AES_256_CBC (klucz_główny, EncryptionIV, zaszyfrowane_dane); // sprawdź liczbę "dodatkowych" bajtów extra = decrypted_data; db_len - = ekstra; // sprawdź, czy pierwsze 32 bajty odszyfrowanej bazy danych // zgadzają się z polem nagłówka StreamStartBytes if (StreamStartBytes! = decrypted_data) return false; // odrzuć te 32 bajty db_len - = 32; odszyfrowane_dane + = 32; // sprawdź pole nagłówka CompressionFlag // czy plik był skompresowany, rozpakuj go if (CompressionFlag == 1) unzip (decrypted_data); // sprawdź integralność danych while (db_len> (BlockHeaderSize)) (// odczytaj nagłówek bazy danych block_data = decrypted_data; decrypted_data + = BlockHeaderSize; db_len - = BlockHeaderSize; if (block_data.blockDataSize == 0) (break;) // uzyskaj hash danych bloku hash = sha256 (decrypted_data); // sprawdź, czy otrzymany hash odpowiada hashowi z nagłówka if (block_data.blockDataHash == hash) (pure_data + = decrypted_data; decrypted_data + = block_data.blockDataSize; db_data.lenb - = blockData ;) else (return false;)) // zapisz odszyfrowane i odszyfrowane dane jako plik xml xml = pure_data.ToXml (); // pobierz skrót z pola nagłówka ProtectedStreamKey key = sha256 (ProtectedStreamKey); // zainicjuj algorytm Salsa20 IV_SALSA = 0xE830094B97205D2A; salsa.setKey (klucz); salsa.setIv (IV_SALSA); wskaźnik_strumienia = 0; key_stream = salsa.generateKeyStream (); // odszyfruj hasła while (true) (// znajdź następny węzeł w kolejności z nazwą "Value", // z atrybutem "Protected", wartość atrybutu "True" node = xml.FindNextElement ("Value" , "Protected", "True" ); if (node ​​== NULL) (break;) // weź wartość węzła i zdekoduj ją za pomocą algorytmu base64 decoded_pass = base64decode (node.value); // decode hasło przy użyciu pseudolosowej sekwencji key_stream for (int i = 0; i< len(decoded_pass); i++) { decoded_pass[i] = decoded_pass[i] ^ key_stream; stream_pointer++; //если 64 байтной псевдослучайной последовательности не хватило, //генерируем еще одну последовательность if (stream_pointer >= 64) (key_stream = salsa.generateKeyStream (); stream_pointer = 0;)) // zamień wartość atrybutu „Protected” na „False” node.attribute.value = „(! LANG: False"; //заменяем зашифрованный пароль дешифрованным node.value = decoded_pass; } return true; !}


To w ogóle wszystko, co chciałem powiedzieć. Mam nadzieję, że ten przewodnik uratuje kogoś od niepotrzebnych bólów głowy i będzie pouczający i pouczający =)

Tagi:

  • kryptografia
  • zasrać
  • aes-256
  • sha256
Dodaj tagi

DZWON

Są tacy, którzy czytają tę wiadomość przed tobą.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Nazwa
Nazwisko
Jak chcesz czytać Dzwon?
Bez spamu