![]() |
API von Reg.exe
Hallo,
ich bin gerade dabei das Programm "Reg.exe" welches Standartmäßig (zumindes in XP) dabei ist zu analysieren. Es ist ein Kommandozeilen- basierendes 32-bit programm. Habe es schon mit Regmon, Procmon analysiert jedoch bekomme ich einach nicht heraus wie es das Programm schaft Einträge anzuseigen die z.B. Regedit/Regedit32 nicht findet. Reg.exe scheint auch nicht dei Native- API zu benutzen. Bin gerade verwirrt, kann es sein das dass Programm mit NTSetInformationKey einpaar besondere flags setzt vor dem lesen der Schlüssel Werte? Danke für lesen, ich hoff echt das mir jemand weiter helfen kann. |
Re: API von Reg.exe
Was willst du denn machen?
|
Re: API von Reg.exe
Wie wäre es mit der gleichen Methode die auch bei Dateien funktioniert? Backup/Restore-Privileg um Dateien zu listen die man ansonsten nicht sehen kann? Immerhin gibt es Registry-APIs um ähnliches Backups von Schlüsseln und Hives anzufertigen, warum soll das hier nicht ähnlich funktionieren?
Die entsprechenden Funktionen werden auch importiert: - AdjustTokenPrivileges - LookupPrivilegeValueW - OpenProcessToken |
Re: API von Reg.exe
Es gibt einen Aufruf von
![]()
Code:
.text:010079F4 078 push 2 ; int
.text:010079F6 07C push offset Name ; "SeBackupPrivilege" .text:010079FB 080 push [ebp+lpSystemName] ; lpSystemName .text:010079FE 084 call SetPrivilegeByName
Code:
.text:01007C75 074 push 2 ; int
.text:01007C77 078 push offset aSerestoreprivilege ; "SeRestorePrivilege" .text:01007C7C 07C push [ebp+lpSystemName] ; lpSystemName .text:01007C7F 080 call SetPrivilegeByName
Code:
.text:01007DDE 070 push 2 ; int
.text:01007DE0 074 push offset aSerestoreprivilege ; "SeRestorePrivilege" .text:01007DE5 078 push [ebp+lpSystemName] ; lpSystemName .text:01007DE8 07C call SetPrivilegeByName
Code:
.text:01007F37 070 push 2 ; int
.text:01007F39 074 push offset aSerestoreprivilege ; "SeRestorePrivilege" .text:01007F3E 078 push [ebp+lpSystemName] ; lpSystemName .text:01007F41 07C call SetPrivilegeByName |
Re: API von Reg.exe
Erstmal danke für die das Antworten!
Also ich glaub ich habe mich nicht genau genug ausgedrückt, deswegen hast du mich @Olli eventuell falsch verstanden. Ich möchte keine Keys Laden, Speichern, Importieren oder Exportieren. Ich mache es mal jetzt so konkret wie es nur sein kann weil ich echt am verzweifeln bin wie das funktioniert: Also ich installiere mal aus spass den "Adramax Keylogger", der fügt einen Autostart eintrag in HKLM\...\Run hinzu. Über dem Usermode per DLL- Injektion schaft er es indem er wie ich denke ziemlich viele Registry- WinAPIs hookt, den Autostart Eintag für alle dei Anwendungen welche mit der DLL infiziert sind zu verstecken. Mich wundert nun folgendes: Autorun, msconfig oder gar registrie Editoren welche auf dei Native API (NtQueryKey und co) aufsetzen finden diesen Eintrag nicht! Wie schaft es das dieses kleinen prog "reg.exe" (ist meistens in System Verzeichnis) über den Komandozeilenbefehl "Reg Query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run " trotzdem diesen versteckten Schlüssel Wert zu finden. Was natürlich sein könnte ist das es der Keylogger einfach nicht schaft seine DLL in den Adressraum von Reg.exe zu injezieren da es nur ein Komandozeilenbasierendes prog ist (ohne gui). Oder verwender reg.exe einpaar Tricks? Edit: Ich hab gerad mir ProcMon nachgeschaut und es werden wirklich nicht die Dll in reg.exe injeziert. Hmm und das ist jetzt wohl der vorteil von Reg.exe das es keine GUI...also Fenster hat? |
Re: API von Reg.exe
Zitat:
Zitat:
Zitat:
|
Re: API von Reg.exe
Also es liegt wirklich daran das die DLL nicht in Reg.exe indiziert werden konnte.
Also ich gehe jetzt mal einen schritt weiter und frage mich nun folgedes. Wie schaft es das Autostart Manager Programm OSAM( ![]() Ich mein ich habe mal zu testzwecken den "Elite Keylogger" runtergeladen und installiert, er verwendet einen "Low-Level" kernelmode- Treiber. Ok es werden einpaar SSDT- Funktionen gehookt und auch mehr, somit dürfte ja ein Programm welches nur im Usermode rumspielt wie OSAM eigentlich keine chance haben an die Schlüssel ranzukommen. Aber irgendwie schaft es das Programm die Einträge zu finden. Ich hab mir folgendes überlegt: Kann es sein das OSAM direkt von den Registry Hives auslies? Oder OSAM einen trick verwendet und ZW* Systemaufrufe vom Usermode ausführt, indem er die Methoden aus der NtDll verwendet, macht aber keinen unterschied zu NT* aufrufen. Hab mich schon öfters gefragt wie das prog sowas schaft, ich hoffe Olli kannst mir weiterhelfen. Danke |
Re: API von Reg.exe
Zitat:
Zitat:
Zitat:
|
Re: API von Reg.exe
Liste der Anhänge anzeigen (Anzahl: 1)
@Metal Snake
Probier mal ob mein Testprogramm die Autostarteinträge findet. Würde mich mal interessieren. Von Adramax hab ich nur ein Keylogger light getestet und der wird gefunden. Einfach die Exe starten und auf Scan Komplett drücken. |
Re: API von Reg.exe
@richard_boderich
ne dein Testprogramm findet nix, wie den auch...in dem Adressraum deines Progs. werden die DLLs von Adramax injeziert, also all deine Registry Aufrufe sind gehookt. Ich entnehme aus dem Registry-Pfad das du scheinbar mit der Nativen API arbeitest, aber auch die Funktionen hookt die DLL. @Olli Ich hab dem Autor vom OSAM geschrieben aber er antwortet nicht. Naja warum jetzt reg.exe die versteckten Einträge findet ist klar aber wie es OSAM schaft ist mir schleierhaft. Hat jemand ne idee? |
Re: API von Reg.exe
Zitat:
Das einzige was ich bisher nicht begreife ist, dass eine injezierte DLL so wichtig sein soll, wenn doch der SSDT-Hook viel besser ist und man ohne eigenen Treiber nichts dagegen machen kann ... Uebrigens koennte das OSAM-Programm ja schon nen Treiber haben. Huckepack, so wie ich es bspw. in meinem Hooktutorial erklaert habe. |
Re: API von Reg.exe
@Olli
Die Frage ist, was macht man, wenn das Rootkit via SSDT alle ZW Key Funktionen hookt. Dann kommt man doch um einen Driver gar nicht herum und dann ist doch auch die Frage welcher zuerst geladen wird? Der von der Malware oder der Eigene. Außerdem müsste es doch auch Maßnahmen gegen DLL Injection geben oder etwa nicht? PS: Kann man sich dieses Hooktutorial irgendwo runterladen? mfG Richard @Metall Snake Wie wäre es denn die Registry binär zu Öffnen und die Funktionen um auf Keys zu zugreifen selbst zu implementieren? |
Re: API von Reg.exe
Zitat:
Zitat:
![]() Zitat:
|
Re: API von Reg.exe
hmm also das ist doch mal ne idee die hives binär einzulesen. Hat jemand nen link oder ne idee davon weil dan kann ich mir all
die Kernelmode spielereien sparen, die mit Delphi eh nicht zu machen sind ich von c/c++ und ddk oder wdk und co keine ahnung habe. |
Re: API von Reg.exe
Zitat:
|
Re: API von Reg.exe
@Olli
Danke erstmal für die Infos. Noch zwei Fragen 1. Ist es möglich ein Reload der NTDLL durchzuführen bzw. eine 2 Instanz zu Laden und diese anstatt der gehookten zu verwenden? 2. Könntest du nochwas zu möglichen Maßnahmen gegen DLL Injection ausführen? mfG Richard |
Re: API von Reg.exe
Zitat:
Allerdings hilft das logischerweise nix gegen SSDT-Hooks, die zuvor ja im Gespraech waren. Zitat:
|
Re: API von Reg.exe
Und wie sieht es nun aus?
|
Re: API von Reg.exe
Die werden sich schon melden, wenn sich was tut. Brauchst jetzt nicht jeden Thread aus der Senke holen :roll:
|
Re: API von Reg.exe
Ist ja schlimmer als taktaky mit seinen Ressourcen damals.
|
Re: API von Reg.exe
Nein, weil sie es vergessen und dann es einfach lassen. Mich interessiert es, ob es weitergeholfen hat. Dann mache ich mir nämlich einen Link darauf.
|
Re: API von Reg.exe
also ich hab den autor von OSAM ne mail geschrieben und er hat mir folgende antwort geschrieben:
[...] We using our technology of direct parsing of system registry, without using any OS functions. [...] also lesen sie die registry direkt ein ohne nen Treiber, komisch frag mich wie das gehen soll den die hives werden doch exlusiv geöffnet. Jedenfalls ist da wirklich was dran, den auch tools wie "SysInspector" arbeiten nur im Usermode und finden registry Einträge welche übern Kernelmode Rootkit- Treiber versteckt wurden. Naja mein eigentliches bestrimmen war einfach halt herauszufinden wie diese Progs arbeiten. Das mit SSDT- Hooks und co ist doch blöd, funzt das überhaupt mit Vista? Ich sollte villeicht mal echt versuchen die Registry werte aus dem Kernel direkt auszulesen. |
Re: API von Reg.exe
Zitat:
Zitat:
|
Re: API von Reg.exe
@Metal Snake
Zitat: We using our technology of direct parsing of system registry. Zitat Ende Diese Aussage bedeutet nicht das sie keinen Treiber benutzten, sondern das sie die Registry Binär öffnen und die einzelnen Keys parsen. (also die Strings suchen) Zitat: Ich sollte villeicht mal echt versuchen die Registry werte aus dem Kernel direkt auszulesen. Zitat Ende Aus dem Kernel direkt kannst du nix auslesen. Du kannst entweder die entsprechenden APis im Usermode nutzen (dort sind es die NT-Funktionen, also die Native APis die auf dem niedrigsten Level zugreifen) oder im Kernelmode die ZW-Funktionen. (das geht nur via Treiber) Und damit siehts in Delphi mau aus. mfG Richard //Edit kannst du mir mal bitte per PN das/den Rootkit/keylogger schicken mit dem du testest? |
Re: API von Reg.exe
Also es gibt hier ein open source Dos Registry Viewer
![]() Es wurde in Pascal geschrieben und wird mit Open Pascal kompiliert. Könnte ich nun die hives welche in "system32\config" sind so nun Binär auslesen? Oder hat jemand eine Delphi fähige version? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 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