Autor Wątek: Programy antyvirusowe a dekompilacja  (Przeczytany 2544 razy)

Offline DMX

  • Użytkownik

# Listopad 06, 2014, 23:51:57
Z tego co się orientuję dekompilatory to rzadkie i niekompletne rozwiązania. Jednak nasunęła mi się pewna myśl. Firmy antywirusowe muszą w jakiś sposób badać wirusy. I jedyne co mi przychodzi do głowy to to, że muszą mieć rozwiązania pozwalające dekompilować kod wirusów, bo przecież z samej dezasemblacji nie odczytaliby co dany wirus potrafi. Gdy takie firmy ogłaszają nieraz raport o jakimś wirusie to dość dokładnie mówią, co potrafi. Czy w takiej sytuacji dla firm zajmujących się antywirusami dobre dekompilatory to chleb powszedni, a zwykli ludzie nie mają praktycznie żadnego dostępu do jakiegokolwiek przyzwoitego dekompilatora?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xirdus

  • Redaktor

# Listopad 07, 2014, 01:23:18
Dekompilacja kodu natywnego do czegoś innego niż assembler jest praktycznie niemożliwa. No zwyczajnie nie ma to sensu. Z tym że z samego asma da się dowiedzieć wszystkiego. Z tego co się orientuję, wirusy bada się również nie przez analizę kodu, ale przez uruchomienie ich w kontrolowanym środowisku i sprawdzenie efektów.

Jeszcze co do dekompilatorów - jak zdekompilujesz plik .jar, dostaniesz niemal dokładną kopię kodu źródłowego. Ot, taka cecha języków interpretowanych.

Offline szymski

  • Użytkownik

# Listopad 07, 2014, 01:25:59
Niektóre języki da się zdekompilować, np. C# lub Java. Jeśli chodzi o języki kompilowane do kodu maszynowego to można o tym zapomnieć. Oczywiście da się w jakimś stopniu odbudować kod programu z samego kodu maszynowego, ale kod odbudowany nigdy nie będzie taki sam jak oryginalny kod. Jeśli chodzi o antywirusy, to większość potencjalnie niechcianych aplikacji da się wykryć po funkcjach, które są importowane. Powiedzmy, że program importuje funkcję do pobierania klawiszy oraz do robienia screenshot'ów. Jeśli program nie posiada podpisu cyfrowego, to nie będzie ciężko stwierdzić, że może być to wirus. Importowane funkcje da się też zamaskować, na przykład używając packer'ów. Wtedy trzeba takiego wirusa odpakować, chociażby przy użyciu wirtualnej maszyny, a następnie przeanalizować kod maszynowy. Analiza disassembledowanego kodu wcale taka ciężka nie jest. Poza tym można też odpalić wirusa w trybie sandbox, lub analizować jego ruch sieciowy.

Offline ArekBal

  • Użytkownik

# Listopad 07, 2014, 02:57:38
Na ogół w kodzie natywnym spotkasz standardowe konstrukcje(wywoływanie metod, rozłożenie pamieci, standardowe optymalizacje) które mogą i są zazwyczaj przez disassembler rozpoznane i mogą trochę ułatwić analizę tego co się dzieje. Z resztą posiedzisz trochę z asmem i którymś debuggerem i wtedy tylko kod pisany w asmie z celem obfuskacji będzie trudny.

Offline Xirdus

  • Redaktor

# Listopad 07, 2014, 09:35:50
@ArekBal, z tym że wirusy są bardzo "obfuskowane" - żeby jak najbardziej utrudnić wykrycie.

Offline Kopacz

  • Użytkownik

# Listopad 07, 2014, 09:39:50
Do Delphi było (jest) takie fajne narzędzie, Boomerang się nazywa bodajże. Z tym, że jego fajność polegała tylko na tym, że kod w ASMie był podzielony na callbacki. Jak chciałeś zobaczyć co dzieje się po przyciśnięciu przycisku, to nie trzeba było w ogóle kopać, tylko od razu dostawałeś kod z tego przycisku.

Są też aplikacje, których twórcy twierdzą, że potrafią zdekompilować aplikację do C/C++. Część z nich nawet działa, przy czym w moim mniemaniu dużo łatwiej analizuje się kod ASM, niż to co one wypluwają. O ile wyplują, bo większość z tych dekompilatorów wysypuje się przy czymkolwiek większym niż "Hello world".

OllyDBG z odpowiednimi wtyczkami lub IDAPro (to akurat jest płatne). O dziwo przy takich zabawach czasem największym problemem nie jest analiza kodu, a dekompresja pliku wykonywalnego.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

  • +1
# Listopad 07, 2014, 10:04:26
Cytuj
bo przecież z samej dezasemblacji nie odczytaliby co dany wirus potrafi
Wniosek całkowicie mylny. Sam dezsemblowałem kody paru demek scenowych 4k, czy gier na C64 i zaufaj mi - z kodu asemblera da się wyczytać wszystko. :)

Offline Docent

  • Użytkownik

# Listopad 08, 2014, 22:21:28
Z tego co się orientuję dekompilatory to rzadkie i niekompletne rozwiązania. Jednak nasunęła mi się pewna myśl. Firmy antywirusowe muszą w jakiś sposób badać wirusy. I jedyne co mi przychodzi do głowy to to, że muszą mieć rozwiązania pozwalające dekompilować kod wirusów, bo przecież z samej dezasemblacji nie odczytaliby co dany wirus potrafi. Gdy takie firmy ogłaszają nieraz raport o jakimś wirusie to dość dokładnie mówią, co potrafi. Czy w takiej sytuacji dla firm zajmujących się antywirusami dobre dekompilatory to chleb powszedni, a zwykli ludzie nie mają praktycznie żadnego dostępu do jakiegokolwiek przyzwoitego dekompilatora?
Najpopularniejsza jest Ida Pro, swietny produkt do deasemblacji kodu z wielu platform (takze mobilnych) na >40 procesorow. Jest do tego programu wiele pluginow, w tym plugin do dekompilacji do kodu zrodlowego C - tu https://www.hex-rays.com/products/decompiler/compare_vs_disassembly.shtml mozesz sobie porownac co wychodzi z tego dekompilatora. Wiekszosc (jesli nie wszystkie) komercyjnych firm antywirusowch wykorzystuje Ide, czesto w polaczeniu ze swoimi pluginami oraz systemami i toolsami do analizy zachowania sie programow. 
Najnowsza wersja 6.6 w wersji pro kosztuje ponad 1200$ ale jakas stara wersja jest dostepna za darmo.