Niewykrywalność trojanów

kebtro!

Użytkownik
Dołączył
Luty 2, 2007
Posty
22
Kieruje mną czysta ciekawość, więc niemusi nikt odpowiadać na to pytanie. Programuje od niedawna i mam jeszcze spore braki, napewno nie zaczne przygody z programowaniem od pisania trojanów i wątpie czy kiedy kolwiek będę je pisał a jeżeli już to w celach edukacyjnych. Ciekawi mnie jednak jak wygląda sprawa z niewykrywalnością trojanów, w końcu antyvirusy (o ile się nie myle) umieją rozpoznać czy plik ma w sobie niebezpieczne linijki kodu, ale dlaczego w jednych trojanach tak a w drugich nie? Czy wystarczy, że programiści zmienią naprzykład porty czy cały proces niewykrywalności koni trojańskich jest dużo bardziej skomplikowany? Jeżeli ktoś uzna, że pytanie jest głupie to prosze pozostawić to bez komentarza, niechce krytyki...
Z góry dziękuje i pozdrawiam
<
 

Avat

Użytkownik
Dołączył
Kwiecień 1, 2006
Posty
221
Każdy zespół programistów antywirusa przygotowuje sygnatury, na podstawie których ich programy wykrywają wirusy. Inny AV - inna zaprogramowana sygnatura. Nie wiem jak to dokładnie działa, ale niektóre antywirusy może po prostu lepiej lub gorzej rozpoznają próbki wirusów.

Jest też heurystyka i bodajże metoda behawioralna, ale to inne bajki
smile.gif


Nie wiem czy nie jestem w błędzie, po prostu tak mi się wydaje
smile.gif
 

Mo4x

Były Moderator
Dołączył
Grudzień 26, 2005
Posty
704
AV szukają funkcji, stringów (czy jak ktoś woli "łańcuchów textowych") itp., które są używane w trojanach/wirusach/robakach itp. Dlatego stusuje się różne triki np. taki stary, prosty sposób, jak troszkę zamaskować użycie jakiejś funkcji:
Mamy zmienne:
a = 'E'
b = 't'
c = 'r'
d = 'P'
e = 'o'
f = 's'
g = 'c'
h = 's'
i = 'e'
j = 'i'
k = 'x'

Teraz je sklejamy:
a+k+j+b+d+c+e+g+i+h+f
i otrzymujemy string "ExitProcess".

Następnie GetModuleHandle, GetProcAddress itp. No i wywołujemy funkcję, która nie będzie czysto zapisanej w stringach.

Często też używa się crypter'ów/packer'ów do plików, aby zaszyfrować ich kod i aby AV nie dały radę rozpoznać pliku. Np. jak jeszcze świeży był packer PESpin 1.304, że AV nie miały go w swojej bazie, to można było pakować nim wykrywalne trojany i stawały się niewykrywalne.
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Programy antywirusowe najczesciej bazuja na sygnaturach dlatego prosta modyfikacja jest w stanie oszukac program. Niektore programy jak Nod32 metoda heurystyczna analizuja podejrzane fragmenty pliku lub kodu (naglowek PE). Podejrzanym kodem moze byc komponent uzywany przez szkodliwe oprogramowanie.

Zadn z programow nie korzysta jednak z najprostszego sposobu analizy pliku binarnego. Jesli plik nie jest spakowany i mozna odczytac wszystkie niezbedne informacje bez stosowania mechanizmu depakowania - sprawa jest dziecinnie prosta. W podobny sposob mozna postapic w przypadku wyodrebniania doklejonych plikow lub informacji badz zasobow. Depakowanie binarek spakowanych tez nie powinna stanowic wiekszego problemu jesli program posiada moduly depakujace dla znanych packerow.

Dla przykladu troche wnetrznosci z dwoch szkodnikow - analiza. Czy zatem na podstawie analizy takich stringow program nie byl by w stanie zadecydowac czy program jest szkodliwy czy nie?

[ Dodano: 04-02-2007, 22:06 ]
@Mo4x ktory program analizuje stringi?
 

kebtro&#33;

Użytkownik
Dołączył
Luty 2, 2007
Posty
22
Szczerze mówiąc myślałem, że cały proces oszukiwania Av jest nieco bardziej skomplikowany, choć nie ukrywam, że dla początkującego programisty jest to czarna magia, ale zaspokoiliście moją ciekawość, więc nie pozostaje mi nic innego jak podziekować
<
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Proces ten jest skomplikowany ale jak widac sprowadza sie do implementacji prostych algorytmow...
 

Phoenix

Użytkownik
Dołączył
Luty 9, 2004
Posty
142
Co do heurystyki to jak narazie w zadnym AV sie ona nie sprawdza. Podobno Kaspersky cos tam nowego tworzy. Jak narazie Nod ma najlepsza wedlug paru testow. Szkoda tylko ze w sieci nie raz znalazlem packery ktorych Nod nie wykrywa
<
. Dlatego po co pisac trojany jak mozna napisac Packery i wszystki obecne trojany trobic niewykrywalne
<
 

FDJ

Były Moderator
Dołączył
Maj 23, 2005
Posty
1044
Originally posted by Phoenix
Co do heurystyki to jak narazie w zadnym AV sie ona nie sprawdza. Podobno Kaspersky cos tam nowego tworzy. Jak narazie Nod ma najlepsza wedlug paru testow. Szkoda tylko ze w sieci nie raz znalazlem packery ktorych Nod nie wykrywa
<
. Dlatego po co pisac trojany jak mozna napisac Packery i wszystki obecne trojany trobic niewykrywalne
<

Robienie packerow to raczej trodniejsza sprawa niz napisanie trojana.
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Dlatego po co pisac trojany jak mozna napisac Packery i wszystki obecne trojany robic niewykrywalne[/b]

Niewykrywalne do czasu gdy spokojnie spoczywaja na dysku...
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Originally posted by deuter
jesli chodzi o polimorfizm, to nie - wirusy polimorficzne nie maja potrzeby kompilowania swojego kodu na nowo. po prostu tworza nowa petle dekodujaca (zmieniaja niektore rejestry czy sposob szyforwania), ale nie ma to wiele wspolnego z kompilacja. co innego wirusy metamorficzne, ktore zmieniaja prawie caly swoj kod. dobrym przykladem jest tutaj metafor, ktory posiada procedury: szyfrujace, deszyfrujace, deasemblujace (o ile dobrze pamietam. na pewno deasemblacji dokonuje zme32 z0mbiego) oraz zmniejszajace rozmiar kodu. po co to ostatnie? kiedy w wirusie pomiedzy prawdziwymi jego instrukcjami tworzy sie za duzo smieci tzn. instrukcji, ktore nie sa wazne z punktu dzialania wirusa i sam wirus staje sie zbyt duzy objetosciowo (choc i tak w przypadku wirusow pisanych w asmie nie jest to szczegolnie wazne, nieprawdaz? ;-), metafor potrafi "odchudzic" go troche, by potem znow mogl tworzyc nowe permutacje. co do skomplikowania to oczywiscie im wirus jest bardziej skomplikowany tym, z jego punktu widzenia, lepiej ;-)

ps. obecnie nawet dosc skomplikowany polimorfizm jest z latwoscia wykrywany przez skanery heurystyczne, poniewaz wykrywaja one sekwencyjny dostep do pamieci, czyli mniej wiecej taka linijke w petli de/szyfrujacej:

xor dword [eax], deadc0de

mozna to ominac, wybierajac petle, w ktorej dostep do pamieci odbywalby sie w sposob losowy (oczywiscie trzeba miec wtedy dobry mechanizm losowy, ktory wybieralby losowe 4 bajty z kodu wirusa w taki sposob, aby kazdy bajt byl zaszyfrowany co najwyzej raz)
ps2. prawdziwosc powyzszego mozna sprawdzic ustawiajac w skanerze heurystyke na najwyzszy poziom i skanujac jakis program potraktowany exepakerem... np. binarke opery ;-)
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
@Mo4x dzieki za ciekawy link!

These centers analyze the virus, and extract a unique string from the virus that will identify it. This and other information about the virus is added into a database that users can then download.[/b]
Nie wierze!
 

jurgensen

Użytkownik
Dołączył
Grudzień 14, 2006
Posty
678
Originally posted by Phoenix
Co do heurystyki to jak narazie w zadnym AV sie ona nie sprawdza. Podobno Kaspersky cos tam nowego tworzy. Jak narazie Nod ma najlepsza wedlug paru testow. Szkoda tylko ze w sieci nie raz znalazlem packery ktorych Nod nie wykrywa
<
. Dlatego po co pisac trojany jak mozna napisac Packery i wszystki obecne trojany trobic niewykrywalne
<

AV Kaspersky ma zaimplementowaną ochronę heurystyczną, która wykrywa podejrzane zachowania (np tworzenie kopii aplikacji przez nią samą i dodawanie kopii do autostartu)
 

Kanciastoporty

Były Moderator
Dołączył
Grudzień 19, 2006
Posty
1137
jurgensen ja bym tego nie nazwal heurystyka
<
. Jezeli wysyla mi alerty ze cos tam chce sie dodac do autostartu to nie znaczy ze to jest wirus... Np odpalenie gg (przy zakladaniu tez dodaje sie przeciez do run i kas. sie pyta czy zezwolic czy nie).
Co do samej heurystyki, tej 'poprawnej' to uwazam ze najlepszy jest nod. Jezeli pokazuje ze plik jest - New.Heur.PE.Virus czy cos takiego to moge to rzeczywiscie uznac za heurystyke. To Kasperskiego bym nazwal raczej 'analize dzialalnosci aplikacji'.
A tak apropos czasami sa smieszne sytuacje jezeli chodzi o powyzsza metode noda do wykrywania jakis ustrojstw. Np. wirus z 2004 roku, a on pokazuje New.Heur ;] dobre sobie. Moze to dlatego ma taki wysoki wspolczynnik wykrywania nowych szkodnikow? Jak skanowalem nowe trojany z tego forum to jakos nod sie nie wykazal swoja technologia, ale wierzmy ze to tylko przypadek, pech. Aha, jeszcze do Kas. - nie widzialem zeby kiedys pokazal 'nowego' wirusa odkrytego dzieki heurystyce ale najdluzej czeka sie 1 dzien na dodanie do baz sygnatur, wiec moge powiedziec ze to jest nawet lepsze.
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Do testu zostal wykorzystany driver Fu.
Informacje z sekcji debug:
Kod:
H:FU_Rootkitexei386msdirectx.pdb

skan bez modyfikacji pliku:


po usunieciu fragmentu z sekcji kodu:


po dodaniu smieci do konca pliku:


po usunieciu fragmentu z naglowka PE


po usunieciu fragmentu z naglowka PE, sekcji kodu i importow oraz z sekcji debug:


po modyfikacji fragmentu naglowka PE, sekcji kodu (informacje w sekcji debug - nienaruszone)


[ Dodano: 11-02-2007, 17:49 ]
Unpacking Malware, Trojans and Worms: PE Packers Used in Malicious Software

Driver Fu zostal spakowany ASPack'iem a nastepnie ponownie przeskanowany. Polowa skanerow nie wykryla niczego podejrzanego! Po modyfikacji nazw sekcji kolejna czesc skanerow nie zdolala niczego wykryc...
<
k:
 

jurgensen

Użytkownik
Dołączył
Grudzień 14, 2006
Posty
678
Zadaniem analizy heurystycznej jest wykrywanie wszelkich podejrzanych działań (w zależności od czułości, ustawionej przez użytkownika). Dodanie programu do autostartu nie jest przez KAV wskazywane jako szczególnie niebezpieczne). Natomiast sytuacja opisana przeze mnie (dodanie kopii samego siebie do autostartu) owszem, ponieważ niewiele programów (oprócz szkodliwych) tego wymaga. Dlatego też w analizie heurystycznej ważne jest wskazanie stopnia zagrożenia, co też czyni KAV(zwykłe dodanie do autostartu - alert żółty; dodanie własnej kopii - alert czerwony oraz informacja, iż jest to zachowanie typowe dla trojanów).

BTW:
KAV nie wskazuje jako potencjalnie niebezpiecznej sytuacji kiedy to plik wywołuje konsolę z parametrami copy <źródło> <cel>, natomiast wykorzystanie finkcji copyfile w połączeniu z modyfikacją autostartu jest wykrywane jako bardzo niebezpieczne
 
Do góry Bottom