unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

effel
Posts: 542
Joined: 16 Jan 2018, 13:34

unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

06 Mar 2018, 18:03

guten abend ahk gemeinde,
ich habe in einem anderen beitrag gesehen, wie man das einstecken eines usb sticks mit einem script überwachen/aufdecken kann.
das hat mich inspiriert dem script einen zweizeiler und die ebenfalls in diesem forum gefundene sendmail funktion hinzu zufügen.

damit sendet das script mir sofort eine mail zu, wenn evt. jemand unberechtigt einen stick in den rechner steckt. dies ist eine wirklich sehr wertvolle möglichkeit bestimmte rechner zu schützen.

nun stellt sich mir die frage, ob es eine möglichkeit gibt, den scipt noch zu erweitern.

gibt es eine möglichkeit ebenfalls mit zuschreiben was mit dem stick passiert? wird etwas vom stick installiert, oder werden daten auf den stick übertragen?

vielleicht hat jemand eine idee oder sogar fertigen code?

Code: Select all

; https://github.com/jNizM/AHK_Scripts/blob/master/src/messages/WM_DEVICECHANGE.ahk
; https://autohotkey.com/boards/viewtopic.php?f=9&t=44239&sid=871484feb184767d3afa6669a98f9158
; GLOBAL SETTINGS ===============================================================================================================

#NoEnv
#Persistent
#SingleInstance Force
SetBatchLines -1

OnMessage(0x0219, "WM_DEVICECHANGE")

; SCRIPT ======================================================================================================================

; ....  

; FUNCTIONS =====================================================================================================================

WM_DEVICECHANGE(wParam, lParam)
{
    static init := OnMessage(0x0219, "WM_DEVICECHANGE")
    if (wParam = 0x8000) || (wParam = 0x8004) && ((NumGet(lParam+4, "uint")) = 0x2) {
        i := 0, mask := NumGet(lParam+12, "uint")
        while (mask > 1) && (++i < 0x1A)
            mask >>= 1
        DeviceChangeInfo(Chr(0x41 + i) ":\", wParam)
    }
}

DeviceChangeInfo(device, state)
{
MsgBox, 0x40, % "Device Change", % device " " ((state = 0x8000) ? "plugged in" : (state = 0x8004) ? "is removed" : ""), 5
xxx = % device . "`n" . state . "`n" . TimeStamp . "`n" . A_NowUTC . "`n" . A_TickCount
SendGmail(xxx,"[email protected]")
}


SendGmail(message,emailto){
Try 
{	
	pmsg := ComObjCreate("CDO.Message")
	pmsg.From := """deineMailAdresse"" <[email protected]>"
	pmsg.To := """deineMailAdresse"" <[email protected]>"
	pmsg.Subject := "USB Alert"
	pmsg.TextBody := message
	
	fields := Object()
	fields.smtpserver := "smtp.gmail.com"
	fields.smtpserverport := 465
	fields.smtpusessl := True
	fields.sendusing := 2
	fields.smtpauthenticate := 1
	fields.sendusername := "[email protected]"
	fields.sendpassword := "DeinGmailPasswort"
	fields.smtpconnectiontimeout := 60
	
	schema := "http://schemas.microsoft.com/cdo/configuration/"
	pfld := pmsg.Configuration.Fields
	For field,value in fields
		pfld.Item(schema . field) := value
	pfld.Update()
	pmsg.Send()
	pmg.Close
	Return
}
catch e 
{
	restart
}}


/*
https://msdn.microsoft.com/en-us/library/aa363480(v=vs.85).aspx    WM_DEVICECHANGE message
https://msdn.microsoft.com/en-us/library/aa363205(v=vs.85).aspx    DBT_DEVICEARRIVAL event
https://msdn.microsoft.com/en-us/library/aa363208(v=vs.85).aspx    DBT_DEVICEREMOVECOMPLETE event
https://msdn.microsoft.com/en-us/library/aa363246(v=vs.85).aspx    DEV_BROADCAST_HDR structure
https://msdn.microsoft.com/en-us/library/aa363249(v=vs.85).aspx    DEV_BROADCAST_VOLUME structure
*/
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

07 Mar 2018, 14:24

Statt mitzuschreiben was der stick macht, würde ich versuchen den zugang garnicht erst zuzulassen. Mit einer whitelist erlaubter geräte sollte sich jedes unberechtigte gerät reglementieren (zb direkt wieder abmelden) lassen.

Evtl liefert ja das system eventlog einen dementsprechenden report. Good luck.
effel
Posts: 542
Joined: 16 Jan 2018, 13:34

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

07 Mar 2018, 17:15

hallo bobo, gute anregung. wie kann ich das angehen? wie du sicher bemerkt hat, sind meine fähigkeiten begrenzt :-)

mit folgendem code, sende ich mir eine mail mit allen relevanten daten zu. hierzu gehört auch der inhalt des sticks.

wenn ich es nun noch schaffe diesen ausgelesenen stick vom system zu sperren wäre das sehr brauchbar.

habe nur leider keinen schimmer wie ich sowas angehen soll

vielleicht findet sich jemand der mich mehr oder weniger anschubst..

z.b. wie kann ich die eingebaute webcam dazu bewegen, ein oder mehrere fotos zu machen.

und gibt es eine möglichkeit, für x mnuten eine audioaufnahme über das eiggebaute micro auf die festplatte aufzuzeichnen

Code: Select all

; https://github.com/jNizM/AHK_Scripts/blob/master/src/messages/WM_DEVICECHANGE.ahk
; https://autohotkey.com/boards/viewtopic.php?f=9&t=44239&sid=871484feb184767d3afa6669a98f9158
; GLOBAL SETTINGS ===============================================================================================================

#NoEnv
#Persistent
#SingleInstance Force
SetBatchLines -1

OnMessage(0x0219, "WM_DEVICECHANGE")

; SCRIPT ======================================================================================================================

; ....  

; FUNCTIONS =====================================================================================================================

WM_DEVICECHANGE(wParam, lParam)
{
    static init := OnMessage(0x0219, "WM_DEVICECHANGE")
    if (wParam = 0x8000) || (wParam = 0x8004) && ((NumGet(lParam+4, "uint")) = 0x2) {
        i := 0, mask := NumGet(lParam+12, "uint")
        while (mask > 1) && (++i < 0x1A)
            mask >>= 1
        DeviceChangeInfo(Chr(0x41 + i) ":\", wParam)
    }
}

DeviceChangeInfo(device, state)
{
; MsgBox, 0x40, % "Device Change", % device " " ((state = 0x8000) ? "plugged in" : (state = 0x8004) ? "is removed" : ""), 1
UnixZeit := A_NowUTC
UnixZeit -= 1970, S
OrtsZeit := UnixTime2LocalTime(UnixZeit)
   Jahr := SubStr(OrtsZeit, 1, 4)
   Monat := SubStr(OrtsZeit, 5, 2)
   Tag := SubStr(OrtsZeit, 7, 2)
   Stunde := SubStr(OrtsZeit, 9, 2)
   Minute := SubStr(OrtsZeit, 11, 2)
   Sekunde := SubStr(OrtsZeit, 13, 2)
OrtsZeit := UnixTime2LocalTime(UnixZeit)
if state = 32768
state = USB Device plugged in
if state = 32772
state = USB Device is removed
xxx = % "Device: " . device . "`r`n" . "USB Action: " . state . "`r`n" . "DatumOrtszeit: " . OrtsZeit . "`r`n" . "Unixtime: " . UnixZeit . "`r`n" . "A_TickCount: " . A_TickCount . "`r`n" . "Datum: " . Tag . "-" . Monat . "-" . Jahr . "`r`n" . "Uhrzeit: " . Stunde . "-" . Minute . "-" . Sekunde . "`r`n" . "A_ComputerName: " . A_ComputerName . "`r`n" . "A_OSVersion: " . A_OSVersion . "`r`n" . "A_UserName: " . A_UserName . "`r`n" . "A_IsAdmin: " . A_IsAdmin . "`r`n"
  if state contains plugged
   {
     Runwait, %comspec% /c dir %device%%A_Space%>%A_Scriptdir%\%OrtsZeit%.txt,, hide
     Fileread, DirInfo, %A_Scriptdir%\%OrtsZeit%.txt
     xxxDir = % "DirInfo: " . "`r`n" . DirInfo
    }
xxlSend = % xxx . "`r`n" . xxxDir
FileAppend, %xxlSend%`n, %OrtsZeit%-USB_Alert_mail_content.txt
SendGmail(xxlSend,"[email protected]")
}

SendGmail(message,emailto){
Try 
{
	pmsg := ComObjCreate("CDO.Message")
	pmsg.From := """Dein Name"" <[email protected]>"
	pmsg.To := """Dein Name"" <[email protected]>"
	pmsg.Subject := "USB Alert"
	pmsg.TextBody := message
	
	fields := Object()
	fields.smtpserver := "smtp.gmail.com"
	fields.smtpserverport := 465
	fields.smtpusessl := True
	fields.sendusing := 2
	fields.smtpauthenticate := 1
	fields.sendusername := "[email protected]"
	fields.sendpassword := "DeinGmailPasswort"
	fields.smtpconnectiontimeout := 60
	
	schema := "http://schemas.microsoft.com/cdo/configuration/"
	pfld := pmsg.Configuration.Fields
	For field,value in fields
		pfld.Item(schema . field) := value
	pfld.Update()
	pmsg.Send()
	pmg.Close
	Return
}
catch e 
{
	sleep, 5000
	SendGmail(xxlSend,"[email protected]")
	Return
}}


UnixTime2LocalTime(UnixTime) {
   ; http://msdn.microsoft.com/en-us/library/ms724949%28v=VS.85%29.aspx
   T := 1970
   T += UnixTime, S
   Jahr := SubStr(T, 1, 4)
   Monat := SubStr(T, 5, 2)
   Tag := SubStr(T, 7, 2)
   Stunde := SubStr(T, 9, 2)
   Minute := SubStr(T, 11, 2)
   Sekunde := SubStr(T, 13, 2)
   FormatTime, Wochentag, %T%, WDay
   ; SYSTEMTIME (UTC)
   VarSetCapacity(ST, 16, 0)
   NumPut(Jahr, ST, 0, "Short")
   NumPut(Monat, ST, 2, "Short")
   NumPut(Wochentag - 1, ST, 4, "Short")
   NumPut(Tag, ST, 6, "Short")
   NumPut(Stunde, ST, 8, "Short")
   NumPut(Minute, ST, 10, "Short")
   NumPut(Sekunde, ST, 12, "Short")
   ; LOCALTIME
   VarSetCapacity(LT, 16, 0)
   DllCall("SystemTimeToTzSpecificLocalTime", Uint, 0, UInt, &ST, UInt, &LT)
   Jahr := NumGet(LT, 0, "Short")
   Monat := NumGet(LT, 2, "Short")
   Tag := NumGet(LT, 6, "Short")
   Stunde := NumGet(LT, 8, "Short")
   Minute := NumGet(LT, 10, "Short")
   Sekunde := NumGet(LT, 12, "Short")
   Return Jahr . SubStr("0" . Monat, -1) . SubStr("0" . Tag, -1)
        . SubStr("0" . Stunde, -1) . SubStr("0" . Minute, -1)
        . SubStr("0" . Sekunde, -1)
}
Return


/*
https://msdn.microsoft.com/en-us/library/aa363480(v=vs.85).aspx    WM_DEVICECHANGE message
https://msdn.microsoft.com/en-us/library/aa363205(v=vs.85).aspx    DBT_DEVICEARRIVAL event
https://msdn.microsoft.com/en-us/library/aa363208(v=vs.85).aspx    DBT_DEVICEREMOVECOMPLETE event
https://msdn.microsoft.com/en-us/library/aa363246(v=vs.85).aspx    DEV_BROADCAST_HDR structure
https://msdn.microsoft.com/en-us/library/aa363249(v=vs.85).aspx    DEV_BROADCAST_VOLUME structure
*/
das ist der inhalt der email:

Code: Select all

Device: L:\
USB Action: USB Device plugged in
DatumOrtszeit: 20180307225742
Unixtime: 1520459862
A_TickCount: 4233209828
Datum: 07-03-2018
Uhrzeit: 22-57-42
A_ComputerName: TOUCH
A_OSVersion: WIN_8.1
A_UserName: effel
A_IsAdmin: 0

DirInfo:
 Datentr"ger in Laufwerk L: ist 500 gig SSD
 Volumeseriennummer: 9EED-B232

 Verzeichnis von L:\

17.02.2018  09:12    <DIR>          _musik
23.01.2018  23:07    <DIR>          _android APPS
07.02.2018  00:01    <DIR>          _apple APPS
04.02.2018  00:10    <DIR>          _Bilder ALL
24.01.2018  06:11    <DIR>          _download ALL
23.01.2018  22:59    <DIR>          _install ALL
23.01.2018  07:40    <DIR>          _RINGTONES
23.01.2018  20:22    <DIR>          _Tracks
               0 Datei(en),              0 Bytes
              8 Verzeichnis(se),  8.316.522.496 Bytes frei
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

07 Mar 2018, 22:24

Abgleich mittels :arrow: DriveGet
Anschließend alle dateien auf dem stick entweder ...
a) per attribut auf 'system' setzen (unsichtbar machen)
b) per msgbox "Sie möchten die daten auf ihrem stick mit dem hinterlegten pw verschlüsseln. Start in 5-4-3-2-1 sekunden (oder schließen des fensters zur sofortigen ausführung!)".
c) formatierungs dialog für den stick aufrufen
d) mit 'dispart.exe' den stick cleanen
e) den stick mit müll vollschreiben
f) alle dateien cryptisch umbennenen
f) ... :twisted:
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

08 Mar 2018, 03:06

Naja den Zugang zu blockieren ist ein bisschen schwierig - man kann immer USB sticks in den PC stecken.
Recommends AHK Studio
just me
Posts: 9425
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

08 Mar 2018, 03:24

Moin,

Du könntest mal Eject() - For CD/DVD and USB Mass Storage devices probieren.

Wir haben vor Jahren mal aus der Not heraus eine ähnliche Überwachung eingesetzt. WIr haben uns allerdings darauf beschränkt, den Rechner mit einer Meldung, dass der Anschluss privater Geräte verboten ist, hart herunterzufahren. Das hatte innerhalb kurzer Zeit ausreichend 'erzieherische Wirkung' (Big Brother is watching you!). Damit das unter XP halbwegs zuverlässig funktionierte, musste allerdings schon beim Start des Rechners geprüft werden, ob ein Laufwerk gefunden wird, das es nicht geben darf. Das Skript habe ich leider nicht mehr.

Das Protokollieren von Mitarbeiteraktionen ist abgesehen davon, dass es technisch recht kompliziert ist, ein 'heikles Thema'.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

08 Mar 2018, 03:40

nnnik wrote:Naja den Zugang zu blockieren ist ein bisschen schwierig - man kann immer USB sticks in den PC stecken.
Erm, wenn ich mir die beschreibung von dvcon.exe anschaue scheint mir das durchaus möglich zu sein. Stick im PC ist ja ok, doch wenn das device disconnected bleibt isses halt nur eine portabdeckung, oder?

"DevCon (Devcon.exe), the Device Console, is a command-line tool that displays detailed information about devices on computers running Windows. You can use DevCon to enable, disable, install, configure, and remove devices. "
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

08 Mar 2018, 03:43

Das Protokollieren von Mitarbeiteraktionen ist abgesehen davon, dass es technisch recht kompliziert ist, ein 'heikles Thema'.
Mit sowas bist du eigentlich rechtlich bereits einbeinig vorgeladen.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

08 Mar 2018, 03:59

Ja aber das Device bleibt halt eben nicht Disconnected - und schon lange bevor der Computer es als USB Stick erkennt finden jede Menge Kommunikationen statt.
Mal ganz abgesehen davon, dass bei jeder der hier genannten Methoden zur Erkennung der Stick bereits vollständig als Laufwerk eingebunden sein muss.
Recommends AHK Studio
just me
Posts: 9425
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

08 Mar 2018, 04:46

Na ja, ich setze einfach mal voraus, dass in einer so überwachten Umgebung das Booten von USB-Sticks und das Ausführen von Autoruns geblockt sind.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

08 Mar 2018, 04:51

Es ist defakto unmöglich, das zu Blocken, da der USB Stick die Möglichkeit hat böswillige Treiber einzuschleusen.
Die Ausbreitung eines richtigen Viruses lässt sich mit dieser Methode nicht wirklich verhindern.
Recommends AHK Studio
effel
Posts: 542
Joined: 16 Jan 2018, 13:34

Re: unberechtigten zugriff auf den usb anschluss überwachen mit alarm email

08 Mar 2018, 05:01

hallo, vielen dank für die rege teilnahme.
wenn man die mitarbeiter darauf hinweist, das es ausdrücklich verboten ist ein gerät am rechner zu connecten und das es auch überwacht wird, so denke ich ist man als arbeitgeber rechtlich aus dem schneider.

das script erfüllt ja jetzt schon alles, um eine ordentliche überwachung zu etablieren.

wünschenswert wäre noch, festzustellen, ob und welche aktionen nach den einstecken stattfinden.

das wichtigste ist aber, das die mail schon eine sekunde nach dem einstecken unterwegs ist und der vorfall somit dokumentiert ist. durch die variable A_Username sehe ich auch, welcher user angemeldet war.

dafür, das die idee grade erst entstanden ist, finde ich, ist es schon recht gut geworden.
vielleicht kommen ja noch ein paar gute ideen, weitere aktionen mit einzubauen.

z.b. tastatur eingaben sperren, maus deaktivieren oder den rechner sofort herunterfahren

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 35 guests