Avatar billede nk Nybegynder
03. september 2001 - 15:01 Der er 8 kommentarer og
1 løsning

Brute forcing på IIS

Her er en nød som jeg har svært ved at knække...

Vi har en login side på et website, hvor brugeren skriver username/password, som derefter bliver slået op i en SQL database.

Problemet er, at nogen af brugerne har fået fat i \"Brute forcing\" programmer, som sender over 20.000 passwords afsted i løbet af få minutter. Det opretter så mange user sessions, at serveren er ved at gå ned.

Vi har prøvet flere forskellige løsninger i .asp, men ligemeget hvad, bliver der altid oprettet en ny user session, hver gang \"hackeren\" sender det næste password afsted, da cracking programmet dropper alle session cookies etc.

Spørgsmålet er så, om nogen kender til en eller anden form for filter, som kan behandle alle forespørgsler til denne side, inden IIS\'en opretter en usersession. Filteret skal så sørge for fx at hver IP højst kan poste 1 password i sekundet. På den måde falder belastningen på serveren, og \"hackeren\" bliver sløvet i sit arbejde.

Vi har snakket med flere eksperter, og tilsyneladende findes der ikke firewalls som kan gøre dette. Jeg forestiller mig at der fx findes et ISAPI filter? Eller måske en helt anden løsning.

Jeg håber at nogen kan hjælpe med dette...
Avatar billede oswald Nybegynder
03. september 2001 - 15:17 #1
Du kan eventuelt oprette et IP register i Application objectet hvor du registrerer et IP nummer med en tidskode når en person prøver at logge ind og så slette nummeret igen når personen er logget rigtigt ind.
Ideen er så at du tjekker registeret hver gang en bruger prøver at logge ind og hvis IP nummeret findes tjekker du tidskoden og fortsætter hvis dit tidsrum er overskredet.
Problemet er bare hvad du skal bruge til at lave registret for dictionary objectet er notorisk ustabilt som application object. Jeg ville måke foreslå at du programmerer dit ejet com object hvor du bruger et collection object til registret.

Alternativt kunne du tjekke hvilken browser der laver forspørgslen (Nogle af de værktøj har specielle navne) ellers kunne du prøve at sende en cookie eller eksekverer noget javascript som de færeste ikke browsere understøtter.

Bare forslag, men brug dem hvis du kan.
Avatar billede vistodk Nybegynder
03. september 2001 - 15:34 #2
Hvis du laver det sådan at man max kan prøve 1 gang pr sekund, så sætter du også de normale brugere bag i køen for at logge på... prøver han 20000 gange, så skal de normale brugere passere ind imellen den strøm...
Avatar billede nk Nybegynder
03. september 2001 - 15:36 #3
Ang. 1 gang pr. sekund, så havde jeg forestillet mig at hver IP adresse kunne prøve 1 gang pr. sekund...
Avatar billede mike@work Praktikant
03. september 2001 - 16:31 #4
Du har jo mandens ip - Lav en deny direkte i IIS\'en !!!!
Properties på det ramte site -> Directory Security -> IP address and Domain name restriction -> Add.....

Nemmere kan det ikke være... Problemet er bare hvis han har dynamisk IP. Under alle omstændigheder er der jo mange måder at få sådan en banidt knækket på.

Det er jo tilsyndeladene en teen-cracker som vil blive vældig forskræket over at modtage en mail med en skarp opfordring om at stoppe sit forhavende !!!!
Avatar billede nk Nybegynder
03. september 2001 - 16:40 #5
Det er desværre ikke en..Måske nærmere 100, og nogen af dem har dynamisk ip...Andre sidder på deres skoler, og endnu andre sidder på netcaféer...

Som det er nu, spærrer jeg deres IP hver gang, men jeg kan jo ikke sidde foran skærmen 24 timer i døgnet, så derfor tænkte jeg at man må kunne finde en mere automatisk og permanent løsning.

Man skulle tro at andre har haft problemet før, og at nogen har løst det...

Vi har forøvrigt haft politianmeldt et par stykker af dem, men det ser ikke ud til at have den store effekt på dem. Når computeren derhjemme bliver konfiskeret, fortsætter de bare på deres skole.
Avatar billede tommyf Nybegynder
03. september 2001 - 17:28 #6
Er ikke den store ASP-programmør, men er det ikke muligt at lave det sådan at man kun kan forsøge at logge ind 3 gange på XXminutter fra samme IP?

Det ser man da sommetider rundt omkring :)
Avatar billede nk Nybegynder
04. september 2001 - 09:07 #7
Vi har lavet sådan at man fra en normal browser kun har 3 login forsøg, men det er baseret på en session cookie, og dem dropper \"Brute force\" programmet...

Vi overvejer en database med ip og tidspunkt, som tjekker at en ip kun har 1 logon forsøg pr. 5 sekunder... Men problemet er at der stadigtvæk bliver oprettet en session pr. forsøg, så selv om de ikke kan gætte nogen kodeord, overbelaster de stadigtvæk serveren.
Avatar billede oswald Nybegynder
04. september 2001 - 09:11 #8
Her en lille omgang Semikode (Virker helt sikkert ikke). Hvis den skal køre effektivt skal application(\"LoginIP\") være en form for liste istedet for en string for at gøre søgningen hurtigere. Desuden bruger jeg en ekstra variabel til at holde øje med tiden og sletter logge en gang i minuttet (Nemmere en at holde styr på hver enkelt login).
Mht session objectet så kan du ikke undgå at det bliver lavet uden at slå session fra på sitet, men du kan slette det med session.clear (Mener jeg den hedder) og så spare noget.

\'Clear LoginIP
if application(\"LoginClearTime\") < Now() then
    application(\"LoginIP\") = \"\"
    application(\"LoginClearTime\") < Now() + (1/24/60) \'Det samme som et minut
end if

\'Tjek IP
if instr(1,application(\"LoginIP\"),\"\'\" & <IP> & \"\'\") > 0 then
    response.redirect \"www.fuckoff.com\"
end if

\'Add IP
application(\"LoginIP\") = application(\"LoginIP\") & \"\'\" & <IP> & \"\'\"
Avatar billede kichian Nybegynder
05. september 2001 - 10:40 #9
Hvis \"brute force\" programmerne ikke understøtter cookies (og derved session), så kontrollerer du på valideringssiden om en sessionsvariabel har en tidligere angivet værdi. Hvis ikke så hoppes til \"ingencookie.asp\" siden. På denne side kan du logge ip-adresser og tidspunkter. Brug evt. disse data til at spærre for tilgang til valideringssiden.

Det er desværre ret let at kode et \"brute force\"-værktøj som opfører og identificerer sig som en alm. browser. Derfor må du kombinere ovenstående løsning med en kontrol af for mange forkerte loginforsøg. Hvis der inden for en given periode er for mange fejlforsøg, så spærres ip-nummeret i x minutter. Denne spærring administreres tungest vha. ASP. Det ville være optimalt hvis du vha. programmering kunne sætte IIS til at spærre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester