Einbruchserkennung
Zur Motivation: https://www.heise.de/newsticker/meldung/10-Jahre-Sony-Rootkit-Schadsoftware-vom-Hersteller-2865426.html
Wir unterscheiden:
# a) Host based Intrusion Detection: aide, tripwire, rpm --verify --all > /media/stick/rpm-sums.verify
# b) Network based Intrusion Detection: snort, suricata, prelude
root@deb10srv:~# # Zu b)
root@deb10srv:~# apt-get install snort
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
libauthen-sasl-perl libdaq2 libdata-dump-perl libdumbnet1 libfile-listing-perl libfont-afm-perl libhtml-form-perl
libhtml-format-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-negotiate-perl libio-socket-ssl-perl
liblwp-protocol-https-perl libmailtools-perl libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libtry-tiny-perl
libwww-perl libwww-robotrules-perl oinkmaster perl-openssl-defaults snort-common snort-common-libraries snort-rules-default
Vorgeschlagene Pakete:
libdigest-hmac-perl libgssapi-perl libcrypt-ssleay-perl libauthen-ntlm-perl snort-doc
Die folgenden NEUEN Pakete werden installiert:
libauthen-sasl-perl libdaq2 libdata-dump-perl libdumbnet1 libfile-listing-perl libfont-afm-perl libhtml-form-perl
libhtml-format-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-negotiate-perl libio-socket-ssl-perl
liblwp-protocol-https-perl libmailtools-perl libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libtry-tiny-perl
libwww-perl libwww-robotrules-perl oinkmaster perl-openssl-defaults snort snort-common snort-common-libraries
snort-rules-default
0 aktualisiert, 27 neu installiert, 0 zu entfernen und 1 nicht aktualisiert.
Es müssen 3.564 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 11,3 MB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren? [J/n]
┌───────────────────────┤ Konfiguriere snort ├───────────────────────┐
│ Schnittstelle(n) an der/denen Snort auf Verbindungen warten soll: │
│ │
│ br0_______________________________________________________________ │
│ │
│ <Ok> │
│ │
└────────────────────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────┤ Konfiguriere snort ├───────────────────────────────────────────────────┐
│ Bitte benutzen Sie das CIDR-Format, z. B. 192.168.1.0/24 für einen Block von 256 IP-Adressen oder 192.168.1.42/32 für nur │
│ eine. Mehrere IP-Adressen sollten durch Kommas getrennt werden (ohne Leerzeichen). │
│ │
│ Bitte beachten Sie: Wenn für Snort mehrere Schnittstellen eingerichtet sind, wird es diese Festlegung als │
│ HOME_NET-Definition für alle gemeinsam verwenden. │
│ │
│ Adressbereich des lokalen Netzwerks: │
│ │
│ 192.168.0.0/16____________________________________________________________________________________________________________ │
│ │
│ <Ok> │
│ │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Paketkonfiguration
┌───────────────────────────────────────────────────┤ Konfiguriere snort ├───────────────────────────────────────────────────┐
│ │
│ Dieser Wert ist normalerweise »eth0«, aber das kann in einigen Netzwerkumgebungen anders sein; bei einer │
│ Einwahlverbindung könnte »ppp0« besser passen (sehen Sie sich die Ausgabe des Befehls »/sbin/ifconfig« an). │
│ │
│ Normalerweise ist das dieselbe Schnittstelle, auf die die »Standard-Route« zeigt. Sie können die verwendete Schnittstelle │
│ mit dem Befehl »/sbin/route -n« herausfinden (suchen Sie nach »0.0.0.0«). │
│ │
│ Es ist auch üblich, Snort an einer Schnittstelle ohne IP-Adresse im Modus »promiscuous« zu betreiben. In diesem Fall │
│ wählen Sie die Schnittstelle aus, die physisch mit dem Netzwerk verbunden ist, das Sie überwachen wollen und schalten │
│ später den Modus »promiscuous« ein. Stellen Sie sicher, dass der Netzwerkverkehr die Schnittstelle erreicht (entweder ist │
│ sie mit einem Anschluss für »Port-Mirroring/Spanning« eines Switches, mit einem Hub oder Tap verbunden). │
│ │
│ Sie können mehrere Schnittstellennamen durch Leerzeichen getrennt eingeben. Jede Schnittstelle kann eigene Einstellungen │
│ haben. │
│ │
│ <Ok> │
│ │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
libwww-perl (6.36-2) wird eingerichtet ...
oinkmaster (2.0-4) wird eingerichtet ...
liblwp-protocol-https-perl (6.07-2) wird eingerichtet ...
Trigger für libc-bin (2.28-10) werden verarbeitet ...
Trigger für systemd (241-7~deb10u7) werden verarbeitet ...
Trigger für man-db (2.8.5-2) werden verarbeitet ...
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~# pgrep -alfi snort
23417 /usr/sbin/snort -m 027 -D -d -l /var/log/snort -u snort -g snort -c /etc/snort/snort.conf -S HOME_NET=[192.168.0.0/16] -i br0
root@deb10srv:~#
root@deb10srv:~# # >> eine alert-Logdatei wird hierbei noch nicht erzeugt.
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~# ## Einfach nur als Paketanalyser laufen lassen:
root@deb10srv:~# snort -i br0
WARNING: No preprocessors configured for policy 0.
===============================================================================
Run time for packet processing was 4.92191 seconds
Snort processed 685 packets.
Snort ran for 0 days 0 hours 0 minutes 4 seconds
Pkts/sec: 171
===============================================================================
Memory usage summary:
Total non-mmapped bytes (arena): 786432
Bytes in mapped regions (hblkhd): 12906496
Total allocated space (uordblks): 689152
Total free space (fordblks): 97280
Topmost releasable block (keepcost): 94224
===============================================================================
Packet I/O Totals:
Received: 819
Analyzed: 685 ( 83.639%)
Dropped: 0 ( 0.000%)
Filtered: 0 ( 0.000%)
Outstanding: 134 ( 16.361%)
Injected: 0
===============================================================================
Breakdown by protocol (includes rebuilt packets):
Eth: 685 (100.000%)
VLAN: 0 ( 0.000%)
IP4: 683 ( 99.708%)
Frag: 0 ( 0.000%)
ICMP: 0 ( 0.000%)
UDP: 164 ( 23.942%)
TCP: 478 ( 69.781%)
IP6: 2 ( 0.292%)
IP6 Ext: 2 ( 0.292%)
IP6 Opts: 0 ( 0.000%)
Frag6: 0 ( 0.000%)
ICMP6: 2 ( 0.292%)
UDP6: 0 ( 0.000%)
TCP6: 0 ( 0.000%)
Teredo: 0 ( 0.000%)
ICMP-IP: 0 ( 0.000%)
IP4/IP4: 0 ( 0.000%)
IP4/IP6: 0 ( 0.000%)
IP6/IP4: 0 ( 0.000%)
IP6/IP6: 0 ( 0.000%)
GRE: 0 ( 0.000%)
GRE Eth: 0 ( 0.000%)
GRE VLAN: 0 ( 0.000%)
GRE IP4: 0 ( 0.000%)
GRE IP6: 0 ( 0.000%)
GRE IP6 Ext: 0 ( 0.000%)
GRE PPTP: 0 ( 0.000%)
GRE ARP: 0 ( 0.000%)
GRE IPX: 0 ( 0.000%)
GRE Loop: 0 ( 0.000%)
MPLS: 0 ( 0.000%)
ARP: 0 ( 0.000%)
IPX: 0 ( 0.000%)
Eth Loop: 0 ( 0.000%)
Eth Disc: 0 ( 0.000%)
IP4 Disc: 41 ( 5.985%)
IP6 Disc: 0 ( 0.000%)
TCP Disc: 0 ( 0.000%)
UDP Disc: 0 ( 0.000%)
ICMP Disc: 0 ( 0.000%)
All Discard: 41 ( 5.985%)
Other: 0 ( 0.000%)
Bad Chk Sum: 33 ( 4.818%)
Bad TTL: 0 ( 0.000%)
S5 G 1: 0 ( 0.000%)
S5 G 2: 0 ( 0.000%)
Total: 685
===============================================================================
Snort exiting
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~# history 7
2181 # Zu b)
2182 apt-get install snort
2183 pgrep -alfi snort
2184 # >> eine alert-Logdatei wird hierbei noch nicht erzeugt.
2185 ## Einfach nur als Paketanalyser laufen lassen:
2186 snort -i br0
2187 history 7
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~# # Wir wollen aber die kostenlos verteilten Rules nutzen und zur Anzeige bringen:
root@deb10srv:~# ls -l /etc/snort/rules/ | head
insgesamt 1600
-rw-r--r-- 1 root root 5520 Jun 30 2015 attack-responses.rules
-rw-r--r-- 1 root root 17898 Jun 30 2015 backdoor.rules
-rw-r--r-- 1 root root 3862 Jun 30 2015 bad-traffic.rules
-rw-r--r-- 1 root root 7994 Jun 30 2015 chat.rules
-rw-r--r-- 1 root root 12759 Jun 30 2015 community-bot.rules
-rw-r--r-- 1 root root 1223 Jun 30 2015 community-deleted.rules
-rw-r--r-- 1 root root 2042 Jun 30 2015 community-dos.rules
-rw-r--r-- 1 root root 2176 Jun 30 2015 community-exploit.rules
-rw-r--r-- 1 root root 249 Jun 30 2015 community-ftp.rules
root@deb10srv:~#
root@deb10srv:~# # >> HINWEIS: mit ``oinkmaster`` kann man abonnierte Rules automatisch downloaden.
root@deb10srv:~#
root@deb10srv:~# whatis oinkmaster
oinkmaster (1) - update Snort signatures
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~# ## Mit der Option '-A' wird die Art und Weise der Aufzeichnung gesteuert:
root@deb10srv:~# man snort | grep -A3 '\-A'
snort [-bCdDeEfHIMNOpqQsTUvVwWxXy?] [-A alert-mode ] [-B address-conversion-mask ] [-c rules-file ] [-F bpf-file ] [-g
group-name ] [-G id ] [-h home-net ] [-i interface ] [-k checksum-mode ] [-K logging-mode ] [-l log-dir ] [-L bin-log-
file ] [-m umask ] [-n packet-count ] [-P snap-length ] [-r tcpdump-file ] [-R name ] [-S variable=value ] [-t ch‐
root_directory ] [-u user-name ] [-Z pathname ] [--logid id ] [--perfmon-file pathname ] [--pid-path pathname ]
--
-A alert-mode
Alert using the specified alert-mode. Valid alert modes include fast, full, none, and unsock. Fast writes
alerts to the default "alert" file in a single-line, syslog style alert message. Full writes the alert to the
"alert" file with the full decoded header as well as the alert message. None turns off alerting. Unsock is an
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~# vi /etc/default/snort
root@deb10srv:~# head -3 /etc/default/snort
# Parameters for the daemon
# Add any additional parameteres here.
PARAMS="-m 027 -D -d -A fast"
root@deb10srv:~#
root@deb10srv:~# # >> "-A fast" in Zeile 3 hinzugefügt.
root@deb10srv:~#
root@deb10srv:~#
root@deb10srv:~# tail -f /var/log/snort/alert
tail: '/var/log/snort/alert' kann nicht zum Lesen geöffnet werden: Datei oder Verzeichnis nicht gefunden
tail: Keine Dateien mehr übrig
root@deb10srv:~#
root@deb10srv:~# systemctl restart snort
root@deb10srv:~#
root@deb10srv:~# tail -f /var/log/snort/alert
root@deb-srv:~# ping -b 192.168.2.255 -c1
WARNING: pinging broadcast address
PING 192.168.2.255 (192.168.2.255) 56(84) bytes of data.
64 bytes from 192.168.2.255: icmp_seq=1 ttl=64 time=0.499 ms
--- 192.168.2.255 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.499/0.499/0.499/0.000 ms
root@deb-srv:~#
root@deb-srv:~#
05/20-12:19:47.772171 [**] [1:366:7] ICMP PING *NIX [**] [Classification: Misc activity] [Priority: 3] {ICMP} 192.168.2.233 -> 192.168.2.255
05/20-12:19:47.772171 [**] [1:384:5] ICMP PING [**] [Classification: Misc activity] [Priority: 3] {ICMP} 192.168.2.233 -> 192.168.2.255
05/20-12:19:47.772650 [**] [1:408:5] ICMP Echo Reply [**] [Classification: Misc activity] [Priority: 3] {ICMP} 192.168.2.255 -> 192.168.2.233
root@deb-srv:~#
root@deb-srv:~# # => https://www.kaspersky.de/resource-center/definitions/what-is-a-smurf-attack
root@deb-srv:~#
root@deb10srv:~#
root@deb10srv:~# # tail -f /var/log/snort/alert
root@deb10srv:~#
root@deb10srv:~# ls -l /var/log/snort/alert
-rw-r--r-- 1 root adm 2811 Mai 20 12:19 /var/log/snort/alert
root@deb10srv:~#
root@deb10srv:~# pgrep -alfi snort
24115 /usr/sbin/snort -m 027 -D -d -A fast -l /var/log/snort -u snort -g snort -c /etc/snort/snort.conf -S HOME_NET=[192.168.0.0/16] -i br0
root@deb10srv:~#
root@deb10srv:~#
root@deb-srv:~#
root@deb-srv:~# # apt-get install nmap
root@deb-srv:~#
root@deb-srv:~# nmap -A -T4 deb10srv
Starting Nmap 7.70 ( https://nmap.org ) at 2021-05-20 12:23 CEST
Nmap scan report for deb10srv (192.168.2.202)
Host is up (0.000091s latency).
rDNS record for 192.168.2.202: deb10srv.dom1.test
Not shown: 990 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp Pure-FTPd
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 d1:ef:76:7f:7a:13:3a:7a:a7:73:b4:39:9a:7a:e4:e7 (RSA)
| 256 5d:43:22:70:ac:cd:85:31:57:d6:4f:5e:8e:7c:17:ab (ECDSA)
|_ 256 81:b5:56:01:b4:5b:09:97:99:92:8a:91:2f:aa:ee:c7 (ED25519)
53/tcp open domain ISC BIND 9.11.5-P4-5.1+deb10u5 (Debian Linux)
| dns-nsid:
|_ bind.version: 9.11.5-P4-5.1+deb10u5-Debian
80/tcp open http Apache httpd 2.4.38
| http-ls: Volume /
| SIZE TIME FILENAME
| 24 2021-04-20 08:48 phpinfo.php
| 46 2021-04-15 08:38 start.html
|_
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Index of /
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
|_ 100000 2,3,4 111/udp rpcbind
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: CC-TESTBED)
389/tcp open ldap OpenLDAP 2.2.X - 2.3.X
443/tcp open ssl/ssl Apache httpd (SSL-only mode)
| http-ls: Volume /
| SIZE TIME FILENAME
| 24 2021-04-20 08:48 phpinfo.php
| 46 2021-04-15 08:38 start.html
|_
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Index of /
| ssl-cert: Subject: commonName=deb10srv.dom1.test/organizationName=COMCAVE/stateOrProvinceName=Sachsen/countryName=DE
| Not valid before: 2021-04-15T10:02:55
|_Not valid after: 2031-04-13T10:02:55
|_ssl-date: TLS randomness does not represent time
| tls-alpn:
| http/1.1
| http/1.1
(gekürzt)
| http/1.1
|_ http/1.1
445/tcp open netbios-ssn Samba smbd 4.9.5-Debian (workgroup: CC-TESTBED)
3128/tcp open http-proxy Squid http proxy 4.6
|_http-server-header: squid/4.6
|_http-title: ERROR: The requested URL could not be retrieved
MAC Address: 08:00:27:F4:F3:71 (Oracle VirtualBox virtual NIC)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.70%E=4%D=5/20%OT=21%CT=1%CU=30444%PV=Y%DS=1%DC=D%G=Y%M=080027%T
OS:M=60A638DE%P=x86_64-pc-linux-gnu)SEQ(SP=107%GCD=1%ISR=10D%TI=Z%CI=Z%TS=A
OS:)SEQ(SP=107%GCD=1%ISR=10D%TI=Z%CI=Z%II=I%TS=A)OPS(O1=M5B4ST11NW7%O2=M5B4
OS:ST11NW7%O3=M5B4NNT11NW7%O4=M5B4ST11NW7%O5=M5B4ST11NW7%O6=M5B4ST11)WIN(W1
OS:=FE88%W2=FE88%W3=FE88%W4=FE88%W5=FE88%W6=FE88)ECN(R=Y%DF=Y%T=40%W=FAF0%O
OS:=M5B4NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N
OS:)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=
OS:S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF
OS:=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=
OS:G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Network Distance: 1 hop
Service Info: Host: DEB10SRV; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_clock-skew: mean: -40m00s, deviation: 1h09m16s, median: 0s
|_nbstat: NetBIOS name: DEB10SRV, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.9.5-Debian)
| Computer name: deb10srv
| NetBIOS computer name: DEB10SRV\x00
| Domain name: dom1.test
| FQDN: deb10srv.dom1.test
|_ System time: 2021-05-20T12:24:07+02:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2021-05-20 12:24:07
|_ start_date: N/A
TRACEROUTE
HOP RTT ADDRESS
1 0.09 ms deb10srv.dom1.test (192.168.2.202)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 51.95 seconds
root@deb-srv:~#
root@deb10srv:~#
root@deb10srv:~# ## Und im Alarmlog haben wir z.B. XMAS drin:
root@deb10srv:~# grep -i xmas /var/log/snort/alert
05/20-12:23:54.931536 [**] [1:1228:7] SCAN nmap XMAS [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.2.233:54299 -> 192.168.2.202:1
05/20-12:23:55.109769 [**] [1:1228:7] SCAN nmap XMAS [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.2.233:54299 -> 192.168.2.202:1
05/20-12:23:55.287855 [**] [1:1228:7] SCAN nmap XMAS [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.2.233:54299 -> 192.168.2.202:1
05/20-12:23:55.466150 [**] [1:1228:7] SCAN nmap XMAS [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.2.233:54299 -> 192.168.2.202:1
05/20-12:24:00.095806 [**] [1:1228:7] SCAN nmap XMAS [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.2.233:54299 -> 192.168.2.202:1
05/20-12:24:03.794730 [**] [1:1228:7] SCAN nmap XMAS [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.2.233:54299 -> 192.168.2.202:1
05/20-12:24:03.947034 [**] [1:1228:7] SCAN nmap XMAS [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.2.233:54299 -> 192.168.2.202:1
05/20-12:24:06.452421 [**] [1:1228:7] SCAN nmap XMAS [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.2.233:54299 -> 192.168.2.202:1
05/20-12:24:06.605407 [**] [1:1228:7] SCAN nmap XMAS [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.2.233:54299 -> 192.168.2.202:1
root@deb10srv:~#