ÚPRAVA 2 :
existuje jeden dobrý důvod, proč tento příspěvek přitahuje tolik pozornosti:podařilo se vám nahrát celou, živou relaci vetřelce na vašem PC. To je velmi odlišné od naší každodenní zkušenosti, kdy se zabýváme objevováním následků jeho činů a snažíme se je napravit. Tady ho vidíme při práci, vidíme, že má nějaké problémy se zřízením zadních vrátek, vrací se zpět, pracuje horečně (možná proto, že seděl u vašeho stolu, jak bylo navrženo výše, nebo možná, a podle mého názoru pravděpodobněji, protože byl nedokáže spustit svůj malware v systému, přečtěte si níže) a pokuste se nasadit plně soběstačné nástroje kontroly. Toho jsou bezpečnostní výzkumníci denně svědky se svými pasti na med . Pro mě je to velmi vzácná příležitost a zdroj jistého pobavení.
Určitě jste byli hacknuti. Důkazy pro to ne pocházejí z fragmentu auth.log
soubor, který jste zobrazili, protože to hlásí neúspěšný pokus o přihlášení, ke kterému došlo během krátké doby (dvě sekundy). Všimnete si, že druhý řádek uvádí Failed password
, zatímco třetí hlásí pre-auth
odpojit:ten chlap to zkusil a selhal.
Důkazy pocházejí místo toho z obsahu dvou souborů http://222.186.30.209:65534/yjz
a http://222.186.30.209:65534/yjz1
který útočník stáhl do vašeho systému.
Stránka je v současné době otevřena komukoli, aby si je mohl stáhnout, což jsem udělal. Nejprve jsem spustil file
na nich, což ukazovalo:
$ file y*
yjz: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped
yjz1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped
Pak jsem je přenesl na 64bitový Debian VM, který mám; zkoumání jejich obsahu prostřednictvím strings
příkaz odhalil mnoho podezřelého (odkaz na různé známé útoky, příkazy, které je třeba nahradit, skript, který byl jasně použit k nastavení nové služby atd.).
Poté jsem vytvořil MD5-hash obou souborů a vložil je do hašovací databáze Cymru, abych zjistil, zda jsou známými agenty malwaru. Zatímco yjz
není, yjz1
je a Cymru uvádí pravděpodobnost detekce antivirovým softwarem 58 %. Také uvádí, že tento soubor byl naposledy viděn před třemi dny, takže je poměrně nedávný.
Spuštění clamscan (součást clamav
package) na dvou souborech, které jsem získal:
$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND
takže jsme si nyní jisti, že standardní linuxový software jej dokáže identifikovat.
Co byste měli udělat?
I když je tento systém poměrně nový, ani jeden z nich není příliš nový, viz například tento článek o XorDdos z ledna 2015. Většina bezplatných balíčků by jej tedy měla umět odstranit. Měli byste zkusit:clamav
, rkhunter
, chkrootkit
. Prohledal jsem kolem a viděl jsem, že tvrdí, že to dokážou najít. Použijte je ke kontrole práce předchůdce, ale po spuštění těchto tří programů byste měli být připraveni jít.
Pokud jde o větší otázku, what should you do to prevent future infections
, Journeymanova odpověď je dobrý první krok. Jen mějte na paměti, že je to neustálý boj, který jsme všichni (včetně mě!) mohli velmi dobře prohrát, aniž bychom o tom věděli.
UPRAVIT :
Na (nepřímou) výzvu Viktora Totha bych rád přidal několik poznámek. Je jistě pravda, že narušitel narazil na určité potíže:stáhne si dva odlišné hackerské nástroje, několikrát změní jejich oprávnění, několikrát je restartuje a mnohokrát se pokusí vypnout firewall. Je snadné uhodnout, co se děje:očekává, že jeho hackerské nástroje otevřou komunikační kanál směrem k jednomu z jeho infikovaných počítačů (viz dále), a když nevidí, že se tento nový kanál objevil na jeho ovládacím GUI, bojí se jeho hacknutí. nástroj je blokován firewallem, takže postup instalace zopakuje. Souhlasím s Viktorem Tóthem, že tato konkrétní fáze jeho operace, jak se zdá, nepřináší očekávané ovoce, ale rád bych vás velmi silně povzbudil. nepodceňovat rozsah škod způsobených vašemu počítači.
Poskytuji zde částečný výstup strings yjz1
:
etc/init.d/%s
/etc/rc%d.d/S90%s
--del
chkconfig
remove
update-rc.d
/etc/cron.hourly/gcc4.sh
/etc/rc.d/rc%d.d/S90%s
--add
defaults
/proc/%d/exe
/proc/self/exe
HOME=/
MYSQL_HISTFILE=/dev/null
#!/bin/sh
# chkconfig: 12345 90 90
# description: %s
### BEGIN INIT INFO
# Provides: %s
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 4 5
# Default-Stop:
# Short-Description: %s
### END INIT INFO
case $1 in
start)
stop)
esac
sed -i '/\/etc\/cron.hourly\/gcc4.sh/d' /etc/crontab && echo '*/3 * * * * root /etc/cron.hourly/gcc4.sh' >> /etc/crontab
etc/init.d/%s
GET %s HTTP/1.1
%sHost: %s
POST %s HTTP/1.1
%sHost: %s
Content-Type: application/x-www-form-urlencoded
Content-Length: %d
%s%s
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; TencentTraveler ; .NET CLR 1.1.4322)
Connection: Keep-Alive
To poskytuje důkaz o manipulaci se službami (v /etc/init.d
a v /etc/rc.d
), s crontab
, se souborem historie mysql
a několik souborů v proc
což jsou odkazy na bash
(což naznačuje, že byla nasazena na zakázku vyrobená podvodná verze vaší skořápky). Poté program vygeneruje požadavek HTTP (na čínsky mluvící web,
Accept-Language: zh-cn
což dává podstatu výše uvedenému komentáři Davida Schwartze), což může způsobit ještě větší zmatek. V požadavku jsou binární soubory (Content-Type: application/x-www-form-urlencoded
) mají být staženy do napadeného počítače (GET) a nahrány do řídícího stroje (POST). Nepodařilo se mi zjistit, co by se stáhlo do napadeného počítače, ale vzhledem k malé velikosti obou yjz
a yjz1
(1,1 MB a 600 kB, v uvedeném pořadí), mohu si dovolit předpokládat, že většina souborů potřebovala k maskování rootkitu, tj. změněné verze ls
, netstat
, ps
, ifconfig
,..., by bylo staženo tímto způsobem. A to by vysvětlovalo horečné pokusy útočníka o spuštění tohoto stahování.
Není jisté, že výše uvedené vyčerpává všechny možnosti:určitě nám chybí část přepisu (mezi řádky 457 a 481) a nevidíme odhlášení; dále zvláště znepokojivé jsou řádky 495-497,
cd /tmp; ./yd_cd/make
které odkazují na soubor, který jsme neviděli stažený, a které mohou být kompilace:pokud ano, znamená to, že útočník (konečně?) pochopil, v čem byl problém s jeho spustitelnými soubory, a snaží se jej opravit, v takovém případě je napadený počítač definitivně pryč. [Ve skutečnosti dvě verze malwaru, které si útočník stáhl na hacknutý počítač (a já na svůj 64bitový virtuální počítač Debian), jsou pro nevhodnou architekturu x86, zatímco samotný název hacknutého počítače prozrazuje skutečnost, že zabýval se architekturou ramen].
Důvodem, proč jsem napsal tuto úpravu, je co nejdůrazněji vás vyzvat, abyste svůj systém pročesali profesionálním nástrojem, nebo jej přeinstalovali od začátku.
A mimochodem, pokud by se to někomu ukázalo jako užitečné, toto je seznam 331 IP adresy, na které je yjz
pokusí se připojit. Tento seznam je tak velký (a pravděpodobně je předurčen k tomu, aby se ještě zvětšil), že se domnívám, že toto je důvod manipulace s mysql
. Seznam poskytnutý druhým zadním vrátkem je identický, což je, předpokládám, důvod, proč nechat tak důležitou informaci venku (myslím útočník se nechtěl snažit uložit je ve formátu jádra, a tak celý seznam vložil do souboru s čistým textem, který pravděpodobně čtou všechny jeho zadní vrátka, pro kterýkoli OS):
61.132.163.68
202.102.192.68
202.102.213.68
202.102.200.101
58.242.2.2
202.38.64.1
211.91.88.129
211.138.180.2
218.104.78.2
202.102.199.68
202.175.3.3
202.175.3.8
202.112.144.30
61.233.9.9
61.233.9.61
124.207.160.110
202.97.7.6
202.97.7.17
202.106.0.20
202.106.46.151
202.106.195.68
202.106.196.115
202.106.196.212
202.106.196.228
202.106.196.230
202.106.196.232
202.106.196.237
202.112.112.10
211.136.17.107
211.136.28.231
211.136.28.234
211.136.28.237
211.147.6.3
219.141.136.10
219.141.140.10
219.141.148.37
219.141.148.39
219.239.26.42
221.130.32.100
221.130.32.103
221.130.32.106
221.130.32.109
221.130.33.52
221.130.33.60
221.176.3.70
221.176.3.73
221.176.3.76
221.176.3.79
221.176.3.83
221.176.3.85
221.176.4.6
221.176.4.9
221.176.4.12
221.176.4.15
221.176.4.18
221.176.4.21
58.22.96.66
218.104.128.106
202.101.98.55
211.138.145.194
211.138.151.161
211.138.156.66
218.85.152.99
218.85.157.99
222.47.29.93
202.101.107.85
119.233.255.228
222.47.62.142
122.72.33.240
211.98.121.27
218.203.160.194
221.7.34.10
61.235.70.98
113.111.211.22
202.96.128.68
202.96.128.86
202.96.128.166
210.21.3.140
210.21.4.130
211.95.193.97
211.98.2.4
211.98.4.1
211.162.61.225
211.162.61.235
211.162.61.255
211.162.62.1
211.162.62.60
221.4.66.66
202.103.176.22
202.96.144.47
210.38.192.33
202.96.134.33
202.96.134.133
202.96.154.15
210.21.196.6
221.5.88.88
202.103.243.112
202.193.64.33
61.235.164.13
61.235.164.18
202.103.225.68
221.7.136.68
202.103.224.68
211.97.64.129
211.138.240.100
211.138.242.18
211.138.245.180
221.7.128.68
222.52.118.162
202.98.192.67
202.98.198.167
211.92.136.81
211.139.1.3
211.139.2.18
202.100.192.68
211.97.96.65
211.138.164.6
221.11.132.2
202.100.199.8
202.99.160.68
202.99.166.4
202.99.168.8
222.222.222.222
202.102.224.68
202.102.227.68
222.85.85.85
222.88.88.88
210.42.241.1
202.196.64.1
112.100.100.100
202.97.224.68
219.235.127.1
61.236.93.33
211.93.24.129
211.137.241.34
219.147.198.230
202.103.0.68
202.103.0.117
202.103.24.68
202.103.44.150
202.114.0.242
202.114.240.6
211.161.158.11
211.161.159.3
218.104.111.114
218.104.111.122
218.106.127.114
218.106.127.122
221.232.129.30
59.51.78.210
61.234.254.5
202.103.96.112
219.72.225.253
222.243.129.81
222.246.129.80
211.142.210.98
211.142.210.100
220.168.208.3
220.168.208.6
220.170.64.68
218.76.192.100
61.187.98.3
61.187.98.6
202.98.0.68
211.93.64.129
211.141.16.99
202.98.5.68
219.149.194.55
211.138.200.69
202.102.3.141
202.102.3.144
58.240.57.33
112.4.0.55
114.114.114.114
114.114.115.115
202.102.24.34
218.2.135.1
221.6.4.66
221.131.143.69
202.102.8.141
222.45.0.110
61.177.7.1
218.104.32.106
211.103.13.101
221.228.255.1
61.147.37.1
222.45.1.40
58.241.208.46
202.102.9.141
202.102.7.90
202.101.224.68
202.101.226.68
211.141.90.68
211.137.32.178
202.96.69.38
211.140.197.58
219.149.6.99
202.96.86.18
101.47.189.10
101.47.189.18
118.29.249.50
118.29.249.54
202.96.64.68
202.96.75.68
202.118.1.29
202.118.1.53
219.148.204.66
202.99.224.8
202.99.224.67
211.90.72.65
211.138.91.1
218.203.101.3
202.100.96.68
211.93.0.81
222.75.152.129
211.138.75.123
202.102.154.3
202.102.152.3
219.146.1.66
219.147.1.66
202.102.128.68
202.102.134.68
211.138.106.19
211.90.80.65
202.99.192.66
202.99.192.68
61.134.1.4
202.117.96.5
202.117.96.10
218.30.19.40
218.30.19.50
116.228.111.118
180.168.255.18
202.96.209.5
202.96.209.133
202.101.6.2
211.95.1.97
211.95.72.1
211.136.112.50
211.136.150.66
119.6.6.6
124.161.97.234
124.161.97.238
124.161.97.242
61.139.2.69
202.98.96.68
202.115.32.36
202.115.32.39
218.6.200.139
218.89.0.124
61.139.54.66
61.139.39.73
139.175.10.20
139.175.55.244
139.175.150.20
139.175.252.16
168.95.1.1
210.200.211.193
210.200.211.225
211.78.130.1
61.31.1.1
61.31.233.1
168.95.192.1
168.95.192.174
61.60.224.3
61.60.224.5
202.113.16.10
202.113.16.11
202.99.96.68
202.99.104.68
211.137.160.5
211.137.160.185
219.150.32.132
202.98.224.68
211.139.73.34
61.10.0.130
61.10.1.130
202.14.67.4
202.14.67.14
202.45.84.58
202.45.84.67
202.60.252.8
202.85.128.32
203.80.96.9
203.142.100.18
203.142.100.21
203.186.94.20
203.186.94.241
221.7.1.20
61.128.114.133
61.128.114.166
218.202.152.130
61.166.150.123
202.203.128.33
211.98.72.7
211.139.29.68
211.139.29.150
211.139.29.170
221.3.131.11
222.172.200.68
61.166.150.101
61.166.150.139
202.203.144.33
202.203.160.33
202.203.192.33
202.203.208.33
202.203.224.33
211.92.144.161
222.221.5.240
61.166.25.129
202.96.103.36
221.12.1.227
221.130.252.200
222.46.120.5
202.96.96.68
218.108.248.219
218.108.248.245
61.130.254.34
60.191.244.5
202.96.104.15
202.96.104.26
221.12.33.227
202.96.107.27
61.128.128.68
61.128.192.68
218.201.17.2
221.5.203.86
221.5.203.90
221.5.203.98
221.7.92.86
221.7.92.98
Následující kód
#!/bin/bash
echo 0 > out
while read i; do
whois $i | grep -m 1 -i country >> out
done < filename
cat out | grep -i cn | wc -l
ve výše uvedeném seznamu ukazuje, že 302 z celkových 331 adresy jsou v pevninské Číně, zbývající jsou v Hong Kongu, Mongolsku, Tchaj-wanu. To přidává další podporu tvrzení Davida Schwartze, že se většinou jedná o čínský botanický kroužek.
ÚPRAVA 3
Na žádost @vaid (autor OP, čtěte jeho komentář níže) přidám komentář, jak posílit bezpečnost základního linuxového systému (pro systém poskytující mnoho služeb je to daleko složitější téma). vaid
uvádí, že udělal následující:
Přeinstalujte systém
změnil heslo uživatele root na heslo dlouhé 16 znaků se smíšenými malými a velkými písmeny a znaky a číslice.
Uživatelské jméno bylo změněno na smíšené uživatelské jméno o délce 6 znaků a bylo použito stejné heslo jako pro root
změnil port SSH na něco nad 5000
vypnul SSH root přihlášení.
To je v pořádku (kromě toho, že používám port nad 10 000, protože mnoho užitečných programů používá porty pod 10 000). Ale Nemohu dostatečně zdůraznit potřebu používat kryptografické klíče pro přihlášení ssh , místo hesel. Dám vám osobní příklad. Na jednom z mých VPS jsem si nebyl jistý, zda změnit port ssh; Nechal jsem to ve 22, ale pro ověření jsem použil kryptoklíče. Měl jsem jich stovky pokusů o vloupání za den , žádnému se to nepodařilo. Když jsem unavený každodenní kontrolou, že se to nikomu nepodařilo, nakonec přepnul port na něco nad 10 000, pokusy o vloupání byly nulové. Nezapomínejte, že hackeři nejsou hloupí (nejsou!), ale loví snadnější kořist.
Je snadné aktivovat kryptoklíč pomocí RSA jako podpisového algoritmu, viz komentář níže od Jana Hudce (díky!):
cd; mkdir .ssh; chmod 700 .ssh; cd .ssh; ssh-keygen -t rsa (then hit <kbd>ENTER>/kbd> three times); cat id_rsa.pub >> authorized_keys; chmod 600 *
Nyní vše, co musíte udělat, je zkopírovat soubor id_rsa
k počítači, ze kterého se chcete připojit (v adresáři .ssh
, také chmod
'ed to 700), poté zadejte příkaz
ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa [email protected]
Když jste si jisti, že to funguje, upravte na serveru (=stroj, ke kterému se chcete připojit) soubor /etc/ssh/sshd_config
a změňte řádek
#PasswordAuthentication yes
do
PasswordAuthentication no
a restartujte ssh
služba (service ssh restart
nebo systemctl restart ssh
, nebo něco takového, v závislosti na distribuci).
Tohle vydrží hodně. Ve skutečnosti v současnosti nejsou známy žádné exploity proti aktuálním verzím openssh v2
a RSA, jak ji používá openssh v2
.
A konečně, abyste mohli svůj počítač skutečně vypnout, budete muset nakonfigurovat firewall (netfilter/iptables) následovně:
iptables -A INPUT -p tcp --dport YourChosenNonStandardPort -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
To 1) umožňuje připojení ssh z LAN i WAN, 2) umožňuje veškerý vstup, který vznikl na základě vašich požadavků (například když načítáte webovou stránku), 3) umístí vše ostatní na vstup, 4) povoluje vše na výstup a 5-6) umožňuje vše na rozhraní zpětné smyčky.
Jak vaše potřeby rostou a je potřeba otevřít více portů, můžete tak učinit přidáním pravidel na začátek seznamu jako:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
například umožnit lidem přístup k vašemu webovému prohlížeči.
Vítejte na internetu – kde bude jakýkoli otevřený SSH server pravděpodobně prozkoumán, násilně vynucen a bude na něj uvalena různá pohoršení.
Chcete-li začít, musíte zcela vymazat úložiště na produktu. Obrázek jej, pokud jej chcete předat pro forenzní účely, ale instalace Linuxu na něj je nyní podezřelá.
Trochu dohady, ale
-
Máte hrubou sílu nebo použijte společné heslo. Je to zabezpečení pomocí nejasností, ale nechcete heslo ze slovníku nebo používat účet root otevřený pro SSH. Zakažte root SSH přístup, pokud je to možnost, nebo alespoň změňte název, aby museli uhodnout obojí. SSHing jako root je každopádně hrozná bezpečnostní praxe. Pokud musíte použít root, přihlaste se jako jiný uživatel a použijte su nebo sudo pro přepnutí.
-
V závislosti na produktu možná budete chtít přístup SSH nějakým způsobem uzamknout. Úplné uzamčení zní jako dobrý nápad a umožňuje uživatelům jej otevřít podle potřeby . V závislosti na tom, jaké prostředky můžete ušetřit, zvažte povolení pouze IP adres ve vaší vlastní podsíti nebo nějaký druh systému omezení přihlášení. Pokud jej na konečném produktu nepotřebujete, ujistěte se, že je vypnutý.
-
Použijte nestandardní port. Zabezpečení opět neznámým, ale to znamená, že útočník musí cílit na váš port.
-
Nikdy nepoužívejte výchozí heslo. Nejlepší přístup, který jsem viděl, je náhodně vygenerovat heslo pro konkrétní zařízení a odeslat ho s vaším produktem. Nejlepší praxí je autentizace založená na klíčích, ale nemám ponětí, jak byste k tomu přistupovali u produktu pro masový trh.
Oh, určitě jste byli hacknuti. Zdá se, že někdo byl schopen získat přihlašovací údaje root a pokusil se stáhnout trojského koně do vašeho systému. MariusMatutiae poskytl analýzu užitečného zatížení.
Vyvstávají dvě otázky:a) Byl útočník úspěšný? A b) co s tím můžete udělat?
Odpověď na první otázku může být ne. Všimněte si, jak se útočník opakovaně pokouší stáhnout a spustit datovou část, zjevně neúspěšně. Mám podezření, že mu něco (SELinux, snad?) stálo v cestě.
OVŠEM:Útočník také změnil vaše /etc/rc.d/rc.local
soubor, v naději, že po restartování systému bude datová část aktivována. Pokud jste systém ještě nerestartovali, nerestartujte jej, dokud neodstraníte tyto změny z /etc/rc.d/rc.local
. Pokud jste jej již restartovali... no, smůla.
Co s tím můžete udělat:Nejbezpečnější je vymazat systém a znovu nainstalovat od začátku. Ale to nemusí být vždy možnost. Podstatně méně bezpečná věc je analyzovat přesně to, co se stalo, a vymazat každou stopu, pokud můžete. Opět, pokud jste ještě nerestartovali systém, možná vše, co potřebujete, je čisté /etc/rc.d/rc.local
, odstraňte vše, co si útočník stáhl, a v neposlední řadě změňte zatracené heslo!
Pokud však útočník již byl schopen spustit datovou část, mohou ve vašem systému existovat další úpravy, které může být obtížné odhalit. To je důvod, proč je úplné vymazání skutečně jedinou bezpečnou (a doporučenou) možností. Jak jste uvedl, dotyčné vybavení může být testovací/vývojový cíl, takže jeho otírání možná není tak bolestivé, jako může být v jiných případech.
Aktualizovat :Nehledě na to, co jsem napsal o možném uzdravení, rád bych zopakoval, že MariusMatutiae je velmi silný doporučení nepodceňovat potenciální škody způsobené tímto užitečným zatížením a rozsah, v jakém mohlo ohrozit cílový systém.