SooM.cz - IP2MAC MAC2IP Zjištění MAC adresy z IP
Úvodem:
Různé sítě, od napůl otevřeného WiFi AP, až po jednoduché domácí sítě povolují připojení jen uživatelům s konkrétní MAC adresou (MAC whitelisting).
Nejpodstatnější informace o stavu naší síťové karty (včetně MAC) zjistíme ve Windows příkazem "
ipconfig /all" v Linuxu programem "
ifconfig".
Měníme MAC adresu:
Změnit vlastní MAC adresu není takřka nikdy problém. Ve Windows použijeme dobrý volně dostupný program
MAC MakeUP, horší komerční trial verzi
SMACu s méně funkcemi, nebo rovnou změníme položku v
registrech ručně. U některých
ovladačů tuto možnost nalezneme přímo v dialogu s vlastnostmi síťového adaptéru. U posledních dvou možností musíme kartu nejdříve zakázat a po změně MAC povolit.
V Linuxu potom Hardwarovou (MAC) adresu změníme opět pomocí programu "
ifconfig" a to konkrétně trojcí příkazů:
Zakážeme rozhraní:
# ifconfig eth0 down
Změníme adresu:
# ifconfig eth0 hw ether De:ad:Ba:ad:Ba:be
Povolíme rozhraní:
# ifconfig eth0 up
Toho samého můžeme dosáhnout změnou souboru "
/etc/network/interfaces". Např. přidáme/přepíšeme následující řádky:
iface eth0 inet dhcp
hwaddress ether De:ad:Ba:ad:Ba:be
auto eth0
Pro více informací navštivte
Ubuntu fórum.
Zjišťujeme MAC adresu:
Nyní stojíme před problémem, jak zjistit adresu oběti, se kterou se přihlásíme do sítě.
Nejjednodušším způsobem je použít dávkový soubor (např.: ultrahaxor.bat) s následujícím obsahem:
ipconfig /all >> %0
exit
rem ----------------------------------------
Ten při spuštění z počítače oběti vytáhne IP i MAC adresy všech rozhraní a uloží na konec sebe samého.
Dalšími způsoby (pokud na počítač oběti "vidíme") je zjišťování MAC adresy z cache ARPu. To uděláme jednoduše:
Ping na oběť:
ping 192.168.2.69
Zjištění MAC z cache ARPu (v Linuxu tuším není parametr -a nutný):
Jinak můžeme v Linuxu ARP cache nalézt také v souboru "/proc/net/arp", se kterým tento program již tradičně a samozřejmě pracuje.
arp -a
Teorie MAC & ARP:
A co to vlastně je ta ARP (Address resolution protocol) cache? ARP cache je soubor (nebo jiné úložiště), ve kterém si systém udržuje informace o tom, která MAC adresa patří ke
které IP adrese (jednou je vyhledá a pak řádově několik sekund používá záznam z cache, než si záznam obnoví). My jako programátoři a uživatelé určujeme počítač v síti pomocí IP
adresy, hardwarová vrstva síťového přenosu nikoliv. Proč? Protože MAC adresy platí pouze v podsíti. Tedy v celém internetu může být například 10000 počítačů se stejnou MACkou, ale
stejně nebudou kolidovat, protože slouží jen k tomu, aby router dokázal mezi těmi několika málo počítači, které na které routuje nalézt ten správný a aby tento počítač poznal, že
jde o packet pro něj. A to nemluvím o tom, že možných MAC adres je více, než IP adres (každý výrobce síťových adaptérů má přiřazenou
předponu o 3 oktetech, tj. 1.
polovina adresy, nicméně to neznamená, že takto nemůžeme předstírat kartu od jiného výrobce...) BTW: existuje také všesměrová MAC adresa
ff:ff:ff:ff:ff:ff (tedy samé jedničky), na kterou pokud zašleme packet, musí ho přijmout všechy stroje (tomu se říká
broadcasting - např. toho využívá ping - zašle všem počítačům packet se zprávou: "jestli jsi
123.123.123.123, tak mi odpověz", pokud v síti existuje počítač s nastavenou, nebo půjčenou IP adresou
123.123.123.123, tak
odpoví: "Jo sem tu, ahooj, moje MAC:
De:ad:Ba:ad:Ba:be s pozdravem tvůj
123.123.123.123")
Jednotlivé záznamy v ARP cache vznikají při jakékoli komunikaci s daným počítačem (nejjednodušší je zaslat na daný počítač požadavek ping), tím vznikne v aktivním (pingujícím) i
cílovém (odpovídajícím) počítači záznam např.:
123.123.123.123 De:ad:Ba:ad:Ba:be Dynamic
Více informací naleznete například v knize "
Hacking: umění exploitace" od Jona Ericksona, nebo Daanově článku
ARP Poison Routing
Automatizace:
Pro zjednodušení některých operací jsem si napsal malý
PHP Skriptík =), který vám teď popíši.
Softwarové požadavky:
- ping (snad máš ne??!)
- arp (ten se docela hodí...)
- Windows (jediná závislost na windows je, že skript parsuje MSoftí verzi arpu a v Linuxové můžou být drobné nuance, s jinými věcmi nebude problém - ping se pouze spouští a ngrep
se v Linuxové verzi neliší.)
-
WinPCap (
LibPCap pokud používáte Linux - vyžadován ngrepem)
-
ngrep (nejlepší sniffer pod sluncem!!!)
Konfigurační proměnné:
//binárka NGREPu
$ngrep = "ngrep";
//PING s parametry (já zasílám pouze jeden dotaz tj.: -n 1)
$ping = "ping -n 1";
//ARP s parametry pro vypsání všech záznamů
$arp = "arp -a";
Popis jednotlivých funkcí:
quick_ipmac_scan("192.168.1");
Otevře na pozadí procesy, které najednou odešlou ping na adresy 192.168.1.1-192.168.1.255, počká na odpověď a následně vypíše obsah ARP cache (tím zjistíme IP a MAC adresy všech
počítačů, které odpovídají na ping v rozsahu, který jsme zadali jako parametr, tj. tři první oktety IP adresy, poslední bude scanován).
get_mac("192.168.2.69");
Odešle ping na zadanou IP a potom pomocí regulérních výrazů vyparsuje z ARP cache příslušnou MACku, trimne z ní přebytečné mezery a vrátí jí. Pokud jde o IP vašeho rozhraní, nebo na danou IP nelze zaslat ICMP broadcast, bude vrácena příslušná chybová hláška.
sniff_ips(3, "192.168");
//ngrep -d 3 | grep "192.168.*:.* -> .*:.*"
spustí NGREP tak, aby snifoval na 3. rozhraní (tj. 1. parametr funkce - seznam u vás dostupných rozhraní získáte příkazem "ngrep -L", u mne je 3. rozhraní WiFi) čte zachycená data
a hledá v nich všechny IP adresy, ze kterých jsou aktivně posílaná nějaká data a které začínají druhým parametrem ("192.168") a pomocí funkce "get_mac" zjistí a vypíše MAC adresu
společně s IP (jinak řečeno v tomto příkladu si nechávám vypisovat všechny IP i MAC adresy počítačů aktivních v síti na rozhraní #3, jejihž IP začínají "192.168"). Pozn.: Tato
funkce obsahuje nekonečnou smyčku, která běží do ukončení skriptu.
Závěrem:
Máme MAC adresu oběti, můžeme si jí nyní nastavit na svoje rozhraní (pozor!! Pokud má obět více rozhraní, každá její síťová karta má pravděpodobně jinou MAC adresu, musíme tedy
získat MACku toho rozhraní, se terým se připojuje do námi napadané sítě), tomuto postupu se říká "spoofování MAC adresy", pravděpodobně se budeme muset vykašlat na DHCP a ručně si
nastavit stejnou IP, jako oběť. Tak jsme si teoreticky zařídili, že se k nám router (etc...) bude chovat stejně jako k oběti (uvidíme na její pakety - to si musíme zajistit
pingováním routeru cca jednou za 10 sec aby si nás nacachoval a udržel v ARP cache, to již ale zabíhám do aktivního sniffování přes ARP poisoning) Nám šlo hlavně o to např. získat
přístup k internetu (pokud například mají přístup do WANu povoleny jen některé MACky, jak tom je většinou u WiFi hotspotů, které vám internet povolí až po zadání hesla, i když do
sítě vás bez něj pustí...), nebo jiné službě, která je omezená na určité MACky klientů.
Moderní AP se většinou proti tomuto brání mechanismy, které nám v ARP poisoningu brání, a dokáží rozlišit jednotlivé síťové adaptéry i jinak než podle IP a MAC adres (pomocí
různých otisků atd...)
keywords: MAC IP IP2MAC MAC2IP ARP CACHE