Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fernzugriff auf eigenes Programm unterbinden (https://www.delphipraxis.net/116486-fernzugriff-auf-eigenes-programm-unterbinden.html)

H4ndy 30. Jun 2008 13:56


Fernzugriff auf eigenes Programm unterbinden
 
Hallo,

nach langer Abstinenz habe ich mal wieder eine Frage.

Und zwar dreht es sich dabei um das Problem der Fernzugriffs, welchen ich unterbinden bzw. verhindern möchte.

Bestes Beispiel dafür sind z.B. die aktuellen Versionen von Kaspersky Anti-Virus (v7 & v8).
Diese erkennen scheinbar fast alle Remote Control-Programme und man kann mit diesen einfach nicht auf die GUI des Programms zugreifen (z.B. mit UltraVNC). Das einzige was noch klappt ist das Öffnen des Programms durch einen Doppelklick auf das Tray-Icon.

Die Fähigkeit wird als "Selbstschutz" in den Optionen benannt und lässt sich nur durch komplettes Deaktivieren dieser Option verhindern, oder in dem man den VNC-Server in die Ausnahmeliste des Scanners steckt.

Hat jemand irgendeine Idee, wie das bewerkstelligt worden könnte?
Ich habs probiert mit nem Maus-Hook, aber da kann ich nicht zwischen echter Eingabe und Ferneingabe unterscheiden. Im Netz findet sich auch absolut nichts, außer Hinweise im Kaspersky-Forum, wie man den Zugriff wieder erlaubt.

Es geht dabei nicht um die direkte Remotedesktopverbindung, da man sich dazu ja richtig am PC einloggt, und das selbst Kaspersky nicht mitbekommt. Aber Schutz vor den gebräuchlichsten Programmen wie RemoteAdmin oder VNC eben würde reichen.

Dezipaitor 30. Jun 2008 14:49

Re: Fernzugriff auf eigenes Programm unterbinden
 
Hast du mal Teamviewer.de ausprobiert? Geht das?

H4ndy 30. Jun 2008 15:17

Re: Fernzugriff auf eigenes Programm unterbinden
 
Zitat:

Zitat von Dezipaitor
Hast du mal Teamviewer.de ausprobiert? Geht das?

TeamViewer wird genauso wie *VNC leider zuverlässig geblockt (läuft ja AFAIK auch mit einem veränderten VNC-Protokoll).

Edit: PCVisit 4 funktioniert ebenfalls nicht.

Dezipaitor 30. Jun 2008 16:16

Re: Fernzugriff auf eigenes Programm unterbinden
 
Dann vermute ich mal, dass es ein Tastaturhook oder Treiber ist. Damit kann man wirklich unterscheiden, ob die Eingabe durch Hardware oder Software kommt.

alleinherrscher 30. Jun 2008 17:23

Re: Fernzugriff auf eigenes Programm unterbinden
 
Du könntest mal einen Screenshot machen und gucken ob die GUI da sichtbar ist, wenn ja funktioniert Lan.FS

H4ndy 7. Jul 2008 10:39

Re: Fernzugriff auf eigenes Programm unterbinden
 
Hallo,

Sorry für die späte Antwort, ich war aber letzte Woche in der Berufsschule und hab Donnerstag Prüfung...

Zum Theme LAN.FS - das bring ich nicht richtig zum Laufen in der VM, da es anscheinend nicht mit der IP-Struktur klar kommt.
Dateitransfer und Chat klappt, aber wenn ich auf Administration klicke, dann passiert ewig nix und wenn dann doch das Fenster auf geht bleibt alles leer (Remote Desktop, TaskManager, etc.).

Ob Screenshots gehen kann ich nicht testen, da keins der Programme den Tastendruck richtig durchleitet, sondern auf dem Host den Screenshot erstellt statt auf dem Remote-PC. Aber das dürfte eh nix an der Situation ändern, da ich ja Kaspersky AntiVirus sehen kann, nur eben nix anklicken.

Werde mich dann wohl mal über Treiber-Hooks belesen, was da möglich ist.

H4ndy 10. Jul 2008 10:36

Re: Fernzugriff auf eigenes Programm unterbinden
 
So, nachdem ich nochmal einen halben Tag lang intensiv gesucht habe, konnte ich endliche eine Lösung finden!

Es gibt noch zwei Hook-Arten, die ich bisher übersehen oder schlicht nicht gefunden habe:
WH_KEYBOARD_LL sowie WH_MOUSE_LL

Diese beiden Low Level Hooks bieten in ihrem Flags einen Parameter an, welcher verrät, ob der Input "real" (Treiberebene) oder "Injected" (API-Ebene) ist.
Einzige Möglichkeit diesen Hook auszutricksen ist der Einsatz eines "Fake"-HID-Treibers, welcher den Input generiert oder man benutzt den Microsoft Remote Desktop. Den muss man sepperat über GetSystemMetrics abfragen.

Hier die entsprechenden MSDN-Seiten:Hier ein kleiner Code-Abriss (ich hab die THook-Klasse von Jens Borrisholt benutzt):

Delphi-Quellcode:
  { Structure used by WH_KEYBOARD_LL }
  KBDLLHOOKSTRUCT = record
    vkCode: DWORD;
    scanCode: DWORD;
    flags: DWORD;
    time: DWORD;
    dwExtraInfo: DWORD;
  end;
  PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;

  { Structure used by WH_MOUSE_LL }
  POINT = record
    x,y: longint;
  end;

  MSLLHOOKSTRUCT = record
    pt: POINT;
    mouseData: DWORD;
    flags: DWORD;
    time: DWORD;
    dwExtraInfo: DWORD;
  end;
  PMSLLHOOKSTRUCT = ^MSLLHOOKSTRUCT;

const
  LLMHF_INJECTED = 1;

{...}

procedure TfrmLLHookMain.KeyboardHookPreExecute(Hook: THook;
  var Hookmsg: THookMsg);
var
  pKeyHookStruct: PKBDLLHOOKSTRUCT;
  KeyHookStruct: KBDLLHOOKSTRUCT;
begin
  pKeyHookStruct := PKBDLLHOOKSTRUCT(Hookmsg.LParam);
  KeyHookStruct := pKeyHookStruct^;

  if KeyHookStruct.flags = LLKHF_INJECTED then
  begin
    lblKeyInjected.Caption := 'Keyboard: Is Injected Input';
    lblKeyInjected.Font.Color := clRed;
  end
  else
  begin
    lblKeyInjected.Caption := 'Keyboard: Is Real Input';
    lblKeyInjected.Font.Color := clGreen;
  end;
end;

procedure TfrmLLHookMain.MouseHookPreExecute(Hook: THook; var Hookmsg: THookMsg);
var
  pMouseHookStruct: PMSLLHOOKSTRUCT;
  MouseHookStruct: MSLLHOOKSTRUCT;
begin
  pMouseHookStruct := PMSLLHOOKSTRUCT(Hookmsg.LParam);
  MouseHookStruct := pMouseHookStruct^;

  if MouseHookStruct.flags = LLMHF_INJECTED then
  begin
    lblMouseInjected.Caption := 'Mouse: Is Injected Input';
    lblMouseInjected.Font.Color := clRed;
  end
  else
  begin
    lblMouseInjected.Caption := 'Mouse: Is Real Input';
    lblMouseInjected.Font.Color := clGreen;
  end;
end;
Vielen Dank an alle Helfer.
Die DP hat sich mal wieder bewährt ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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