LinuxCheck
Linux-Notfallreaktion/Informationssammlung/Schwachstellenerkennung-Tool, unterstützt 13 Kategorien mit über 70 Prüfungen: Basis-Konfiguration, Netzwerkverkehr, Aufgabenplanung, Umgebungsvariablen, Benutzerinformationen, Dienste, Bash, bösartige Dateien, Kernel-Rootkit, SSH, Webshell, Mining-Dateien, Mining-Prozesse, Lieferkette, Server-Risiken usw.
Aktualisierungen
Changelog: 20. April 2024
- Ausgabe auf Markdown-Bericht umgestellt
- Verwendung von ag eingestellt, stattdessen wird das native Linux-Befehl grep verwendet, um zusätzliche Installation zu vermeiden
- Codeformat optimiert, nicht mehr für jede Zeile tee -a erforderlich
- Webshell-Erkennungslogik aktualisiert
- authorized_keys-Erkennungslogik aktualisiert
- Server-Risikoprüfung um JDWP- und Python-HTTP-Server-Prüfung erweitert
- Docker-Container-Erkennung hinzugefügt
- PAM-Backdoor-Erkennung hinzugefügt
- Lokale Bericht-Hochlade-Funktion hinzugefügt, um Stapelverarbeitung von Maschinen in Notfällen zu bewältigen.
Changelog: 5. August 2022
- Problem mit übermäßigen Kernelmodul-Prüfprotokollen behoben
Changelog: 7. März 2022
- SSH-Symlink-Backdoor-Erkennung hinzugefügt
Aktualisierungsdatum: 17. Oktober 2021
- Ntpclient/WorkMiner/TeamTNT-Mining-Trojaner-Erkennung hinzugefügt
- Rootkit-Modul-Erkennungslogik hinzugefügt
- Python-Pip-Vergiftungserkennung hinzugefügt
- Anzeige von $HOME/.profile hinzugefügt
- Server-Risikoprüfung (Redis) hinzugefügt
Funktionen
- Basis-Konfigurationsprüfung
- Überprüfung auf Systemkonfigurationsänderungen
- Systeminformationen (IP-Adresse/Benutzer/Startzeit/Systemversion/Hostname/Server-SN)
- CPU-Auslastung
- Angemeldete Benutzerinformationen
- CPU TOP 15
- Speicher TOP 15
- Überprüfung des verbleibenden Festplattenspeichers
- Festplatten-Mounts
- Überprüfung gängiger Software
- /etc/hots
- Netzwerk-/Verkehrsprüfung
- ifconfig
- Netzwerkverkehr
- Port-Überwachung
- Öffentlich zugängliche Ports
- Netzwerkverbindungen
- TCP-Verbindungsstatus
- Routing-Tabelle
- Routing-Weiterleitung
- DNS-Server
- ARP
- Überprüfung auf Promiscuous Mode der Netzwerkkarte
- iptables-Firewall
- Aufgabenplanungsprüfung
- Aktuelle Benutzeraufgabenplanung
- /etc/ Systemaufgabenplanung
- Erstellungszeitpunkt der Aufgabenplanungsdateien
- Crontab-Backdoor-Überprüfung
- Umgebungsvariablenprüfung
- env
- path
- LD_PRELOAD
- LD_ELF_PRELOAD
- LD_AOUT_PRELOAD
- PROMPT_COMMAND
- LD_LIBRARY_PATH
- ld.so.preload
- Benutzerinformationsprüfung
- Anmeldbare Benutzer
- Änderungsdatum der passwd-Datei
- sudoers
- Anmeldeinformationen (w/last/lastlog)
- Historische Anmelde-IPs
- Dienste-Prüfung
- SystemD-Ausführungsdienste
- Erstellungszeitpunkt der SystemD-Dienste
- Bash-Prüfung
- History
- History-Befehlsprüfung
- /etc/profile
- $HOME/.profile
- /etc/rc.local
- ~/.bash_profile
- ~/.bashrc
- Bash-Reverse-Shell
- Dateiprüfung
- ... Versteckte Dateien
- Überprüfung der Änderungszeit von Systemdateien
- Überprüfung temporärer Dateien (/tmp /var/tmp /dev/shm)
- alias
- SUID-Berechtigungsprüfung
- Prozess vorhanden, aber Datei nicht gefunden
- Dateiänderungen der letzten 7 Tage (mtime)
- Dateiänderungen der letzten 7 Tage (ctime)
- Große Dateien >200 MB
- Prüfung sensibler Dateien (nmap/sqlmap/ew/frp/nps usw., häufig von Hackern verwendete Tools)
- Verdächtige Hackerdateien (von Hackern hochgeladene Programme wie wget/curl oder bösartige Programme, die als normale Software getarnt sind, z. B. nps-Datei in mysql umbenannt)
- Kernel-Rootkit-Prüfung
- Verdächtige Module (lsmod)
- Kernel-Symboltabellen-Prüfung
- Rootkit-Hunter-Prüfung
- Rootkit-.ko-Modulprüfung
- SSH-Prüfung
- SSH-Brute-Force
- SSHD-Erkennung
- SSH-Backdoor-Konfiguration
- SSH-inetd-Backdoor-Prüfung
- SSH-Key
- Webshell-Prüfung
- PHP-Webshell-Prüfung
- JSP-Webshell-Prüfung
- Mining-Dateien/Prozessprüfung
- Mining-Dateiprüfung
- Mining-Prozessprüfung
- WorkMiner-Erkennung
- Ntpclient-Erkennung
- Lieferkettenvergiftungsprüfung
- Python-PIP-Vergiftungsprüfung
- Server-Risikoprüfung
- Redis-Schwachpasswort-Erkennung
- JDWP-Dienst-Erkennung
- Python http.server-Erkennung
- Docker-Berechtigungsprüfung
Verwendung
Erste Methode: Installation über git clone
git clone https://github.com/al0ne/LinuxCheck.git
chmod u+x LinuxCheck.sh
./LinuxCheck.sh
Zweite Methode: Direkter Online-Aufruf [Bei Online-Aufruf kann die Bericht-Hochlade-Funktion nicht genutzt werden]
bash -c "$(curl -sSL https://raw.githubusercontent.com/al0ne/LinuxCheck/master/LinuxCheck.sh)"
Die Datei wird im Format ipaddr_hostname_username_timestamp.log gespeichert.
Bericht automatisch hochladen
Wenn Sie Skripte auf mehreren Maschinen ausführen, wird der Bericht nach der Ausführung automatisch an eine URL gesendet. Ändern Sie die webhook_url im Skript in Ihre eigene Adresse.
# Bericht hochladbare Adresse
webhook_url='http://localhost:5000/upload'
upload_report() {
# Hochladen an die angegebene Schnittstelle
if [[ -n $webhook_url ]]; then
curl -X POST -F "file=@$filename" "$webhook_url"
fi
}
Starten Sie einen Dienst mit Flask auf Ihrem Server, um die von den Servern gemeldeten Markdown-Berichte zu empfangen.
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_file():
if 'file' not in request.files:
return "No file part", 400
file = request.files['file']
if file.filename == '':
return "No selected file", 400
if file:
filename = file.filename
file.save(filename)
return "File successfully uploaded", 200
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9999)
Referenzen
Die Erstellung dieses Tools basiert hauptsächlich auf den folgenden Tools/Artikeln und persönlichen Erfahrungen.
Linenum
https://github.com/lis912/Evaluation_tools
https://ixyzero.com/blog/archives/4.html
https://github.com/T0xst/linux
https://github.com/grayddq/GScan