[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
13. Aufspüren von Eindringlingen
Inhalt:
13.a. AIDE (Advanced Intrusion Detection Environment)
Aide ist ein Host-basierendes Eindringlingserkennungssystem (HIDS, Host-based
Intrusion Detection System), eine kostenlose Alternative zu Tripwire (falls Sie
bereits mit Tripwire vertraut sind, sollten Sie keine Schwierigkeiten haben die
Konfigurationsdateien für Aide zu erlernen). HIDS werden zu Entdeckung von
Änderungen an wichtigen Systemkonfigurations- und Binärdateien verwendet. In
der Regel, indem sie einen kryptographischen Hash-Wert für jede der zu
prüfenden Dateien erstellen und diesen an einem sicheren Ort speichern. In
regelmäßigen Abständen (z.B. täglich) werden die als "gut" bekannten Werte mit
denen der derzeitigen Kopien der Dateien verglichen, um herauszufinden, ob die
Datei geändert wurde. HIDS sind eine gute Methode um unerlaubte Änderungen am
System zu entdecken, aber es braucht ein wenig Arbeit sie ordentlich
einzurichten und gut zu verwenden.
Die Konfigurationsdatei basiert auf regulären Ausdrücken, Makros und Regeln
für Dateien und Verzeichnisse. Wir haben die folgenden Makros:
| Makro |
Beschreibung |
Syntax |
| ifdef |
wenn definiert |
@@ifdef "name" |
| ifndef |
wenn nicht definiert |
@@ifndef "name" |
| define |
definiert eine Variable |
@@define "name" "value" |
| undef |
undefiniert eine Variable |
@@undef "name" |
| ifhost |
wenn "hostname" |
@@ifhost "hostname" |
| ifnhost |
wenn "hostname" nicht |
@@ifnhost "hostname" |
| endif |
Endif muss nach jedem der obigen Makros, außer define und undef, benutzt
werden.
|
@@endif |
Diese Makros sind sehr praktisch, wenn Sie mehr als ein Gentoo System haben und
auf allen Aide benutzen wollen. Aber nicht alle Maschinen haben dieselben
Dienste oder gar Benutzer.
Als nächstes haben wir Gruppen von Flags um Überprüfungen an Dateien und
Ordnern durchzuführen. Diese sind eine Kombination aus Berechtigungen,
Dateieigenschaften und kryptographischen Hashes/Prüfsummen.
| Flag |
Beschreibung |
| p |
Berechtigungen |
| i |
Inode |
| n |
Anzahl der Links |
| u |
Benutzer |
| g |
Gruppe |
| s |
Größe |
| b |
Blockzahl |
| m |
mtime |
| a |
atime |
| c |
ctime |
| S |
Überprüfung ob die Größe wächst |
| md5 |
MD5 Checksumme |
| sha1 |
SHA1 Checksumme |
| rmd160 |
RMD160 Checksumme |
| tiger |
Tiger Checksumme |
| R |
p+i+n+u+g+s+m+c+md5 |
| L |
p+i+n+u+g |
| E |
Leere Gruppe |
| > |
Wachsende Protokolldatei p+u+g+i+n+S |
Und wenn Aide mit mhash-Unterstützung kompiliert ist, hat es noch einige
weitere Funktionen:
| Flag |
Beschreibung |
| haval |
HAVAL Checksumme |
| gost |
GOST Checksumme |
| crc32 |
CRC32 Checksumme |
Nun können Sie Ihre eigenen auf den oben genannten Flags basierenden Regeln
definieren, indem Sie diese folgendermaßen kombinieren:
Befehlsauflistung 1.1: Erstellen eines Regelsatzes für AIDE |
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
|
Das letzte was wir tun müssen um unsere eigene Konfigurationsdatei zu erstellen
ist zu schauen wie man diese Regeln einer Datei oder einem Verzeichnis
hinzufügt. Um eine Regel einzugeben, kombinieren Sie Datei oder Verzeichnis und
die Regel. AIDE wird alle Dateien rekursiv hinzufügen, es sei denn Sie
spezifizieren eine alternative Regel.
| Flag |
Beschreibung |
| ! |
Diese Datei oder dieses Verzeichnis nicht hinzufügen. |
| = |
Dieses Verzeichnis hinzufügen, aber nicht rekursiv. |
Lassen Sie uns also ein vollständiges Beispiel betrachten:
Befehlsauflistung 1.2: /etc/aide/aide.conf |
@@ifndef TOPDIR
@@define TOPDIR /
@@endif
@@ifndef AIDEDIR
@@define AIDEDIR /etc/aide
@@endif
@@ifhost smbserv
@@define smbactive
@@endif
# Der Ort der Datenbank die gelesen werden soll.
database=file:@@{AIDEDIR}/aide.db
# Der Ort der Datenbank, die erstellt werden soll.
database_out=file:aide.db.new
verbose=20
report_url=stdout
# Regeldefinition
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
@@{TOPDIR} Norm
!@@{TOPDIR}etc/aide
!@@{TOPDIR}dev
!@@{TOPDIR}media
!@@{TOPDIR}mnt
!@@{TOPDIR}proc
!@@{TOPDIR}root
!@@{TOPDIR}sys
!@@{TOPDIR}tmp
!@@{TOPDIR}var/log
!@@{TOPDIR}var/run
!@@{TOPDIR}usr/portage
@@ifdef smbactive
!@@{TOPDIR}etc/smb/private/secrets.tdb
@@endif
=@@{TOPDIR}home Norm
|
Im obigen Beispiel definieren wir einige Makros, die angeben wo das topdir
beginnt und wo das AIDE Verzeichnis ist. AIDE überprüft die
/etc/aide/aide.db Datei wenn die Integrität einer Datei überprüft
wird. Jedoch wenn ein Update vorgenommen wird oder eine neue Datei erstellt
wird, speichert es die Informationen in /etc/aide/aide.db.new.
Dies geschieht, damit die ursprünglich Datenbankdatei nicht automatisch
überschrieben wird. Die Option report_URL ist eine noch nicht
implementierte Funktion, die wirklich noch keine Bedeutung hat.Die Absicht des
Autoren war es, dass es möglich wäre eine Email zu senden oder vielleicht sogar
ein Skript auszuführen.
Das AIDE Ebuild enthält seit neuestem eine funktionierende
Standardkonfigurationsdatei, ein Hilfsskript und ein Crontab-Skript. Das
Hilfsskript erledigt eine Vielzahl von Aufgaben für Sie und stellt ein
Interface bereit, dass etwas Skript-freundlicher ist. Um alle verfügbaren
Optionen zu betrachten, geben Sie einfach aide --help ein. Alles was
benötigt wird um loszulegen ist aide -i und das Crontab-Skript sollte
die Datenbank aufspüren und je nach Bedarf täglich Mails versenden. Wir
empfehlen, dass Sie sich mit der /etc/aide/aide.conf Datei
vertraut machen und sicherstellen, dass dort korrekt wiedergespiegelt wird, was
sich auf Ihrem Rechner befindet.
Notiz:
Abhängig von Ihrer CPU, Festplattenzugriffsgeschwindigkeit und den benutzten
Flags für Dateien, kann dies einige Zeit in Anspruch nehmen.
|
Notiz:
Denken Sie daran es so einzustellen, dass Sie die Post für root bekommen.
Ansonsten werden Sie niemals wissen was AIDE berichtet.
|
Nun gibt es einige Probleme damit die Datenbankdateien lokal zu speichern, denn
der Angreifer wird (wenn er weiß, dass Aide installiert ist)
höchstwahrscheinlich versuchen die Datenbankdatei zu verändern, ein Update der
Datenbankdatei durchzuführen oder /usr/bin/aide zu verändern.
Deswegen sollten Sie eine CD oder anderes Medium erstellen auf das Sie eine
Kopie der Datenbankdatei und der Aide Binärdateien ablegen.
Weitere Informationen gibt es auf der AIDE Projektseite.
13.b. Snort
Snort ist ein "Network Intrusion Detection System" (NIDS). Benutzen Sie zur
Installation und Konfiguration die folgenden Beispiele.
Befehlsauflistung 2.1: /etc/conf.d/snort |
PIDFILE=/var/run/snort_eth0.pid
MODE="full"
NETWORK="10.0.0.0/24"
LOGDIR="/var/log/snort"
CONF=/etc/snort/snort.conf
SNORT_OPTS="-D -s -u snort -dev -l $LOGDIR -h $NETWORK -c $CONF"
|
Befehlsauflistung 2.2: /etc/snort/snort.conf |
var HOME_NET 10.0.0.0/24
var EXTERNAL_NET any
var SMTP $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var DNS_SERVERS [10.0.0.2/32,212.242.40.51/32]
var RULE_PATH ./
preprocessor frag2
preprocessor stream4: detect_scans detect_state_problems detect_scans disable_evasion_alerts
preprocessor stream4_reassemble: ports all
preprocessor http_decode: 80 8080 unicode iis_alt_unicode double_encode iis_flip_slash full_whitespace
preprocessor rpc_decode: 111 32771
preprocessor bo: -nobrute
preprocessor telnet_decode
include classification.config
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/x11.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/shellcode.rules
include $RULE_PATH/policy.rules
include $RULE_PATH/porn.rules
include $RULE_PATH/info.rules
include $RULE_PATH/icmp-info.rules
include $RULE_PATH/virus.rules
# include $RULE_PATH/experimental.rules
include $RULE_PATH/local.rules
|
Befehlsauflistung 2.3: /etc/snort/classification.config |
config classification: not-suspicious,Not Suspicious Traffic,3
config classification: unknown,Unknown Traffic,3
config classification: bad-unknown,Potentially Bad Traffic, 2
config classification: attempted-recon,Attempted Information Leak,2
config classification: successful-recon-limited,Information Leak,2
config classification: successful-recon-largescale,Large Scale Information Leak,2
config classification: attempted-dos,Attempted Denial of Service,2
config classification: successful-dos,Denial of Service,2
config classification: attempted-user,Attempted User Privilege Gain,1
config classification: unsuccessful-user,Unsuccessful User Privilege Gain,1
config classification: successful-user,Successful User Privilege Gain,1
config classification: attempted-admin,Attempted Administrator Privilege Gain,1
config classification: successful-admin,Successful Administrator Privilege Gain,1
# NEW CLASSIFICATIONS
config classification: rpc-portmap-decode,Decode of an RPC Query,2
config classification: shellcode-detect,Executable code was detected,1
config classification: string-detect,A suspicious string was detected,3
config classification: suspicious-filename-detect,A suspicious filename was detected,2
config classification: suspicious-login,An attempted login using a suspicious username was detected,2
config classification: system-call-detect,A system call was detected,2
config classification: tcp-connection,A TCP connection was detected,4
config classification: trojan-activity,A Network Trojan was detected, 1
config classification: unusual-client-port-connection,A client was using an unusual port,2
config classification: network-scan,Detection of a Network Scan,3
config classification: denial-of-service,Detection of a Denial of Service Attack,2
config classification: non-standard-protocol,Detection of a non-standard protocol or event,2
config classification: protocol-command-decode,Generic Protocol Command Decode,3
config classification: web-application-activity,access to a potentially vulnerable web application,2
config classification: web-application-attack,Web Application Attack,1
config classification: misc-activity,Misc activity,3
config classification: misc-attack,Misc Attack,2
config classification: icmp-event,Generic ICMP event,3
config classification: kickass-porn,SCORE! Get the lotion!,1
|
Weitere Informationen gibt es auf der Snort Webseite.
13.c. Auffinden von böswilliger Software mit chkrootkit
HIDS wie AIDE sind sehr gut, um Änderungen am System zu bemerken, aber es
schadet nie, eine weitere Verteidigungslinie zu haben. chkrootkit ist
ein Werkzeug, welches typische Systemdateien auf die Anwesenheit von Rootkits
untersucht -- Programme welche entworfen wurden, um das Vorgehen eines
Eindringlings zu verstecken und seinen Zugriff aufrecht zu erhalten. Es
durchsucht Ihr System auch nach Spuren von Keyloggern und anderer sog. Malware
(Schadsoftware). Auch wenn chkrootkit (und Alternativen wie
rkhunter) sinnvolle Werkzeuge zur Systempflege und zum Aufspüren eines
Eindringlings nach einem Angriff sind, so können sie doch nicht garantieren,
dass das System sicher ist.
Die beste Art um mit chkrootkit einen Eindringling aufzuspüren ist
es das Programm routinemäßig von cron ausführen zu lassen. Zu Beginn
wird mit emerge app-forensics/chkrootkit installiert.
chkrootkit kann in der Kommandozeile mit demselben Namen, oder
durch cron mit einen Eintrag wie folgt, ausgeführt werden:
Befehlsauflistung 3.1: chkrootkit als cronjob einrichten |
0 3 * * * /usr/sbin/chkrootkit
|
[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|
|