Autor Beitrag
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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:
ausblenden 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%)

ausblenden volle Höhe 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:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Do 21.01.10 20:10 
user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:

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 :oops:, danke!
kannst du mir das mit UPX näher erleutern?

user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 20

-
Delphi 5
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 20

-
Delphi 5
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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 :zustimm:)
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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 :shock: ?

(PS: Deine Beiträge im Forum haben mir immer sehr zugesagt, deswegegen ist es dazu gekommen :D).

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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 19.04.10 14:44 
Hi :)

Also die .dll ist auf jeden Fall vorhanden - und zwar gleich 4x :lol:

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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


user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Dass die zweite Ausgabe ohne Fehlermeldung einfach so fehlt, kommt mir etwas spanisch vor :O

Das habe ich im Code berücksichtigt.

user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:

E: Nach Neustart sind alle versteckten Prozesse verschwunden

Das kann nicht sein :mrgreen:

_________________
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 19.04.10 14:51 
user profile iconSAiBOT hat folgendes geschrieben Zum zitierten Posting springen:
Ist der Einsprungspunkt in deiner Psapi.dll auch vorhanden oder steckt er bei dir in der Kernel32.dll?
Wie überprüfe ich das? :oops:

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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.

ausblenden 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');

  // Habe das jetzt noch etwas erweitert:
  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 user profile iconHidden'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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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.