GNU/Linux >> Znalost Linux >  >> Linux

Prozkoumejte napadené servery

Tento článek obsahuje seznam nástrojů, které jsou k dispozici pro provádění analýzy kompromitovaného serveru. (Čištění napadeného serveru je mimo jeho rozsah.) Pomocí těchto nástrojů můžete zjistit následující informace:

  • Vstupní bod
  • Původ útoku
  • Které soubory byly ohroženy
  • Úroveň přístupu, kterou útočník získal
  • Audit stopa útočníka

Unix® server může zneužít mnoho různých typů kompromisů. Útočníci mohou spustit útok hrubou silou, uhodnout slabé heslo nebo se pokusit použít známé zranitelnosti softwaru v naději, že server nemá pravidelný plán oprav. Je důležité pochopit, jak byl počítač napaden, abyste mohli určit rozsah poškození vašeho serveru a dalších hostitelů, kteří jsou pro napadený počítač přístupní.

U většiny kompromisů na úrovni root je nejpřímější přístup k obnově provedení čisté instalace serveru a obnovení všech důležitých dat ze záloh. Dokud však neznáte vstupní bod kompromisu, tento krok nemusí být dostatečný, protože musíte porozumět kompromisu, abyste mohli správně uzavřít bezpečnostní díru.

Zdokumentujte útok

Když budete upozorněni, že systém pod vaší kontrolou může být kompromitován, ujistěte se, že jste od reportéra získali co nejvíce informací, včetně následujících položek:

  • Jak byl zjištěn počáteční problém
  • Odhadovaný čas, kdy došlo ke kompromitaci
  • Zda byl server po zjištění kompromitace změněn
  • Cokoli jiného, ​​co reportér říká, je důležité

Důležité :Pokud plánujete zapojit policii, je nutné, abyste na serveru neprováděli žádné další akce. Server musí zůstat v aktuálním stavu pro účely shromažďování důkazů.

Pokud se rozhodnete pokračovat ve vyšetřování, zdokumentujte vše, co najdete na serveru. Tento krok může být stejně jednoduchý jako zkopírování a vložení příkazu a jeho výsledků.

Nástroje pro vyšetřování

V některých kompromisech se útočníkovi podaří odstranit všechny důležité soubory protokolu, aby skryl své stopy. K tomu však vždy nedochází. Výsledkem je, že soubory protokolu obsahují cenná vodítka o tom, co útočník se serverem provedl. Soubory Thelog vám také mohou pomoci určit, zda byl útok základním webovým hackem nebo kompromisem na úrovni kořenů. Použijte příkazy v této části k nalezení vodítek, které vám pomohou rozluštit rozsah kompromisu.

poslední příkaz

poslední příkaz uvádí relace uživatelů, kteří se nedávno přihlásili do systému. Jeho výstup obsahuje časová razítka a názvy hostitelů a označuje, zda je uživatel stále přihlášen. Pokud se ve výstupu objeví lichá adresa internetového protokolu (IP), můžete ji porovnat proti útoku brutální silou Secure Shell (SSH) v /var/log/messages nebo /var/log/secure adresář. Tento krok by mohl naznačovat, jak útočník získal záznam, jaké uživatelské jméno použil k získání přístupu a zda se mu podařilo eskalovat svá oprávnění na root .

příkaz ls -lart

ls -lart příkaz vygeneruje časově uspořádaný seznam souborů a adresářů, které můžete porovnat, když došlo ke kompromitaci. Tento výstup vám může pomoci určit, co útok přidal nebo odstranil ze systému.

příkaz netstat -na

Parametr netstat -na příkaz zobrazí aktuální naslouchající sokety na počítači. Spuštění tohoto příkazu může odhalit všechna zadní vrátka, která naslouchají, nebo spuštěné chybné služby.

příkaz ps -wauxef

Tento příkaz vám pomůže vystopovat všechny chybné procesy, které naslouchají, a zobrazí další zvláštní procesy (například uživatel www spuštění procesu Bash). Můžete také spustit příkaz lsof |grep najít další informace o otevřených souborech, které proces používá. Současně spusťte cat /proc//cmdline může vám také říci, kde existuje soubor, který řídí proces.

příkaz bash_history

Soubor historie je často Rosettským kamenem při hledání toho, co si vyžádalo kompromis. Pomocí bash_history příkaz k prohlížení .bash_history uživatele často přesně ukazuje, jaké příkazy provedli, jaké škodlivé programy stáhli a adresáře, na které se zaměřili.

top příkaz

Škodlivé procesy často způsobují problémy se spory o centrální procesorovou jednotku (CPU) v prostředí, a proto se objevují v horní části seznamu procesů. Použijte top příkaz pro zobrazení tohoto seznamu. Když sledujete kompromis, považujte všechny procesy, které způsobují problémy se spory o CPU, za podezřelé.

příkaz strace

Když spustíte strace -p pid příkaz na podezřelý proces, strace příkaz může poskytnout důležité informace o tom, co proces dělá.

Další nástroje

Předchozí příkazy nemusí poskytnout mnoho vodítek ohledně toho, co se stalo během útoku. Pokud je to váš případ, můžete použít specializovanější nástroje.

Důležité :Než použijete nástroje v této části, měli byste se ujistit, že binární soubory, které používáte ke zkoumání, nejsou verze s trojskými koňmi. Verze s trojskými koňmi mohou provádět úkoly jménem útočníka, jako je vynechání informací, které by mohly odhalit, čeho se kompromitace snažila dosáhnout.

Spuštěním následujícího příkazu ověřte, zda máte dobře fungující sadu nástrojů:

rpm -Va

Ověření balíčku porovnává informace o nainstalovaných souborech balíčku s metadaty balíčku, která ukládá databáze RPM Package Manager (RPM). Ověření porovnává informace o velikosti, součtu MD5, oprávněních, typu, vlastníkovi a skupině, které jsou přidruženy ke každému souboru. Výstup zobrazuje všechny nesrovnalosti.

Důležité :Balíčky označené příznakem v následujících adresářích mohou naznačovat, že používáte trojanskou verzi binárního souboru, a proto nemůžete důvěřovat jeho výstupu:

  • /bin
  • /sbin
  • /usr/bin
  • /usr/sbin

Následující příklad ukazuje soubor s trojským koněm:

S.5….T /bin/login

příkaz rpm -qa

Můžete použít příkaz rpm -qa zobrazit nedávno nainstalované balíčky v chronologickém pořadí. V případě ohrožení rootem však může být ohrožena i databáze rpm.

příkaz lsattr

Pokud útočník získá přístup root a trojské koně k určitým binárním souborům, mohou tyto binární soubory učinit neměnnými, takže nebudete moci znovu nainstalovat jejich čisté verze. Zkontrolujte následující adresáře:

  • /bin
  • /sbin
  • /usr/bin
  • /usr/sbin

Následující příklad ukazuje soubor, který útočník učinil neměnným:

-------i----- /bin/ps
Under normal circumstances in these directories, the rules should all look similar to:

------------- /bin/ps

příkaz hledání

najít je unixový nástroj, který může být kritický při hledání nedávno upravených souborů. Soubory upravené během posledních pěti dnů můžete například najít spuštěním následujícího příkazu:

find / -mtime 5

Běžné adresáře pro webové exploity

Zkontrolujte následující světově zapisovatelné adresáře, do kterých Apache® běžně zapisuje dočasné soubory:

  • ls -al /tmp
  • ls -al /var/tmp
  • ls -al /dev/shm

Hledejte všechny soubory, které nepoznáváte nebo které vypadají podezřele. Dávejte pozor na skryté soubory a soubory, které mají oprávnění ke spuštění.

Pokud jste nastavili oprávnění pro adresáře na vašem webu na 777, zkontrolujte také.

Najděte místo vstupu

Pokud najdete užitečné informace pomocí nástrojů v předchozích částech, můžete mít také časové razítko, kdy hacker nainstaloval škodlivý soubor nebo soubory na server.

Toto časové razítko můžete použít ke kontrole protokolů přístupu vašeho webu, zda neobsahují podezřelé položky, které byly přidány během daného časového období. Pokud najdete něco podezřelého, můžete na to odkazovat s umístěním škodlivých souborů a zúžit tak místo vstupu.

Zatímco většina kompromisů pochází ze zneužitelného kódu na vašem webu, nemůžete vyloučit jiné vstupní body. Ujistěte se, že jste si přečetli /var/log/* za vše, co se během nahlášeného časového rámce jeví jako podezřelé.

Příklad vyšetřování

Příklad vyšetřování v této části ukazuje postup, který byste měli použít při vyšetřování podezření na kompromitaci na kořenové úrovni.

Identifikujte typ útoku

Ověřte, zda šlo o základní webový hack, nebo zda útočník skutečně získal práva root. Ve většině případů jde o jednoduchý webový hack, který můžete bezpečně vyčistit.

  1. Spuštěním následujících příkazů zjistěte, zda útočník získal oprávnění root:

    lsattr /usr/sbin | méně

    lsattr /usr/bin | méně

    lsattr /bin | méně

    lsattr /sbin | méně

  2. Hledejte upravené atributy, jako jsou binární soubory, které byly nastaveny na neměnný.

    Výstup:

     s---ia------- /sbin/shs
    

    Když použijete řetězce příkaz k tomuto souboru, uvidíte, že je to backdoorshell.

Zkontrolujte, zda útočník začistil jejich stopy

V mnoha případech jsou útočníci nezkušení nebo nedbalí a nevymazali své stopy. Pomocí následujících kroků zkontrolujte, zda útočník zanechal stopy:

  1. Ověřte, že všechny uživatelské účty v /etc/passwd mít platný shell spuštěním následujícího příkazu:

    cat /home/$USER/.bash_history

  2. Načtěte historii uživatele root spuštěním následujících příkazů:

    historie

    cat /root/.bash_history

V tomto příkladu výstup z /root/.bash_history příkaz odhalí, že útočník provedl na serveru následující akce:

  • Stažené škodlivé nástroje k poskytování prostřednictvím Apache® v /var/www/html/* .
  • Instalované nástroje Internet Relay Chat (IRC) a další nástroje v/var/tmp/.ICE-unix .
  • Upravili kořenový crontab tak, aby si znovu stáhl škodlivé nástroje, pokud je někdo odstraní ze serveru (* * * * * /var/tmp/.ICE-unix/update>/dev/null 2>&1 ).

Zkontrolujte základní webové hacky

Až do této chvíle jsme zjistili, že útok je pravděpodobně jednoduchý webový hack, který můžete snadno vyčistit bez formátování serveru.

V tomto příkladu však víme, že útočník získal oprávnění root. Mohli také zneužít phpMyAdmin . Po načtení backdoor PHP Shell byl útočník schopen provést místní root exploit k eskalaci svých oprávnění.

  1. Spusťte následující příkazy a vyhledejte skryté soubory a adresáře ve světově čitelných adresářích, do kterých Apache obvykle zapisuje tmp soubory:

    ls -al /var/tmp |méně

    ls -al /tmp

    ls -al /dev/shm

  2. V tomto příkladu vrátí příkazy následující výstup:

    drwx—— 3 70 70 4096 19. listopadu 02:00 /var/tmp/.ICE-unix

  3. Pokud zde najdete položky, musíte se pokusit vystopovat vstupní bod, abyste mohli web odstranit, upgradovat kód webu nebo jinak opravit zneužitelný kód. Krok 5 představuje rychlý způsob, jak tento úkol splnit. Pokud je však výstup parametru ps -waux příkaz ukazuje, že IRC roboti běží, pak se můžete pokusit zjistit, odkud proces běží pomocí lsof příkaz nebops -wauxxef |grep .

Hledejte identifikátory procesů, které naslouchají příchozím připojením

  1. Spusťte následující příkazy a vyhledejte identifikátory procesů (PID), které naslouchají příchozím připojením:
  • netstat -natp :Hledá všechna podezřelá připojení, která běží na oddports

  • ps -wauxxef :Hledá podezřelé soubory, jako je bash běžící pod www kontextu

  • lsof :Pomáhá určit, odkud PID běží

    Výstup vypadá podobně jako v následujícím příkladu:

      tcp 0 0 0.0.0.0:1144 0.0.0.0:* LISTEN 1008/bash
    
      tcp 0 1 172.16.23.13:60968 22.22.22.22:7000 SYN_SENT 6860/sshd
    

    V tomto příkladu několik dalších připojení vytvořených pomocí SSH také běží z portů na vysoké úrovni, jak ukazuje následující příklad:

      [root@www tmp]# netstat -natp |grep sshd |awk '{print $4,$5,$6,$7}'
    
      0.0.0.0:22 0.0.0.0:* LISTEN 1046/sshd
    
      172.16.23.13:60986 22.22.22.22:6667 SYN_SENT 6860/sshd
    
      123.123.123.123:22 22.22.22.22:59361 ESTABLISHED 22795/sshd
    
      123.123.123.123:22 22.22.22.22:57434 ESTABLISHED 22796/sshd
    
      123.123.123.123:57139 143.143.143.143:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:57402 22.22.22.22:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:22 143.143.143.143:49238 ESTABLISHED 8860/sshd
    
      123.123.123.123:57134 22.22.22.22:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:56845 22.22.22.22:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:57127 143.143.143.143:6667 ESTABLISHED 6860/sshd
    

    Tento výstup znamená, že útočníci jsou stále připojeni k tomuto počítači. Nevidíte je však, protože pravděpodobně upravili binární soubory, aby se skryli.

Určení vstupního bodu pro původní kompromis

Pomocí následujících kroků určete vstupní bod pro původní kompromis:

  1. Zkontrolujte /var/log/[messages|secure] pro pokusy o SSH hrubou silou.

  2. Zkontrolujte protokoly přístupu Apache a protokoly chyb. Tento krok může pomoci určit, který web je zneužitelný.

    Měli byste také porovnat IP adresy s protokoly, pokud si myslíte, že existuje šance, že by mohly pocházet odtud. Toto je rychlý a přímočarý způsob, jak vysledovat místo původu.

    Servery s velkým počtem webových protokolů můžete rychle zkontrolovat pomocí následujících příkazů:

    cd /var/log/httpd
    
    for i in `ls * |grep access`; do echo $i && grep wget $i; done
    
    for i in `ls * |grep access`; do echo $i && grep curl $i; done
    

    Poznámka :Tento příklad hledá wget protože wget byl v souboru historie root pod tím, co mohlo být součástí vstupního bodu.

Výsledek

V tomto příkladu naše vyšetřování odhalilo, že útočník zneužil phpMyAdmin instalace v /var/www/html adresář, pravděpodobně kvůli verzi phpMyAdmin nainstalovaný na serveru byl značně zastaralý. Oprava phpMyAdmin Pravidelný rozvrh zabrání této situaci.


Linux
  1. Ujistěte se, že se servery úspěšně restartují

  2. Architektura NTP serveru

  3. Příkaz Linuxu, který čeká na spuštění serveru SSH

  1. Jak změnit časové pásmo na serveru RHEL7 Linux

  2. Statistiky serveru CWP

  3. Jak nainstalovat Locate na server Fedory

  1. Zkontrolujte dostupnost systému Windows Server

  2. Nejčastější dotazy ohledně cloudových serverů

  3. Vytvářejte cloudové servery OnMetal