![]() |
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? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 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