Zacznijmy od tego czym jest backdoor. Tylne drzwi bądź furtka to nic innego jak luka w oprogramowaniu umożliwiająca w przyszłości przejęcie kontroli nad zainfekowanym obiektem. Rozróżniamy dwa źródła ataku. Pierwszym możliwym źródłem jest
cracker, który np. włamał się na serwer bądź przełamał zabezpieczenia oprogramowania celem późniejszego wykorzystania uprawnień. Drugim możliwym źródłem jest twórca oprogramowania, który umyślnie pozostawił furtkę. My omówimy tą drugą opcję. Zapewne w myślach żądaliście sobie już pytanie dlaczego właściwie twórca oprogramowania miałbym umyślnie umieszczać w oprogramowaniu lukę. Motywy takiego zachowania są proste. Jeżeli autor miał nieczyste intencję, wtedy w grę wchodzą korzyści majątkowe. W przeciwnym wypadku backdoor jest zaimplementowany przeciwko nieuczciwym klientom.
Bardzo rzadko jednak zdarzają się przypadki, w których klient dostaję produkt końcowy np. sklep internetowy, serwis, ... i nie zamierza za niego zapłacić. W takich właśnie wypadkach przydaje się wkomponowany z finezją backdoor, który z pewnością w niedługim czasie da o sobie znać nieuczciwemu klientowi.
Zanim przejdziemy do wątku właściwego opowiem o dobrych nawykach, które powinny towarzyszyć przy prezentowaniu prac klientowi. Jeżeli chodzi o przedstawianiu layoutu to najlepiej jest pokazywać go pomniejszonego o 10-20% z zamieszczonym znakiem wodnym. Odnośnie pociętej strony (HTML i CSS) nie ma już tak dobrego rozwiązania. Jeżeli tylko mamy możliwość to pokazujemy wyniki naszych prac w obecności klienta. Niestety nie zawsze są ku temu możliwości, dlatego też czasami musimy umieścić pocięta już grafikę na serwerze firmowym. Pierwszą bariera może być jednorazowy adres, który po odświeżeniu strony staje się nieaktywny. Części klientom taka forma
zabezpieczenia może się nie spodobać gdyż chcą mieć nielimitowany wgląd w postęp prac. Pokazywanie strony z małym znakiem wodnym dla każdej grafiki może być rozwiązaniem pośrednim. Inną metodą zabezpieczenia przed kopiowaniem będzie zakrzaczenie HTML i CSS. Jednak co się stanie gdy ktoś z zewnątrz będzie chciał ocenić jakość kodu? Wtedy takie rozwiązanie nie ma właściwie sensu. Kończąc ten wywód chcę zwrócić uwagę, że w momencie umieszczenia strony w sieci nie mamy już praktycznie kontroli nad tym czy prawa autorskie zostaną dotrzymane. Pamiętajmy, że większość przeglądarek posiada
cache i obejrzenie strony zazwyczaj wiążę się z zapisaniem jej na dysku odwiedzającego.
Odnośnie skryptów wykowanych po stronie serwera napisanych np. w PHP sprawa ma się nieco inaczej. Wyniki prac aplikacji możemy udostępniać z własnego serwera tak więc poniekąd mamy kontrolę. W przypadku kiedy klient korzysta po raz pierwszy z usług firmy bądź zlecenie opiewa na dużą kwotę i pragnię aby serwis był wprowadzony szybko do sieci wtedy warto zastanowić się nad jakimś
zabezpieczeniem aby kontrahent nie zapomniał zapłacić za usługi.
W przypadku trafienia na nieuczciwego klienta, który odmawia zapłacenia za naszą pracę powinniśmy wprowadzić modyfikacje, które mocno go zabolą. Najlepiej wprowadzić modyfikacje w czasie, w którym wyrządzą największe szkody.
Inspiracją do napisania artykułu było przeczytanie jakiś czas temu wpisów nt. backdoora:
- w systemie CMS e107 w wersji 0.7.17
- w paczce zawierającej phpBB w wersji 2.0.23 umieszczonej na phpbbhelp.pl
- c99.php aka c99shell
Najprostszy backdoor powinien umożliwiać programiście np. wykonywanie przesłanego kodu podchodzącego z superglobalnej
$_POST bądź
$_GET z użyciem funkcji
eval(). Inną możliwością jaką może udostępniać backdoor może być np. dostęp do panelu administratora, konta FTP, plików umieszczonych na serwerze i tym podobnych rzeczy. Jeżeli skrypt jest bardzo rozbudowany wtedy nie będzie większego problemu z umiejscowieniem backdoora. Z moich obserwacji wynika, że część serwerów nie zapisuje żądań (ang. request) nadanych droga
POST, dlatego też polecam jej stosowanie. Ponadto aby utrudnić życie osobie szukającej dziury warto odbierać polecenia np. w formie zakodowanej bądź skompresowanej.
Komentarze
Publikowane komentarze są prywatnymi opiniami użytkowników serwisu. Serwis nie ponosi odpowiedzialności za treść opinii. W trosce o zachowanie poziomu dyskusji wszystkie komentarze podlegają akceptacji przed ich publikacją dlatego proszę cierpliwie czekać aż komentarz zostanie opublikowany.
Dodaj komentarz
Zezwolono używać:
BBCode
Zabroniono używać:
znaczników HTML
Sobak
"Myślę, że backdoor zależy od kreatywności webmastera oraz skomplikowalności kodu, jeżeli kod zrobimy obiektowo to ciężko znaleźć backdoor."
Wyjaśnij mi proszę, jaki związek ma to, czy kod jest obiektowy czy strukturalny do tego jak ciężko odnaleźć jest backdoora. Mówię Ci, że takie rzeczy najprościej znaleźć po słowach kluczowych typu "eval" czy "base64_decode".
"jest to możliwe dopiero wtedy gdy ktoś pokusi się na dokładne sprawdzenie kodu, od kropi do kropki"
Mylisz się, odsyłam do tego co napisałem kawałeczek wyżej.
"lecz nieraz jest lepiej napisać całość przez tego oto "programistę"
Nie rozumiem, możesz wyjaśnić?
"Także, podsumowaniem uważam, że backdoor jest kompletnie potrzebny niemając firmy, nawet mając własną firmę, co w naszych czasach jest bez precedensu trudne na początku bez wszelakiego typu dofinansowań"
Nie będę się odnosił do samego zagadnienia trudności założenia własnego przedsiębiorstwa, bo nie siedzę w temacie. Natomiast jeśli chodzi o to czy bardziej backdoor jest przydatny dla osób posiadających własną działaność, czy też nie, to myślę że to nie ma większego znaczenia. Niezaleznie od tego czy robimy zlecenie jako osoba fizyczna czy prawna, nic nie stoi na przeszkodzie, aby spisać umowę i tak dalej. Po prostu rzecz w tym, że późniejsze egzekwowanie takich rzeczy i zabawa na drodze prawnej jest czasochłonna i czasem kosztowna.
"i tak należy robić back door, ale tak by nie zaszkodzić skryptowi i by nie był za łatwo wykrywalny"
"Szkodzenie skryptowi" było poruszone w moim poprzednim komentarzu, natomiast kwestia wykrywalności, na początku tej wypowiedzi. Zdarzają się bardziej kreatywne backdoory, ale tak naprawdę ciężko je ukryć przed szukaniem po charakterystycznych słowach kluczowych. Z kolei te najbardziej oklepane skrypty typu WebShell (c99.php na przykład) są wykrywane przez zwykłe desktopowe antywirusy.