02 December 2010

Jak zrobić własnego TrueCrypt'a 7

TrueCrypt jest aplikacją skutecznie zabezpieczającą dane na dyskach twardych - opis programu. Jest oparty na otwartych źródłach dlatego można dostosować go do własnych potrzeb. Moim celem było uzyskanie takiego efektu:

Chciałem zabezpieczyć dane w przypadku zgubienia laptopa oraz wyświetlić informacje kontaktowe właściciela zaraz po uruchomieniu komputera. Można to zrobić wykorzystując opcję zmiany 24 znaków w bootloaderze - dla mnie okazało się to niewystarczające i kiepsko wyglądało.

Aby dostosować prgram do własnych potrzeb należy pobrać źródło oraz niezbędne narzędzia:
1Microsoft Visual Studio - Wersja 2010 trial lub darmowa wersja Express - minimum VS 2008 SP1
2. Microsoft Visual C++ 1.52 - dostępny dla subskrybentów MSDN - po instalacji należy stworzyć zmienną środowiskową o nazwie MSVC16_ROOT wskazującą katalog z instalacją środowiska - operacja wymaga restartu systemu)


3. Microsoft Windows SDK for Windows 7 - w przypadku pojawienia się błędu podczas instalcji na polskiej wersji systemu Windows, należy zmienić Opcje Regionalne na Angielski (Stany Zjednoczone).


Po zainstalowaniu, przy pomocy Windows SDK Configuration Tool aktywować wersję 7.0

  
 4. Microsoft Windows Driver Kit 7.1.0 - jeśli zaintalowałeś DDK w innym katalogu niż %SYSTEMDRIVE%\WinDDK należy stworzyć zmienną środowiskową WINDDK_ROOT wskazującą na katalog docelowy DDK
5. RSA Security Inc. PKCS #11 Cryptographic Token Interface - pliki nagłówkowe wersji 2.20 (cryptoki.h, pkcs11.h, pkcs11f.h,pkcs11t.h - umieścić w katalogu "katalog Visual Studio\VC\include")
6. NASM assembler 2.08 lub nowszy - nasm.exe umieścić w katalogu "katalog Visual Studio\VC\bin"
7. Gzip compressor - potrzebny do stworzenia pakietu instalacyjnego TrueCrypt'a. Umieść pliki gzip.exe, license.txt, TrueCrypt User Guide.pdf w katalogu "katalog projektu\Release\Setup Files\" i przy pomocy polecenia Uruchom wykonaj rozkaz "katalog projektu\Release\Setup Files\truecrypt setup.exe" /p Po wykonaniu tej instrukcji pojawi się pakiet instalacyjny programu.

Dla moich potrzeb zmodyfikowałem jedynie plik "katalog projektu\Boot\Windows\BootMain.cpp"


 Modyfikacja źródeł nie powinna być problemem dla osób średnio znających C++ i środowisko programistyczne.
Problemy które napotkałem podczas realizacji zadania:
1. należy odnaleźć w Internecie Microsoft Visual Studio 1.52 ;-)
2. pojawiały się błędy kompilacji wynikające ze źle skonfigurowanego środowiska
3. problem z podpisem cyfrowym sterownika truecrypt.sys w systemi Windows 7 x64. Tego problemu nie rozwiązałem do końca. Architektura systemu wymusza podpisywanie sterowników instalowanych w systemie, co skutecznie odstrasza rootkity, ale uniemożliwia instalowanie własnych produkcji niskopoziomowych. Do celów testowych można wyłączyć podczas uruchamiania systemu (F8) konieczność podpisywania sterowników, ale na dłuższą metę jest to strzał w we własną stopę. Wykorzystałem różne metody omijające to zabezpieczenie, ale żadna nie zdała egzaminu. Można pokusić się o podmienienie nowego sterownika na oryginalny podczas tworzenia wersji instalacyjnej (patrz pkt 7), można to zrobić ponieważ zmieniamy kod tylko w pliku programu. Jednak i to rozwiązanie nie sprawdziło się w 100%. Na szczęście ten problem dotyczy tylko wersji Windows 7 x64. Dla tego przypadku, pozostaje zakupienie certyfikatu umożliwiającego podpisywanie sterowników.
4. podczas testów wielokrotnie modyfikowałem kod i wielokrotnie instalowałem aplikację, dlatego radzę wykorzystać maszynę wirtualną i wirtualny napęd dla TrueCrypt Rescue Disk.iso obligatoryjnie tworzonego podczas szyfrowania dysku.

Algorytmy wykorzystane w programie zapewniają skuteczną ochronę. Jak zwykle zaatakować należy właściciela danych, czego podjeła się Asia - polecam.

Powodzenia