Warum man HijackThis (HJT) für eine Malwareanalyse nicht mehr verwenden sollte

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

  • Autor: AHT
    Warum man HijackThis (HJT) für eine Malwareanalyse nicht mehr verwenden sollte


    In manchen Artikeln im Netz wird leider immer noch zur Verwendung von HijackThis (vormals von Trendmicro) zur Überprüfung von Rechnern mit Malwareproblemen geraten. Ich möchte hier einmal darauf eingehen, warum man es unterlassen sollte, HJT weiterhin bei solchen Analysen einzusetzen.

    1. HijackThis ist ein 32Bit Programm und (in den offiziellen Versionen) nicht kompatibel zu 64Bit Systemen

    Manch einer wird vielleicht nicht glauben, das HijackThis nicht kompatibel zu 64Bit Systemen ist, denn das Programm stürzt ja nicht ab - es ist aber wirklich so. 64Bit Programme können sehr viel höhere Speicheradressen verwalten, als 32Bit Programme. 64Bit Programme können deshalb auch nur 64Bit DLLs laden und 32Bit Programme nur 32Bit DLLs. Damit auch ältere Programme unter 64Bit korrekt laufen, hat Microsoft einiges getan, um die Kompatibilität zu gewährleisten. Hier das wichtigste davon in der Sache, um die es hier geht:

    Die Ordnerumleitungen

    32Bit Programme laufen auf einem 64Bit System innerhalb eines Emulators - dem sogenannten WOW64-Emulator
    64Bit System-DLLs befinden sich im Ordner %SYSTEMROOT%\System32 und 32Bit System-DLLs befinden sich im Ordner %SYSTEMROOT%\SysWOW64. Der Emulator stellt dabei sicher, dass alle Zugriffe eines 32Bit Programms auf den Ordner %SYSTEMROOT%\System32 in den Ordner %SYSTEMROOT%\SysWOW64 umgeleitet werden, damit das Programm die richtigen DLLs lädt. Zwar kann ein 32Bit Programm auf verschiedenen Wegen diese Umleitungen deaktivieren, HijackThis tut das aber nicht. Da HJT das nicht tut, kann es in den LOGs zu Einträgen mit dem Vermerk (file missing) kommen, obwohl die Datei vorhanden ist (HJT sucht sie nur im falschen Ordner). Hier ein LOG unter 64Bit als Beispiel:


    Wertet der Nutzer diese Einträge als unnütz oder fehlerhaft und löscht sie, kann das zu schweren Fehlern im System führen.

    Die Registryumleitungen

    Auch einige Autostarteinträge aus der Registry in Unterschlüsseln von HKEY_LOCAL_MACHINE\Software werden vom Emulator in andere Schlüssel unter HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node umgeleitet. Auch diese Umleitungen ließen sich programmiertechnisch deaktivieren - auch das tut HJT nicht.
    Im LOG oben befindet sich zum Beispiel folgender Eintrag:
    O4 - HKLM\..\Run: [SoundMAXPnP] C:\Program Files (x86)\Analog Devices\Core\smax4pnp.exe
    Dieser Eintrag sollte sich unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run befinden. Da steht bei dem Testgerät aber nur folgendes:



    Erst wenn man in den Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run schaut, findet man dort den passenden Wert in der Registry:



    Die Einträge, die im Bild weiter oben unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run zu sehen sind, fehlen in dem LOG komplett. HJT listet also sehr viele Autostarteinträge auf 64Bit Systemen gar nicht.

    Prozesse fehlen

    Schaut man sich die Prozessliste in dem Beispiel oben an, stehen dort nur sieben laufende Prozesse:

    Das sind nur 32Bit Prozesse. Um laufende 64Bit Prozesse auszulesen, ist die Methode, die HJT da verwendet, komplett ungeeignet. Alle 64Bit Prozesse sieht das Tool deshalb nicht.



    2. HijackThis listet (in den offiziellen Versionen) nicht alle wichtigen Autostarteinträge


    Unter anderem die Autostarteinträge unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx listet HJT in den offiziellen Versionen nicht. Es gibt aber auch weitere Sachen, die nicht ausgelesen werden:

    • Erweiterungen von FireFox
    • Erweiterungen von Chrome
    • Erweiterungen von Edge
    • Tasks ab Vista
    • geladene DLLs
    • ...

    3. HijackThis verwendet (in den offiziellen Versionen) eine API zum Auslesen des Prozesspfades, die zu falschen Ergebnissen führen kann

    Die API, die HJT in den offiziellen Versionen zum Ermitteln des Prozesspfades verwendet, liest den Pfad von einer Stelle aus, an der der jeweilige Prozess diese Infos selbst ändern und die eigene EXE als vertrauenswürdig erscheinen lassen kann, auch wenn sie das nicht ist.

    Gibt es Versionen von HijackThis, die man noch verwenden kann?


    HJT ist mittlerweile Opensource. Manche Entwickler haben das Tool selbst auf 64Bit angepasst und auch ein Listing weiterer Autostarteinträge hinzugefügt. Inwieweit eine existierende Version wirklich für 64Bit tauglich ist, ist aber nicht für jedermann sofort ersichtlich. Bei einmaliger Nutzung sieht man das nicht.
    In der Regel sind die angepassten Versionen Forks und Beta Versionen. Ob der Autor vertrauenswürdig ist, ist auch nicht unbedingt sicher.


    Sollte man den offenen Quellcode von HijackThis für eigene Versionen von HJT oder eigene Programme verwenden?

    Ich persönlich halte es für keine gute Idee, bei einem Sicherheitsprogramm offenen Code von anderen Programmen 1:1 zu übernehmen. Im Prinzip übernimmt man dann auch alle gedanklichen und programmiertechnischen Fehler mit in das neue Programm. Diese Fehler könnten Malwareschreiber zum Beispiel dazu nutzen, um sich vor einer Software unsichtbar zu machen.