Gå till innehåll

Testa om datorn är skyddad mot buffertöverskridningsattacker


Recommended Posts

Alltså guuuud va coolt!

Jag vet att denna tråden i stort sett går runt i en loop men alltså jag måste bara ta upp detta. Jag gjorde ju en ganska fattig BO innan som endast var en BO men inte en riktig "exploit". Men jag blev lite inspirerad nu när tråden kom upp igen så jag bestämde mig för att fixa fram en riktig exploit. Och visst lyckades jag! Men även när jag lyckats göra en helt fungerande BO-exploit varnade Visual Studio (den studio man programmerar i) mig att programmet var fel :D

Alltså seriöst, Visual Studio är så jävla bra! Den varnar både innan, under, och efter man gör ett säkerhetshål. Jag ska fixa fram en lite mer tilltalande version av exploiten som man då kan använda som en fristående BO tester, eftersom jag tror den här Comodo BO Tester kan vara lite partisk ;)

Jag bifogar en bild som visar hur Visual Studio stoppar mitt program från att köras (nästan exakt som Memory Firewall) när jag gör BO. Det finns två lägen man kan köra sina program i: Debug och Release. Debug har massa BO-tester och sånt med så det är endast när jag kör som Release som exploiten funkar, vilket är skitbra!

Stack around the variable 'buffer' was corrupted.

Detta är exakt vad som hänt; jag gjorde en variabel som jag kallar för 'buffer', och jag skrev utanför buffern så att stacken (stacken är det minne som alla buffrar och variabler ligger på) blev "korrupt".

Okej så låt mig göra exploiten lite mer tilltalande så kan man (JoWa) testa den i Memory Firewall :D

Länk till kommentar
Dela på andra webbplatser

Alltså guuuud va coolt!

Jag vet att denna tråden i stort sett går runt i en loop men alltså jag måste bara ta upp detta. Jag gjorde ju en ganska fattig BO innan som endast var en BO men inte en riktig "exploit". Men jag blev lite inspirerad nu när tråden kom upp igen så jag bestämde mig för att fixa fram en riktig exploit. Och visst lyckades jag! Men även när jag lyckats göra en helt fungerande BO-exploit varnade Visual Studio (den studio man programmerar i) mig att programmet var fel :D

Alltså seriöst, Visual Studio är så jävla bra! Den varnar både innan, under, och efter man gör ett säkerhetshål. Jag ska fixa fram en lite mer tilltalande version av exploiten som man då kan använda som en fristående BO tester, eftersom jag tror den här Comodo BO Tester kan vara lite partisk ;)

Då test och testobjekt kommer från samma utvecklare är det ju inte orimligt att fatta sådana misstankar. Därför efterfrågade jag något annat program som kan bekräfta, komplettera eller motsäga det resultat som vi hittills har sett. ;)

Jag bifogar en bild som visar hur Visual Studio stoppar mitt program från att köras (nästan exakt som Memory Firewall) när jag gör BO. Det finns två lägen man kan köra sina program i: Debug och Release. Debug har massa BO-tester och sånt med så det är endast när jag kör som Release som exploiten funkar, vilket är skitbra!

Detta är exakt vad som hänt; jag gjorde en variabel som jag kallar för 'buffer', och jag skrev utanför buffern så att stacken (stacken är det minne som alla buffrar och variabler ligger på) blev "korrupt".

Så Microsoft har uppenbarligen tekniken för att hindra buffertöverskridning. Utmärkt, och utmärkt att utvecklare så tydligt uppmärksammas på detta. Varför ser vi inte detta i Windows? :unsure:

Okej så låt mig göra exploiten lite mer tilltalande så kan man (JoWa) testa den i Memory Firewall :D

:D Strålande! Sådana testprogram tycks inte finnas i mängder. Och tilltalande skall det förstås vara! :P Har nu CIS 3.9 alfa, så inget kan garanteras. ;) Men andra kan testa 3.8, och jag kan testa SafeSurf.

Länk till kommentar
Dela på andra webbplatser

Skulle installera Memory Firewall för att testa själv men det fungerade inte att installera... "Rollback done" står det bara och installationsmappen blir tom så du får testa detta då. ;)

Länk till kommentar
Dela på andra webbplatser

Vet inte riktigt vad SafeSurf är men jag fick igång Memory Firewall genom kompatibilitetsläget, dah! ;)

Jag var kanske lite försiktig med att fylla buffern så att Memory Firewall inte märkte något (jag var faktiskt lite för försiktig, i praktiken lär man ju inte träffa adresserna klockrent) därför gjorde jag testet lite mer klumpigt så att den nu fyller buffern rätt ordentligt (typ 50 bytes för mycket, alltså exempel 50 tecken för mycket). Dock säger varken DEP eller Memory Firewall något fast "exploiten" lyckas helt.

Jag kör 32-bitars Windows 7 nu och det verkar ju faktiskt som att 64-bitars DEP är extremt mycket mer alert och säkert än 32-bitars DEP. DEP i 64 stängde ju programmet direkt, här i 32-bitars bara kraschar programmet efter ett tag utan att DEP ens säger något.

Memory Firewall ger visserligen små felmeddelande lite då och då så den kanske inte fungerar helt som den ska, så du kan ju testa denna uppdaterade "exploiten". Jag frågar mig ibland om jag verkligen gjort rätt, men uppenbarligen har jag det eftersom den kod som jag aldrig säger ska köras, verkligen körs efter att jag överfyllt buffern.

Kan Memory Firewall vara en bluff? För om inte denna exploiten ger något felmeddelande är ju något knasigt då jag översvämmar buffern med 50 tecken extra och returneringsadressen ändras så att annan kod körs...

Länk till kommentar
Dela på andra webbplatser

Har du testat med Memory Firewall på?

Jag ska testa detta på x64 senare och jämföra. Alltså jag är inte 100% säker att jag gör rätt men mycket tyder på det. Jag har inte fått det att fungera i Releaseläget så jag kör i Debugläget vilket kan vara boven. Debugläget kan ju ha massa konstiga tester som fakkar upp allt. Dock tror jag inte det eftersom, som sagt, det meddelande som dyker upp endast kan visas om en riktig exploit av "säkerhetshålet" skett.

Jag ska gå till botten med det här, när jag fått det att fungera i Releaseläget och Memory Firewall fortfarande inte klagar måste Memory Firewall antingen vara fake eller helt enkelt gå efter andra kriterier än vad jag åstadkommer (typ att den endast reagerar om man gör sånna där shellcode injections vilka jag inte bemästrar ännu ;))

Länk till kommentar
Dela på andra webbplatser

Okej så jag har nu lyckats med Releaseläget. Det var kompilatorn som optimerade bort den kod som jag inte direkt kallade på. Jag har gjort en mer tilltalande version som nu svämmar över med 100 bytes extra och då skriver över returneringsadressen som får programmet att hoppa till annan kod i programmet. Detta är ett äkta stack buffer overflow utnyttjande och enligt Comodo är det sånt här Memory Firewall ska hindra:

Comodo Memory Firewall detects the following types of attack:

Detection of Buffer Overflows which occur in the STACK memory,

Men uppenbarligen upptäcker den inte alls detta? Det här med shellcodes ska inte spela så stor roll egentligen, jag har läst på lite mer och det får väl bli en version med detta nästa gång ;) Tycker iallafall att Memory Firewall är väldigt passivt, det här inte hindrat något jag gjort?

Testa denna nya, mitt Firewall säger inget och jag är säker på att det är rätt installerat eftersom jag fick Protected på alla tre av Comodos tester. Varningar kom upp och allt. Knasigt.

Länk till kommentar
Dela på andra webbplatser

Så ja!

Har forskat hela dagen och lyckades göra en någorlunda fungerande "stack buffer overflow shellcode exploit". Memory Firewall varnar nu och man kan då stoppa exploiten helt. Jag vill därför sammanfatta denna tråden nu:

Memory Firewall är inte fake. Den är extremt snabb och stoppar min exploit. Dock är beskrivningen av produkten helt felaktig. Memory Firewall är inte alls en "buffer-vaktare", man kan skriva över returneringsadressen och skriva flera kilobytes utanför buffern, Memory Firewall säger ändå inget. Man kan till och med ändra returneringsadressen så att helt annan kod körs utan att den bryr sig. Dock hojtar den till när man försöker köra kod som inte ligger i code-segmentet.

När man kompilerar ett program läggs all kod i code-segmentet och data i data-segmentet. All kod som finns i code-segmentet är skrivet av utvecklaren. En BO exploit lägger dock kod i en buffer, vilket lagras i data-segmentet. Därför är Memory Firewall väldigt passiv och vaktar bara en sak; att ingen kod körs från data-segmentet. Mina förra exploits har utnyttjat en BO och ändrat returneringsadressen korrekt, men jag har fortfarande kört kod från code-segmentet, därför har Memory Firewall inte brytt sig :D

Denna tråden och vad jag lärt mig omkring denna tråden har helt ändrat min syn på Memory Firewall, jag anser den vara ett absolut måste. Jag skulle inte bli förvånad om datorn blir helt säker med denna igång, seriöst. Det finns ju fan inga fler hot än BO som kan köras utan användarens inverkan? , en server som kör Memory Firewall borde vara totalt säker mot exakt alla utomstående hot, dock kan ju såklart servern kraschas av utomståndes indata eftersom Memory Firewall då kommer att döda serverns process som fick BO, men iallafall kommer hackarna inte vidare ;)

Om Microsoft kunde köpa upp Memory Firewall och bygga in det i Windows, typ som DEP, hade man nog kunnat hindra en rejäl del virus och sånt mög :)

Det är ju så att dagens OS blir bara säkrare och säkrare, snart kan virus och liknande säga hej då :) Framtidens virus kommer nog bara bygge på sån här social engineering där man lurar användaren.

Länk till kommentar
Dela på andra webbplatser

Applåder för ditt engagemang! kzarWoDjM.gif

Trots den fina ikonen (:D) får jag inte ditt program att fungera. :unsure: Får upp en ruta, och klickar på Ja. Då tvärdör processen Säkerhetstest.exe. Är programmet beroende av någon tjänst som jag har inaktiverat, tro? :blink:

Fin sammanfattning av tråden! :) Denna teknik inbyggd i Windows (och övriga OS) vore en höjdare. Att inte alla säkerhetspaket ger detta skydd kan man också ifrågasätta. I många fall betalar ju folk för datorsäkerhet, och likväl är deras system vidöppna för denna typ av attack. :angry: Får de då vad de betalar för: datorsäkerhet? :rolleyes:

Länk till kommentar
Dela på andra webbplatser

Nej det är nog inget fel hos dig, en annan kille med XP sa även att det inte fungerade där. Det kan ju bero på massa saker men det viktiga är att jag insåg att Memory Firewall fungerar klockrent ;) Det var inte så lämpat att göra exploiten med mitt verktyg (Visual Studio), eftersom det hela tiden försöker motverka vad jag ska åstadkomma. Kanske kan fixa en bättre version i framtiden om jag fixar lite andra verktyg, men det är ju inte så viktigt. Tror Comodos BO Tester duger. Det är iaf kul att lära sig nya saker och jag visste inte att man kunde få så stor frihet i koden, jag menar att när man väl trängt sig genom såkerhetshålet har man rätt fria händer när det gäller att förstöra :) Men man ska väl fortfarande inte vara allt för paranoid, UAC är ju jättebra mot alla säkerhetshål då utnyttjanden endast har standardrättigheter i de flesta fall, som sagt. Okej men kul tråd ;)

Länk till kommentar
Dela på andra webbplatser

Men alltså jag läser om och om igen att DEP är precis detta...

Wikipedia säger något i stil med att DEP 32-bitars är skräp medan 64-bitars DEP blandat med ASLR, vilka båda finns i Vista ska fungera riktigt bra. Dock verkar ASLR vara avstängt som standard i Vista före SP1, så jag vet inte.

Det står att DEP ska hindra kod att köras från stacken (data-segment), så DEP borde stoppa denna exploiten. Måste bara testa på x64.

Länk till kommentar
Dela på andra webbplatser

Nej det är nog inget fel hos dig, en annan kille med XP sa även att det inte fungerade där. Det kan ju bero på massa saker men det viktiga är att jag insåg att Memory Firewall fungerar klockrent ;)

OK, man vet ju inte. Har hänt att annat inte har fungerat p.g.a. inaktiverade tjänster, t.ex. DCOM. B)

Det står att DEP ska hindra kod att köras från stacken (data-segment), så DEP borde stoppa denna exploiten. Måste bara testa på x64.

Var det inte det du gjorde i början av tråden? Du körde väl Vista x64 då?

Det finns också en jämförelse mellan CMF och DEP i ett tidigare inlägg. ;)

Länk till kommentar
Dela på andra webbplatser

Delta i dialogen

Du kan skriva svaret nu och registrera dig senare, Om du har ett konto, logga in nu för att svara på inlägget.

Gäst
Svara i detta ämne...

×   Du har klistrat in innehåll med formatering.   Ta bort formatering

  Only 75 emoji are allowed.

×   Din länk har automatiskt bäddats in.   Visa som länk istället

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Skapa nytt...