Pitanje:
Što je potpis FLIRT?
mrduclaw
2013-03-23 13:48:10 UTC
view on stackexchange narkive permalink

Ovo sam vidio u nekoliko drugih pitanja na ovom mjestu. Ali što je FLIRT potpis u IDA Pro? A kada bih kreirao vlastiti za upotrebu?

Tri odgovori:
#1
+26
Igor Skochinsky
2013-03-23 18:16:03 UTC
view on stackexchange narkive permalink

FLIRT je kratica za Tehnologija brze identifikacije i prepoznavanja knjižnica .

Peter je objasnio osnove, ali evo bijelog teksta o tome kako se primjenjuje:

https://www.hex-rays.com/products/ida/tech/flirt/in_depth.shtml

Da bismo riješili te probleme, stvorili smo bazu podataka svih funkcije iz svih knjižnica koje smo željeli prepoznati. IDA sada provjerava, kod svakog bajta programa koji se rastavlja, može li taj bajt označiti početak standardne funkcije knjižnice.

Podaci potrebni za algoritam prepoznavanja čuvaju se u datoteci potpisa. Svaka je funkcija predstavljena uzorkom. Uzorci su prva 32 bajta funkcije u kojoj su označeni svi varijantni bajtovi.

Nešto je star (iz IDA-e 3.6), ali osnove i dalje vrijede.

Da biste stvorili svoj vlastite potpise, trebat će vam alati FLAIR koji se mogu zasebno preuzeti.
(FLAIR znači brzo prikupljanje biblioteke za identifikaciju i prepoznavanje)

Knjiga IDA Pro ima poglavlje na FLIRT i koristeći FLAIR alate.

Ah nije bio svjestan tog bijelog papira. Definitivno to objašnjava bolje od mog malog komentara.
#2
+15
Peter Andersson
2013-03-23 14:22:33 UTC
view on stackexchange narkive permalink

Potpis flerta je obrazac koji se koristi za podudaranje zaglavlja poznatih funkcija. Kao primjer uzmite u obzir sljedeće:

  push ebpmov ebp, espsub esp, 4Chmov [ebp + var_4], eaxpush ebxpush edi ...  

Kompajler je slobodan promijeniti bilo koji registar u drugi ili premjestiti bilo što, tako da sve ovisi o tome što kompajler smatra najoptimalnijim. Sastavljen negdje drugdje, kompajler može odabrati upotrebu drugih registara, na primjer:

  push ebpmov ebp, espsub esp, 4Chmov [ebp + var_4], eaxpush ecxpush esi ...  

Sada imate nekoliko mogućnosti za pokušaj uspoređivanja s tim. Ili naivno stvorite potpis iz niza uputa:

  push Xmov Xsub Xmov Xpush Xpush X ...  

Pretpostavimo da okviri steka koriste ebp i esp, što je zapravo opasnije nego što zvuči. Uobičajeno je da funkcije koriste ebp kao registar opće namjene:

  push ebpmov ebp, espsub esp, 4Chmov [ebp + var_4], Xpush Xpush X ...  

IDA flirt potpisi pokušaj su stvaranja ove vrste potpisa na temelju broja početnih bajtova funkcije. Problem koji pokušavaju riješiti je prepoznavanje često korištenog koda. Ti se potpisi generiraju kompiliranjem različitih često korištenih knjižnica pomoću različitih kompajlera. Jednom kad kompajler proizvede knjižnicu, IDA ima alate za izdvajanje potpisa iz ove biblioteke, istovremeno podudarajući je s izvornom definicijom. Nakon nekog vremena možete stvoriti popriličan broj potpisa za zajedničke knjižnice, što će vam uštedjeti dosta vremena.

Za složenije rješenje povezanog problema identificiranja sličnosti i razlika u programu pogledajte BinDiff. Koristi mnogo napredniju heuristiku.

Potpis koji sam gore koristio kao primjer prilično je bezvrijedan jer je previše generički i stvorit će puno lažno pozitivnih podudaranja.

#3
+2
omghai2u
2013-03-23 13:53:32 UTC
view on stackexchange narkive permalink

Sa stranice Hex-Rays:

  Datoteka s potpisom sadrži uzorke standardnih funkcija vremena izvođenja. Uz njihovu pomoć, IDA je u stanju prepoznati standardne funkcije i imenovati ih u skladu s tim.  

U nastojanju da u potpunosti razotkrijem, nisam ih stvorio za vlastitu upotrebu od nule. Pretpostavljam da bi vam jedan slučaj kada bi vam bilo korisno biti ako imate puno zlonamjernog softvera koji pripada istoj obitelji. Tipično pišu i koriste vlastite funkcije knjižnice i ovdje bi imalo smisla da vam pomogne potpis FLIRT.

Kao dodatni bonus, ovdje je javni repo potpisa FLIRT.

Mislim da taj repo ne sadrži ništa :)
Pa, možemo se nadati da će dobiti neke zahtjeve za povlačenjem uz neko oglašavanje, zar ne? ^ _ ^


Ova pitanja su automatski prevedena s engleskog jezika.Izvorni sadržaj dostupan je na stackexchange-u, što zahvaljujemo na cc by-sa 3.0 licenci pod kojom se distribuira.
Loading...