93578
Goto Top

MD5 , fciv, Hashliste und andere Probleme...

Kann mir jemand helfen? Das Problem: einer von unseren Büro-PC-Freaks hat mal wieder trotz Verbot ein Spielprogramm auf dem Firmenrechner installiert. Aber nicht nur das - um die Routine-Prüfung umzugehen, hat er auch der Name der Start-Datei (z.B.DukeIII.exe in Taskmanage.exe) geändert und in einem anderem Verzeichnis (als Standard) installiert.

Nun da unser Script regelmäßig nur die standarte Installationsverzeichnisse von "verbotenen" Progs überprüft + nur die originale Dateinamen sucht, kann ich dieses Programm nicht mehr finden. Chef ist sauer...

Da kam mir die Idee mit MD5-Hashes - ich habe mir eine Liste von MD5-Hashes von allen "verbotenenen" Progs erstellt und als eine TXT-UTF8-Datei gespeichert. Die Datei sieht so aus (nur als Beispiel):

md5
rr2rt456j3bj3bj34ghg
tjwjg3ejng5i5i43ufri
rtzetzertrrzutrzuttz
erzruttiizlkfkjmnrtzm

Nun will ich den kompletten Laufwerk nach *.exe und *.dll Dateien untersuchen, diese hashen und den Hashwerte mit meiner Liste vergleichen. Danach sollten 2 Arten von Meldungen kommen:
1) Das Programm ist installiert (und Pfad woe sie sich befindet).
2) Keine Installationsdateien gefunden.

Das ganze sollte per Batch realisierbar sein.
Mit fciv hat es nicht geklappt - das Programm kann die Liste ohne Pfaden nicht überprüfen. Und wenn der Installationspfad vom User geändert wurde findet fciv die vorhandene Dateien auch nicht. Was kann ich da noch tun?

Grüße,
takitano

Content-Key: 186581

Url: https://administrator.de/contentid/186581

Printed on: April 18, 2024 at 08:04 o'clock

Member: DerWoWusste
DerWoWusste Jun 16, 2012 updated at 18:21:07 (UTC)
Goto Top
Moin.

Es gibt verschiedene Lösungsansätze. Ich beschreib mal einige andere als Deinen zuerst.
-nicht-technischer Ansatz: Lass die Kollegen etwas unterschreiben, was beschreibt, welche nicht-arbeitsrelevanten Tätigkeiten (z.B. priv. Mails lesen) erlaubt sind und welche nicht. Wer sich nicht daran hält, wird bestraft bis zur Abmahnung. Wie gut die technischen Überwachungsmöglichkeiten dann noch sein müssen, kann ich nicht beurteilen, ich schätze, eher gering.
-applocker (windows7) oder software restriction policies (vista und xp): definiere eine Liste von startbaren Anwendungen. Alle anderen werden geblockt.
-Dein Ansatz: habe ich auch schon gemacht. Ich benutze dafür ein Programm names jacksum http://www.jonelo.de/java/jacksum/index_de.html
Damit kannst Du das komplette Laufwerk hashen und Unterschiede zum vorigen Scan auflisten. Aber Vorsicht: das artet in Arbeit aus. Windows verändert ja nicht nur bei Windowsupdates ständig Dateien. Es ist aber denkbar, dass Du es auf eine Liste loslässt, die zuvor über ausführen von dir *.exe *.dll /s /b (z.B. unter c: ausführen) gewonnen hast.

Edit: achja... haben Eure Nutzer Adminrechte?
Member: Lochkartenstanzer
Lochkartenstanzer Jun 16, 2012 updated at 20:52:55 (UTC)
Goto Top
Moin:

mit cygwin/gnu-toolchain köntne das so gehen:

#/bin/bash

find /cygwindir/ -type f -exec md5sum {} \; | tee aktuelle-md5liste.txt
grep -f verbotene-md5.txt aktuelle-md5liste.txt | tee verbotene -dateien.txt


lks

Nachtrag: Abmahnungen/Sanktionen sind ein probates Mittel gegen solche Eigenmächtigkeiten. Vorraussetzung ist allerdigns, daß vorher schrifich geklärt was der Mitarbeiter darf und was nicht.
Mitglied: 93578
93578 Jun 16, 2012 updated at 21:08:25 (UTC)
Goto Top
Danke, DerWoWusste. Jacksum habe ich früher auch benutzt, nur wurde jetzt Java von den Rechnern verbannt. Also diese Lösung passt nicht...

Ja, einige haben schon (leider) administrative Rechte (siehe Java). ;-(
Mitglied: 93578
93578 Jun 16, 2012 updated at 21:09:10 (UTC)
Goto Top
Lochkartenstanzer, Danke für die Lösung! Cygwin passt leider nicht - es soll schon so ein Tool a-la fciv bzw. md5 sein, nur mit der Möglichkeit die Hashwerte aus einer Liste ohne Pfade und Dateinamen abgleichen... Ich arbeite mit einem selbstgebastelten Tool (Lua-AMS) und da sind Shell/Batch-Lösungen (also reine CMD-Werkzeuge ohne Windows-Setup)- die erste Wahl.
Member: Lochkartenstanzer
Lochkartenstanzer Jun 16, 2012 at 21:11:12 (UTC)
Goto Top
Hi,

Also find und grep gibt es auch als reine EXE-Dateien fertig für win32. Da kannst Du das problem dann auch mit einer CMD-batch erschlagen.

lks
Mitglied: 93578
93578 Jun 16, 2012 at 21:15:35 (UTC)
Goto Top
Stimmt... Das konnte ich morgen mal testen. Danke für den Tipp!
Member: bastla
bastla Jun 16, 2012 updated at 21:34:54 (UTC)
Goto Top
Hallo takitano!
Mit fciv hat es nicht geklappt - das Programm kann die Liste ohne Pfaden nicht überprüfen
Na dann eben umgekehrt - ungetestet etwa:
@echo off & setlocal
set "Liste=C:\Scripts\MD5-Liste.txt"  
set "Gefunden=C:\Scripts\Installiert.txt"  

del "%Gefunden%" 2>nul  
for /f "delims=" %%i in ('dir /s/b/a-d C:\') do   
    echo Untersuche: %%i    
    for /f "skip=3" %%a in ('fciv "%%i"') do findstr /i %%a "%Liste%">nul && >>"%Gefunden%" echo %%a;%%i  
)
- das wird natürlich etwas dauern ... face-wink [Edit] - daher im Zweifelsfall zuerst den Ansatz von weiter unten testen [/Edit]

Grüße
bastla
Mitglied: 93578
93578 Jun 16, 2012 at 21:28:11 (UTC)
Goto Top
Danke, Bastla! Werde auch morgen mal testen - die beide Lösungen (auch mit grep und find) gefallen mir sehr gut sogar! face-wink
Member: bastla
bastla Jun 16, 2012 at 21:34:00 (UTC)
Goto Top
Hallo takitano!

Sollte aber so besser gehen:
fciv C:\ -r>C:\Scripts\Hashes.txt
findstr /ibg:C:\Scripts\MD5-Liste.txt C:\Scripts\Hashes.txt>C:\Scripts\Installiert.txt
- wobei ich allerdings nicht getestet habe, wie "findstr" mit ein paar Millionen zu durchsuchenden Zeilen zurechtkommt ...

Die "MD5-Liste.txt" sollte übrigens nur die Hashes enthalten - die erste Zeile mit "md5" vorweg entfernen, da sie ansonsten auch als Suchbegriff verwendet wird.

Grüße
bastla
Mitglied: 93578
93578 Jun 17, 2012 updated at 07:42:02 (UTC)
Goto Top
Danke Bastla!

Deine letzte Lösung war für mich gerade richtig (das mit der Zeit ist nicht so schlimm - die Nacht ist lang... face-wink Um alle *.exe- und *.dll-Dateien auf einer 500GB-SATA-Festplatte ( nur eine Partiition C:! mit ungefähr 100 GB installierten Programmen und Bürokram (ca. 1.200.000 Dateien)) zu finden brauchte dein Script nicht mal 2 Minuten.
Member: bastla
bastla Jun 17, 2012 updated at 14:09:42 (UTC)
Goto Top
Hallo takitano!
alle *.exe- und *.dll-Dateien ... zu finden
würde mir im Fall des Falles aber nicht genügen (wenn etwa aus der "DukeIII.exe" eine "Bericht_2012-04-04.pdf" geworden ist)

Ansonsten noch eine Anmerkung: "Blacklisting" setzt natürlich voraus, dass Du weißt, wonach Du suchen musst - insofern solltest Du die Hinweise von DerWoWusste nochmals überdenken und dabei auch gleich das Thema "Adminrechte" hinterfragen ...

Grüße
bastla
Member: Eduard121
Eduard121 Jun 17, 2012 at 15:43:16 (UTC)
Goto Top
Zitat von @bastla:
Hallo takitano!

Sollte aber so besser gehen:
fciv C:\ -r>C:\Scripts\Hashes.txt
> findstr /ibg:C:\Scripts\MD5-Liste.txt C:\Scripts\Hashes.txt>C:\Scripts\Installiert.txt
> 
- wobei ich allerdings nicht getestet habe, wie "findstr" mit ein paar Millionen zu durchsuchenden Zeilen
zurechtkommt ...

Die "MD5-Liste.txt" sollte übrigens nur die Hashes enthalten - die erste Zeile mit "md5" vorweg
entfernen, da sie ansonsten auch als Suchbegriff verwendet wird.

Grüße
bastla

Hallo Bastla,
du hast auch mir fast damit geholfen! Aber wie überprüfe ich mehrere Laufwerke von c: bis z:? Eine Art Schleife?

fciv c:\...
fciv d:\...
fciv e:\... - funktioniert nämlich nicht. Es werden nur die Ergebnisse vom Laufwerk C: gespeichert. Unterstützt fciv überhaupt gleichzeitige Suche in mehreren Laufwerken?

Grüße aus Mosklau,
Eduard
Member: bastla
bastla Jun 17, 2012 at 20:19:16 (UTC)
Goto Top
Hallo Eduard121!

Du kannst die Daten der weiteren Laufwerke einfach mit ">>" anstatt ">" hinzufügen:
for %%i in (D E F) fciv %%i:\ -r>>C:\Scripts\Hashes.txt
Grüße
bastla
Member: SilentTom
SilentTom Nov 25, 2012 at 23:43:20 (UTC)
Goto Top
Genau dafür gibt es ein kleines praktisches Programm namens MD5 FILE HASHER von Digital-Tronic.

Mit dem Programm können vollautomatische Prüfdurchläufe erstellt werden, um in zeitgesteuerten Abständen beliebige Dateien, Dateitypen und ganze Ordner zu überwachen. Dabei stehen umfangreiche Filterfunktionen und Ausnahmeregeln zur Verfügung, um beispielsweise alle EXE, SYS und DLL Dateien des Windowsordners stündlich auf Manipulationen zu untersuchen. Geänderte, gelöschte und neu erstelle Dateien werden auf Wunsch als PopUp-Meldung mitgeteilt und können zusätzlich als TXT-Datei abgespeichert werden. Das Programm erstellt von jeder Datei einen Hashwert und vergleicht diesen bei spätere Untersuchungen - absolut sichere Sache.

Das Programm gibts auf digital-tronic.de und ist in Deutsch und Englisch verfügbar. Auf YouTube sind auch Videos bzw. Tutorials online.
Mitglied: 93578
93578 Feb 04, 2013 updated at 12:40:06 (UTC)
Goto Top
Zitat von @bastla:
Hallo Eduard121!

Du kannst die Daten der weiteren Laufwerke einfach mit ">>" anstatt ">" hinzufügen:
for %%i in (D E F) fciv %%i:\ -r>>C:\Scripts\Hashes.txt
> 
Grüße
bastla

Hier sehe ich 2 Probleme:

1) "do" fehlt (Sorry, ich weiß - Klugsch...r.. face-smile)
2) Die Laufwerksbuchstaben werden vorher angegeben. Das ist aber ziemlich mühsam und festgelegt... Was ist wenn man NUR lokale Laufwerke und USB-Laufwerke, aber keine Netzwerklaufwerke untersuchen will (also man weiß es vorher nicht welches Buchstabe für welchen Laufwerk steht)?
Member: bastla
bastla Feb 04, 2013 at 15:18:17 (UTC)
Goto Top
Hallo takitano!
Was ist wenn man NUR lokale Laufwerke und USB-Laufwerke, aber keine Netzwerklaufwerke untersuchen will (also man weiß es vorher nicht welches Buchstabe für welchen Laufwerk steht)?
Dann würde ich mir die passenden Laufwerksbuchstaben mit einem VBScript wie zB hier gezeigt holen ...

Grüße
bastla
Mitglied: 93578
93578 Feb 05, 2013 at 10:27:36 (UTC)
Goto Top
Danke Bastla! face-wink