Gå til innhold

Tanker og diskusjon rundt hacking, Moderne trussel


Anbefalte innlegg

Hei!

 

Jeg var inne på en nettside som var hostet på en PS3, den som hacket siden og fikk lagt inn noe i en angitt mappe skulle få tilsendt PS3 gratis?!

 

For meg høres dette ut som et ganske spennende lite oppdrag, men hvordan kan man egentlig gå frem for å klare noe sånt?!

Man kan kjøre Nmap og se hva som kjører for å så sjekke opp angående hvilken type sikkerhetshull som eksisterer eller analysere programvare selv i jakten på hull.

 

Men er det i realiteten "alt" hacking er?

Utnytte hull, for å så få tilgang?

 

Det enkleste er jo selvfølgelig å lage en trojan, dette er jo en smal sak for å ha det gøy med venner etc men hva vist man sitter med kun en IP adresse som på konkurransen over.

Da blir det jo en del vanskligere.

 

Et eksempel på "hacking":

En fjortis i Belgia snappet opp admin passordet til en her på dikusjon.no via et sikkerhetshull i sql-debug mode-3.

Vedkommende hadde ekstremt begrenset kunnskap om data og var vel det man kan kalle "scriptkiddie".

 

Dette får det med hacking til å se "lett" ut, men hvis man nå tar steget opp og analyserer programvare selv.

Da må jo mulighetene være endeløse, og la oss være ærlige.

Hvis man først kaster bort mye tid på dette og har litt peilig så vil man garantert finne iallefall svakheter, bugs eller til og med kanskje et sikkerhetshull.

 

Sikkerhet er jo det store innen IT i dag, så det å finne sikkerhetshull for å så få de tettet ligger det nok store penger i. (Memo til meg selv og fremtidige IT-studier :p)

 

Regler:

 

Dette er en tråd hvor fremgangsmåter for hacking kan diskuteres så lenge ikke spesifikke akitve/åpne sikkerhetshull postes.

Den ligger under programmering da jeg er interressert i det tekniske fremfor en step by step guide for tilgang til en nettbanken. :p

 

Ser frem til en lærerik og spennende diskusjon.

:thumbup:

 

Godt nyttår.

 

Moderatorer:

Ueland tok en titt på tråden å sa den så grei ut. :dribble:

 

Update:

 

Nyttige lenker!

 

Nmap

Ssh

IPv6

IPv4

HTTPS

apache

Linux Exploits, udatert selvfølgelig, men det gir et bilde av hva et hull er.

Kjent fiende <3

Veldig nyttig side, TCP og andre protokoller.

UDP

Cfengine

MySql

Portskanner, litt info.

Teknologi bak f.eks Nmap.

Bruk av Nmap

Flash film, Nmap Basic usage.

Endret av chills
Lenke til kommentar
Videoannonse
Annonse

Vel, kan da prøve å si hva jeg tror og mener om emnet :).

 

Virker som om du er glad i Nmap, og det er jo en god start.. :)

Greia jeg hadde gjort (hvis jeg hadde vært litt mer kunnskapsrik og flinkere rundt emnet) var å lage noe alla Nmap, bare at det ikke skulle være for å sjekke åpne porter, kjørende prosesser osv. (det kan jeg jo fint sjekke med nmap). Det skulle sende diverse data mot mottakerens porter for å sjekke hva som skjedde (om man fikk noe i retur, om kanskje server-programvaren kræsjet o.l.) og bearbeidet derfra.

 

Dette har et spesielt navn, husker bare ikke helt hva det heter... er hvertfall en kjent metode...

For å forklare for de som kanskje ikke skjønte det, si du har et eller annet server-program, si en FTP-server (for å ta det på spissen).

Kanskje denne FTP-serverapplikasjonen (for ja, alle "servere" er applikasjoner ;)) hadde en deny-list over visse filer den ikke skulle laste opp til server-maskinen, si f. eks wma-filer. Hva hvis man endret wma-filene til å ikke se ut som wma-filer lenger, men fremdeles klarte å holde strukturen i selve "kjernen" av filen, hva vil skje? Vil det kræsje, vil det gå, vil du få root (ikke sannsynlig, men vi leker nå ;)).

Hva om vi sendte informasjon til serveren på en rar måte, startet kanskje en opplastning for så å avbryte den igjen og starte den igjen, kanskje server-programvaren ikke har en rutine for hvordan den skal behandle dette, kanskje det blir minnelekasje?

 

Dere ser poenget mitt, man må teste programvaren for alle mulige utfall.

 

Ta nå dette med en PS3.

Jeg kan ingenting om denne, men det er sikkert mange som har pugget programvaren og rutinene inn og ut.

 

Jeg forstår det sånn at den kjørte en webserver av noe slag. Jeg går da ut fra at denne webserveren ikke er like godt gjennomtenkt som f. eks Apache-serveren. (Har ikke vært tid til å teste like mye osv..)

Hva skjer hvis du sender noen pakker mot den porten, bare litt tekst eller tall eller noe med såkalte raw-packets, hva skjer da? Svarer den?

Hvis du simulerer at du kobler opp mot den for å vise websiden, hvilken info får du tilbake?

 

Hvis du finner ut at det er mulighet for å poste noe på den serveren (som jeg gjør nå f. eks), hvor mange tegn takler den, har den noe rutine for hva som skjer når du går over det gitte antall tegn? Kræsjer den, kan du forårsake minnefeil så du kan få den til å kjøre kode i en return adresse e.l?

 

Dere skjønner alle hva jeg mener.. :)

 

Syns det er litt morsomt med sånne "hacke-teori-tråder" som dette. Utforske div. muligheter osv...

Nei, trøtt... men hadde vært morsomt med noen seriøse innlegg her (har prøvd å holde dette rimelig seriøst). :)

Endret av kimla
Lenke til kommentar

Jeg vil tro at buffer-overflow er «veien å gå» hvis man skal ta kontroll over en server, da dette (ihvertfall i teorien, vet ikke hvor lett dette er å gjøre i praksis) gjør det mulig å kjøre kode på serveren som opprinnelig ikke var meningen. Da blir jo greia å finne hull i programvaren selv, eller å lete etter kjente hull og håpe på at serveren ikke er oppdatert og har tettet hullet.

 

Eventuelt så har man det scenarioet hvor man er på samme nettverk med en PC som har koblet seg til en server som du vil ta kontroll over. Da er det mulig å gjøre et ARP-angrep (Address Resolution Protocol), og på det viset «kapre» en tilkobling ved å route om trafikken fra PCen på det lokale nettverket, til seg selv. Dette burde ikke være uoverkommerlig om man kan litt om raw sockets, da man stort sett bare behøver å sende en pakke (nærmere bestemt en ARP-pakke) til routeren.

 

Når det gjelder vanlige bruker-PCer, vil jeg tro at det hadde vært greiest å bruke en troya til å ta kontroll over PCen, ved å lure offeret til å installere tilsynelatende ufarlig programvare.

 

Nå skal det nevnes at jeg på ingen måte er noen ekspert på dette området, så rett på meg om noe feil. :)

Lenke til kommentar

Jeg husker utrolig nok ikke hva navn denne koden/viruset fikk men jeg husket at det var en enkelt UDP pakke som ble sendt til en SQL server, den sjekket ikke lengden på pakken og skrev over sin egen programkode, ergo den serveren som fikk pakken begynte og spy ut tilsvarende pakker.

 

Det jeg er litt forundret over er jo hva/hvordan det gikk an å vite hva som ligger "etter" den reserverte plassen til å ta imot pakken.

Eller kan man gjøre et hvilken som helst område i en executed exe til kjørbar kode?

Data og kode blir vel til en hvis grad adskilt.

 

 

Takk for noen fine innlegg over. :thumbup:

Lenke til kommentar
For å kunne utnytte en buffer-overflow, tror jeg man må kunne en del Assembly.

7615632[/snapback]

 

 

Og hvorfor det?

 

Hvis programmet kjører eksternt har du ikke tilgang til kilden, det er klart man kan laste ned en kopi av serverprogrammet (dersom man finner ut hvilke, og hvilke versjon det er), men oppsettet får du ikke likt.

 

Tror nok først må man finne et sted å putte in input, som blir overflowa, deretter må du finne ut om/hvordan du kan eksekvere random kode gjennom det, og jeg tviler på at de fleste kan lese og memorere så mange linjer asm som må til for å finne ut dette. Tror nok det er mest prøv/feil metode som brukes for å klare å utnytte en buffer overflow.

 

Bare mine tanker, ikke til å stole på med andre ord.

Lenke til kommentar

Uten å ha plagsomt mye peil på dette her, vil jeg tro at man må kunne en del Assembly for å kunne bruke denne overflowen til å gi faktiske instrukser - gjøre overflowen kjørbar - og kanskje også hindre at serveren SIGSEGV-faulter hvis dette er mulig. Men det kan godt hende at dette også er mulig i C. Jeg kan som sagt nada om dette her, så dette er bare hva jeg forestiller meg.

 

Edit: Skjønner forøvrig ikke helt hva du mener med random kode. Dette vil vel isåfall bare føre til kræsj? Det er derfor jeg tror at man må kunne Assembly for å få til noe nyttig.

 

Edit2: Man har da tilgang på kilden om det er åpene programmer som kjører på serveren. F.eks. Apache og sånt. Det er jo mye server-programvare som er fritt....

Endret av staalezh
Lenke til kommentar
Virker som om du er glad i Nmap, og det er jo en god start.. :)

Det er vel ikke stort mer man kan diskutere her på diskusjon.no før tråden blir stengt. Nå finnes det flere nye sikkerhetsrisikoer, som blandt annet at det finnes verktøy hvis navn ikke må nevnes (vet ikke om Ueland blir blid om man nevner navn) som gjør at man bare kan velge exploit, payload og offer, og så skjer alt automatisk.

 

Greia jeg hadde gjort (hvis jeg hadde vært litt mer kunnskapsrik og flinkere rundt emnet) var å lage noe alla Nmap, bare at det ikke skulle være for å sjekke åpne porter, kjørende prosesser osv. (det kan jeg jo fint sjekke med nmap). Det skulle sende diverse data mot mottakerens porter for å sjekke hva som skjedde (om man fikk noe i retur, om kanskje server-programvaren kræsjet o.l.) og bearbeidet derfra.

Fuzzing?

 

Syns det er litt morsomt med sånne "hacke-teori-tråder" som dette. Utforske div. muligheter osv...

Nei, trøtt... men hadde vært morsomt med noen seriøse innlegg her (har prøvd å holde dette rimelig seriøst). :)

7610508[/snapback]

Admin må ta en tur innom og sette opp retningslinjer før dette blir interessant, men jeg tipper at det blir et litt dødfødt prosjekt. Det finnes heldigvis en del man kan gjøre før admins blir sinte, et eksempel på mange gode artikler som holder omtrent samme policy som dette forumet er på OSIX.net.

 

 

Eller kan man gjøre et hvilken som helst område i en executed exe til kjørbar kode?

Data og kode blir vel til en hvis grad adskilt.

7612737[/snapback]

I f.eks. PE-filer blir vel data og kode så vidt jeg vet atskilt, du kan sikkert søke opp litt info om PE strukturen om du gidder å sjekke for meg. Når du f.eks. bruker IDAPro eller OllyDbg (som jeg vet du er kjent med ;) ) så vil det muligens vises atskilte områder for data, kjørbar kode, headers ++.. Tror jeg.

 

 

 

Ellers vil nok XSS være en lettere måte å ta over ting på enn buffer overflows og denslags for en nybegynner.

Lenke til kommentar
Uten å ha plagsomt mye peil på dette her, vil jeg tro at man må kunne en del Assembly for å kunne bruke denne overflowen til å gi faktiske instrukser og kanskje også hindre at serveren SIGSEGV-faulter. Men det er godt mulig at dette også er mulig i C. Jeg kan som sagt nada om dette her, så dette er bare hva jeg forestiller meg. Godt mulig at jeg er _helt_ på jordet her. :)

7615910[/snapback]

Om det er et politisk motivert angrep f.eks. (for å ta ned nettsider) så vil det holde at man gir serveren søplekode som forårsaker en krasj.

 

Det krever ikke alltid så mye ASM-kunnskaper for å få til noe "nyttig" med overflows, men det er klart at det er alltid en fordel :)

Lenke til kommentar
Uten å ha plagsomt mye peil på dette her, vil jeg tro at man må kunne en del Assembly for å kunne bruke denne overflowen til å gi faktiske instrukser og kanskje også hindre at serveren SIGSEGV-faulter. Men det er godt mulig at dette også er mulig i C. Jeg kan som sagt nada om dette her, så dette er bare hva jeg forestiller meg. Godt mulig at jeg er _helt_ på jordet her. :)

7615910[/snapback]

Om det er et politisk motivert angrep f.eks. (for å ta ned nettsider) så vil det holde at man gir serveren søplekode som forårsaker en krasj.

 

Det krever ikke alltid så mye ASM-kunnskaper for å få til noe "nyttig" med overflows, men det er klart at det er alltid en fordel :)

7615959[/snapback]

For å ta ned en nettside, er det vel bare snakk om å trigge en SIGSEGV-fault vha "spølekode" som du sier, men er det mulig å gjøre minnet "kjørbart" i C, slik at man faktisk kan gjøre operasjoner og utføre instrukser, da? Det er her jeg trodde at man mer eller mindre ble tvunget til å bruke Assembler. Menneh, godt mulig det lar seg gjøre med litt hokus-pokus i C også, f.eks. bitwise-operatorer eller noe sånt, hehe..

Lenke til kommentar
... men er det mulig å gjøre minnet "kjørbart" i C, slik at man faktisk kan gjøre operasjoner og utføre instrukser, da? Det er her jeg trodde at man mer eller mindre ble tvunget til å bruke Assembler. Menneh, godt mulig det lar seg gjøre med litt hokus-pokus i C også, f.eks. bitwise-operatorer eller noe sånt, hehe..

7615992[/snapback]

 

Man sender aldri "kode" (som i .c,.cpp,.asm,etc filer). Man sender ren data. Dvs. ferdig kompilert kode. Så sånn sett er det hipp som happ hva man programmerer dette i, da både C++ og assembler blir kompilert til "lik" maskinkode. Koden man sender vil selvfølgelig ikke være et "program" i vanlig forstand, så hvis man gjør dette i C/C++ så må man nok inn med en hex editor for å hente ut akuratt den delen av koden som skal brukes...

 

Det er jo uansett en fordel å kunne både assembler (hvordan fungerer maskinvaren?) og mye om OS'et (hvor blir code&data lastet inn i minnet?). Selve koden man sender i en buffer overflow exploit (hvis man ikke kun ønsker å overskrive data) vil da være forskjellig avhengig av både hardware og OS...

 

Dessutten kan det være greit å vite hvordan programmet oppfører seg for å vite hvor mye "fyllstoff" man skal sende før code, eller hva som ligger i minnet man skal forandre... :)

Lenke til kommentar
Om det er et politisk motivert angrep f.eks. (for å ta ned nettsider) så vil det holde at man gir serveren søplekode som forårsaker en krasj.

 

Eller enda bedre og enklere; finne en eller annen "funksjon"/request som krever veldig mye ressurser, og DOS/flood'e denne. Da vil ikke serveren kræsje, men bare gå VELDIG treigt :) Dette er som regel veldig enkelt mot websider f.eks...

Lenke til kommentar
I f.eks. PE-filer blir vel data og kode så vidt jeg vet atskilt, du kan sikkert søke opp litt info om PE strukturen om du gidder å sjekke for meg. Når du f.eks. bruker IDAPro eller OllyDbg (som jeg vet du er kjent med ;) ) så vil det muligens vises atskilte områder for data, kjørbar kode, headers ++.. Tror jeg.

 

Har dette noe å si egentlig? Det som er viktig er jo ikke hvor det ligger i fila, men hvor det ligger i minnet. Vanligvis ligger det både pointere og data i stack'en som kan utnyttes? Og det den eneste måten å unngå problemer her på er å sjekke overflow...?

 

Fordelen med å bruke stack'en er også at det som regel er raskere enn å bruke heap...

Lenke til kommentar
... men er det mulig å gjøre minnet "kjørbart" i C, slik at man faktisk kan gjøre operasjoner og utføre instrukser, da? Det er her jeg trodde at man mer eller mindre ble tvunget til å bruke Assembler. Menneh, godt mulig det lar seg gjøre med litt hokus-pokus i C også, f.eks. bitwise-operatorer eller noe sånt, hehe..

7615992[/snapback]

 

Man sender aldri "kode" (som i .c,.cpp,.asm,etc filer). Man sender ren data. Dvs. ferdig kompilert kode. Så sånn sett er det hipp som happ hva man programmerer dette i, da både C++ og assembler blir kompilert til "lik" maskinkode. Koden man sender vil selvfølgelig ikke være et "program" i vanlig forstand, så hvis man gjør dette i C/C++ så må man nok inn med en hex editor for å hente ut akuratt den delen av koden som skal brukes...

Hehe, mente ikke at man skulle sende ASM eller C++ kode, nei. :p

Men hvis man skal bruke en buffer-overflow-exploit og man sender kompilert kode, blir man nødt til å kompilere på en PC med omtrent samme spesifikasjoner som serveren? Instrukser er vel forskjellige etter hvilken CPU (eller noe sånt) man bruker?

Lenke til kommentar
...

Men hvis man skal bruke en buffer-overflow-exploit og man sender kompilert kode,  blir man nødt til å kompilere på en PC med omtrent samme spesifikasjoner som serveren? Instrukser er vel forskjellige etter hvilken CPU (eller noe sånt) man bruker?

7616359[/snapback]

 

Somregel er koden lite cpuavhengi.

 

Grunden til at man normalt trenger kunnskaper inne asm er at i de mange hullene som muliggjør bufferoverflow søker man gjennom før å finnen en verdi (eks 0)

 

Så hvis man skal få ting til å fungere som man vil så må man lage shell kode som ikke inneholder verdien før man da er ferdig, Dette vil i mange tilfeller være svært vanskelig med C eller andre språk siden man har veldig liten/ingen mulighet for å styre hvordan koden vil se ut.

Så har man jo all den "unyttige" koden som ofte blir lagt til som eks PE headeren.

 

Men det er for det meste mine tanker så ikke legg stor vekt på det.

Endret av Giddion
Lenke til kommentar

Etter å ha lest litt på Wikipedia, forstår jeg det slik at man har to valg hvis man prøver å utnytte en overflow på stacken; overskrive verdier i andre buffere i programmet, og dermed endre programmets adferd, eller endre retur-adressen når en funksjon returnerer, og dermed forårsake at programmet fortsetter et annet "sted" enn hva programereren opprinnelig tenkte.

Lenke til kommentar

Fuzzing var da ja seff.. :p

 

Etter å ha lest litt på Wikipedia, forstår jeg det slik at man har to valg hvis man prøver å utnytte en overflow på stacken; overskrive verdier i andre buffere i programmet, og dermed endre programmets adferd, eller endre retur-adressen når en funksjon returnerer, og dermed forårsake at programmet fortsetter et annet "sted" enn hva programereren opprinnelig tenkte.

7620565[/snapback]

 

Vel, dette er det man som oftes gjør når man lager cracks osv, eller hacks til spill og sånn. Dette blir da vanskelig å gjøre siden du ikke har direkte tilgang til minnet til server-maskinen (hvis du ikke har admin rettigheter da). Derfor må du finne input områder og se om noen av disse kan utnyttes (ved hjelp av fuzzing ;)).

 

Ta et eksempel på dette (som jeg tror det virker da).

Vi skal endre verdier i et spill, f. eks sette HP til 1000000 el.

Vi kjører da et program i bakgrunnen som leter etter spesielle verdier vi vil utnytte, kanskje vi har en måte å sende faktisk HP fra spillet til dette programmet vårt som ligger i bakgrunnen.

Når denne verdien da er funnet kan vi bruke f.eks C/C++ til å fylle inn en ny verdi (dette er flere minnefunksjoner i C/C++: C memory).

 

Dette er da ikke en buffer overflow, og dette er som sagt en måte man kan gjøre det med spill (blir som oftes busta av punkbuster hvis du spiller over nett, hvis du ikke har en rimelig god rutine på hvordan man gjør dette da).

 

Dette er også en usikker metode siden det sikkert er mange verdier i et spill som er det samme som HP'en du har akkurat der og da. Men hvis du kanskje visste at HP "variabelen" inntreffer rett etter nickname variabelen, så kan man sette nick til noe som AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA, du søker da etter de A-ene, og leter etter HP-verdien som er nærmest der.

 

It's a question of memory management..:)

 

Håper ikke jeg har gått over streken her, jeg kan ærlig talt ikke så mye om dette, men sier det som jeg tror er rett. Håper på å bli retta på hvis jeg har sagt noe feil (noe som er meget sannsynlig) :)

Lenke til kommentar

Når det kommer til hacks til spill så er det "lov", det går klar forumreglene, jeg hadde en hel tråd dedikert til wallhack og aimbots for en stund tilbake.

 

Ja, det stemmer det du sier.

Jeg kjørte BF2 i window, brukte en patch for å få vekk bf2 sitt eget debug system, koble inn Olly og lekte med minne.

Jeg fant f.eks resterende mengde med skudd, da brukte jeg bare Tsearch og frøs magasinet.

Evig kuler, dette funket ikke online da det sikkert muligens foregår en form for validering mot serveren men PB reagerte iallefall ikke.

 

Mhm, det er minne som er så bais å "spore".

Når man dør i BF2, slettes objecte og et nytt opprettes.

"Player" objectet kommer jo fra en klasse.

Også er det en base-adress (muligens en array) som holder styr på alle aktive objecter.

Får du tak i base-adressen har du alle spillerne.

 

Her er en veldig grei link, tidligere godkjent av Ueland for tråden min angående wallhacks.

Dette andre forumet holder en streng holdning angående piratkopiering så den går klar for umets regler =)

Enjoy

http://forum.gamedeception.net/index.php

 

Link til tidligere tråd angående wallhacks.

 

Off-topic:

Jeg så lyset i dag da jeg noterte meg følgende:

Helloworld program C++ => 5900bytes

Helloworld program ASM => 400 bytes. :D

Endret av chills
Lenke til kommentar

Har vært innom de før :). Var det ikke de som kom med den BF2 hacken rett etter at spillet var sluppet?

 

Har ikke så mye erfaring fra BF2, mine gamingdager var vel størst innenfor CS, Starcraft og WC3.

 

Men ta CS da. Her burde det jo være mekanismer som stopper visse former for hacking hvertfall.

I CS kan man jo ikke få mer liv (bare armor) når man spiller, så hvis du skriver et program som endrer denne verdien oppover så burde serveren, eller evt. selve koden i spillet sørge for at noe skjer hvis denne verdien plutselig stiger ingame.

 

Spesielt at objektet slettes når man dør. Menmen, det er vel greia for å gjøre det hele mer sikkert.. :)

 

Men alt er jo egentlig logisk. Det er mange som tror at dette med cracking nesten må være "magi", men det fins jo ikke noe som er mer logisk. Dette vil da ikke si at det er lett, matte er jo også logisk, men avansert matte er jo fryktelig vanskelig :) (for del fleste).

Og når programmene blir store blir det jo desto vanskeligere å finne frem i jungelen av verdier, men jo større program, jo flere muligheter (som oftest) :).

 

Det letteste å begynne med er vel å lage et lite program med en variabel i som du kjenner verdien til. Finn så denne verdien og forandre den og se hva som skjer.

 

Har du noe datautdannelse Chills? :)

Endret av kimla
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...