arp_sweep源码(arp sweep)
本文目录一览:
如何找到ARP攻击源!!!
1.定位ARP攻击源头
主动定位方式:因为所有的ARP攻击源都会有其特征——网卡会处于混杂模式,可以通过ARPKiller这样的工具扫描网内有哪台机器的网卡是处于混杂模式的,从而判断这台机器有可能就是“元凶”。定位好机器后,再做病毒信息收集,提交给趋势科技做分析处理。
标注:网卡可以置于一种模式叫混杂模式(promiscuous),在这种模式下工作的网卡能够收到一切通过它的数据,而不管实际上数据的目的地址是不是它。这实际就是Sniffer工作的基本原理:让网卡接收一切它所能接收的数据。
被动定位方式:在局域网发生ARP攻击时,查看交换机的动态ARP表中的内容,确定攻击源的MAC地址;也可以在局域居于网中部署Sniffer工具,定位ARP攻击源的MAC。
也可以直接Ping网关IP,完成Ping后,用ARP –a查看网关IP对应的MAC地址,此MAC地址应该为欺骗的,使用NBTSCAN可以取到PC的真实IP地址、机器名和MAC地址,如果有”ARP攻 击”在做怪,可以找到装有ARP攻击的PC的IP、机器名和MAC地址。
命令:“nbtscan -r 192.168.16.0/24”(搜索整个192.168.16.0/24网段, 即192.168.16.1-192.168.16.254);或“nbtscan 192.168.16.25-137”搜索192.168.16.25-137 网段,即192.168.16.25-192.168.16.137。输出结果第一列是IP地址,最后一列是MAC地址。 NBTSCAN的使用范例:
假设查找一台MAC地址为“000d870d585f”的病毒主机。
1)将压缩包中的nbtscan.exe 和cygwin1.dll解压缩放到c:下。
2)在Windows开始—运行—打开,输入cmd(windows98输入“command”),在出现的DOS窗口中输入:C: btscan -r 192.168.16.1/24(这里需要根据用户实际网段输入),回车。
3)通过查询IP–MAC对应表,查出“000d870d585f”的病毒主机的IP地址为“192.168.16.223”。
通过上述方法,我们就能够快速的找到病毒源,确认其MAC——〉机器名和IP地址。
2.防御方法
a.使用可防御ARP攻击的三层交换机,绑定端口-MAC-IP,限制ARP流量,及时发现并自动阻断ARP攻击端口,合理划分VLAN,彻底阻止盗用IP、MAC地址,杜绝ARP的攻击。
b.对于经常爆发病毒的网络,进行Internet访问控制,限制用户对网络的访问。此类ARP攻击程序一般都是从Internet下载到用户终端,如果能够加强用户上网的访问控制,就能极大的减少该问题的发生。
c.在发生ARP攻击时,及时找到病毒攻击源头,并收集病毒信息,可以使用趋势科技的SIC2.0,同时收集可疑的病毒样本文件,一起提交到趋势科技的TrendLabs进行分析,TrendLabs将以最快的速度提供病毒码文件,从而可以进行ARP病毒的防御。
谁能告诉我arp filter是什么?
过滤arp
就是对arp攻击进行阻拦。因为arp属于合法协议,其特征就是一个mac地址对应多个IP地址,所以有人用它来进行局域网的捣乱。由于是合法协议,所以无法根治,只能大致判定。比如一个mac地址对应5个IP以下时为合理,超出则视为攻击并予以阻拦。
易语言实现ARP欺骗后怎么实现接收ARP包
模块用精易模块3.41
.版本 2
.支持库 ERawSock
.支持库 eAPI
.支持库 HtmlView
.支持库 spec
.支持库 iext
.支持库 EThread
.程序集 窗口程序集1
.程序集变量 ARP, ARP协议
.程序集变量 网卡信息, 网卡信息, , "0"
.程序集变量 _知, zhibei
.程序集变量 线程池, 类_线程池
.程序集变量 全_计数, 整数型
.子程序 _DLL_局域网_创建完毕
.局部变量 局_计次, 整数型
网卡信息 = 取网卡信息列表 ()
.计次循环首 (取数组成员数 (网卡信息), 局_计次)
组合框1.加入项目 (网卡信息 [局_计次].网卡名称, )
.计次循环尾 ()
组合框1.现行选中项 = 0
_组合框1_列表项被选择 ()
编辑框1.内容 = 取IP地址 (取主机名 ())
_知.是否继续 = 假
ARP.打开网络适配器 (组合框1.现行选中项 + 1)
ARP.配置网络适配器 (2, 1024, 200)
超文本浏览框1. = 真
.子程序 _端口扫描_被选择
调用子程序 (全_交互.扫描内存地址, , , 超级列表框1.取标题 (超级列表框1.现行选中项, 0))
.子程序 _超级列表框1_右键单击表项
弹出菜单 (接口局域网菜单, , )
.子程序 _按钮_探测主机_被单击
.局部变量 局_计次, 整数型
.局部变量 重组IP, 文本型, , "4"
.计次循环首 (超级列表框1.取表项数 (), 局_计次)
.如果真 (到整数 (超级列表框1.取标题 (局_计次 - 1, 3)) ≠ 0)
线程_销毁 (到整数 (超级列表框1.取标题 (局_计次 - 1, 3)))
.如果真结束
系统_处理事件 ()
.计次循环尾 ()
.判断开始 (按钮_探测主机.标题 = “探测内网主机”)
重组IP = 分割文本 (删首尾空 (编辑框1.内容), “.”, 4)
.如果真 (取数组成员数 (重组IP) = 4)
_知.IP = 重组IP [1] + “.” + 重组IP [2] + “.” + 重组IP [3] + “.”
' 获得IP
超级列表框1.全部删除 ()
按钮_探测主机.禁止 = 真
全_计数 = 0
_知.MAC地址 = “”
.判断开始 (组合框2.现行选中项 = 0)
.判断开始 (线程池.启动 (到整数 (编辑框2.内容), 获取MAC, 0))
_知.许可证 = 创建进入许可证 ()
.计次循环首 (225, 局_计次)
.如果真 (线程池.加入工作 (局_计次))
程序_延时 (10, )
.如果真结束
系统_处理事件 ()
.计次循环尾 ()
按钮_探测主机.标题 = “停止”
按钮_探测主机.禁止 = 假
.默认
按钮_探测主机.禁止 = 假
.判断结束
.默认
.判断开始 (线程池.启动 (到整数 (编辑框2.内容), Ping探测, 0))
.计次循环首 (225, 局_计次)
线程池.加入工作 (局_计次)
系统_处理事件 ()
.计次循环尾 ()
按钮_探测主机.标题 = “停止”
按钮_探测主机.禁止 = 假
.默认
按钮_探测主机.禁止 = 假
.判断结束
.判断结束
.如果真结束
.默认
启动线程 (探测停止, , )
.判断结束
.子程序 _ARP欺骗启用_被选择
.局部变量 局_句柄, 整数型
.判断开始 (超级列表框1.现行选中项 ≠ -1)
_知.是否继续 = 真
局_句柄 = 线程_启动 (ARP欺骗, , )
超级列表框1.置标题 (超级列表框1.现行选中项, 3, 到文本 (局_句柄))
超级列表框1.置标题 (超级列表框1.现行选中项, 2, “断开”)
调用子程序 (全_交互.状态条地址, , , “ARP欺骗启用...”)
.默认
鸣叫 ()
调用子程序 (全_交互.状态条地址, , , “当前未选中欺骗对象!”)
.判断结束
' 本源码来自易语言资源网()
.子程序 _ARP欺骗停止_被选择
.如果 (线程_销毁 (到整数 (超级列表框1.取标题 (超级列表框1.现行选中项, 3))))
超级列表框1.置标题 (超级列表框1.现行选中项, 3, “”)
超级列表框1.置标题 (超级列表框1.现行选中项, 2, “恢复”)
调用子程序 (全_交互.状态条地址, , , “ARP欺骗已停止..”)
.否则
.如果结束
.子程序 随机MAC, 文本型
.局部变量 i, 整数型
.局部变量 M, 文本型, , "6"
.计次循环首 (6, i)
置随机数种子 ()
置随机数种子 (取随机数 (, ) + 取启动时间 () + i)
M [i] = 取文本右边 (“00” + 取十六进制文本 (取随机数 (0, 255)), 2)
.计次循环尾 ()
返回 (M [1] + “-” + M [2] + “-” + M [3] + “-” + M [4] + “-” + M [5] + “-” + M [6])
.子程序 获取MAC
.参数 参_IP尾, 整数型
.局部变量 缓冲, 字节型, , "6"
.局部变量 I, 整数型
.局部变量 局_MAC, 文本型
.局部变量 当前IP, 整数型
当前IP = API_inet_addr (_知.IP + 到文本 (参_IP尾))
.如果真 (API_SendARP (当前IP, 0, 缓冲, 6) = 0)
.计次循环首 (6, I)
局_MAC = 局_MAC + 取文本右边 (“00” + 取十六进制文本 (缓冲 [I]), 2) + “-”
系统_处理事件 ()
.计次循环尾 ()
.如果真结束
局_MAC = 取文本左边 (局_MAC, 17)
' 本源码来自易语言资源网()
.判断开始 (局_MAC ≠ “”)
进入许可区 (_知.许可证)
_知.MAC地址 = 局_MAC
标签2.调用反馈事件 (参_IP尾, , 真)
退出许可区 (_知.许可证)
.默认
.判断结束
.判断开始 (全_计数 ≥ 224)
启动线程 (探测停止, , )
.默认
进入许可区 (_知.许可证)
全_计数 = 全_计数 + 1
调用子程序 (全_交互.状态条地址, , , “线程已扫描:” + 到文本 (全_计数))
退出许可区 (_知.许可证)
.判断结束
.子程序 探测停止
按钮_探测主机.禁止 = 真
.如果真 (线程池.取状态 ())
线程池.关闭 ()
.如果真结束
按钮_探测主机.标题 = “探测内网主机”
按钮_探测主机.禁止 = 假
删除进入许可证 (_知.许可证)
调用子程序 (全_交互.状态条地址, , , “ARP扫描已停止..”)
.子程序 ARP欺骗
.局部变量 arp头, ARP头
.局部变量 局_MAC, 文本型
.局部变量 以太网头, 以太网头
局_MAC = 随机MAC ()
arp头.操作类型 = #ARP常量.ARP请求
.如果真 (取数组成员数 (网卡信息) ≥ 组合框1.现行选中项 + 1)
arp头.发送端IP地址 = 网卡信息 [组合框1.现行选中项 + 1].默认网关
.如果真结束
arp头.发送端以太网地址 = 局_MAC
arp头.目的IP地址 = 超级列表框1.取标题 (超级列表框1.现行选中项, 0)
arp头.目的以太网地址 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
ARP.构造ARP头 (arp头)
以太网头.以太网源地址 = 局_MAC
以太网头.以太网目的地址 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
ARP.构造以太网头 (以太网头)
.判断循环首 (_知.是否继续)
ARP.发送 (1)
系统_处理事件 ()
.判断循环尾 ()
.子程序 _DLL_局域网_将被销毁
DLL_局域网.可视 = 假
ARP.关闭网络适配器 ()
.如果真 (按钮_探测主机.标题 = “停止”)
探测停止 ()
.如果真结束
.子程序 Ping探测
.参数 参_IP尾, 整数型
.局部变量 重组后IP, 文本型
.局部变量 缓冲, 字节型, , "6"
.局部变量 局_I, 整数型
.局部变量 局_MAC, 文本型
.局部变量 当前IP, 整数型
重组后IP = _知.IP + 到文本 (参_IP尾)
.如果真 (通信测试 (重组后IP, 4000) ≠ -1)
当前IP = API_inet_addr (_知.IP + 到文本 (参_IP尾))
.如果真 (API_SendARP (当前IP, 0, 缓冲, 6) = 0)
.计次循环首 (6, 局_I)
局_MAC = 局_MAC + 取文本右边 (“00” + 取十六进制文本 (缓冲 [局_I]), 2) + “-”
.计次循环尾 ()
.如果真结束
局_MAC = 取文本左边 (局_MAC, 17)
进入许可区 (_知.许可证)
.如果 (局_MAC ≠ “”)
_知.MAC地址 = 局_MAC
.否则
_知.MAC地址 = “无!”
.如果结束
标签2.调用反馈事件 (参_IP尾, , 真)
退出许可区 (_知.许可证)
.如果真结束
.判断开始 (全_计数 ≥ 224)
启动线程 (探测停止, , )
.默认
进入许可区 (_知.许可证)
全_计数 = 全_计数 + 1
调用子程序 (全_交互.状态条地址, , , “已探测线程数:” + 到文本 (参_IP尾))
退出许可区 (_知.许可证)
.判断结束
.子程序 _标签2_反馈事件, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型
.局部变量 局_索引, 整数型
局_索引 = 超级列表框1.插入表项 (-1, , , , , )
超级列表框1.置标题 (局_索引, 0, _知.IP + 到文本 (参数一))
超级列表框1.置标题 (局_索引, 1, _知.MAC地址)
.子程序 _组合框1_列表项被选择
.局部变量 局_序号, 整数型
局_序号 = 组合框1.现行选中项 + 1
编辑框4.内容 = “”
.如果真 (取数组成员数 (网卡信息) ≥ 局_序号)
编辑框4.加入文本 (“序号:” + 到文本 (网卡信息 [局_序号].序号) + #换行符)
编辑框4.加入文本 (“网卡名称:” + 网卡信息 [局_序号].网卡名称 + #换行符)
编辑框4.加入文本 (“IP地址:” + 网卡信息 [局_序号].IP地址 + #换行符)
编辑框4.加入文本 (“物理地址:” + 网卡信息 [局_序号].物理地址 + #换行符)
编辑框4.加入文本 (“子网掩码:” + 网卡信息 [局_序号].子网掩码 + #换行符)
编辑框4.加入文本 (“默认网关:” + 网卡信息 [局_序号].默认网关 + #换行符)
编辑框4.加入文本 (“Wins服务器地址:” + 网卡信息 [局_序号].Wins服务器地址 + #换行符)
编辑框4.加入文本 (“DHCP服务器地址:” + 网卡信息 [局_序号].DHCP服务器地址 + #换行符)
.如果真结束
.子程序 _按钮_启用网卡_被单击
.判断开始 (ARP.打开网络适配器 (组合框1.现行选中项 + 1))
.判断开始 (ARP.配置网络适配器 (2, 1024, 200))
调用子程序 (全_交互.状态条地址, , , “网卡” + 到文本 (组合框1.现行选中项 + 1) + “启用成功..”)
.默认
调用子程序 (全_交互.状态条地址, , , “网卡” + 到文本 (组合框1.现行选中项 + 1) + “启用失败..”)
.判断结束
.默认
调用子程序 (全_交互.状态条地址, , , “网卡” + 到文本 (组合框1.现行选中项 + 1) + “打开失败..”)
.判断结束
.子程序 _按钮_自定义欺骗_被单击
.判断开始 (按钮_自定义欺骗.标题 = “欺骗”)
_知.自定义ARP是否继续 = 真
.如果真 (启动线程 (自定义ARP, , ))
按钮_自定义欺骗.标题 = “恢复”
调用子程序 (全_交互.状态条地址, , , “自定义ARP攻击已开启..”)
.如果真结束
.默认
_知.自定义ARP是否继续 = 假
按钮_自定义欺骗.标题 = “欺骗”
调用子程序 (全_交互.状态条地址, , , “自定义ARP攻击已关闭..”)
.判断结束
.子程序 自定义ARP
.局部变量 arp头, ARP头
.局部变量 重组IP, 文本型, , "4"
.局部变量 重组后IP, 文本型
.局部变量 以太网头, 以太网头
.局部变量 缓冲, 字节型, , "6"
.局部变量 I, 整数型
.局部变量 局_MAC, 文本型
.局部变量 当前IP, 整数型
当前IP = API_inet_addr (编辑框_目标IP.内容)
.如果真 (API_SendARP (当前IP, 0, 缓冲, 6) = 0)
.计次循环首 (6, I)
局_MAC = 局_MAC + 取文本右边 (“00” + 取十六进制文本 (缓冲 [I]), 2) + “-”
系统_处理事件 ()
.计次循环尾 ()
.如果真结束
局_MAC = 取文本左边 (局_MAC, 17)
.判断开始 (局_MAC ≠ “”)
编辑框_目标MAC.内容 = 局_MAC
.默认
局_MAC = 编辑框_目标MAC.内容
.判断结束
arp头.操作类型 = #ARP常量.ARP请求
arp头.发送端IP地址 = 编辑框_伪造IP.内容
arp头.发送端以太网地址 = 编辑框_伪造MAC.内容
arp头.目的IP地址 = 编辑框_目标IP.内容
arp头.目的以太网地址 = 局_MAC
ARP.构造ARP头 (arp头)
以太网头.以太网源地址 = 随机MAC ()
以太网头.以太网目的地址 = 局_MAC
ARP.构造以太网头 (以太网头)
.判断循环首 (_知.自定义ARP是否继续)
ARP.发送 (1)
系统_处理事件 ()
.判断循环尾 ()