
Automatisiertes Linux-Vorfallreaktionsskript mit Live-Triage, Speichererfassung (LiME), Disk-Imaging, YARA-Scans und HTML-Berichterstellung.
Linux-Notfallreaktion

TuxResponse ist ein Incident-Response-Skript für Linux-Systeme, geschrieben in Bash. Es kann Incident-Response-Aktivitäten auf Linux-Systemen automatisieren und ermöglicht es Ihnen, Systeme schnell zu triagieren, ohne die Ergebnisse zu beeinträchtigen. Normalerweise haben Unternehmenssysteme eine gewisse Überwachung und Kontrolle, aber es gibt Ausnahmen durch Schatten-IT und nicht standardmäßige Images, die in Unternehmen eingesetzt werden. Was dem Eintippen von 10 Befehlen mit Versuch-und-Irrtum-Testen entspricht, kann mit einem Knopfdruck erledigt werden.
Getestet auf:
Hauptzweck:
Externe Tools im Paket:
INSTALL LiME
function init_lime(){
if [ -f /usr/bin/yum ]; then
yum -y install make kernel-headers kernel-devel gcc
elif [ -f /usr/bin/apt-get ]; then
apt-add-repository universe
apt-get -y install make linux-headers-$(uname -r) gcc
fi
rm -f /tmp/v1.8.1.zip
wget -P/tmp https://github.com/504ensicsLabs/LiME/archive/v1.8.1.zip
unzip /tmp/v1.8.1.zip
rm -f /tmp/v1.8.1.zip
pushd LiME-1.8.1/src
make
mv lime-*.ko /tmp/lime.ko
popd
rm -rf LiME-1.8.1
}
Wenn Sie bei der Reaktion auf Vorfälle LiME durch manuelles Eintippen aller Befehle installieren müssen, verlangsamt Sie das erheblich.
1)Systeminformationen, IP, Datum, Uhrzeit, lokale Zeitzone, letzter Neustart - 'hostnamectl; who -b; uname -a; uptime; ifconfig; date; last reboot'
1)Überprüfen eingehängter Dateisysteme -'df -h'
2)Hash von ausführbaren Dateien (MD5) - 'find /usr/bin -type f -exec file "{}" \; | grep -i "elf" | cut -f1 -d: | xargs -I "{}" -n 1 md5sum {}'
3)Geänderte Dateien - 'modified_files_period_select' (ruft eine Funktion in tuxresponse.sh auf)
4)Alle versteckten Verzeichnisse auflisten - 'find / -type d -name "\.*"'
5)Dateien/Verzeichnisse ohne Benutzer-/Gruppennamen - 'find / \( -nouser -o -nogroup \) -exec ls -l {} \; 2>/dev/null'
6)Geänderte Dateien aus Paketen -'packaged_files_changed' (ruft eine Funktion in tuxresponse.sh auf)
1) Auf Rootkits prüfen - führt 'chkrootkit' aus
2) Yara-Scan - ruft eine Funktion in tuxresponse.sh 'yara_select' auf (durchsucht das System mit allen YARA-Linux-Regeln, die im Haupt-Repo verfügbar sind)
3) EXIFTool - ruft eine Funktion in tuxresponse.sh 'exiftool_select' auf (installiert EXIFTool)
1) Laufende Prozesse auflisten - 'ps -axu'
2) Gelöschte Binärdateien, die noch laufen - 'ls -alR /proc/*/exe 2> /dev/null | grep deleted'
3) Aktive Netzwerkverbindungen (TCP, UDP) - 'ss -tunap | sed "s/[ \t]\+/|/g"'
4) Prozess-Dump basierend auf PID - 'dump_process_select' (ruft eine Funktion in tuxresponse.sh auf)
1) PID zum Dump eingeben: **(Dies ist der ausgeführte Befehl - gcore -a -o "${DUMP_FILE}" ${DUMP_PID} )**
5) Prozesse, die von /tmp, /dev ausgeführt werden - 'ls -alR /proc/*/cwd 2> /dev/null | grep -E "tmp|dev"'
1) Alle aktiven Netzwerkverbindungen/Raw-Sockets auflisten - 'netstat -nalp; netstat -plant'
1) Alle mit dem System verbundenen Benutzer auflisten - 'w'
2) Benutzer mit Passwörtern abrufen - 'getent passwd'
1) Bash-Verlaufsdatei überprüfen - 'cat ~/.bash_history | nl'
1) Alle Cron-Jobs auflisten - 'list_all_crontab' (ruft eine Funktion in tuxresponse.sh auf)
2) Alle Start-/Boot-Programme auflisten - 'list_all_onstartup' (ruft eine Funktion in tuxresponse.sh auf)
1) Benutzer-Bash-Verlauf sichern - 'cat_all_bash_history' (ruft eine Funktion in tuxresponse.sh auf)
2) Logs mit binärem Inhalt finden - 'grep [[:cntrl:]] /var/log/*.log'
Diese Option ermöglicht es Ihnen, eine Verbindung zu einem entfernten System herzustellen, alle Skripte und Tools zu kopieren und das System zu analysieren.
Diese Option ermöglicht es Ihnen, LiME aus dem Quellcode zu kompilieren und den RAM-Speicher des Systems zu sichern. Dies ist der einfachste Weg, da der umgekehrte Weg darin bestünde, für alle wichtigen Kernelversionen aus dem Quellcode zu kompilieren und das LKM einzufügen.
That option enables you to do a full disk image of the target system using well-known tool - dd. The function is taking source and destination as parameters and inserts them in the following command 'dd if=${IMAGE_IN} | pv | dd of='${IMAGE_OUT}' bs=4K conv=noerror,sync'. If you're investigating remote system, the script is going to copy itself there. Then if the parameter ${TARGET_HOST} is set, then the script is going to download the image to analyst system using this command >> "ssh -p${TARGET_PORT} ${TARGET_USER}@${TARGET_HOST} 'dd if=${IMAGE_IN} bs=4K conv=noerror,sync' | pv | dd of='${IMAGE_OUT}'" (im heavily using pv to make sure progress is tracked)
Alles, was Sie tun, wird in Textdateien aufgezeichnet, sodass Sie leicht zurückgehen und die Ausgabe ansehen können. Das Schöne daran ist, dass Sie es in Ihre bevorzugten Log-Analyse-Tools hochladen und später auswerten können. Darüber hinaus können Sie diese Funktion nutzen, um einen HTML-Bericht zu erstellen und die befehlsgenerierte Ausgabe in einer menschenlesbareren Form anzusehen.
Installiert Binärdateien, die für die korrekte Funktion des Skripts erforderlich sind.
1) Abhängigkeiten
2) Yara und Regeln
3) ExifTool
4) Init-Prüfung
5) chckrootkit
6) LiME
Härtung und forensische Korrektheit für tuxresponse.sh:
YYYYMMDDTHHMMSSZ) anstelle der Ortszeit, für verteidigbare Zeitstempel.evidence/manifest.txt gehasht; Datenträger-Images erhalten eine begleitende .sha256-Datei.modified_files_period_select erstellt keine touch-Zeitstempeldatei mehr auf dem Zieldateisystem (was vor dem find-Durchlauf die atime/mtime von /tmp kontaminierte). Es verwendet nun find / -xdev -newermt "1 $opt ago".eval ${DD_CMD} in _create_disk_image; die dd/ssh-Pipeline läuft direkt, und das Quellgerät wird vor der Verwendung gegen ^/dev/[a-zA-Z0-9]+$ validiert.dump_process_select validiert, dass die PID numerisch ist und dass /proc/<pid> existiert, bevor gcore aufgerufen wird.exec_CMD verwendet kein eval mehr; Shell-Pipeline-Befehle aus dem internen Katalog werden über bash -c ausgeführt.set -euo pipefail mit vorinitialisierten globalen Variablen.DISTO → DISTRO im Arch Linux-Erkennungszweig (zuvor wurde die Distribution stillschweigend falsch benannt).apt-get install netstat → net-tools.evidence/*.txt per Glob (kein ls-Parsing mehr) und überspringt das Manifest; Ausgabevariablen zitiert.VERSION='1.1' hinzugefügt; Banner gibt die Version aus.shellcheck -S error ist sauber.Hinweis: Der menügesteuerte Modus hängt immer noch von
.cmds.sh,.menu_en.shundforensics.shab, die in diesem Repo nicht vorhanden sind. Der Neuaufbau des Befehls-/Menükatalogs wird als separater Aufwand verfolgt.