Samhain – zabezpieczenie programu

Zaawansowane bezpieczeństwo czyli "Oni są wszędzie"

Każdy z nas jest paranoikiem. Jedni większymi, inni mniejszymi. Dla takich jak my twórcy programu przewidzieli kilka ciekawych opcji. Możemy zmienić domyślne katalogi w których instalowany jest program (zobacz opcje ./configure), nazwę zainstalowanego programu (–with-install-name=nowa_nazwa ). Wersja stealth (–enable-stealth) pozwalająca schować pliki konfiguracyjne oraz bazy danych w obrazkach postscrypt. Dla szczególnie strachliwych jest możliwość ukrycia go w całym systemie ( –with-khide) Przyjrzyjmy się po kolei co ciekawszym opcjom.

stealth i microstealth

Jeżeli skompilujemy program z opcją –with-stealth zostaną do niego dodane mechanizmy zabezpieczające przed wykryciem. Pojawi się również nowy program samhain_stealth (o ile nie zmieniliśmy domyślnej nazwy programu), jego zadaniem jest ukrywanie danych w plikach postscirptowych oraz ich odczytywanie. Dzięki temu możemy zostawić w systemie plik konfiguracyjny, który w ogóle na taki nie będzie wyglądał. Wygodnie jest tutaj dokonać zmiany nazwy pliku konfiguracyjnego na inną niż standardowa przy wykorzystaniu parametru –with-config-file=NAZWA_PLIKU, pozwoli to zmylić potencjalnego włamywacza.

Jeżeli zainstalujemy program pierwszy raz plik konfiguracyjny zostanie ukryty w standardowym pliku postscriptowym dostarczanym razem z programem. Aby zobaczyć jego zawartość należy użyć narzędzia samhain_stealth z parametrem -g (wydaj polecenie bez parametrów aby zobaczyć dostępne opcje). Zostanie ona pokazana na standardowym wyjściu czyli na konsoli. Jeżeli chcesz ukryć plik konfiguracyjny należy użyć przełącznika -s i następnie podać plik w którym ukryjemy dane a jako ostatni argument wskazać plik, w którym znajdują się dane do ukrycia.

[root@duzy samhain]# samhain_stealth -s /etc/samhainrc samhainrc
OFFSET: 5731  MAX. CAPACITY: 17189 Bytes
 .. hide samhainrc in /etc/samhainrc ..
 .. finished

Informację o tym czy jakieś dane są ukryte w pliku możemy znaleźć przy wykorzystaniu parametru -i, wyświetlane są wtedy dane o danym obrazku oraz jak dużo bajtów można ukryć w nim.

[root@duzy samhain]# samhain_stealth -i /etc/samhainrc
IMA START AT: 5731  MAX. CAPACITY: 17189 Bytes

Zostaną również zaszyfrowane logi, będziesz musiał podać klucz (lub ścieżkę do niego). Klucz do każdej sesji wysyłany jest emailem.

Jeżeli użyjemy opcji -enable-micro-stealth=XOR_VAR (gdzie XOR_VAR to 0 lub liczba z zakresu 128-256). to program nie będzie nie oczekiwał pliku konfiguracyjnego ukrytego w Postscripcie.

Jeżeli instalujemy w tym trybie należy usunąć strony podręcznikowe dla programu gdyż ich pozostawienie pozwoli intruzowi na określenie jak program się nazywa!

khide

Możemy także pójść krok dalej i ukryć wszystkie informacje dotyczące działającego programu. Twórcy programu specjalnie dla Linuksa napisali moduł pozwalający ukryć proces programu, katalogi i pliki posiadające w nazwie słowo samhain (lub inne jeżeli został zainstalowany pod inną nazwą). Zainstalujemy go jeżeli skompilujemy program z opcją –enable-khide

Nie zawsze istnieje jednak możliwość skorzystania z tego modułu (np. nie pozwalamy na dołączanie modułów do jądra).

 

Tutaj drobna uwaga: należy zmienić nazwę programu gdyż prosty test polegający na stworzeniu pliku o nazwie samhain.txt i następnie sprawdzeniu czy pojawia się w spisie poleceń może wykazać istnienie tego zabezpieczenia.

Doświadczony włamywacz może także domyśleć się po liście modułów iż coś nie jest tak do końca, jak mogłoby się wydawać. Otóż twórcy modułów do ukrywania samhaina nie udostępnili kodu źródłowego tego modułu mimo iż jest on na licencji GPL. Objawia się to zmianą informacji właśnie przy listowaniu listy modułów. Przed załadowaniem modułu wygląda ona podobnie do tej poniżej:

[root@duzy ziutus]# lsmod
Module                  Size  Used by    Not tainted
aic7xxx               120500   0  (unused)

Natomiast gdy użyjemy modułu zmieni się stan:

root@duzy ziutus]# lsmod
Module                  Size  Used by    Tainted: P
aic7xxx               120500   0  (unused)

Zmiana ta nie musi o niczym świadczyć ale może dać do myślenia.

kompresja pliku wykonywalnego

Program może także skompresować i zakodować plik wykonywalny aby było trudniej znaleźć sam plik wykonywalny. Należy po skompilowaniu (a przed instalacją) wykonać polecenie make samhain.pk. Jednym z wyników kompilacji będzie fragment logu:

exepack_mkdata: compressed 244760 bytes into 153505 bytes

Dodaj komentarz