NFsec Logo

Co z .bash_history ?

23/12/2018 w Bezpieczeństwo 1 komentarz.  (artykuł nr 670, ilość słów: 346)

W

ramach “Uciekiniera z zastrzeżonej powłoki” wielu z Was dziwiło się jak prosto można uruchomić powłokę bash bez oficjalnego profilu ładowanego z systemu. Tym samym powstało wiele pytań o wiarygodność pliku .bash_history w kontekście śledzenia aktywności użytkowników. Na początku może skonfigurujmy dla tego pliku środowisko systemu najlepiej, jak umiemy.

Odświeżając koncepcje z “Ograniczenia z poziomu powłoki” na początku dodajmy do /etc/profile.d/ (Ubuntu LTS) plik bash_security.sh:

#!/bin/bash

if [ `id -g` = "1000" ]; then
   HISTSIZE=10000
   HISTFILESIZE=10000
   HISTTIMEFORMAT="[%F %T %Z] "
   HISTFILE=.bash_history
   HISTIGNORE=""
   HISTCONTROL=""
   TMOUT=300
   export HISTSIZE HISTFILESIZE HISTTIMEFORMAT HISTFILE HISTIGNORE HISTCONTROL TMOUT
   typeset -r HISTSIZE
   typeset -r HISTFILESIZE
   typeset -r HISTTIMEFORMAT
   typeset -r HISTFILE
   typeset -r HISTIGNORE
   typeset -r HISTCONTROL
   typeset -r TMOUT
fi

Do pliku $HOME/$HISTFILE dodajemy jeszcze atrybut append only (chattr +a) i rozpoczynamy serię testów:

  • unset HISTFILE – chroni nas ustawienie zmiennej jako read only,
  • export HISTIGNORE=”ls*:cat*” – chroni nas ustawienie zmiennej jako read only,
  • export HISTFILESIZE=1 – chroni nas ustawienie zmiennej jako read only,
  • echo -n > .bash_history – chroni nas atrybut append only,
  • [spacja przed poleceniem] – chroni nas wyzerowanie zmiennej HISTCONTROL,
  • kill -9 $BASH_PID – zabicie procesu powłoki bash uruchomione po stronie serwera powoduje szok dla procesu i brak zapisu historii do pliku,
  • set +o history – wyłącza w dowolnym momencie logowanie historii dla aktualnej sesji,
  • history -c – czyści całą historię wszystkich poleceń aktualnej sesji – jeśli stosujemy to polecenie zawsze to nic nie zostanie do niej zapisane.

Ostatnie trzy przypadki powinny dać nam świadomość, że jeśli użytkownicy danego systemu są wystarczająco zaawansowani, aby uruchamiać złośliwe oprogramowanie – prawdopodobnie będą też wiedzieli, jak ominąć tego typu rejestrowanie poleceń. Historia powłoki bash mimo wielu starań nie jest systemem audytu i nigdy nie miała za taką uchodzić. Jest to tylko pomoc w nawigacji po systemie dla zwykłego użytkownika systemu.

Więcej informacji: Bash History, HISTCONTROL, Hiding from Bash history

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , ,

1 komentarz.

  1. W standardzie bash zapisuje tylko historię poleceń do .bash_history, gdy bieżąca sesja dobiega końca. Oznacza to, że jeśli nasza sesja zostanie zamknięta w nieprawidłowy sposób – cała historia zostanie utracona. Możemy to zmienić ustawiając zmienną $PROMPT_COMMAND:

    PROMPT_COMMAND="history -a"