Autor |
Beitrag |
SAiBOT
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Do 21.01.10 16:23
Informationen
Mit diesem kleinen Tool kann man sein Windowssystem nach versteckten Prozessen durchsuchen. Es verwendet folgende Techniken:
- Windows Enumeration (sucht versteckte Fenster)
- PID Bruteforcing (sucht Prozesse, die aus der Kette von Kernel-Objekten entfernt wurden)
- Csrss.exe Handletable search (sucht in der Handletabelle nach Prozesshandles)
- NtQuerySystemInformation (gegen Process32First, Process32Next Hooks)
- ZwQuerySystemInformation (gegen NtQuerySystemInformation Hooks)
- Netstat-Methode (sucht Prozesse die über eine Internetverbindung verfügen. Funktioniert nicht unter Windows 2000)
Kursiv markierte Methoden sind unsicher und benötigen zum Aufruf den Parameter "-unsafe".
Mit diesen wirkungsvollen Techniken erkennt HPD die meisten, von Rootkits versteckten, Userland Prozesse. Sollten versteckte Prozesse auf deinem System gefunden werden, so ist es sehr wahrscheinlich das dein System von einen Rootkit infiziert ist. Allein durch manipulation von Kernel-Objekten, ist es dem Angreifer nicht mehr möglich seine Prozesse im Hintergrund laufen zu lassen, neben dieser Standard Technik wären noch eine Reihe von Kernel/Userland Hooks notwendig.
Es war viel arbeit dieses Tool kompatibel mit den neueren Versionen von Windows zu machen, aber ich denke ich habe eine universelle Lösung gefunden.
Systemvoraussetzungen
ab Windows 2000
Edit:
Da noch ein paar Virenscanner bei VirusTotal Falschmeldungen von sich gaben, habe ich HPD nochmal überarbeitet. Nun sollte es keine Probleme mehr geben. Hier die Ergebisse:
Edit2:
Ab Version 1.0 wird HPD wieder von manchen "Noname" Av's erkannt, leider finde ich diesmal keine Möglichkeit das Problem zu umgehen.
Virusscans: (v0.3)
Jotti.org:
virusscan.jotti.org/...f2b129e58d07e3cb366d
VirusTotal.com:
Quelltext 1: 2: 3:
| Datei HPD.exe empfangen 2010.01.24 01:10:13 (UTC) Status: Laden ... Wartend Warten Überprüfung Beendet Nicht gefunden Gestoppt Ergebnis: 0/41 (0%) |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| a-squared 4.5.0.50 2010.01.24 - AhnLab-V3 5.0.0.2 2010.01.23 - AntiVir 7.9.1.146 2010.01.22 - Antiy-AVL 2.0.3.7 2010.01.22 - Authentium 5.2.0.5 2010.01.23 - Avast 4.8.1351.0 2010.01.23 - AVG 9.0.0.730 2010.01.23 - BitDefender 7.2 2010.01.24 - CAT-QuickHeal 10.00 2010.01.22 - ClamAV 0.94.1 2010.01.22 - Comodo 3685 2010.01.23 - DrWeb 5.0.1.12222 2010.01.23 - eSafe 7.0.17.0 2010.01.21 - eTrust-Vet 35.2.7255 2010.01.22 - F-Prot 4.5.1.85 2010.01.23 - F-Secure 9.0.15370.0 2010.01.23 - Fortinet 4.0.14.0 2010.01.23 - GData 19 2010.01.24 - Ikarus T3.1.1.80.0 2010.01.24 - Jiangmin 13.0.900 2010.01.23 - K7AntiVirus 7.10.952 2010.01.22 - Kaspersky 7.0.0.125 2010.01.24 - McAfee 5870 2010.01.23 - McAfee+Artemis 5870 2010.01.23 - McAfee-GW-Edition 6.8.5 2010.01.24 - Microsoft 1.5405 2010.01.24 - NOD32 4800 2010.01.23 - Norman 6.04.03 2010.01.23 - nProtect 2009.1.8.0 2010.01.23 - Panda 10.0.2.2 2010.01.23 - PCTools 7.0.3.5 2010.01.23 - Prevx 3.0 2010.01.24 - Rising 22.31.04.04 2010.01.22 - Sophos 4.50.0 2010.01.24 - Sunbelt 3.2.1858.2 2010.01.23 - Symantec 20091.2.0.41 2010.01.24 - TheHacker 6.5.0.9.160 2010.01.23 - TrendMicro 9.120.0.1004 2010.01.23 - VBA32 3.12.12.1 2010.01.23 - ViRobot 2010.1.23.2152 2010.01.23 - VirusBuster 5.0.21.0 2010.01.23 - |
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von SAiBOT am Sa 14.08.10 11:35, insgesamt 23-mal bearbeitet
Für diesen Beitrag haben gedankt: spawn89
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Do 21.01.10 19:12
Guter Ansatz. Läuft auch auf Win7...
Kann da leider keine Prozesse mehr verstecken, so dass ich den "Ernstfall" nicht testen kann.
Werde es gleich mal unter XP testen.
Anmerkungen:
Warum beginnst du dein PID-Bruteforce bei 0, wenn du dann bei 0 und 4 ein continue hast?
Außerdem war da was wegen dem UPX-Packer... War keine gute Idee Programme zu packen. Wäre also besser, wenn du es normal lässt. Wegen dem Windows-Speichermanager.
Ansonsten...Test kommt gleich
Edit: Ok. Der PID-Bruteforcer ist gut. Der hat mein Ollydbg mit Treiber-Plugin gefunden. Der Rest der Tests hat nichts gefunden. Auch das FU-Rootkit erkennt er mit dem PID-BruteForce.
Manko: False-Positives beim letzten Test (NtQuerySystemInformation) Er erkennt sich selbst als versteckt. Aber auch nicht immer und konnte es nicht durch etwas bestimmtes reproduzieren. Taucht aber gelegendlich mal auf. Sowohl unter Win7 als auch XP
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Do 21.01.10 20:10
Flamefire hat folgendes geschrieben : | Guter Ansatz. Läuft auch auf Win7...
Kann da leider keine Prozesse mehr verstecken, so dass ich den "Ernstfall" nicht testen kann.
Werde es gleich mal unter XP testen. |
Wenn du Kerneltreiber + Zubehör für W7 haben willst lass es mich wissen.
Flamefire hat folgendes geschrieben : |
Anmerkungen:
Warum beginnst du dein PID-Bruteforce bei 0, wenn du dann bei 0 und 4 ein continue hast?
Außerdem war da was wegen dem UPX-Packer... War keine gute Idee Programme zu packen. Wäre also besser, wenn du es normal lässt. Wegen dem Windows-Speichermanager.
Ansonsten...Test gleich  |
Ja, schön blöd  , danke!
kannst du mir das mit UPX näher erleutern?
Flamefire hat folgendes geschrieben : |
Manko: False-Positives beim letzten Test (NtQuerySystemInformation) Er erkennt sich selbst als versteckt. Aber auch nicht immer und konnte es nicht durch etwas bestimmtes reproduzieren. Taucht aber gelegendlich mal auf. Sowohl unter Win7 als auch XP |
Ja, nun weiß ich auch warum -.-, dürfte behoben sein.
lade gleich die neue, ungepackte Version hoch.
Danke für dein Feedback
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Do 21.01.10 20:41
@UPX: Ich versuchs...Ist schon ne Weile her. UPX haut alle Sections zusammen. Normalerweise kann Windows bestimmte Teile auslagern, da UPX aber alles in eine Speicherregion schreibt, geht das nicht mehr. Praktisch: Alles oder nichts (auslagern)
Da er nich alles auslagern kann, lagert er nichts aus...
Am Ende eben: Es geht was mit dem Speichermanager schief
Argument war: Kleine Anwendung-->Kein wirklicher vorteil (ob nun 10 oder 30kb ist eh egal); Große Anwendung-->Speichermanagerproblem
Fix scheint zu klappen.
PS: Source würde mich mal intressieren. Grundprinzip hab ich ja schon mit olly gesehn, aber mal als High-Level-Language wäre es auch intressant. Auch unter dem Aspekt, was an Schlupflöchern noch bleibt.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Do 21.01.10 22:01
Sollte bei Sicherheitskritischen Anwendungen ja eigentlich eh bevorzugt werden, dass man sieht, welche Lücken offen bleiben ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
kurt59
      
Beiträge: 20
-
Delphi 5
|
Verfasst: Fr 22.01.10 17:30
HPD.exe war nur kurz auf meinem USB-Stick gespeichert.
Datei wurde von McAfee mit den Hinweis auf "MultiDropper-JD (Trojan)" sofort gelöscht.
Ein Scan mittels jotti.org brachte keine Fehlermeldung - was stimmt da nicht?
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Fr 22.01.10 17:47
Keine Fehlermeldung? Oder keine Virenmeldung? Möglicherweise ist dein McAfee nicht auf dem neusten Stand, in jedem Falle eine Falschmeldung!
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
kurt59
      
Beiträge: 20
-
Delphi 5
|
Verfasst: Fr 22.01.10 18:23
Es war eine Virusmeldung und ein aktueller Scanner.
Ein Scan bei Virustotal.com gibt auch 3 Meldungen aus.
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Fr 22.01.10 19:20
Tja, alles Falschmeldungen, die meisten haben scheinbar etwas dagegen wenn der Prozess sich selbst debug-privileges holt. So ist es leider immer bei so Systemnahen Tools. Wenn du ein wenig Ahnung von Debugging hast, kannst du die Exe ja mal unter die Lupe nehmen. Wobei die Meldung "MultiDropper-JD (Trojan)" doch schon Zweifel hervorrufen sollte, denn was ist ein Trojaner!? ohne Internetkomponenten.
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Mo 19.04.10 13:17
Kleines Update
Ursprünglich war HPD in MASM geschrieben doch da Assembler so unpraktikabel ist, habe ich mich doch wieder für eine high level language entschieden. HPD wurde so überarbeitet, dass es nun auch auf Windows 2000 Systemen laufen sollte, ausserdem bringt das Tool eine neue Technik mit. Diese Technik macht es sich zu nutzen, dass die Netstat.exe ein Handle jedes Prozesses in sich trägt, der über eine Internetverbindung verfügt. Die Listen der Verbindungen werden durchsucht und die PID’s der Einträge verglichen mit denen aus der Prozessliste. Das Format aus diesen Listen ist vergleichbar mit dem Aufruf “Netstat.exe -a -o”. Leider funktioniert diese Methode erst ab Windows XP.
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mo 19.04.10 13:30
Gut, gehen wir doch mal den "Ernstfall" durch: Unter Windows 7 finde ich mit PID Bruteforce vier Prozesse(vgl. Screenshot).
Diese müsste ich ja nun noch einer Quelle zuordnen, warum hörst du bei der PID schon auf?
lg,
(PS: Sehr schmeichelhaft, dein Tool nach meinem Nick zu benennen  )
Einloggen, um Attachments anzusehen!
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Mo 19.04.10 13:40
Hi Hidden, eigentlich besorgt sich das Tool die Quelle auch mit der Funktion GetModuleFileNameExA aus der psapi.dll.
MSDN:
Minimum supported client
Windows 2000 Professional
Welches OS hast du  ?
(PS: Deine Beiträge im Forum haben mir immer sehr zugesagt, deswegegen ist es dazu gekommen  ).
Edit: achso Win7, glatt überlesen. Mh also sollte bei dir eigentlich auch so aussehen wie auf meinem Screenshot aus dem ersten Post.
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mo 19.04.10 14:44
Hi
Also die .dll ist auf jeden Fall vorhanden - und zwar gleich 4x
Vielleicht kannst du mir ja mal eine Debug-Version schicken. Dass die zweite Ausgabe ohne Fehlermeldung einfach so fehlt, kommt mir etwas spanisch vor :O
lg,
E: Nach Neustart sind alle versteckten Prozesse verschwunden
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Zuletzt bearbeitet von Hidden am Mo 19.04.10 14:49, insgesamt 1-mal bearbeitet
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Mo 19.04.10 14:47
Ist der Einsprungspunkt in deiner Psapi.dll auch vorhanden oder steckt er bei dir in der Kernel32.dll?
Habe da noch was gefunden:
MSDN hat folgendes geschrieben: | DLL
Kernel32.dll on Windows 7 and Windows Server 2008 R2, Psapi.dll if PSAPI_VERSION=1 on Windows 7 and Windows Server 2008 R2, Psapi.dll on Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP/2000 |
Hidden hat folgendes geschrieben : | Dass die zweite Ausgabe ohne Fehlermeldung einfach so fehlt, kommt mir etwas spanisch vor :O |
Das habe ich im Code berücksichtigt.
Hidden hat folgendes geschrieben : |
E: Nach Neustart sind alle versteckten Prozesse verschwunden |
Das kann nicht sein 
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
Zuletzt bearbeitet von SAiBOT am Mo 19.04.10 15:00, insgesamt 2-mal bearbeitet
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mo 19.04.10 14:51
SAiBOT hat folgendes geschrieben : | Ist der Einsprungspunkt in deiner Psapi.dll auch vorhanden oder steckt er bei dir in der Kernel32.dll?
|
Wie überprüfe ich das?
Ich würde dir mal gerade die .dll anhängen, aber die ist 4x vorhanden - 2x 9kb ud 2x 6kb. Auf welchen Pfad greifst du zu?
E: Die Pfade sind - System43/..; Amd64_..; SysWOW64/..(6kb); x86_microsoft-..(6kb)
lg,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Mo 19.04.10 14:59
zB. mit dem Tool DLLExports von Luckie ( www.michael-puff.de/...e/DLLExports2_0.zip). Es dürfte IMHO nur die aus System32 ausschlaggebend sein.
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mo 19.04.10 15:05
Ist vorhanden - 000015BC.
Mit dlls habe ich ncoh nicht gearbeitet. Können sich durch 64 bit irgendwelche Adressen verschoben haben?
lg,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Mo 19.04.10 15:24
Also wenn deine Psapi.dll aus dem System32 Verzeichnis die Funktion beinhaltet, verstehe ich das Problem nicht. Ich schicke mal einen Codeauszug.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| const psapidll = 'psapi.dll'; kernel = 'kernel32.dll'; var GetModuleFileNameExA: function(hProcess: THandle; hModule: HMODULE; lpFilename: PChar; nSize: Cardinal): Cardinal; stdcall; psapi: Cardinal;
psapi := GetModuleHandle(psapidll); if psapi = 0 then psapi := LoadLibraryA(psapidll);
@GetModuleFileNameExA := GetProcAddress(psapi, 'GetModuleFileNameExA');
if not Assigned(GetModuleFileNameExA) then @GetModuleFileNameExA := GetProcAddress(GetModuleHandle(kernel), 'GetModuleFileNameExA');
if Assigned(GetModuleFileNameExA) then begin GetModuleFileNameExA(hProcess, 0, @buffer, 260); WriteLn(Format(tHiddenFound+' Name: "%s", PID: %d',[buffer,PID])); end else WriteLn(Format(tHiddenFound+' PID: %d',[PID])); |
Kenne mich mit 64er Systemen nicht aus, aber das dürfte doch eigentlich keine Probleme geben?
Edit: Ok das Problem ist gefixt, lag daran dass die Funktion in Hidden's Fall in der Kernel32.dll exportiert ist und in meinen Fällen immer in der psapi.dll war.
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 20.04.10 09:10
Scheint zu funktionieren. Bei mir auf der Arbeit findet er einen versteckten Prozess mit Netstate mit der IP-Adresse 127.0.0.1. Allerdings wäre es wirklich hilfreich, wenn du die ProzessID noch auflösen würdest, denn so kann man damit nicht viel anfangen. Und ich weiß jetzt nicht wirklich, ob das was schlimmes ist.
Mein Rechner zu Hause scheint sauber zu sein, da wird nichts gefunden.
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Mi 21.04.10 11:48
Hi Luckie,
die PID lässt sich leider nur auflösen wenn man mittels OpenProcess an das Processhandle kommt. Beim Bruteforce werden alle PID's durchlaufen und genau das versucht. Es gibt leider keine weiteren Möglichkeiten, innerhalb von Ring3, an weitere Informationen zu kommen. Der Anwender sollte sein System auf Kernelhooks untersuchen (mit zB. diesem Tool www.resplendence.com/hookanalyzer ) ,diese entfernen und HPD neu starten. Mit Chance bekommt man so mehr Informationen. Wenn das alles nichts hilft, kann es auch sein das es sich um ein Handle-"Zombie" handelt, welcher durch Softwarekonflikte oder Windows selbst entstanden ist, in diesem Fall hilft System neustarten und HPD erneut drüber laufen lassen.
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|