Modyfikacja sygnaturki

hxv

Były Moderator
Dołączył
Sierpień 9, 2006
Posty
797
Kolejny tutek związany z ASM
smile.gif

Tym razem pokaże jak zmniejszyć wykrywalność pliku poprzez modyfikację sygnaturek. Wadą takiego rozwiązania jest to, że dla każdego AV musimy szukać sygnaturki od nowa (czyli ponownie instalować antyvira). Zaletą zaś to że w przeciwieństwie do np. binderów program po uruchomieniu pozostaje w 100% niewykrywalny.
Zajmę się Spooferem GG Grzona, zmodyfikuję go dla F-Secure.

Potrzebujemy: program do modyfikacji, antivirus dla którego chcemy zmodyfikować plik, DSplit, PEiD oraz OllyDbg.

Radziłbym utworzyć nowy folder i wrzucić tam DSplit.exe oraz trojana/spoofer/cokolwiek innego ponieważ będzie 'wytwarzane' nawet kilkaset plików. Wypadałoby też wyłączyć stałą ochronę AV, zostawić tylko skaner na żądanie.

Wszystko gotowe? No to zaczynamy, sposób użycia DSplit jest następujący:
Kod:
dsplit poczatek koniec rozmiar plik
Po kolei:
poczatek to bajt od którego ma zacząć się dzielenie pliku
koniec to bajt na którym program ma przestać (max = koniec pliku)
rozmiar to wielkość o jaką różnią się pliki
plik to nasz program
<


Włazimy przez cmd do naszego katalogu i zaczynamy dzielenie naszego pliku (zmieniłem jego nazwę na fix.exe):
Kod:
dsplit 0 max 10000 fix.exe
Powinno utworzyć się (w moim przypadku) 31 plików. Każdy większy od poprzedniego o 10000 bajtów. Skanujemy wszystkie nowo utworzone pliki (nie zapomnijmy o aktualizacji AV).

Patrzymy teraz który plik wykrywany przez AV jest najmniejszy (czy też który ma najmniejszy numerek w nazwie). U mnie jest to ...10000.exe czyli sygnaturka jest gdzieś przed 10000 bajtem. Usuwam pliki i jadę dalej:
Kod:
dsplit 0 10000 1000 fix.exe
Znowu zaczynam od zera tym razem jednak ograniczam do 10000 bajtu, dodatkowo zmniejszam rozmiar do 1000. Powinno powstać 10 plików. Skanuje je.
Tym razem pierwszym wykrywanym plikiem jest ...3000.exe więc sygnaturka jest gdzieś wcześniej. Wywalam pliki i jadę od nowa:
Kod:
dsplit 2000 3000 100 fix.exe
Tym razem ograniczam dzielenie - od 2000 do 3000 bajtu. Dlaczego? Ponieważ program nie wykrył syfu w ...2000.exe więc sygnaturka jest gdzieś dalej. Równocześnie zmniejszam rozmiar.
Pierwszy wykryty plik: ...2300.exe, muszę więc zacząć szukać wcześniej (pamiętamy o zmniejszaniu rozmiaru):
Kod:
dsplit 2200 2300 10 fix.exe
Wykrywa jedynie ...2300.exe więc jako że rozmiar ustawiłem na 10 zacznę od 2300-10=2290 bajtu:
Kod:
dsplit 2290 2300 1 fix.exe
Ostatni skan i widzę że sygnaturka kończy się w 2292 bajcie (to pierwszy wykrywalny plik).

Teraz wypadałoby to zmienić. Potrzebujemy więc przeskanować plik przy pomocy PEiD i zapisujemy:
Entrypoint: 1240
File Offset: 640
Należy pamiętać że wartości nie są w systemie dziesiętnym ale w hexach. Odejmujemy je od siebie 1240 - 640 = C00. Teraz przeliczamy nasz offset (miejsce) sygnaturki w pliku z dec na hex (2292 = 8F4) i dodajemy do siebie: C00 + 8F4 = 14F4. Uff, możemy już włączyć debugger i przejść do właściwego miejsca (~004014F4). Jeśli nie ma identycznego offsetu to szukamy minimalnie niższego. Pamiętajmy też że sygnaturka ma czasem spory rozmiar więc można się kawałek cofnąć (ale bez przesady).
Ja mam w pobliżu 2 niewpływające na siebie instrukcje, do żadnej z nich nie ma bezpośrednich skoków:
Kod:
SUB ESP,18
MOV DWORD PTR SS:[EBP-130],EAX
Wystarczy że zamienię je miejscami i powinno być OK. Zapisuje plik i skanuje, wynik: plik czysty.
Może się zdarzyć że AV nie wykrywa kodu ale np. ikonkę czy któryś z zasobów. Należy je wtedy zmienić/usunąć.

Gotowca nie będzie. Jeśli nie chce nam się bawić z modyfikacją można kupić VIP'a ^^
Grzonu poinformował mnie że można tanio dostać niewykrywalną wersję z paroma dodatkami xD Jak coś to walić do niego na PM
<


//prosiłbym o przeniesienie, mam dziś wenę, zobaczymy co będzie jutro
smile.gif
 
Do góry Bottom