Category Archives: Security

Usunięcie zabezpieczenia przed kopiowaniem treści z PDF

Czasem zdarza się pobrać PDF z banku czy z jakiegoś labo i okazuje się że nie można skopiować tekstu z pliku PDF. Wszystko jest fajnie, tylko jeśli potrzebujemy skopiować lub przepisać długi ciąg znaków pozornie nie podobny do niczego to mamy problem.
Autor PDF włączył zabezpieczenia, które i tak można w łatwy sposób obejść, trochę to bez sensu ale ludzie nadal stosują takie “triki”.

Widok zabezpieczeń dokumentu z poziomu Adobe Acrobat Reader wygląda tak:
Zabezpieczenie PDF - widok z Acrobat Readera

Do pozbycia się zabezpieczeń najłatwiej skorzystać z Ghostscript (->http://ghostscript.com/download/)

Procedura usunięcia zabezpieczeń z PDF:

  1. Akurat pod ręką miałem system ze stajni M$, dlatego pobieramy wersję na Windows (w moim przypadku x64)
  2. Instalujemy
  3. Włączamy cmd i wchodzimy w miejsce instalacji do podfolderu bin (x:\\gs\gs9.19\bin), tam jest gswin64c.exe, którego będziemy używać.
  4. Uruchamiamy polecenie: gswin64c -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="x:\\gs\gs9.19\bin\notescured.pdf" "x:\\gs\gs9.19\secured.pdf"
    W wersji x32 mamy plik gswin64c
  5. Po wykonanej konwersji mamy plik notsecured.pdf, z którym możemy robić co tylko chcemy.

Widok z konsoli po przeprowadzonej konwersji

 

Sam Ghostscript ma dużo więcej opcji, w tym przypadku najbardziej dla mnie przydatne to:

  • -q – brak wyświetlania komunikatów, w większości “zbędnych”
  • -sDEVICE=pdfwrite – tworzenie PDF, oczywiscie Ghostscript umożliwia konwersję do wielu innych formatów, chętnych odsyłam do dokumentacji.
  • -dOutputFile – wskazanie pliku wyjściowego

Oczywiście to jedna z wielu metod, przy minimalnym nakładzie pracy i konfiguracji. Chętni mogą uruchomić więcej fajerwerków przy konwersji lub wykonać ją z poziomu konsoli GhostScript.

Public_html – skrypty php przestały działać

Wykonałem szybki update && upgrade na serwerze hostującym kilka stron moich znajomych, działający na Debianie. W cudowny sposób przestały działać skrypty php umieszczone w public_html w katalogach domowych. Oczywiście problem nie występował dla vhostów.
Okazało się że w /etc/apache2/mods-enabled/php5.conf w jakiś bliżej niewyjaśniony sposób pojawił się wpis:

<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_value engine Off
</Directory>
</IfModule>

Wykomentowanie/usunięcie tego kody powoduje ponowne działanie skryptów php umieszczonych w public_html poszczególnych userów.
Modyfikując powyższy kod można uaktywnyć/wyłączyć ubsługę php dla poszczególnych kont – w zależności jaki efekt chcemy uzyskać.

John The Ripper – Audyt haseł

JTR
W ostatnim czasie na jednym serwerze postanowiłem wykonać szybki audyt haseł. Słabe hasła użytkowników nadal stanowią duży problem w wielu systemach.. Wyniki były dość ciekawe, bardzo szybko udało się wyłapać kilku delikwentów posiadających hasła nie spełniające jakichkolwiek rozsądnych norm. Niestety nie miałem ustawionej odpowiedniej polityki haseł – ustawienia default. Wykorzystałem do tego John The Ripper.

Po krótce John The Ripper to program potrafiący łamać hasła, można go wykorzystać do szybkiego wyszukania kont, które posiadają słabe hasła. Stworzony początkowo na dla systemów Unix, aktualnie działa również na Windows, DOS, BeOS, and OpenVMS. Obsługuje formaty DES, RSA, MD4 i MD5, Kerberos AFS oraz hasze Windows LM, można go zmusić do obsługi innych formatów za pomocą odpowiednich łatek. Program łamie hasełka za pomocą ataku słownikowego lub brute-force.

Do wyszukania najsłabszych haseł można użyć opcji -single.
john -single /etc/shadow
Ten sposób skanowania korzysta z GECOS, czyli po prostu z danych wprowadzonych w /etc/passwd (często są to takie dane jak imię i nazwisko, telefon, ewentualnie jakiś nick) i ich kombinacji, np. odwrotny zapis, zapis poprzedzony cyfra, kilkukrotny zapis.

Przykład użycia:
Dodajemy usera ze słabym hasłem i zaczynamy się bawić…

mojamaszyna:~# adduser testuser
Dodawanie użytkownika `testuser'...
Dodawanie nowej grupy `testuser' (1001)...
Dodawanie nowego użytkownika `testuser' (1015) w grupie `testuser'...
Tworzenie katalogu domowego `/home/testuser'...
Kopiowanie plików z `/etc/skel' ...
Podaj nowe hasło UNIX:
Ponownie podaj hasło UNIX:
passwd: hasło zostało zmienione
Zmieniam informację o użytkowniku testuser
Wpisz nową wartość lub wciśnij ENTER by przyjąć wartość domyślną
Imię i nazwisko []: user testowy
Numer pokoju []:
Telefon do pracy []:
Telefon domowy []:
Inne []: john
Is the information correct? [Y/n] y
mojamaszyna:~# grep 'testuser' /etc/shadow &gt; usertetowy_john
mojamaszyna:~# nice john usertetowy_john
Loaded 1 password hash (FreeBSD MD5 [32/32])
test (testuser)
guesses: 1 time: 0:00:00:00 100% (1) c/s: 1066 trying: test
mojamaszyna:~#

Jak widać powyżej, złamanie takiego słabego hasła trwa dosłownie moment.

Przykłady innych wywołań:

  • słownik
  • john -wordfile:lista_hasel.lst hasla_do_zlamania.txt

  • brute-froce:
  • john -incremental:alpha hasla_do_zlamania.txt – znaki alfanumeryczne
    john -incremental:digits hasla_do_zlamania.txt – cyfry
    john -incremental:lanman hasla_do_zlamania.txt – litery, liczby i część znaków specjalnych
    john -incremental:all hasla_do_zlamania.txt – wszystkie znaki
    john -users:nazwa_usera hasla_do_zlamania.txt – łamanie hasła dla wybranego usera
    john -group:nazwa_grupy hasla_do_zlamania.txt – łamanie hasła dla wybranej grupy

Pełna lista przypadków użycia:
zless /usr/share/doc/john/EXAMPLES.gz

Udanej zabawy!