{"id":2379,"date":"2009-10-13T09:21:11","date_gmt":"2009-10-13T07:21:11","guid":{"rendered":"http:\/\/security-planet.de\/?p=2379"},"modified":"2009-10-13T09:21:11","modified_gmt":"2009-10-13T07:21:11","slug":"vorbereitung-einer-dai-dynamic-arp-inspection-implementierung","status":"publish","type":"post","link":"https:\/\/cyber-fi.net\/index.php\/2009\/10\/13\/vorbereitung-einer-dai-dynamic-arp-inspection-implementierung\/","title":{"rendered":"Cisco IOS: Vorbereitung einer DAI (Dynamic ARP Inspection) Implementierung"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.iwen.de\/wp-content\/uploads\/2009\/04\/switch.png\" alt=\"switch\" title=\"switch\" width=\"80\" height=\"59\" class=\"alignleft size-full wp-image-1453\" \/>Dynamic ARP Inspection (DAI) ist ein Mechanismus in Cisco-Switchen (ab Catalyst 2960), der ARP-Pakete auf F\u00e4lschungen untersucht. Dadurch sollen beispielsweise ARP-Spoofing-Attacken verhindert werden, bei denen ein Angreifer ARP-Antworten sendet, in denen er eine fremde IP mit der eigenen MAC-Adresse verbindet, um sich in die Kommunikation einzuklinken.<\/p>\n<p>Wenn DAI auf einem Cisco-Switch aktiviert wird, vergleicht der Switch bei den ARP-Paketen, ob die MAC-Adresse auch zu der IP-Adresse passt. F\u00fcr diesen Vergleich muss der Switch nat\u00fcrlich die korrekte Zuordnung kennen. Diese lernt er normalerweise \u00fcber DHCP-Snooping, bei dem die DHCP-Kommunikation beobachtet wird und der Switch &#8220;sieht&#8221;, welche IP einem Ger\u00e4t mit einer bestimmten MAC-Adresse zugeordnet wurde.<\/p>\n<p>Weitere Erkl\u00e4rungen zu DAI:<\/p>\n<blockquote><p><a href=\"http:\/\/www.cisco.com\/en\/US\/partner\/docs\/switches\/lan\/catalyst3560\/software\/release\/12.2_50_se\/configuration\/guide\/swdynarp.html\">Cisco.com: Configuring Dynamic ARP Inspection<\/a><br \/>\n<a href=\"http:\/\/www.amazon.de\/gp\/product\/1587052563?ie=UTF8&amp;tag=lan2wan-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=1587052563\">LAN Switch Security: What Hackers Know About Your Switches<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.de\/e\/ir?t=lan2wan-21&amp;l=as2&amp;o=3&amp;a=1587052563\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important;margin:0!important;\" \/><\/p><\/blockquote>\n<p>Am einfachsten ist DAI zu implementieren, wenn alle Ger\u00e4te in einem VLAN ihre IP per DHCP bekommen. In diesem Fall kann der Switch die IP-zu-MAC-Datenbank alleine aufbauen und ben\u00f6tigt keine statischen Eintr\u00e4ge. Bei meinen letzten Implementierungen hat sich aber gezeigt, dass die Aussage der PC-Admins, dass in diesem Netz nur DHCP-Clients seien, nicht unbedingt hei\u00dfen muss, dass nicht manche Ger\u00e4te doch eine statische Konfiguration haben &#8230; \ud83d\ude09<br \/>\nDeshalb ist es sinnvoll, vorher ein paar Checks durchzuf\u00fchren, um diese Ger\u00e4te aufzusp\u00fcren. Eine M\u00f6glichkeit ist, die Eintr\u00e4ge in der ARP-Tabelle des L3-Switches mit den Eintr\u00e4gen in der DHCP-Snooping-Tabelle zu vergleichen. Wenn in der ARP-Tabelle ein Eintrag vorhanden ist (und dies ist nicht das Gateway), es aber zu dieser IP keinen Eintrag in der DHCP-Tabelle gibt, dann besteht die Chance, dass dieser PC doch eine statische IP-Konfiguration hat.<br \/>\nUm diesen Vergleich zu erleichern, habe ich das folgende &#8211;sehr simpel gehaltene&#8211; Python-Script geschrieben.<\/p>\n<blockquote><p><a href=\"http:\/\/security-planet.de\/wp-content\/uploads\/2009\/10\/dai-check.py\">dai-check.py<\/a><\/p><\/blockquote>\n<p>Ein Beispiel zur Benutzung des Scriptes. F\u00fcr das Vlan63 soll die ARP-Tabelle mit der DHCP-Snooping-Tabelle verglichen werden:<\/p>\n<ol>\n<li>Sicherstellen, dass die ARP-Tabelle des L3-Switches aktuell ist<\/li>\n<p>Wenn Ger\u00e4te dabei sind, die h\u00e4ufiger f\u00fcr ein paar Stunden inaktiv sind, dann k\u00f6nnte es sein, dass f\u00fcr diese kein Eintrag in der ARP-Tabelle enthalten sind. Deshalb pinge ich alle Ger\u00e4te in dem Vlan einmal an:<\/p>\n<pre class><code>karstens-macbook-pro:~ karsten$ nmap -sP 192.168.63.0\/24\n\nStarting Nmap 4.76 ( http:\/\/nmap.org ) at 2009-08-28 18:09 CEST\n...\nHost 192.168.63.201 appears to be up.\nHost 192.168.63.254 appears to be up.\nNmap done: 256 IP addresses (174 hosts up) scanned in 48.12 seconds\nkarstens-macbook-pro:~ karsten$ \n<\/code><\/pre>\n<li>Ausgeben der ARP-Tabelle des Cisco-L3-Switches:<\/li>\n<pre class><code>L3-Switch&gt;term len 0\nL3-Switch&gt;sh arp | i Vlan63\nInternet  192.168.63.254           -   001a.b1f3.9ab2  ARPA   Vlan63\nInternet  192.168.63.201         137   001c.79a5.ad41  ARPA   Vlan63\nInternet  192.168.63.79          213   0022.63a9.6384  ARPA   Vlan63\n...\n<\/code><\/pre>\n<p>Diese Liste wird abgespeichert; z.B. als dai-arp.txt<\/p>\n<li>Ausgeben der DHCP-Snooping-Tabelle des Cisco-Access-Switches, auf dem DAI konfiguriert werden soll:<\/li>\n<pre class><code>Access-Switch&gt;term len 0\nAccess-Switch&gt;sh ip dhcp snooping binding vlan 63 | i dhcp-snooping\n00:0F:FE:5C:E0:CF   192.168.63.83     223101      dhcp-snooping  63    FastEthernet2\/0\/28\n00:1C:79:A5:AD:41   192.168.63.201    233322      dhcp-snooping  63    FastEthernet1\/0\/28\n...\n<\/code><\/pre>\n<p>Auch diese Liste wird abgespeichert; z.B. als dai-dhcp.txt. Das &#8220;| i dhcp-snooping&#8221; ist deshalb wichtig, weil das Script nur die reine Tabelle ohne Header erwartet. Das k\u00f6nnte\/sollte ich sicher einmal verbessern. Wenn das Vlan sich \u00fcber mehrere Switche erstreckt, werden diese show-Ausgaben einfach in einer Datei gesammelt.<\/p>\n<li>Auswerten der beiden Dateien mit dai-check.py:<\/li>\n<pre class><code>karstens-macbook-pro:~ karsten$ .\/dai-check.py dai-arp.txt dai-dhcp.txt\n['Internet', '192.168.63.254', '-', '001a.b1f3.9ab2', 'ARPA', 'Vlan63']\n['Internet', '192.168.63.206', '137', '001c.79a4.af26', 'ARPA', 'Vlan63']\n<\/code><\/pre>\n<p>Das Script dai-check.py sucht jetzt zu jeder IP aus der ARP-Tabelle, ob es diese IP auch in der DHCP-Tabelle gibt. Am Ende wird eine Liste der Eintr\u00e4ge aus der ARP-Tabelle ausgegeben, zu denen es keine Entsprechung in der DHCP-Tabelle gibt. Im obigen Beispiel war das die 192.168.63.254 (das Default-Gateway) und die 192.168.63.206, die tats\u00e4chlich eine statische Konfiguration hat.<\/p>\n<p>Das Script ist sehr rudiment\u00e4r, so gibt es beispielsweise keinerlei Checks, ob die Tabellen auch wirklich die richtigen Daten beinhalten. Wer falsche Daten eingibt, wird vermutlich auch ein falsches Ergebnis erhalten! \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dynamic ARP Inspection (DAI) ist ein Mechanismus in Cisco-Switchen (ab Catalyst 2960), der ARP-Pakete auf F\u00e4lschungen untersucht. Dadurch sollen beispielsweise ARP-Spoofing-Attacken verhindert werden, bei denen ein Angreifer ARP-Antworten sendet, in denen er eine fremde IP mit der eigenen MAC-Adresse verbindet, um sich in die Kommunikation einzuklinken. Wenn DAI auf einem Cisco-Switch aktiviert wird, vergleicht der <\/p>\n<div class=\"read-more-text\"><a href=\"https:\/\/cyber-fi.net\/index.php\/2009\/10\/13\/vorbereitung-einer-dai-dynamic-arp-inspection-implementierung\/\" class=\"read-more\">continue reading<\/a><\/div>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"twitterCardType":"","cardImageID":0,"cardImage":"","cardTitle":"","cardDesc":"","cardImageAlt":"","cardPlayer":"","cardPlayerWidth":0,"cardPlayerHeight":0,"cardPlayerStream":"","cardPlayerCodec":"","footnotes":""},"categories":[5,7],"tags":[176,188,207,358,490],"class_list":["post-2379","post","type-post","status-publish","format-standard","hentry","category-cisco","category-cisco-security","tag-dai","tag-dhcp-snooping","tag-dynamic-arp-inspection","tag-konfiguration","tag-python"],"_links":{"self":[{"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/posts\/2379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/comments?post=2379"}],"version-history":[{"count":0,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/posts\/2379\/revisions"}],"wp:attachment":[{"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/media?parent=2379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/categories?post=2379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/tags?post=2379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}