Vraag:
Hoe ondoorzichtige predikaten ontwerpen?
perror
2013-06-26 16:45:31 UTC
view on stackexchange narkive permalink

Ondoorzichtig predikaat wordt gebruikt om de automatische analyse van de binaire code te verstoren door de limieten te bereiken van wat een analysator kan doen.

Kan iemand een voorbeeld (of een paar voorbeelden) geven van een ondoorzichtig predikaat gevonden in een real-life case? En wat zijn de methoden die worden gebruikt om nieuwe ondoorzichtige predikaten te bouwen?

Drie antwoorden:
joxeankoret
2013-06-26 17:29:54 UTC
view on stackexchange narkive permalink

Een ondoorzichtig predikaat vond ik jaren geleden in een malwarevoorbeeld:

  SetErrorMode (1024); if (SetErrorMode (0) == 0) SayHiToEmulator (); DoRealStuff ();  

Wat betreft de andere vraag, hoe nieuwe ondoorzichtige predikaten te bouwen, ik denk dat het afhangt van het soort analyseprogramma dat je wilt verstoren. Het is anders om een ​​statische code-analysator te verstoren die is ontworpen om bugs te vinden dan een emulator te verstoren die is ontworpen om de omgeving na te bootsen waarin malware zou moeten worden uitgevoerd.

Maar laten we zeggen dat u malware-emulators wilt verstoren: u kunt bouwen een lijst met API's uit de meest voorkomende bibliotheken (kernel32.dll, advapi32.dll, user32.dll, enz ...), maak een batch bewijzen waar u die API's uitvoert door de argumenten te wijzigen en de retourwaarden en gegenereerde uitzonderingen te controleren, indien aanwezig, en sla de resultaten op. Controleer vervolgens de resultaten van dergelijke API's en vind kandidaten: een retourwaarde die is gerelateerd aan de invoer voor dergelijke API's is bijvoorbeeld een goede kandidaat voor een ondoorzichtig predikaat. Specifieke voorwaarden (uitzonderingen of retourwaarden) die slechts zelden voorkomen en met bepaalde specifieke invoer, zijn zelfs nog beter. Slechts enkele ideeën ...

debray
2013-06-26 18:42:57 UTC
view on stackexchange narkive permalink

Zie: Christian Collberg, Clark Thomborson en Douglas Low, Manufacturing Cheap, Resilient, and Healthy Onque Constructs, ACM Principles of Programming Languages ​​ (POPL'98), januari 1998.

Link: http://knot.kaist.ac.kr/seminar/archive/80/manufacturing-resilient.pdf (pdf)

Ta Thanh Dinh
2013-07-01 13:50:22 UTC
view on stackexchange narkive permalink

Ik ken geen realistisch ondoorzichtig predikaat. Maar er is een zeer constructieve predikaat-obfuscator in de paper Limits of Static Analysis for Malware Detection. Het is bewezen dat het NP-moeilijk is voor nauwkeurige statische analyse.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...