Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WinVerifyTrust Hook Probleme (https://www.delphipraxis.net/122341-winverifytrust-hook-probleme.html)

Sereby 14. Okt 2008 14:17


WinVerifyTrust Hook Probleme
 
Hoi,

ich habe hier folgendes Gefunden:
http://www.delphipraxis.net/internal...ct.php?t=48444

funktionuckelt auch soweit.

Nur habe ich jetzt schon etwas länger versucht die Wintrust funktion von windows zu hooken per madCodeHook (funzt auch) und dabei sind mir ungreimtheiten aufgefallen die ich mir leider nicht erklären kann.

Ziel:
sigverif.exe soll ALLE Dateien als Signiert anerkennen und bei "Signiert von" muss etwas von Microsoft stehen :)

1. Hook Versuch:
Bei CryptCATAdminCalcHashFromFileHandle einfach das Filehandle von einer anderen Datei wie z.B. NT5.CAT (%windir%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}) übergeben.
Funktioniert nicht!
Er Berechnet zwar den richtigen Hash aber sigverif.exe scheint da noch irgendwie anders abgesichert zu sein :(

2. Hook Versuch:
Delphi-Quellcode:
function WinVerifyTrustCallback(hwnd: THandle; pgActionID: PGUID; pWintrustData: PWINTRUST_DATA): Longint;
begin
  //So erkennt er alle Dateien als Signiert an!
  // - Allerdings verschwindet so das 'Signiert von'
  pWintrustData^.dwStateAction := WTD_STATEACTION_CLOSE;
  //Signatur Prüfung
  Result := WinVerifyTrustNext(hwnd, pgActionID, pWintrustData);}
end;
3. Hook Versuch:
Bei WinVerifyTrustCallback einen eigenen kompletten Signaturcheck zu machen für z.B. NT5.CAT. Also die im Artiekel erwähnte funktion "CheckFileTrust" aufrufen (abgeändert wegen ReturnCode) aber dabei ist mir durch Debuggen aufgefallen dass die funktion "CryptCATAdminEnumCatalogFromHash" IMMER 0 wiedergibt! Also er findet niemals einen Sicherheitskatalog bei der Funktion auch wenn definitiv einer Existiert.


Ich hoffe sehr dass mir da jemand weiterhelfen kann :/


Warum ich das will? z.B. Einfache Art um Windows Dateischutz zu "Deaktivieren" ohne irgendwelche Dateien Patchen zu müssen damit das allgemein gültig ist für jedes Windows-Betriebssystem

Fridolin Walther 16. Okt 2008 03:55

Re: WinVerifyTrust Hook Probleme
 
Zitat:

Zitat von Sereby
Warum ich das will? z.B. Einfache Art um Windows Dateischutz zu "Deaktivieren" ohne irgendwelche Dateien Patchen zu müssen damit das allgemein gültig ist für jedes Windows-Betriebssystem

Warum so kompliziert? Es gibt hundertmal einfachere Wege das zu erreichen was Du willst. Die Verwendung von API Hooks ist in dem Falle der sprichwörtliche Schuß auf Spatzen mit Kanonen.

1. SetSfcFileException erlaubt es Dir eine Minute lang eine beliebige Datei beliebig zu modifizieren. Danach wird eine Änderung nur erkannt, wenn ein Scan angeordnet wird. Wenn Dir das zu wenig ist, hindert Dich niemand daran Timer gesteuert die API alle 30 Sekunden neu aufzurufen um so auch einem manuellen Scan zu entgehen.
2. WFP benutzt Directory Notifications. Nichts hindert Dich daran Notification Handles zu schließen.
3. SfcTerminateWatcherThread im Kontext von WinLogon ausgeführt schaltet die WFP komplett ab bis zum Reboot. Über AppInit_DLLs, Logon Notification DLLs und ähnliche Spielereien kannst Du dafür sorgen, daß beim Start direkt ein SfcTerminateWatcherThread ausgeführt wird, die WFP also permanent deaktiviert ist.
4. SFC_OS.DLL patchen. Ich weiß, das willst Du nicht. Ist aber immer noch deutlich geringer ins System eingegriffen als madCodeHook. Letztlich lassen sich alle Versionen von sfc_os.dll patchen indem man nach 83F89D75078BC6 sucht und durch 83F89D75079090 ersetzt. Danach die Registry Settings setzen wie überall dokumentiert.
5. Die Dateiliste (SFCFILES.DLL) patchen. Einfach nach dem Filename suchen, das erste Byte des Dateinamens durch ein 0 Byte ersetzen (= End of String) und danach mit den entsprechenden Image Helper Funktionen die PE Checksumme neu berechnen lassen.

Die eleganteste Methode ist letztlich der Patch von SFCFILES.DLL, da man ohne das irgendetwas aktiv im Hintergrund laufen müsste, alle Dateien die man ändern möchte permanent von der Überwachung aus nimmt, auch wenn die eigene Anwendung nicht läuft. Der Code Umfang wäre wahrscheinlich weniger als ein Zehntel von dem was madCodeHook allein auf die Waage bringt.

Sereby 16. Okt 2008 05:41

Re: WinVerifyTrust Hook Probleme
 
es war nur ein beispiel mit dem SFC!

Ich brauch das auch noch für z.B. MS Hotfixes um eigene erstellte Setup .Inf Dateien zu erlauben, da ich selber Hotfixes erstelle (ich kombiniere die von MS damit ich nich alle einzelnd installieren muss). Da müsste ich sonst immer die update.exe oder in vista irgend eine dll cracken oder so. Aber da wäre das mit dem Hook am elegantesten und "einfachsten"

Das mit dem SFC wäre halt ein guter Nebeneffekt!

nur hab ich da halt die oben beschriebenen Probleme und weiss nich wie ich die lösen soll.

Sereby 23. Okt 2008 07:27

Re: WinVerifyTrust Hook Probleme
 
keine irgendwie ne idee?

Bernhard Geyer 23. Okt 2008 07:50

Re: WinVerifyTrust Hook Probleme
 
Zitat:

Zitat von Sereby
Ziel:
sigverif.exe soll ALLE Dateien als Signiert anerkennen und bei "Signiert von" muss etwas von Microsoft stehen :)

Willst du diese "Lösung" auch verteilen? Ich würde als Microsoft (oder als Normaler Anwender) sowas als Computersabotage ansehen. Denn solche Lösungen mit Verschleierung von Quellen sind doch primär für Viren/Wurm/Trojanerhersteller. Und ich hoffe das MS das gut abgesichert hat bzw. wenn es eine "Lösung" geben sollte diese mit Windows Update geschlossen wird.

Luckie 23. Okt 2008 08:00

Re: WinVerifyTrust Hook Probleme
 
Auch wenn die Lösung nur privat ist, weiß ich nicht, ob man sie hier öffentlich diskutieren sollte,

Zacherl 23. Okt 2008 09:12

Re: WinVerifyTrust Hook Probleme
 
Naja für Maleware bringt das Verfahren sicherlich nichts. Diese muss ja zuerst einmal gestartet werden, um die Zertifikate zu manipulieren. Das heißt das Zertifikat der Maleware würde noch ungefälscht erscheinen ..


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz