Modyfikacja sygnatury w GGT

rusty

Użytkownik
Dołączył
Marzec 18, 2008
Posty
4
Witam,
Mam pytanie odnosnie zmiany sygnatur wg tutoriala: http://www.haker.com.pl/forum/viewtopic.ph...6%E6+trojan%F3w

Znalazlem sygnature fizyczna ale nie znajduje logicznej: offset wychodzi cos kolo 4200(winhex), tymczasem w dissasemblowanym pliku(d32dasm) znajduje offsety tylko do 4000. Czy to oznacza odwolanie do segmentu danych???
Co dziwniejsze wyglad hex'a jest inny w winhexie i w innym edytorze np ida...
Mam prosbe o nakierowanie gdzie szukac dalszych informacji, bo to co znalazlem nie daje mi odpowiedzi.
Tak samo bede wdzieczny za info jak modyfikowac sygnature, bo w tutku jest zamiana miejscami dwoch kolejnych mov, co nie wydaje sie grozne dla dzialania trojana, ale co w przypadku gdy offset wskaze na np jakies skoki albo porownania itp?

Z gory dzieki za pomoc
rUsTy
 

h4x

Użytkownik
Dołączył
Styczeń 6, 2008
Posty
107
akurat kolejnosc 2 mov pod zrad nie musi miec znaczenia.

mov [esp+4],eax
mov [esp+8],ecx

i jaka to roznica? zadna.

natomiast
mov [esp],eax
mov [0x601123], esp

juz ma znaczenie
 

rusty

Użytkownik
Dołączył
Marzec 18, 2008
Posty
4
zgadza sie: jezeli modyfikujemy wartosc rejestru, ktora pozniej jest wykorzystywana to oczywiscie ma znaczenie... ale to jestem w stanie wylapac - nie wiem tylko co bedzie jak trafie na cos innego niz mov..
na razie nie jestem jeszcze na tym etapie - nie moge zlokalizowac sygnatury w kodzie:( offsetu mi brakuje;) Jak sie do tego zabrac?
 

h4x

Użytkownik
Dołączył
Styczeń 6, 2008
Posty
107
wiesz, ja to bym napisal wlasnego trojana a nie bawil sie z ggt.

ale skoro ci zalezy... szukania sygnatur jest troche zabawy, nie bede za kazdym razem wysylal pliku i czekal na scan. i jakto ci brakuje offsetu, bajt jest ladowany pod adres z naglowka pe+wlasny offset. zazwyczaj +400000

przyklad programu xvi32 (pod reka):
Kod:
 EntryPoint:

          push    ebp

          mov    ebp,esp

          add    esp,FFFFFFF4h

          mov    eax,PackageInfoTable

          call    SUB_L00016644

          mov    eax,[L000B59E0]

          mov    eax,[eax]

          call    SUB_L0005F27C

          mov    ecx,[L000B577C]

          mov    eax,[L000B59E0]

          mov    eax,[eax]

          mov    edx,[TFormMain.Object_Entry]

          call    SUB_L0005F294

          mov    ecx,[L000B588C]

          mov    eax,[L000B59E0]

          mov    eax,[eax]

          mov    edx,[TFormOSE.Object_Entry]

          call    SUB_L0005F294

          mov    ecx,[L000B5AA0]

          mov    eax,[L000B59E0]

          mov    eax,[eax]

          mov    edx,[TFormScript.Object_Entry]

          mov    eax,[L000B59E0]

          mov    eax,[L000B59E0]

          mov    eax,[eax]

          call    SUB_L0005F314

          call    System._Halt0
mozna zapisac jako
Kod:
          push    ebp

        xor ebp,ebp

        mov ebp, esi

          mov    ebp,esp

          sub    esp,0000000Bh

          mov    eax,PackageInfoTable

        push $

          jmp    SUB_L00016644

        nop

        push dword [L000B59E0]

        pop eax

        nop

          mov    eax,[eax]

          call    SUB_L0005F27C

          mov    ecx,[L000B59E0]

          mov    eax,[L000B577C]

        xchg eax,ecx

          mov    eax,[eax]

          mov    edx,[TFormMain.Object_Entry]

          call    SUB_L0005F294

          mov    ecx,[L000B588C]

          mov    eax,[L000B59E0]

          mov    eax,[eax]

                jmp $+1

          mov    edx,[TFormOSE.Object_Entry]

          call    SUB_L0005F294

          mov    ecx,[L000B5AA0]

          mov    eax,[L000B59E0]

          mov    eax,[eax]

          mov    edx,[TFormScript.Object_Entry]

                nop

          call    SUB_L0005F294

                push $

                push    SUB_L0005F294

                ret

          mov    eax,[eax]

          call    SUB_L0005F314

          call    System._Halt0
i juz inny plik, a robi w zasadzie to samo (tylko trzeba uwazac bo moga byc zaleznosci, no jump w to miejsce, ale peexplorer top wylapie, ida pro juz nie ;])
 

rusty

Użytkownik
Dołączył
Marzec 18, 2008
Posty
4
dzieki za odpowiedz. poanalizuje to wieczorkiem...

a zeby latwiej wyjasnic o co mi chodzi podam przyklad z IDY i ICY explorera (pierwsze linie kodu):
CODE:13141000 04 10 14 13 03 07 42 6F-6F 6C 65 61 6E 01 00 00 "śBoolean.."
CODE:13141010 00 00 01 00 00 00 00 10-14 13 05 46 61 6C 73 65 "......śFalse"
CODE:13141020 04 54 72 75 65 8D 40 00-2C 10 14 13 01 08 53 6D "TrueŹ@.,śSm"
CODE:13141030 61 6C 6C 69 6E 74 02 00-80 FF FF FF 7F 00 00 90 "allint.Ç ..É"
CODE:13141040 44 10 14 13 01 07 49 6E-74 65 67 65 72 04 00 00 "DśInteger.."
CODE:13141050 00 80 FF FF FF 7F 8B C0-5C 10 14 13 01 04 57 6F ".Ç őLśWo"
CODE:13141060 72 64 03 00 00 00 00 FF-FF 00 00 90 70 10 14 13 "rd.... ..Épś"

tymczasem kod winhexa (tez pierwsze linie kodu):
Offset 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

00000000 4D 5A 50 00 02 00 00 00 04 00 0F 00 FF FF 00 00 MZP.........˙˙..
00000016 B8 00 00 00 00 00 00 00 40 00 1A 00 00 00 00 00 ¸.......@.......
00000032 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000048 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 ................
00000064 BA 10 00 0E 1F B4 09 CD 21 B8 01 4C CD 21 90 90 ş....´.Í!¸.LÍ!
00000080 54 68 69 73 20 70 72 6F 67 72 61 6D 20 6D 75 73 This program mus
00000096 74 20 62 65 20 72 75 6E 20 75 6E 64 65 72 20 57 t be run under W

wiem, ze tu mi brakuje wiedzy i dlatego wlasnie pytam: dlaczego te listingi wygladaja zupelnie inaczej? przeciez to te same pierwsze linie?

druga sprawa: interesuje mnie (wg winxeha) adres 42C40 tymczasem ostatni offset jaki znajduje w d32dasm to 3AD34. Nie wiem jak polaczyc ten listing z winhexa z listingami z IDY lub ICY - tak, zeby w tamtych programach poszukac tego offsetu

Jesli chodzi o napisanie trojana, to chyba jeszcze za malo wiem, zeby stworzyc cos na miare ggt. Do tej pory stworzylem w c++ keyloggera z wysylaniem logow na socketach, ale nie znam skutecznego sposobu na przejscie firewalla. Czytalem o iniekcji kodu, ale dowiedzialem sie, ze sporo firewalli juz to wykrywa i to dosyc przestarzala metoda. Aktualnie testuje mozliwosc przesylania logow przez ie, a najbardziej interesuje mnie technika podszywania sie pod aplikacje, ktore maja juz dozwolony dostep do netu

Moje progsy pisze z doskoku wiec nie mam duzego doswiadczenia - jak zobaczylem tutorial to wydal mi sie raczej prosty - chcialem go wyprobowac wlasnie na ggt bo ma wszystkie funkcje ktore mnie interesuja. Przeszukalem net pod katem zmiany sygnatur, ale jedyne co znalazlem to bardzo podobna metoda szukania syg w pliku a pozniej modyfikowania pojedynczych bajtow metoda prob i bledow. Wydaje mi sie, ze takim sposobem na 90% uszkodze trojana...
Licze na dalsze podpowiedzi:)
 

h4x

Użytkownik
Dołączył
Styczeń 6, 2008
Posty
107
zeby stworzyc cos na miare ggt.[/b]
wez mnie nie rozsmieszaj, sam autor sie juz do tego niechetnie przyznaje. Owszem program bardzo mi sie podobal, jak zaczynalem
smile.gif


jak jakis program zaczal by mi wywalac takie stringi:
Kod:
"śBoolean.."

CODE:13141010 00 00 01 00 00 00 00 10-14 13 05 46 61 6C 73 65 "......śFalse"
to bym go usunal z dysku, sory nie o to chodzi.

winhex jest w porzadku, i pokazuje ci prawidlowy kod (ale raczej sluzy do podgladu pamieci, do pliku jest xvi32)

uzywasz d32dasm, winhes, ida, i jeszcze inne i sie nie dziw ze trudno ci sie polapac. Nie zaczynaj od zaawansowanych narzedzi.

interesuje mnie (wg winxeha) adres 42C40[/b]
0x00042c40
jestes pewien? A co to za adres? Jaki masz image base w naglowku?
zawsze od adresu w pamieci odejmuj image base, i masz ofset. IB to zazwyczaj 400000

Wydaje mi sie, ze takim sposobem na 90% uszkodze trojana...[/b]
opisze ci dokladnie co i jak (o ile mi sie uda ;] ale zawsze mozna zmienic caly program), ale ty wyslij mi serwer tego trojana i powiedz jaki antyvir ma 'obejsc'. Aktualnie modyfikuje rozne popularne programy dodajac ukryta funkcjonalnasc, i jakos mi idzie, ofc w asmie.
 

rusty

Użytkownik
Dołączył
Marzec 18, 2008
Posty
4
wez mnie nie rozsmieszaj, sam autor sie juz do tego niechetnie przyznaje. Owszem program bardzo mi sie podobal, jak zaczynalem
smile.gif
[/b]
nie chcialem daleko szukac - przeciez i tak wiekszosc dostepnych trojow jest wykrywalna blyskawicznie, a tego jednego chociaz znalem z dawnych czasow
poza tym chodzilo mi o sprawdzenie metody a potem szukanie czegos moze bardziej zaawansowanego

jak jakis program zaczal by mi wywalac takie stringi:[/b]
to bym go usunal z dysku, sory nie o to chodzi.[/b]
mozesz dwa slowa skrobnac dlaczego?

Nie zaczynaj od zaawansowanych narzedzi.[/b]
gdyby nie bylo problemow pewnie skonczylbym na d32 i winhex bo takie byly w tutku, ale jak zaczelo byc pod gorke to dopiero zaczalem szukac czegos innego, wlasciwie po to zeby wyciagnac jakies info ktore mnie naprowadzi na rozwiazanie

0x00042c40
jestes pewien? A co to za adres? Jaki masz image base w naglowku?
zawsze od adresu w pamieci odejmuj image base, i masz ofset. IB to zazwyczaj 400000[/b]
IB w naglowku to 13140000 Jest 8 sekcji. Ostatnia to .rsrc offset 00042600 (size 00014000)
Jak odnajduje moj offset w peexplorerze to siedzi on wlasnie w resourcach - prawdopodobnie tam jest zaszyta dll'ka, ktora przy instalcji serwera jest podgrywana do systemu albo userinit.exe tez podmieniany Te pliki po zainstalowaniu serwera sa rozpoznawane, wiec wychodzi mi, ze tak naprawde ich sygnatury trzymaja av. Edytujac je powinienem dostac czysta dll'ke i zarazem samego serwera...

Z drugiej strony znalazlem takie cos: "The top-level directory (of which there's only one) is always found at the beginning of the resource section (.rsrc)" co by swiadczylo, ze na poczatku sekcji (a taki mam wlasnie offset) jest zapisana jej struktura i av to sobie wziely jako sygnature...?
Tu znowu sie troche zacialem :mruga: i juz rzeczywiscie sam sie zastanawiam czy nie wziac innego troja do obrobki - moze bedzie troche latwiej
smile.gif


Podesle serwer - pewnie cos zle interpretuje a odpowiedz jest prosta
thx
 
Do góry Bottom