Arkiv

Archive for the ‘Computers’ Category

Passord i Mac OS X 10.6 «Snow Leopard»

november 11, 2009 Legg igjen en kommentar

Jeg tenkte det var på tide å skrive litt mer om passord, denne gangen om passord i «Snow Leopard». Passordhashingen som brukes i 10.6 er fremdeles saltede SHA-1-hasher. Dette ble introdusert i 10.4, og har vært brukt siden. Hashene er lagret under /var/db/shadow/hash/. Shadow og hash-mappen kan kun nåes som rootbruker, så du vil trenge administratorrettigheter for å prøve det som jeg har gjort her.

Hash-filen består av en mengde nullere, en god del tegn og så en mengde nullere igjen. SHA-1 hashen består av 48 tegn, hvorav de 8 første hexadesimale tegnene (32 bits) er den tilfeldige delen av hashen (kalt et salt). Disse tegnene er tilfeldige og brukes for å generere hashen. Den tilfeldige delen av hashen betyr altså at om flere brukere har samme passord, vil hashen ikke være lik. Når en bruker logger på kjøres passordet gjennom en enveisfunksjon (kalt en hash-funksjon) og sammenlignes med det hashede passordet. Stemmer disse overens får brukeren logget inn.

Siden 10.4 har det også blitt gjor andre forandringer i Mac OS X som har betydning for brukeradministrasjonen:

  • NetInfo-databasen er borte, det samme er alle verktøyene (ncl, nidump etc.) knyttet til denne databasen. Databasen er nå erstattet av XML-filer som finnes i /var/db/dslocal. Håndteringen av det som databasen gjorde er nå delt mellom programmene Katalogverkøy og Kontoer under Systemvalg
  • Directory Utility/Katalogverktøy er også fjernet, men finnes under /System/Library/CoreServices/Katalogverktøy (eller via Systemverktøy -> kontoer -> påloggingsvalg -> koble til …)

Aktivering av root-brukeren gjøres via Katalogverktøy (Rediger -> Aktiver rot-bruker), og for å finne en brukers UID må man altså gå via kontrollpanelet. Det er desverre ingen Terminal-verktøy som kan gi oss denne informasjonen. I en av de tidligere versjonene av Mac OS X (10.1 tror jeg det var) var det faktisk mulig å hente ut hashen også via Terminalkommandoen nidump. Tidene forandrer seg. ;-)

For å cracke et passord, som vi skal gjør nå, trenger man noen verktøy. Passord-crackeren jeg har brukt mest heter John The Ripper og cracker passord ved såkalt bruteforce. Da prøves passord én etter én, hashes, og sammenlignes med den gitte hashen (det er altså ikke selve hashen som crackes). Hvor lang tid det tar å cracke et passord er veldig avhengig av maskinen det gjøres på, hvor godt programmet er (utnytter det f.eks. alle CPU-registerne på en effektiv måte) og ikke minst hvilken algoritme passordet er hashet med.

Gratisversjonen av John The Ripper som du selv kan kompilere støtter ikke salted SHA-1-hasher. Men, det er laget en allerede pre-compilert versjon som kan lastes ned som gjør dette. Ellers finnes det andre programmer som støtter saltede SHA-1-hasher, bla. MacKrack (er lenge siden jeg har brukt det riktignok så jeg vet ikke hvordan det er nå).

Opprettet testbruker
Navn: Ann
Passord: xEmm
UUID: 79C0ABA9-C500-42EA-9901-1BF36C7333C4

Fra /var/db/shadow/hash/79C0ABA9-C500-42EA-9901-1BF36C7333C4

Hash-filen til Ann (med Windows-deling aktivert):

B33822CC510F1C9119690D8972BFDCE300000000000000000000000000000 <– LanMan hash
000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000CD0BDA45C7C657A0E <– SHA1-hash
783AD571AB16CFBA72D86BA7263856A000000000000000000000000000000 <– (resten)
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000

LanMan-hashen, for Windows-deling (32 tegn):
B33822CC510F1C9119690D8972BFDCE3

Saltet SHA-1 (48 tegn):
CD0BDA45C7C657A0E783AD571AB16CFBA72D86BA7263856A

Salt (8 tegn):
CD0BDA45

SHA-1 (40 tegn):
C7C657A0E783AD571AB16CFBA72D86BA7263856A

Cracking av SHA-1 (med pre-compilert John The Ripper (1.7.3.1-macosx-universal) med støtte for saltede SHA-1-hasher):

/john annSHA1.txt
Loaded 1 password hash (Mac OS X 10.4+ salted SHA-1 [32/64])
xEmm (ann)
guesses: 1 time: 0:00:03:12 (3) c/s: 1774K trying: xEmm

Oppsettet av annSHA1.txt:
ann:CD0BDA45C7C657A0E783AD571AB16CFBA72D86BA7263856A

Cracking av LanMan viste jeg kort her. Enjoy! ;-)

Advertisements
Kategorier:Computers

Terminalkommandoene du bør kunne

Etter min mening bør alle som kjører Mac OS X, eller et annet UNIX-basert operativsystem, kunne endel kommandoer i Terminalen. Desverre er de fleste OS X-brukere redde for programmet, og tror det kan gjøre farlige ting med maskinen. Terminalen er bare programmet du bruker for å se operativsystemet ditt fra en annen vinkel; fra den tekstbaserte siden.

Teminalen er lokalisert i /Applications/Utilities eller /Programmer/Verktøy. Dobbelkikk på ikonet for å åpne programmet. Husk at i Terminalen er alle stier (pather) på engelsk, og mapper og filer med norske tegn kan se litt «rare» ut. De fleste kommandoer har parametre, som kan aktiveres ved å skrive et minustegn og deretter en eller flere bokstaver (f.eks. -la). De aller fleste parametre kan kombineres, og de aller fleste kommandoene er også like for de flese UNIX-baserte systemer. (Mac OS X-spesifikke kommandoer er markert i listen nedenfor.) Noen kommandoer eller operasjoner krever av du er root (superbrukeren). Du vil få beskjed om du prøver å gjøre noe du ikke ha rettigheter til. Som root har du alle rettigheter og kan faktisk slette alt du vil, inkludert alle brukerne og operativsystemet selv.

I Terminalen kjører et skjult program som kallet et shell eller skall. Det finnes ulike shell, men alle kommandoene listet nedenfor kan kjøres i alle shell. De fleste shell har også noe som blir kalt «tab completion». Det betyr at om du skriver et kommandonavn eller navnet på for eksempel en fil, holder det å skrive første bokstav og deretter trykke på tab-tasten. Er det flere filer eller kommandoer som begynner med samme bokstav, blir alle listet opp. Du kan også trykke på opp-pilen for å få tilbake de siste kommandoene du har kjørt.

Kommandoene:

  • ls (list)
    Lister filene og mappene i den katalogen/mappen du befinner deg i for øyeblikket.
    -l Lister opp filene som en liste, ikke som kolonner
    -a Lister opp alle filene og mappene, også de usynlige
  • pwd (print working directory)
    Skriver ut stien til den mappen du befinner deg i for øyeblikket.
  • cd <name or path> (change directory)
    Forflytter deg til den navngitte mappen. Du kan angi en full sti, eller bare et navn om mappen du vil flytte deg til er i den mappen du nå befinner deg i. Skriver du kun cd vil du komme tilbake til hjem-mappen din.
  • mkdir <name or path> (make directory)
    Lager en mappen med et gitt navn. Skjulte mapper begynner med punktum.
  • mv <name or path> <new location> (move)
    Flytter en mappe eller fil fra ett sted til et annet.
  • cp <old name> <new name> (copy)
    Koierer en fil fra ett sted til et annet. Du kan kopiere filer/mapper lokalt i en mappe, eller du kan kopiere en fil/mappe fra ett sted på maskinen til et annet.
  • ping <hostname or IP> (ping)
    Pinger (sender små datapakker) fra din maskin til et gitt hostname eller en IP-adresse. Denne kommandoen er fin å bruke for å se om servere er oppe, eller om din egen maskin er på nett. Avslutt kommandoen ved å trykke ctrl-C.
    -c <numer of packets> Sender et gitt antall pakker. Programmet avsluttes når dette antallet med pakker er sendt.
  • uptime (uptime)
    Viser hvor lenge maskinen du er logget inn på har vært oppe.
  • sw_vers (software version) Kun Mac OS X!
    Viser hvilken versjon av OS X og hvilket build-nummer maskinen kjører.
  • man <command name> (manual)
    Dette er kommandoen for å lese manualen til UNIX-kommandoene. En beskrivelse av kommandoen vil vises, samt eventuelle parametre. Trykk q for avslutte.
  • df (disk free/free disk space)
    Hviser hvor mye diskplass som er opptatt og hvor mye som er ledig, på de ulike diskene koblet til maskinen.
    -h Viser dataene i «human-readable form», altså i KB, MB og GB i stedet for bytes.
  • mount (mount)
    Denne kommandoen kan brukes til manuelt mounte (koble til) disker til maskinen. Mac OS X gjøre dette automatisk, men kommandoen kan likevel være nyttig. Ved å bruke kommandoen uten parametrer kan du se hvilke disker som er mountet på maskinen for øyeblikket.

  • sudo (superuser do)
    Dette er kommandoen for å utføre en kommando med root-rettigheter (eller som en annen bruker). For å få lov til dette må være en såkalt «admin». Kommandoen kan brukes ved at du skriver sudo <command name>, eller ved å bruke parameteren s.
    -s Åpnet er helt nytt shell som root-brukeren. Nå kan du gjøre alt uten at det stilles sikkerhetsspørsmål. Vær forsiktig!

Det finnes hundervis av kommandoer og de fleste er lokalisert i /usr/bin, /bin eller /sbin. Du kan også innstallere flere kommandoer eller skrive dine egne for den del! ;-)

Kategorier:Computers

Fra YouTube til iTunes

Her er en metode for hvordan man kan få musikk fra YouTube inn i iTunes og til iPoden:

  1. Finn sangen på youtube.com og la hele filmen lastes inn
  2. I Safari, åpne «Aktivitet», under Vindu-menyen
  3. Dobbelklikk på filmen (se etter den største filen), og filen vil lastes ned
  4. Last ned plug-inen Perian, som gjør det mulig å åpne .flv-filmer i QuickTime
  5. Åpne fimen i QuickTime Pro og velg «Eksporter»
  6. Åpne filen i iTunes og konverter den eventuelt til AAC

Voila!

Kategorier:Computers

Ønskeliste for Mac OS X 10.5 «Leopard»

september 23, 2007 2 kommentarer

Her er min ønskeliste over forbedringer og funksjoner til den nye versjonen av Mac OS X «Leopard«.

  • Et mer stabilt AirPort-kort. «Bus-error» som ender i kernel-panikker er ikke særlig artig..
  • To utgaver av iTunes; en «light-weight» versjon for oss som bare bruker programmet til musikk og ikke alt annet tull.
  • Skikkelig eksportering av spillelister. Sånn som det er nå er det ingen vits, og en spilleliste kan ikke overføres fra en maskin til en annen og brukes om f.eks. antall spilte ganger av en sang er ulikt.
  • Mulighet for å synkronisere mapper eller bibliotek mellom to eller flere maskiner – uten .Mac.
  • En Finder som ikke håndterer av- og pålogging. Kræsjer Finder stygt kan man komme i trøbbel.
  • En raskere og mer responsiv Finder.
  • Raskere Safari.
  • Mulighet for temaer («themes») og mulighet til å få vekk den jævlige «brushed metal» for godt.
  • Mulighet for å beholde de eldre Mac OS X-layoutene, fra f.eks 10.1
  • Mer assemblydokumentasjon, både for PPC og Intel.
  • Direkte tilgang til funksjonsprototyper når man programmerer i XCode (til og med MS har klart dette!)

Mer vil bli lagt til når jeg kommer opp med flere ønsker. :-)

Kategorier:Computers

Pakkestjeling over Telnet

september 16, 2007 10 kommentarer

Det er alment kjent at Telnet er en gammeldags og usikker protokoll. Men hvor usikker er den; stemmer det at passordet virkelig sendes i klartekst? Jeg gjorde en liten test.

Serversiden (10.0.0.2)

  • Start Telnet-serveren: sudo service telnet start
  • Åpne Telnet-porten i brannmuren, port 23 (UDP og TCP)
  • Opprett en dummybruker, dummy:passord

Klientsiden (10.0.0.7)

  • Start X11 /Applications/Utilities og deretter Wireshark: sudo /sw/bin/wireshark
  • Deretter må riktig «interface» velges. Er du usikker, kjør ifconfig i Terminalen og se hvilke som er aktive. Dette er sannsynligvis interface «en0». Trykk deretter på Capture -> Start i Wireshark.

    bilde1.jpg

    img2.jpg

    NB: Wireshark skal virke med trådløse forbindelser (812.11), men jeg klarte ikke å få den til å samarbeide med AirPort.

  • Kjør telnet 10.0.0.2 (adressen vist her må selvsagt byttes ut slik at den passer ditt oppsett), og logg inn med riktig brukernavn og passord.
  • Kjør en eller annen kommando (jeg valgte «who») og logg av med «exit».
  • Stopp Wireshark, Capture -> Stop
  • For å eksportere pakkeinfoen velg File -> Export.

Serversiden (10.0.0.7)

  • Stopp telnet-serveren: sudo service telnet stop
  • Lukk porten i brannmuren og slett dummybrukeren.

Nå, la oss se på noen av pakkene Wireshark sniffet seg gjennom.

No.     Time        Source                Destination           Protocol Info
     42 3.062669    10.0.0.2              10.0.0.7              TELNET   Telnet Data ...

Frame 42 (67 bytes on wire, 67 bytes captured)
Ethernet II, Src: AppleCom_73:-- (--), Dst: AppleCom_37:-- (--)
Internet Protocol, Src: 10.0.0.2 (10.0.0.2), Dst: 10.0.0.7 (10.0.0.7)
Transmission Control Protocol, Src Port: telnet (23), Dst Port: 49178 (49178), Seq: 136, Ack: 168, Len: 1
Telnet
    Data: d

No.     Time        Source                Destination           Protocol Info
     46 3.214600    10.0.0.2              10.0.0.7              TELNET   Telnet Data ...

Frame 46 (67 bytes on wire, 67 bytes captured)
Ethernet II, Src: AppleCom_73:-- (--), Dst: AppleCom_37:-- (--)
Internet Protocol, Src: 10.0.0.2 (10.0.0.2), Dst: 10.0.0.7 (10.0.0.7)
Transmission Control Protocol, Src Port: telnet (23), Dst Port: 49178 (49178), Seq: 137, Ack: 169, Len: 1
Telnet
    Data: u

Her kan vi kanskje ane et mønster (se nederste linje i hver pakke)? Når jeg blir spurt om brukernavn blir hele brukernavnet mitt, «dummy», sendt pakke for pakke (med ekko). Deretter blir jeg spurt om passord, noe jeg sender. Her er et lite utdrag av de sniffede pakkene vist.

No.     Time        Source                Destination           Protocol Info
     64 4.689017    10.0.0.2              10.0.0.7              TELNET   Telnet Data ...

Frame 64 (75 bytes on wire, 75 bytes captured)
Ethernet II, Src: AppleCom_73:-- (--), Dst: AppleCom_37:-- (--)
Internet Protocol, Src: 10.0.0.2 (10.0.0.2), Dst: 10.0.0.7 (10.0.0.7)
Transmission Control Protocol, Src Port: telnet (23), Dst Port: 49178 (49178), Seq: 143, Ack: 174, Len: 9
Telnet
    Data: Password:

No.     Time        Source                Destination           Protocol Info
     65 4.689043    10.0.0.7              10.0.0.2              TCP      49178 > telnet [ACK] Seq=174 Ack=152 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 TSV=1045912861 TSER=9043538

Frame 65 (66 bytes on wire, 66 bytes captured)
Ethernet II, Src: AppleCom_37:-- (--), Dst: AppleCom_73:-- (--)
Internet Protocol, Src: 10.0.0.7 (10.0.0.7), Dst: 10.0.0.2 (10.0.0.2)
Transmission Control Protocol, Src Port: 49178 (49178), Dst Port: telnet (23), Seq: 174, Ack: 152, Len: 0

No.     Time        Source                Destination           Protocol Info
     66 5.664389    10.0.0.7              10.0.0.2              TELNET   Telnet Data ...

Frame 66 (67 bytes on wire, 67 bytes captured)
Ethernet II, Src: AppleCom_37:-- (--), Dst: AppleCom_73:-- (--)
Internet Protocol, Src: 10.0.0.7 (10.0.0.7), Dst: 10.0.0.2 (10.0.0.2)
Transmission Control Protocol, Src Port: 49178 (49178), Dst Port: telnet (23), Seq: 174, Ack: 152, Len: 1
Telnet
    Data: p

No.     Time        Source                Destination           Protocol Info
     67 5.670993    10.0.0.2              10.0.0.7              TCP      telnet > 49178 [ACK] Seq=152 Ack=175 Win=65535 Len=0 TSV=9043540 TSER=1045912863

Frame 67 (66 bytes on wire, 66 bytes captured)
Ethernet II, Src: AppleCom_73:-- (--), Dst: AppleCom_37:-- (--)
Internet Protocol, Src: 10.0.0.2 (10.0.0.2), Dst: 10.0.0.7 (10.0.0.7)
Transmission Control Protocol, Src Port: telnet (23), Dst Port: 49178 (49178), Seq: 152, Ack: 175, Len: 0

No.     Time        Source                Destination           Protocol Info
     68 5.838076    10.0.0.7              10.0.0.2              TELNET   Telnet Data ...

Frame 68 (67 bytes on wire, 67 bytes captured)
Ethernet II, Src: AppleCom_37:-- (--), Dst: AppleCom_73:--(--)
Internet Protocol, Src: 10.0.0.7 (10.0.0.7), Dst: 10.0.0.2 (10.0.0.2)
Transmission Control Protocol, Src Port: 49178 (49178), Dst Port: telnet (23), Seq: 175, Ack: 152, Len: 1
Telnet
    Data: a

Frame 84 viser at jeg nå er logget inn på serveren «neptun» som brukeren «dummy».

No.     Time        Source                Destination           Protocol Info
     84 7.765168    10.0.0.2              10.0.0.7              TELNET   Telnet Data ...

Frame 84 (96 bytes on wire, 96 bytes captured)
Ethernet II, Src: AppleCom_73:-- (--), Dst: AppleCom_37:-- (--)
Internet Protocol, Src: 10.0.0.2 (10.0.0.2), Dst: 10.0.0.7 (10.0.0.7)
Transmission Control Protocol, Src Port: telnet (23), Dst Port: 49178 (49178), Seq: 293, Ack: 183, Len: 30
Telnet
    Data: neptun:~ dummy$

NB: — symboliserer en ethernet-adressen, som jeg har valgt å skjule.

Det er helt klart at Telnet ikke er en protokoll man benytter seg av. Den krypterer ikke dataene, som jeg nettopp har vist, og i de fleste implementasjoner er det ingen måte å sjekke om pakkene blir sendt direkte mellom de to kommuniserende maskinene og ikke via en mellomstasjon. SSH er derfor et mye bedre alternativ. I eksempelet vist her har jeg i praksis sniffet mine egne pakker, altså pakker som skulle til den maskinen jeg satt på. Dette er den enkleste måten å teste pakkesniffing på, for man slipper å sørge for at man videresender pakkene, noe man må gjøre om man sniffer en annen maskins pakker.

Mer info:

Kategorier:Computers

Rosetta, Universal Binary, Fat Binary, Fat Mac?

Rosetta
6. juni 2005 på WWDC (Word Wide Developer Conferance) annonserte Apple at de ville skifte prosessorleverandør fra IBM til Intel. Apple hadde i mange år hatt og testet en Intel-basert versjon av Mac OS X, da hemmelig, men selv om operativsystemet nå kunne kjøre på Intel-prosessorer var det mange programmer som ikke gjorde det. For at overgangen ikke skulle bli så smertefull for brukerne (les: slik at Apple ikke skulle mister kunder) ble det laget et system som fikk navnet Rosetta. Rosetta er en oversetter basert på QuickTransit, en “dynamsik binæroversetter” laget av Transitive Corporation. Enkelt sagt oversetter programmet binærkode laget for PowerPC, slik at det kan kjøres på Intel. Det kjører altså ikke nativt på Intel, men blir oversatt uten at noe kode trenger å endres eller legges til. Rosetta kan riktignok bare oversette G3-, G4- og AltiVec-instruksjoner. Programmer bare laget for G5-prosessoren vil alså ikke kjøre. En del andre programmer, f.eks. programmer MacOS 9, er heller ikke støttet. Rosetta finnes i dag på alle Intel-baserte Macer.

Universal
universal.jpgSiden en del Macer nå er Intel-baserte og ganske mange av dem fremdeles er PPC-baserte, trengs det to versjoner av et program for at det skal kunne kjøres “as is” (uten emulering, oversetting eller lignende) på begge platformene. Flere og flere utviklere kompilerer derfor sine programmer til noe som kalles Universal Binary. Universal Binary består av to deler og den riktige delen (versjonen) blir detektert av operativsystemet og kjørt. Slike binærfiler er vanligvis større enn de som kun er laget for én prosessortype, men de krever ikke mer RAM fordi kun en versjon blir kjørt.

Fat Binary
På midten av 90-tallet, da Apple gikk fra 68k-baserte Macer til PowerPC, ble det laget lignende binærfiler som de som i dag kaller Universal Binary. Filen inneholdt kode som kunne kjøre på begge platformene, altså en kodedel for 68k-baserte Macer og en kodedel for PPC-baserte Macer. Disse binærfilene ble kalt Fat Binary – fordi de var større i størrelse.

Fat Mac
Fat Mac har ingen ting å gjøre med hverken Fat Binary, Universal Binary eller Rosetta. Fat Mac var kallenavnet på den andre Macintosh-modellen som Apple introduserte. I september 1984 kom Macintosh 512K (Fat Mac) ut, og var ment som erstatteren for Macintosh 128K. Fat Mac hadde fire ganger så mye RAM, og gjorde det mulig å jobbe med flere store filer på en gang (i det samme programmet så klart, på denne tiden kunne man bare kjøre ett program om gangen). Fat Mac var på markedet i over halvannet år, før den ble erstattet av Macintosh 512Ke (Mac Minus) og Mac Plus (Mr. T).

Kategorier:Computers

MacBook

Da det ble veldig tydelig at min gamle Toshiba-laptop ikke ville klare seg gjennom semesteret bestemte jeg med (etter lang betenkningstid så klart, dere kjenner da meg!!) for å kjøpe en MacBook. Ikke bare er den pen å se på, er laget av Apple, kjører Mac OS X – men de nye Intel-baserte Macene kan også kjøre Windows. Siden jeg er avhengig, desverre, av del programmer som enten bare finnes for Windows, eller som vi bare har tilgjengelig for Windows via skolen, var dette faktisk et must. For å være helt sikker på at MacBooken faktisk kunne kjøre Windows uten noe tull, fikk jeg overtalt min kjære til å låne meg sin MacBook som testmaskin. Her noen bilder fra den seansen:

01_win1.jpg
Først måtte BootCamp lastes ned
02_win.jpg
Etter partisjoneringen var det tid for å starte Windows-innstalleringen
03_win.jpg
Vel, jeg er ikke så overbevist..
04_win.jpg
Skrekk og gru..
05_win.jpg
Innstallering av Macintosh-driverne
06_win.jpg
Voila! Ved å holde inne option ved start kan man velge

Da jeg fikk min egen MacBook etter å ha ventet i over to uker, måtte jeg gjenta prosessen. Det var ikke noe problem, og min kjære MacBook kjører i dag både Windows XP og Mac OS X. En maskin som absolutt anbefales. :-)

Kategorier:Computers