Arkiv for kategorien "Hacking"

Tetris og pong på en bygning

Hackere kommer i mange varianter. En flokk av dem snekret sammen nok blinkende lys til å dekke en kjempestor bygning. Med lysene satt i system ble det skikkelig underholdende. Se filmen: Fortsett å lese ‘Tetris og pong på en bygning’

Hvordan bryte seg inn i en PC

Her er en oppskift på hvordan man kan gjøre innbrudd i andre datamaskiner på nett. Siden jeg vil holde meg innenfor lovens rammer vil jeg bryte meg inn hos meg selv. Denne teksten publiseres for å vise hvor enkelt det er, og for å opplyse om metoder som brukes -så man kan beskytte seg. Det tas ingen ansvar for feil og ulovlig bruk av informasjon i dette innlegget.

En bakdør

I dette første og enkle eksempelet vil jeg bruke Netcat som bakdør. Den er fleksibel og kan gjøre det meste. Netcat er et lite kommandolinjeprogram som ofte kalles bare nc. For å illustrere hva den er god for er den første setningen i manualsiden beskrivende: nc – TCP/IP swiss army knife.

Litt hypotetisk: Tenk om to PC’er er på ett nett. Den ene har IP adresse 192.168.0.2 og heter abc og den andre heter xyz. På PC abc kjører vi denne kommandoen:

user@abc~:$ nc -l -p 2000 -e /bin/sh

Da skal vi ha mekket en åpen port som venter på at vi kobler oss til. Når man kobler til port 2000 skal programmet sh kjøres. Om man vil gjøre noe lignende på en Windows maskin kan man feks kjøre programmet cmd.exe. Sånn kobler vi oss til fra PC xyz og tar en titt:

guest@xyz:~$ nc 192.168.0.2 2000
pwd
/home/user
ls
Desktop
Documents
Examples
Music
Pictures
Public
Templates
Videos

Kommandoene som ble gitt fra PC xyz etter tilkobling var pwd som viser gjeldene mappe i filsystemet man er i på PC abc, og ls viser filene og mappene på den plassen. Hvis man bare får lurt PC abc til å kjøre kommandoen den fikk i eksempelet kan man dermed få kontroll fra en annen PC. Nå burde litt forståelse for grunnleggende muligheter være på plass.

Utnytte ett sikkerhetshull

Jeg har tidligere skrevet om hvordan man kan finne sikkerhetshull på andre datamaskiner. For å putte inn en bakdør og ta kontroll over en annen PC må man først finne en svakhet. Her er ett eksempel på hvordan ett sikkerhetshull kan bli rapportert i en bit av Nessus Scan Report:

Vulnerability microsoft-ds (445/tcp)

Synopsis :
Arbitrary code can be executed on the remote host due to a flaw in the LSASS service.

Description :
The remote version of Windows contains a flaw in the function DsRolerUpgradeDownlevelServer of the Local Security Authority server Service (LSASS) which may allow an attacker to execute arbitrary code on the remote host with the SYSTEM privileges.

A series of worms (Sasser) are known to exploit this vulnerability in the wild.

Solution :
Microsoft has released a set of patches for Windows NT, 2000, XP and 2003 :

http://www.microsoft.com/technet/security/bulletin/ms04-011.mspx

Risk factor :
Critical / CVSS Base Score : 10
(AV:R/AC:L/Au:NR/C:C/A:C/I:C/B:N)
CVE : CVE-2003-0533
BID : 10108
Other references : IAVA:2004-A-0006, OSVDB:5248
Nessus ID : 12209

Når man har funnet et sikkerhetshull kan man bruke feks Google til å lete etter metoder for å utnytte dette. Ved å bruke ordet exploit isammen med detaljer om ett detektert sikkerhetshull som søkeord finner man antagelig noe interessant. Enda mer interessante resultater kan man få ved å søke i listen over kjente exploit’s hos milw0rm (alle nødendige tekniske detaljer om dem ligger der). Nettstedene SecurityFocus, Digital Information Society og Hack In The Box har forøvrig masse informasjon om sikkerhetshull og utnyttelse av dem.

Hvis man er skikkelig hard-core (og kanskje har testet seg frem til ett sikkerhetshull som ikke andre har oppdaget enda) så kan man undersøke hva som skjer i RAMPC’en med sikkerhetshullet. Sånn kan man analysere seg frem til hvordan man kan få ett program inn i hullet og få det til å kjøre.

Installere en bakdør

En del antivirusprogram oppdager Netcat, påstår at det er en bakdør og tar det bort. Selv om det finnes mange legitime grunner til å bruke programmet. Jeg bruker det nesten daglig i jobbsammenheng. For å komme rundt antivirusprogrammene kan det være nødvendig å hente kildekoden og kompilere en egen modifisert versjon (feks med kommandolinje-parameterene man vil bruke skrevet inn i kildekoden). Netcat er ett fleksibelt og lite program å lure inn i ett sikkerhetshull.

Hullet i Nessus eksempelet over hadde en enkel måte å installere bakdør på. Ved å kompilere hod-ms04011-lsasrv-expl.c og kjøre det med nødvendige kommandolinjeparametere er PC’en i den andre enden klar for å bli tilkoblet. Eksempler på hvordan finner du i filen som kan kompileres. Og ja, jeg testet at dette virker mot min egen PC -men nå er oppdatering på plass.

Andre metoder for angrep

Det å vise ett TIF bilde med Internet Explorer kan være farlig. Ihvertfall om bildet er tuklet med og PC’en som viser det ikke har aktuell oppdatering. Programmet for å lage ett bilde som kjører calc.exe ved å vise det er tilgjengelig for alle. Og programmet kan endres til å kjøre noe mindre uskyldig. Kanskje det ligger mange sånne bilder rundt omkring på Internett.

Nye virus oppdages hver dag. Mange av disse installerer en bakdør i PC’en som infiseres. For å nevne noen gamle eksempler så installerer virusene Mydoom og Sobig en bakdør i tillegg til å spre seg videre og gjøre ugang. Når mange PC’er gjør koordinert ugang samtidig kan det bli ubehagelig for feks både Microsoft og DOD.

Ajax og Web 2.0 er betegnelser på mer interaktiv web. Lekre greier. Det er til og med sånt her. Både klient (nettleseren din) og server (PC’en med denne bloggen) kan være utsatt. Ny teknologi som nesten plutselig sprer seg ut til massene kan bringe uante muligheter.

Hvordan beskytte seg

Man kan gjøre mye, men jeg synes det enkleste og viktigste er:

  • Bruk en brannmur. En egen hardware boks (feks innebygget i en router) er fornuftig, men sånn software på hver PC bør også brukes.
  • Ikke ha flere åpninger inn i systemet enn nødvendig. Med andre ord: steng alle porter som du ikke må ha åpne i brannmuren.
  • Hold programvare som kommuniserer over nett oppdaterte. Automatiske oppdateringer bør med andre ord være på.
  • Bruk ett antivirusprogram eller feks Ubuntu for ikke å ødelegge for deg selv. Automatisk oppdatering for deteksjon av nye virus bør være på.
  • Hvis du bruker trådløst nettverk, så sørg for å bruke skikkelig kryptering. Spesielt interesserte kan lese om naboene mine og hvorfor WEP ikke er godt nok.

Terskelen for å komme inn i en datamaskin er relativt stor. Når man først har fått tilgang kan man gjøre det meste. Det å få slettet eller ødelagt informasjon eller programmer er langt i fra det værst mulige resultatet av et innbrudd. Kanskje er heller ikke det at andre kopierer data fra deg så farlig. En PC med en installert bakdør kan brukes til videre innbrudd eller distribuerte angrep på andre datamaskiner på nett. De mest utspekulerte cracker‘ene gjør gjerne akkurat det.

Er du trygg da?

Store endringer i software fører til at det innføres feil. Uansett hvor godt man tester. Til og med i software til fly. Det er tross alt bare mennesker som lager software, og det er en sammenheng mellom antall nye linjer med kode, hvor grundig ting blir testet og antall feil.

WordPress kommer snart ut med en ny stor oppdatering. Mange linjer kode er endret. Sannsynligheten for at den inneholder sikkerhetskritiske feil (inkludert sånne som ikke blir funnet av utviklerene og rettet) regner jeg som betydelig. Det bør være naturlig å spørre seg: er det lurt å oppdatere med en gang ny versjon dukker opp?

En egen hardware-boks med brannmur i er langt i fra alt du trenger av beskyttelse. Det skulle ikke forundre meg mye om feks MCF5223x familien av mikrokontrollere bor i noen sånne bokser. Utviklerene av software for den mikrokontrolleren tar sannsynligvis utgangspunkt i software fra produsenten. Den er smekkfull av sikkerhetshull og feil. Jeg gjorde ett forsøk på å hjelpe produsenten med noen av feilene (Eric som kommenterer på det innlegget jobber for produsenten) -men fikk ikke lov på grunn av brudd på lisensen med en underleverandør.

Windows Vista har helt ny software for TCP/IP. Det er litt av hvert som har med sikkerhet å gjøre i den, som sikkert er fint og flott. Men det hadde vært veldig rart om noe så komplekst er uten feil. Hvis man absolutt vil finne en sårbarhet som ikke er oppdaget enda er det nok bare å mekke en web-server som tuller med lavnivå protokoll-ting og putter inn mest mulig ulogiske verdier og sekvenser i de forskjellige feltene.

Spørsmål?

Tror du det var lurt å gå til denne siden med nettleseren din? Var det noe du lurte på? Spør i kommentarfeltet da vel.

BankID ubrukelig

Aftenposten skrev om BankID denne uken. Bra lesestoff som tar for seg mer enn tullet som kalles Verified by Visa. Takk for tipset, html-utvikler.

Verifisert svindel med Visa

For litt siden fikk jeg noe å tenke på av html-utvikler. Nå klarer jeg ikke holde kjeft mer. Det å handle på nett er skummelt. Visa gjør dette enda værre. De lærer opp kundene sine til å oppgi alt som er nødvendig for at de skal kunne bli ranet. Dette er helt greit på en hvilken som helst nettside, i følge Visa.

Nå er det på tide å forklare fra begynnelsen. Verified by Visa heter det som skal være så vanvittig flott. Med den fantastiske teknologien kan nettbutikker samarbeide med Visa om betalingsløsning. Resultatet er ett skjema som dukker opp når du skal betale for noe. Dette skjemaet spør etter samme informasjon som du bruker for å logge inn i nettbanken din. Jeg siterer selektivt fra denne nettsiden hos Visa Norge:

  • Du handler trygt i alle nettbutikker merket med Verified by Visa
  • I forbindelse med kortbetalingen, benytter du samme metode som ved innlogging i nettbanken

I følge vanlige avtaler med bankene skal man oppbevare passord og andre personlige opplysninger konfidensielt. Sånn som jeg skjønner dette, så ber bankene kundene sine å bryte denne avtalen. For det er jo så enkelt og greit. Og trygt og sikkert.

verifiedbyvisa.jpgDet må være lov å spørre seg: hva hindrer meg i å lage enn nettbutikk og påstå at den er Verified by Visa? Jeg kan jo påstå det her og nå: neppe.no er Verified by Visa. Så det så. For å ta i skikkelig limer jeg til og med inn logoen. Så får vi se om de kommer hylende til og truer med søksmål på grunn av dårlig omtale.

Denne galskapen stopper forresten langt i fra her i Norge. Neida. Visa har holdt på med dette tullet lenge. Og flere har selvfølgelig utnyttet dette.

Se YouTube uten GUI

Har du ikke noe grafisk brukergrensesnitt? Skulle du gjerne sett en video fra YouTube? Fortvil ikke. Løsninger er her, for de som har en kraftig kommandolinje (som feks Audun).

Hvis du blir lei av å titte på all knattingen på hakkebrettet (les: tastaturet), kan du spole frem til det er litt under 2 minutter igjen. Til sånne normale lesere: beklager høy nerdefaktor på dette og forrige innlegg.

Port scan og sikkerhetshull

For å oppnå god sikkerhet er det nødvendig å sette seg inn i ting som kan være ulovlig hvis man bruker det på feil måte. Med henvisning til grunnlovens §100 om ytringsfrihet påberoper jeg meg retten til å publisere litt tekst som ikke må brukes feil.

Først ut er en rask port scanner. Her har jeg lagd en i ett shell script for bash. Denne kan brukes for kartlegging av en hvilken som helst datamaskin tilkoblet feks Internett. Åpne porter og detaljer om hva som kjører av software er resultatet. IP eller DNS adresse til datamaskinen som skal kartlegges er inn-argument til scriptet.

#!/bin/bash
if [ $# -ne 1 ]; then
echo "Usage: $0 <Target>"
exit 127
fi

TIMEOUT=2
PORTS="20 22 25 53 80 110 143 443 465 873 990 993 995"
OPEN=""

# Test with netcat: find open ports quickly
for port in $PORTS ; do
if nc -z -w $TIMEOUT $1 ${port} ; then
echo "Port $port is open"
OPEN="${OPEN}${port},"
fi
done

Hvis scriptet lagres som feks iptest, kan det kjøres på følgende måte:

user@pc:~$ ./iptest scanme.nmap.org
Port 22 is open
Port 53 is open
Port 80 is open

Starting Nmap 4.10 at 2007-02-25 19:41 CET
Interesting ports on scanme.nmap.org (205.217.153.62):
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
53/tcp open domain
80/tcp open http Apache httpd 2.2.2 ( (Fedora) )

Nmap finished: 1 IP address scanned in 12.753 seconds

Av dette fant vi ut at det er mulig å logge seg på akkurat den datamaskinen med SSH. Kanskje det til og med er mulig å gjøre det automatisk en masse ganger (feks like mange ganger som det er ord i en ordliste-fil). Hvis man har ekstern tilgang til en datamaskin med feks SSH, så pleier man å kunne gjøre hva man vil med den (kopiere filer, installere software, slette logger, osv).

Sånn for å virkelig å få kartlagt masse anbefales Nessus. Da får man også oversikt over svakheter og sikkerhetshull i software som lytter til åpne porter på en hvilken som helst datamaskin. Nessus for Windows kan lastes ned her. Hvis du bruker Ubuntu, kan Nessus installeres sånn:

sudo apt-get install nessus nessusd
sudo nessus-adduser
sudo ln -s /etc/init.d/nessusd /etc/rc2.d/S20nessusd
sudo /etc/init.d/nessusd start

Nessus bruker først en port scanner for å kartlegge muligheter før den tester ut om forskjellige sikkerhetshull er til stede. For å få fullt utbytte av Nessus trenger man å abonnere på sikkerhetstester skrevet i NASL. For å abonnere må man registrere seg, og gjøre dette hvis man bruker Ubuntu (XXX under må byttes til koden i e-post fra registrering):

sudo nessus-fetch --register XXX
sudo nessus-update-plugins

Dette kan kombineres med feks internett-tilkobling via naboens WLAN, for å gjøre det vanskelig for offeret eller etterforskere å finne tilbake til hvem som har gjort hva.

Sånn etterhvert vil jeg antagelig skrive litt om et program man kan bruke som bakdør for å kunne logge seg på en datamaskin. En sånn bakdør kan puttes inn i ett sikkerhetshull, hvis man finner ett sånt med feks Nessus.

Skikkelig programmering

Det advares mot høy nerd-faktor i dette innlegget. Hvis det du kjenner til om software dreier seg om bruk av programmer som Word og Internet Explorer bør du slutte å lese umiddelbart!

Jeg ble tipset tidligere i uken av en kollega om INTERCAL etter diskusjoner om kode-standard. Utrolig at jeg ikke hadde fått med meg noe om dette spennende programmeringsspråket før nå. Rett og slett genialt og tankevekkende! Syntaks som “IGNORE”, “COMEFROM”, “FORGET” og “PLEASE” er vakkert. Etter INTERCAL har det dukket opp flere programmeringsspråk i lignende kategori, og for eksempel Whitespace er verdt en titt.

Etter dette var det vanskelig å unngå tanker om programmeringsspråket som jeg kjenner best selv, C. “Code is poetry” får liksom en utvidet mening når jeg ser programmer som dette:

#include <stdio.h>
int l;int main(int o,char **O,
int I){char c,*D=O[1];if(o>0){
for(l=0;D[l              ];D[l
++]-=10){D   [l++]-=120;D[l]-=
110;while   (!main(0,O,l))D[l]
+=   20;   putchar((D[l]+1032)
/20   )   ;}putchar(10);}else{
c=o+     (D[I]+82)%10-(I>l/2)*
(D[I-l+I]+72)/10-9;D[I]+=I<0?0
:!(o=main(c/10,O,I-1))*((c+999
)%10-(D[I]+92)%10);}return o;}

Som alle klart kan se av den selvdokumenterte koden over, regner den ut kvadratrot. For å skjønne hvordan den gjør dette kreves det imidlertid en del kunnskap om C og tålmodighet. Det er forresten mange andre veldig kreative og lignende program her.

De som ikke fikk nok inspirasjon nå kan lage sin egen CPU omtrent som dette -for å ha noe virkelig festlig å kompilere på.

Enkelt å se hva naboen gjør på WLAN

I forhold til Norsk lov tror jeg ikke grenser er klart definert med tanke på sikkerhet rundt trådløst nettverk (WLAN). Har jeg lov til å lagre data som blir sendt ut i luften og som kommer inn til meg i min bolig? Hvor går grensen for hva jeg kan gjøre med disse dataene? Kan jeg dekode dem? Har jeg lov til å dekryptere dem ved hjelp av nøkler som er utregnet kun som en funksjon av mottatte data?

Jeg mener det bør være lov å gjøre mye med sånne data -men ikke noe aktivt for å få tak i dem. Så lenge man bare lytter bør det være greit. Med andre ord mener jeg at å dekode ukrypterte data med Wireshark eller Kismet er greit. I tillegg bør det være lov å regne ut krypteringsnøkler med Aircrack eller Airsnort. Det å bruke nøklene for å dekryptere og videre dekode data er nok en gråsone. Hvis man går til det skrittet at man bruker dekryptert data er jeg mer sikker på at det bør være lovbrudd.

Akkurt her som vi bor får jeg nå inn 5 trådløse nettverk. Av disse er 3 (inkludert vårt) kryptert. 2 av dem er kryptert med WEP (ikke vårt) -som det er enkelt å regne ut nøklene til. De 2 andre er det tydeligvis helt fritt frem på. Mine naboer er forhåpentligvis ikke klar over at jeg i teorien, og bare med de programmene jeg har lenket til over, kan dekode og lese all e-post de sender, se hvilke nettsteder de besøker og få tak i diverse passord. Er de (og de fleste andre) virkelig så naive, eller er det bare meg som er paranoid?

Oppdatering: Les gjerne om å finne svakheter på andres datamaskiner og hvordan de kan utnyttes til å bryte seg inn.