LinuxCheck
Strumento per la risposta alle emergenze Linux / raccolta informazioni / rilevamento vulnerabilità. Supporta oltre 70 controlli in 13 categorie: configurazione di base, traffico di rete, pianificazione attività, variabili d'ambiente, informazioni utente, servizi, bash, file malevoli, rootkit del kernel, SSH, webshell, file di mining, processi di mining, supply chain, rischi del server, ecc.
Aggiornamenti
Registro modifiche: 20 aprile 2024
- Modificato l'output in report Markdown
- Abbandonato ag, si utilizza ancora il comando grep nativo di Linux per evitare installazioni aggiuntive
- Ottimizzato il formato del codice, non è più necessario usare
tee -a per ogni riga
- Aggiornata la logica di rilevamento webshell
- Aggiornata la logica di rilevamento authorized_keys
- Aggiunto il controllo JDWP e Python HTTP Server al controllo dei rischi del server
- Aggiunto il rilevamento dei container Docker
- Aggiunto il rilevamento del backdoor PAM
- Aggiunta la capacità di caricare report locali, per gestire situazioni di emergenza su macchine in blocco.
Registro modifiche: 5 agosto 2022
- Risolto il problema dei log eccessivi nel controllo dei moduli del kernel
Registro modifiche: 7 marzo 2022
- Aggiunto il rilevamento del backdoor con collegamento simbolico SSH
Data aggiornamento: 17 ottobre 2021
- Aggiunto rilevamento dei trojan miner Ntpclient/WorkMiner/TeamTNT
- Aggiunta logica di rilevamento moduli Rootkit
- Aggiunto rilevamento avvelenamento Python pip
- Aggiunta visualizzazione di $HOME/.profile
- Aggiunto controllo rischi server (Redis)
Funzionalità
- Controllo configurazione di base
- Controllo modifiche configurazione di sistema
- Informazioni di sistema (indirizzo IP / utente / tempo di avvio / versione sistema / Hostname / SN server)
- Utilizzo CPU
- Informazioni utenti connessi
- TOP 15 CPU
- TOP 15 memoria
- Controllo spazio libero su disco
- Mount dei dischi
- Controllo software comune
- /etc/hots
- Controllo rete/traffico
- ifconfig
- Traffico di rete
- Porte in ascolto
- Porte aperte verso l'esterno
- Connessioni di rete
- Stato connessioni TCP
- Tabella di routing
- Inoltro di routing
- Server DNS
- ARP
- Controllo modalità promiscua della scheda di rete
- Firewall iptables
- Controllo pianificazione attività
- Pianificazione attività utente corrente
- Pianificazione attività di sistema /etc
- Data creazione file di pianificazione attività
- Verifica backdoor crontab
- Controllo variabili d'ambiente
- env
- path
- LD_PRELOAD
- LD_ELF_PRELOAD
- LD_AOUT_PRELOAD
- PROMPT_COMMAND
- LD_LIBRARY_PATH
- ld.so.preload
- Controllo informazioni utente
- Utenti che possono accedere
- Data modifica file passwd
- sudoers
- Informazioni di login (w/last/lastlog)
- IP di login storici
- Controllo servizi
- Servizi in esecuzione SystemD
- Data creazione servizi SystemD
- Controllo bash
- History
- Audit comandi History
- /etc/profile
- $HOME/.profile
- /etc/rc.local
- ~/.bash_profile
- ~/.bashrc
- Reverse shell bash
- Controllo file
- File nascosti (...)
- Rilevamento data modifica file di sistema
- Controllo file temporanei (/tmp /var/tmp /dev/shm)
- alias
- Controllo permessi speciali SUID
- Processi in esecuzione con file non trovati
- Modifiche file negli ultimi 7 giorni (mtime)
- Modifiche file negli ultimi 7 giorni (ctime)
- File grandi >200MB
- Audit file sensibili (nmap/sqlmap/ew/frp/nps e altri strumenti comunemente usati dagli hacker)
- File sospetti di hacker (programmi come wget/curl caricati da hacker, oppure programmi malevoli rinominati come software legittimo, ad esempio file nps rinominato come mysql)
- Controllo Rootkit del kernel
- Moduli sospetti lsmod
- Controllo tabella dei simboli del kernel
- Controllo rootkit hunter
- Controllo moduli rootkit .ko
- Controllo SSH
- Brute force SSH
- Rilevamento SSHD
- Configurazione backdoor SSH
- Controllo backdoor SSH inetd
- Chiavi SSH
- Controllo Webshell
- Controllo webshell PHP
- Controllo webshell JSP
- Controllo file/processi di mining
- Controllo file di mining
- Controllo processi di mining
- Rilevamento WorkMiner
- Rilevamento Ntpclient
- Controllo avvelenamento supply chain
- Controllo avvelenamento Python PIP
- Controllo rischi server
- Rilevamento password debole Redis
- Rilevamento servizio JDWP
- Rilevamento Python http.server
- Controllo permessi Docker
Utilizzo
Primo metodo: installazione tramite git clone
git clone https://github.com/al0ne/LinuxCheck.git
chmod u+x LinuxCheck.sh
./LinuxCheck.sh
Secondo metodo: esecuzione diretta online [con l'esecuzione online non è possibile utilizzare la funzionalità di caricamento dei report]
bash -c "$(curl -sSL https://raw.githubusercontent.com/al0ne/LinuxCheck/master/LinuxCheck.sh)"
Il file viene salvato nel formato ipaddr_hostname_username_timestamp.log
Caricamento automatico dei report
Se si distribuisce su più macchine, dopo l'esecuzione lo script invierà automaticamente il report a un URL. Modificare webhook_url nello script con il proprio indirizzo.
# Indirizzo per l'invio del report
webhook_url='http://localhost:5000/upload'
upload_report() {
# Carica all'endpoint specificato
if [[ -n $webhook_url ]]; then
curl -X POST -F "file=@$filename" "$webhook_url"
fi
}
Avviare un servizio Flask sul proprio server per ricevere i report Markdown inviati dai server.
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)
Riferimenti
La scrittura di questo strumento si è basata principalmente sui seguenti strumenti/articoli, integrati con l'esperienza personale.
Linenum
https://github.com/lis912/Evaluation_tools
https://ixyzero.com/blog/archives/4.html
https://github.com/T0xst/linux
https://github.com/grayddq/GScan