Korábbi cikkünkben előállítottunk egy UDP csomagot. Most azt nézzük meg, hogy ez a csomag hogyan küldhető ki a hálózatra. Ahhoz, hogy az általunk összerakott karaktersorozatot (amelynek segítségével a "WE" karaktereket küldjük a 192.168.0.20 IP címre) ki tudjuk küldeni a hálózatra, olyan programnyelvet kell választanunk, amellyel kényelmesen (és egyszerűen) elérjük a számítógép hálózati kártyáját. Erre (is) tökéletes a Python nyelv, ezért ezt fogjuk használni, hogy az alkalmazásunkat implementáljuk.
A kiküldendő karaktersorozat a következő:
12 34 56 78 9A BC BC 9A 78 56 34 12 08 00 45 00 00 1E 04 D2 40 00 40 11 F4 9A C0 A8 00 14 C0 A8 00 0F 00 16 30 39 00 0A F6 D1 57 45
Indítsuk el a Linux operációs rendszerünket, és egy szövegszerkesztő (pl.: nano) segítségével gépeljük be a következő programot.
from socket import *
def sendETH(ethernet_packet, payload, interface = "eth0"):
s = socket(AF_PACKET, SOCK_RAW)
s.bind((interface, 0))
return s.send(ethernet_packet + payload)
def pack(byte_sequence):
return b"".join(map(chr, byte_sequence))
if __name__ == "__main__":
ethernet_packet = [0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xBC, 0x9A, 0x78,
0x56, 0x34, 0x12, 0x08, 0x00]
ipv4_header = [0x45, 0x00, 0x00, 0x1E, 0x04, 0xD2, 0x40, 0x00, 0x40, 0x11,
0xF4, 0x9A, 0xC0, 0xA8, 0x00, 0x14, 0xC0, 0xA8, 0x00, 0x0F]
udp_header = [0x00, 0x16, 0x30, 0x39, 0x00, 0x0A, 0xF6, 0xD1, 0x57, 0x45]
payload = "".join(map(chr, ipv4_header + udp_header))
kuld = sendETH(pack(ethernet_packet),
pack(ipv4_header + udp_header))
print("Kikuldtunk %d byte-ot" % kuld)
Futtassuk most ezt az alkalmazást, és a következő eredményt (1. ábra) kapjuk. Ahhoz, hogy más csomagot ne lássunk, alkalmazhatjuk az "UDP" filtert.
1. ábra UDP csomag a hálózaton
Láthatjuk az első ábrán a különböző rétegeken összerakott frame-eket. Az Ethernet II-n látjuk a MAC címeket, illetve a harmadik rétegen találjuk meg az Internet Protocolt, amely tartalmazza már az IP címeket is.
Ha lenyitjuk az "Ethernet II" réteget a Wiresharkban, akkor láthatjuk az EtherType értékét (0x0800), amellyel kiválasztottuk az IP protokollt.
2. ábra Ethernet II részlete
Nézzük meg az IP protokoll részleteit, azaz a harmadik réteget. Ehhez le kell nyitnunk az Internet Protocolt (3. ábra).
3. ábra Internet Protocol részlete
Végül, ha az UDP protokollt nyitjuk meg, akkor megtaláljuk a portokat, a méretet, és persze az átküldött "WE" karaktersorozatot is (4. ábra).
4. ábra UDP csomag adatmezője, benne a "WE" karaktersorozattal
Az nmap (grafikus megjelenítésnél a ZenMap) használata az IT biztonság, illetve az üzemeltetés területén dolgozó szakembereknél szinte elkerülhetetlen. Az ingyenes szoftver segítségével tesztelhetők a számítógépeink, a számítógéphálózatunk, vizsgálha. . . .
A Python programozási nyelv nagyon elterjedt a fejlesztők körében. Használják beágyazott rendszereknél, webes alkalmazásoknál, IT biztonság különböző területein, stb. Látható, hogy nagyon széles a felhasználási területe ennek a nyelvnek, ideje volt m. . . .
Elkezdjük most részletesebben megismerni az nmap használatát. Az nmap nagyon fontos eszköz az IT biztonsággal, illetve az üzemeltetéssel foglalkozó szakembereknél. De hogyan működik? Hogyan lehet és érdemes a scannelési tulajdonságokat beállítani? M. . . .