środa, 8 sierpnia 2012

TUNNELING - HACKING THE SQUID PROXY SERVER


Dzisiejsza notka przedstawiać będzie metody działania umożliwiające ominięcie blokad na serwerze proxy działającym pod zarządzaniem aplikacji Squid. Udało mi się rok temu wprowadzić w życie kilka obejść, dlatego przedstawię Wam zarówno sposoby na ominięcie słabym zabezpieczeń (tunele przez HTTP), a i metody wymagające od użytkownika wiedzy informatycznej (SOCKS etc.)
Jak wiadomo, nikt nie lubi włamań, ale otrzymane przeze mnie wyniki mogą posłużyć do poprawy jakości i bezpieczeństwa usług teleinformatycznych, oraz łatania dziur w bezpieczeństwie, blokowania i filtrowania nieporządanego ruchu w sieci.




    Ostatnimi czasy zarówno wielkie korporacje, jak i małe firmy zaczęły stawiać na bezpieczństwo przechowywanych danych, jak i utrzymanie infrastruktury sieciowej w używalnym stanie. W czasach, gdzie internet nosimy nawet przy sobą w telefonach komórkowych niezawodność w dostępi do informacji posiada swoisty priorytet i jest bardzo ceniona na rynku IT. Popularne także stało się nadzorowanie danych, jakie przesyłane są siecią, szczególnie z szczeblach korporacyjnych. Menadżerowi i dyrektorzy chcąc wyeliminować ruch prywatne w czasie godzin pracy postanowili blokować swoim pracownikom dostęp do portali społecznościowych, p2p, stron typu Web2.0 itp. Popularne kiedyś ograniczenia ruchu na rurkach (pipe) ustąpiło miejsca blokowaniu niechcianych portów, a następnie, gdy to nie wystarczyło aplikacji webowskich. Przeważnie to tego typu zabiegów używa się serwerów proxy opartych w większości na aplikacji Squid. Jest on serwerem dla HTTP, HTTPS, FTP oraz innych podobnych. Zmniejsza przepustowość i skraca czas reakcji poprzez buforowanie i wielokrotne wykorzystanie często wywoływanych stron www. Squid ma szerokie zastosowanie w wzmiankowanym wyżej kontrolowaniu dostępu do sieci.
Konfiguracja takiego narzędzia ogranicza się do wpisania kilku regułek do pliku /etc/squid/squid.conf, oraz stworzeniu alc'ek z lista blokowanych (deny) adresów, a także tymi posiadającymi dostęp (allow). 

acl blokowane_adresy url_regex "/etc/squid/blokowane_adresy"
http_access deny blokowane_adresy

    Jest to z pozoru łatwiejsze i bardziej pewne, niż konfiguracja regułek dla pipe w iptables, jednak nie na tyle bezpieczne, jakby można przypuszczać. 


TUNELE NA STRONACH HTTP

    W miarę rozwoju sieci komputerowych najpierw lokalnych, a w następstwie rozległych powstało zapotrzebowanie na łączenie ze sobą różnych segmentów za pośrednictwem sieci. Sieci LAN wykorzystują jednak zupełnie inne protokoły niż ich wielkie odpowiedniki. Tunelowanie to przekierowanie jednych usług sieciowych za pośrednictwem innych. Pomimo ograniczeń większość systemów firewall nie blokuje przeglądania stron, poczty, a co za tym idzie standardowe porty zawsze pozostają otwarte (80, 443, 110, 25, 22 eg.). Przy użyciu odpowiedniego oprogramowania można przemycić inną usługę przez port wykorzystywany przez www lub pocztę. Mówiąc w skrócie: transfer danych jest tunelowany przez port pośredni (np. 80) do portów właściwych programów. Istnieje niesamowicie wiele stron www, które oferują omijanie zabezpieczeń proxy. Na pierwszy rzut oka są to sposoby łopatologiczne. Korzystanie z nich ogranicza się do wklejenia linku konkretnego adresu w odpowiednie miejsce i wciśnięcie przycisku. Tunel umieszczony na danej stronie sam omija wszelkie zabezpieczenia i uruchamia to, co chcieliśmy. Tunele ze stron WWW mają kilka wad, jak można się spodziewać biorąc do ręki rozwiązanie infantylnie łatwe w obsłudze. Oczywiście, są łatwo wykrywalne przez admina, ale i nie trankryptują Javascript, Flash i tego typu usług. Nadają się tylko do przeglądania stron HTML, XHTML i  PHP. 


TUNELE SSH I SOCKS

    Kolejną metodą jest stworzenie tunelu SSH. Moim zadaniem jest pokazanie, jak przy pomocy SSH "usprawnić" swoją pracę w zabezpieczonej sieci korporacyjnej (np. w firmie). Pod pojęciem "usprawnić" mam na myśli efektywne metody zniewelowania ograniczeń nałożonych przez administratora. Pierwszym krokiem będzie oczywiście proste połączenie. Potrzebny do tego będzie oczywiście system Linux z serwerem OpenSSH oraz konto SSH na innej maszynie. komputer będący w zabezpieczonej sieci w pracy będzie nazywał się na potrzeby tego tutorialu $FIRMA, a komputer na którym mamy założone konto $ZBAWICIEL (ja@$FIRMA, uzyszkodnik@ZBAWICIEL).

  • Admin nie blokuje portu 22 :P
    Takie zabezpiecznie to żadne zabezpiecznie, ale do rzeczy :) Aby utworzyć to połączenie korzystamy z SSH i opcji -D. Możemy stworzyć specyficzny rodzaj proxy nazwany SOCKS. Jest to protokół sieciowy napisany specjalnie dla tego typu serwerów. Regułka wygląda następująco:

ja@$FIRMA:~$ ssh uzyszkodnik@$ZBAWICIEL -D 8080

    W tym momencie serwer SSH nasłuchuje na porcie 8080 (listen). Aby móc skorzystać z tego połączenia konfigurujemy naszą przeglądarkę tak, aby wskazywała SOCKS na localhost (czyli nasz komputer).

  • Blokada na SSH
    Zdarza się, że porty SSH także należą do grupy nieporządanych na naszej sieci (gdy admin jest przewrażliwionym człowiekiem bez życia osobistego :P). Jednak i na to można znaleźć rozwiązanie.
Skorzystamy z tego samego narzędzia. Przeważnie HTTP (port 80) i HTTPS (port 443) nie są blokowane, gdyż działa na nich cały ruch sieciowy i to właśnie z nich skorzystamy przy ataku. W komputerze $ZBAWICIEL musimy dokonać kilku zmian w pliku konfiguracyjnym SSH (/etc/ssh/sshd_config). Szukamy linii oznaczającej port łaczenia (w domyśle będzie 22_ i dokonujemy zmiany na 443, a następnie resetujemy serwer.

uzyszkodnik@$ZBAWICIEL:~$ sudo /etc/init.d/ssh restart

    Następnie tak, jak z naszego komputera wcześniej tworzymy tunel, tylko wykorzystujący inny port, niż ten w domyśle. 

ja@$FIRMA:~$ ssh -p 443 uzyszkodnik@$ZBAWICIEL -D 8080

  • Mechanizm TSOCKS
    Jest to problem, który zgłaszają użytkownicy browsera Opera. Nazywa się go potocznie transparent socks, czyli w wolnym tłumaczeniu na nasz ojczysty "przeźroczyste skarpetki". Powodem błędu jest mechanizm stosowany obecnie w kodzie przeglądarki, a dokładnie brak obsługi SOCKS. Oczywiście, na wszystko jest rada i taki bug można sobie załatać. Przydatne okazuje się narzędzie tsocks. Aby je wykorzystać będą nam potrzebne uprawnienia root na komputerze $ZBAWICIEL. Zakładając, że SSH dalej nasłuchuje jako proxy na porcie 8080 wykonujemy następujące kroki:

  • edytujemy plik /etc/tsocks.conf;
  • znajdujemy parametr local i wpisujemy tam naszą sieć LAN (można kilka wartości);
local - 192.168.0.*
local = 10.0.0.0/255.255.255.0
  • jeżeli chcemy możemy budować określone ścieżki połączeń - patametr patch;
  • teraz najważniejsze: parametr server i server_port ustawiamy na nasz serwer proxy tj. na nasz komputer; 
server = localhostserver_port = 8080
  • należy też ustawić typ SOCKS (do wyboru mamy 4 i 5)
server_type = 5
  • nadeszła pora "nałożyć te skarpety" (można już jako user);
uzyszkodnik@$ZBAWICIEL:~$ tsocks opera

    W tym momencie wtyczka tsocks uruchomi Operę, ale będzie przechwytywała wszystkie jej zapytania wysyłane do sieci i natychmiast przekaże je do SOCKS (z wyjątkiem zapytań o statusie local). Nasz serwer proxy pośle to zapytanie dalej do $ZBAWIECIEL. W ostatecznym rozrachunku otrzymamy przeglądarkę w takim środowisku, jakie istnieje na $ZBAWIECIEL. Nie będzie ona wrażliwa na wszelkie ograniczenia założone w sieci, w której pracujemy. Dlatego tez powinna być skonfigurowana tak, abyśmy ją uruchamiali na $ZBAWIECIEL - jeżeli tam jesteśmy połączeni bezpośrednio to i w ustawieniach przeglądarki powinniśmy ustawić Bezpośrednie połączenie. Całą robotę wykona za nas tandem tsocks+SSH. Podobnie możemy postąpić z dowolnym programem komunikacyjnym w sieci.

tsocks nazwa_programu

  • Zaczynają się schody!

    Co prawda, nie można całkowicie zablkować HTTP i HTTPS, bo są one potrzebne do działania w sieci na codzień, ale istnieje możliwość, że ISP wystawi własny serwer proxy HTTP i tylko do niego otworzy ruch na randomizalnym porcie (np. 3128, naturalnie ruch na zewnątrz po 3128 jest zablokowany). Co prawda, ten zabieg będzie trudniejszy do wykonania, ale obejście tego zabezpieczenia TAKŻE jest możliwe. Jak to powiedział kiedyś mój kolega w momencie, gdy postawiłam LOLa na Ubuntu: "Teraz już nie ma rzeczy niemożliwych" :) Tak, czy owak musimy jakoś odnaleźć te dane, aby móc dalej pracować. W repo znajduje się narzędzie idealne dla nas w tym momencie, a mianowicie Corkscrew -.- Krótki wgląd w jego manual pokazuje nam, jak prosto go skonfigurować. Aby SSH "przeskakiwało" przez proxy powinniśmy skorzystać z takiego portu, jaki ten serwer przepuszcza bezpośrednio. Wszelkie połączenia szyfrowane, ze swej natury, nie mogą być przetworzone przez żaden program na drodze do miejsca docelowego, w tym i proxy, dlatego znów odwołamy się do kochanego, bezpiecznego 443. Aby "zaprząc" ciężka artylerię SSH do korzystania z proxy w pliku ~/.ssh/config dodajemy wpisik:

Host $ZBAWICIEL    ProtocolKeepAlives 30    ProxyCommand /usr/bin/corkscrew PROXY_SERV PROXY_PORT //$ZBAWICIEL 443

    Przy takich ustawieniach znów powinniśmy móc połączyć się ze $ZBAWICIEL:

ja@FIRMA:~$ ssh -p 443 uzyszkodnik@$ZBAWICIEL

    Naturalnie wszystkie przełączniki typu -L czy też -D nie tracą ważności. Tuneli tego typu można użyć do ominięcia zabezpieczeń na serwerach typu Rapidshare, Megaupload, Megavideo etc. Pomaga on także uruchomić aplikacje webowskie, które normalnie nie byłyby w stanie funkcjonować w naszym kraju, jak np. radio internetowe Pandora. Potrzebne jest tylko jednak konto SSH na serwerze w kraju, gdzie ta usługa nie jest blokowana.


TAK NA WESOŁE ZAKOŃCZENIE -.-

    Można by tak dalej i dalej. Sposobów na ominięcie zabezpieczeń jest niesamowicie dużo. Profesjonalny administrator będzie w stanie po jakimś czasie to wykryć. Prawda jest taka, że jeżeli istnieje jakakolwiek dziura w zabezpieczonej pozornie sieci, to tak naprawdę otwiera to ludziom z zewnątrz okno na świat. Niestety, nie wszystkie metody są skuteczne (problemy z Web2.0, skryptami Java, Flash, wypuszczanie nieszyfrowanego ruchu, jawne linkowania, widoczność operacji po stronie ISP). W zależności od zastosowane rozwiązania (mam tu na myśli Dsiffa, Wiresharka, czy inny analizator ruchu) link wychodzi w postaci jawnej, gdzie po ampersandzie pokaże się link docelowy, który chcemy przekonwertować. W przypadku tunelu, który zrobiliśmy łącząc się z zewnętrznym komputerem rozważyłam tylko metodę HTTPS i proxy HTTP. Dla serwerów proxy typu SOCKS można zastosować proxychains. Można także wykorzystywać inne protokoły, ale to już kwestia środowiska sieciowego w takim pracujemy.


 

DARKTABLE - THE ADOBE LIGHTROOM'S EQUIVALENT IN A NUTSHELL

Zejdziemy dzisiaj z tematu instalacyjnego, mimo, że jako materiał miałam wrzucić solucje do instalacji właśnie Adobe Lightroom. Jednakże, bo wielkich męczarniach z zainstalowaniem tego i kolejnych krokach frustracyjnych spowodowanych integracją Lightrooma z prefixami od Wine (a raczej jej brakiem) stwierdziłam, że na ten moment gra nie jest warta świeczki. Trzeba będzie odczekać może z miesiąc zanim Lightroom v4 stanie stabilnie na platformie Linuxowej wspartej Wine. Zagłębiona w poszukiwaniach odnalazałam wzmiankę o aplikacji Darktable na jednym z blogów linuxowych, który to niby ma być odpowiednikiem wyżej wzmiankowanego. Owszem, aplikacje różnią się w obsłudze jednakże efekt dopieszczania zdjęć, jak dla mnie kompatybiliny i nie widzę żadnych znaczących różnic. To, co przemawia na korzyść Dartable, to przedewszystkim licencja open-source. Jak wiadomo produkty Adobe to tanich nie należą i taka przyjemność może nam pociągnąć sporo po kieszeniu.



Postanowiłam skorzystać z okazji i jako miłośnik pracy ze zdjęciami zabawić się trochę możliwościami Darktable i kilka z nich chciałabym teraz omówić w kilku krokach:


(Zdjęcie użyte do obróbki w oryginale miało rozdzielczość 2592x1944, robione obiektywem FujFILM FinePix S1000fd, przesłona f3.3,  ekspozycja 1/280, iso 64 )

To, czym zajmiemy się najpierw to Ekspozycja i Balans bieli, które znajdują się w Grupie Podstawowej tak, jak to zastało zilustrowane na zrzucie poniżej.


Fotografię przydałoby się dopieścić, aby nabrała wyrazu. Podnosimy zatem poziom koloru czerwonego i zielonego w Balansie bieli oraz poziom czerni w Ekspozycje, dla lepszego kontrastu.



Kolejnym krokiem będzie zabawa w Grupie Koloru. Tutaj w zależności od potrzeb możemy pobawić się poziomiem nasycenia, odcieniem i jasnością w Strefie Koloru.




Pozostając dalej przy strefie koloru możemy dołożyć kilka punktów do ożywienia w Velvi i lekko prześwietlić zdjęcie.

Na koniec zostaje nad tylko wyeksportowanie fotografii do wybranego katalogu :)


I możemy cieszyć się "dopieszczonym" zdjęciem.





Tutorial ten pokazuje tylko podstawową korekcję. Jak mój kolega wróci z wakacjowania się poproszę, aby wziął się za bardziej dokładną analizę tej aplikacji. Ciekawe może być, że korzystał do tej pory z Lightroom, a mnie bardzo interesują różnice między tymi dwoma maszynami.


REGULAT GUESTS