Sniffer原理应用详解
[ 2008/03/24 09:38 | by selboo ]
提到网络嗅探大家都知道sniffer了,sneff是嗅探的意思,sniffer自然就是嗅探器的含义了。Sniffer是利用计算机的网络接口截获目的地为其它计算机的数据报文的一种工具。嗅探器最早是为网络管理人员配备的工具,有了嗅探器网络管理员可以随时掌握网络的实际情况,查找网络漏洞和检测网络性能,当网络性能急剧下降的时候,可以通过嗅探器分析网络流量,找出网络阻塞的来源。嗅探器也是很多程序人员在编写网络程序时抓包测试的工具,因为我们知道网络程序都是以数据包的形式在网络中进行传输的,因此难免有协议头定义不对的。
了解了嗅探器的基本用法,那它跟我们的网络安全有什么关系?
任何东西都有它的两面性,在黑客的手中,嗅探器就变成了一个黑客利器,上面我们已经提到了arp欺骗,这里再详细讲解arp欺骗的基本原理,实现方法,防范方式,因为很多攻击方式都要涉及到arp欺骗,如会话劫持和ip欺骗。首先要把网络置于混杂模式,再通过欺骗抓包的方式来获取目标主机的pass包,当然得在同一个交换环境下,也就是要先取得目标服务器的同一网段的一台服务器。
Arp是什么?arp是一种将ip转化成以ip对应的网卡的物理地址的一种协议,或者说ARP协议是一种将ip地址转化成MAC地址的一种协议,它靠维持在内存中保存的一张表来使ip得以在网络上被目标机器应答。ARP就是IP地址与物理之间的转换,当你在传送数据时,IP包里就有源IP地址、源MAC地址、目标IP地址,如果在ARP表中有相对应的MAC地址,那么它就直接访问,反之,它就要广播出去,对方的IP地址和你发出的目标IP地址相同,那么对方就会发一个MAC地址给源主机。而ARP欺骗就在此处开始,侵略者若接听到你发送的IP地址,那么,它就可以仿冒目标主机的IP地址,然后返回自己主机的MAC地址给源主机。因为源主机发送的IP包没有包括目标主机的MAC地址,而ARP表里面又没有目标IP地址和目标MAC地址的对应表。所以,容易产生ARP欺骗。例如:我们假设有三台主机A,B,C位于同一个交换式局域网中,监听者处于主机A,而主机B,C正在通信。现在A希望能嗅探到B->C的数据, 于是A就可以伪装成C对B做ARP欺骗——向B发送伪造的ARP应答包,应答包中IP地址为C的IP地址而MAC地址为A的MAC地址。 这个应答包会刷新B的ARP缓存,让B认为A就是C,说详细点,就是让B认为C的IP地址映射到的MAC地址为主机A的MAC地址。 这样,B想要发送给C的数据实际上却发送给了A,就达到了嗅探的目的。我们在嗅探到数据后,还必须将此数据转发给C, 这样就可以保证B,C的通信不被中断。
以上就是基于ARP欺骗的嗅探基本原理,在这种嗅探方法中,嗅探者A实际上是插入到了B->C中, B的数据先发送给了A,然后再由A转发给C,其数据传输关系如下所示:
B----->A----->C
B<----A<------C
当然黑洞在进行欺骗的时候还需要进行抓包和对包进行过虑得到他们想要的信息,如用户名、口令等。虽然网络中的数据包是以二进制的方式进行传输的,但嗅探器的抓包和重组还有过滤等都为他们做了这一切。
网络嗅探有三种方式,一种是mac洪水,即攻击者向交换机发送大量的虚假mac地址数据,交换机在应接不暇的情况下就象一台普通的hub那样只是简单的向所有端口广播数据了,这时嗅探者就可以借机进行窃听,但如果交换机使用静态地址映射表的话,这种方法就不行了。第二种方式是mac地址复制,即修改本地的mac地址,使其与欲嗅探主机的mac地址相同,这样交换机将会发现有两个端口对应相同的mac地址,于是到该mac地址的数据包同时从这两个端口中发出去。
第三种方式就是用得最多的了--------arp欺骗。我们可以看下自己的机器,在刚开机的时候在dos中输入arp –a(查看本机arp缓存表的内容)可以看到arp缓存表是空的。
如:Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
D:\>arp -a
No ARP Entries Found
D:\>
那么我们ping一下网关再输入arp –a查看一下。
D:\>ping 192.168.0.1
Pinging 192.168.0.1 with 32 bytes of data:
Reply from 192.168.0.1: bytes=32 time<1ms TTL=64
Reply from 192.168.0.1: bytes=32 time<1ms TTL=64
Ping statistics for 192.168.0.1:
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
Control-C
^C
D:\>arp -a
Interface: 192.168.0.6 --- 0x10003
Internet Address Physical Address Type
192.168.0.1 00-0a-e6-48-41-8b dynamic
D:\>
从上面的ping命令,我们分析包的结果是,首先本机发出一个arp包询问谁是192.168.0.1?192.168.0.1回应一个arp包,并返回一个mac地址,接下来本机再发送request请求,目标机回应该一个reply包,最后将mac地址保存在arp缓存中。
我们再来举一个arp欺骗的实例:
交换局域网中有A、B、C三台机器,假设ip地址和mac地址如下:
A主机:ip地址为:192.168.0.1,mac地址为:0a:0a:0a:0a:0a:0a
B主机:ip地址为:192.168.0.2,mac地址为:0b:0b:0b:0b:0b:0b
C主机:ip地址为:192.168.0.3,mac地址为:0c:0c:0c:0c:0c:0c
了解了嗅探器的基本用法,那它跟我们的网络安全有什么关系?
任何东西都有它的两面性,在黑客的手中,嗅探器就变成了一个黑客利器,上面我们已经提到了arp欺骗,这里再详细讲解arp欺骗的基本原理,实现方法,防范方式,因为很多攻击方式都要涉及到arp欺骗,如会话劫持和ip欺骗。首先要把网络置于混杂模式,再通过欺骗抓包的方式来获取目标主机的pass包,当然得在同一个交换环境下,也就是要先取得目标服务器的同一网段的一台服务器。
Arp是什么?arp是一种将ip转化成以ip对应的网卡的物理地址的一种协议,或者说ARP协议是一种将ip地址转化成MAC地址的一种协议,它靠维持在内存中保存的一张表来使ip得以在网络上被目标机器应答。ARP就是IP地址与物理之间的转换,当你在传送数据时,IP包里就有源IP地址、源MAC地址、目标IP地址,如果在ARP表中有相对应的MAC地址,那么它就直接访问,反之,它就要广播出去,对方的IP地址和你发出的目标IP地址相同,那么对方就会发一个MAC地址给源主机。而ARP欺骗就在此处开始,侵略者若接听到你发送的IP地址,那么,它就可以仿冒目标主机的IP地址,然后返回自己主机的MAC地址给源主机。因为源主机发送的IP包没有包括目标主机的MAC地址,而ARP表里面又没有目标IP地址和目标MAC地址的对应表。所以,容易产生ARP欺骗。例如:我们假设有三台主机A,B,C位于同一个交换式局域网中,监听者处于主机A,而主机B,C正在通信。现在A希望能嗅探到B->C的数据, 于是A就可以伪装成C对B做ARP欺骗——向B发送伪造的ARP应答包,应答包中IP地址为C的IP地址而MAC地址为A的MAC地址。 这个应答包会刷新B的ARP缓存,让B认为A就是C,说详细点,就是让B认为C的IP地址映射到的MAC地址为主机A的MAC地址。 这样,B想要发送给C的数据实际上却发送给了A,就达到了嗅探的目的。我们在嗅探到数据后,还必须将此数据转发给C, 这样就可以保证B,C的通信不被中断。
以上就是基于ARP欺骗的嗅探基本原理,在这种嗅探方法中,嗅探者A实际上是插入到了B->C中, B的数据先发送给了A,然后再由A转发给C,其数据传输关系如下所示:
B----->A----->C
B<----A<------C
当然黑洞在进行欺骗的时候还需要进行抓包和对包进行过虑得到他们想要的信息,如用户名、口令等。虽然网络中的数据包是以二进制的方式进行传输的,但嗅探器的抓包和重组还有过滤等都为他们做了这一切。
网络嗅探有三种方式,一种是mac洪水,即攻击者向交换机发送大量的虚假mac地址数据,交换机在应接不暇的情况下就象一台普通的hub那样只是简单的向所有端口广播数据了,这时嗅探者就可以借机进行窃听,但如果交换机使用静态地址映射表的话,这种方法就不行了。第二种方式是mac地址复制,即修改本地的mac地址,使其与欲嗅探主机的mac地址相同,这样交换机将会发现有两个端口对应相同的mac地址,于是到该mac地址的数据包同时从这两个端口中发出去。
第三种方式就是用得最多的了--------arp欺骗。我们可以看下自己的机器,在刚开机的时候在dos中输入arp –a(查看本机arp缓存表的内容)可以看到arp缓存表是空的。
如:Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
D:\>arp -a
No ARP Entries Found
D:\>
那么我们ping一下网关再输入arp –a查看一下。
D:\>ping 192.168.0.1
Pinging 192.168.0.1 with 32 bytes of data:
Reply from 192.168.0.1: bytes=32 time<1ms TTL=64
Reply from 192.168.0.1: bytes=32 time<1ms TTL=64
Ping statistics for 192.168.0.1:
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
Control-C
^C
D:\>arp -a
Interface: 192.168.0.6 --- 0x10003
Internet Address Physical Address Type
192.168.0.1 00-0a-e6-48-41-8b dynamic
D:\>
从上面的ping命令,我们分析包的结果是,首先本机发出一个arp包询问谁是192.168.0.1?192.168.0.1回应一个arp包,并返回一个mac地址,接下来本机再发送request请求,目标机回应该一个reply包,最后将mac地址保存在arp缓存中。
我们再来举一个arp欺骗的实例:
交换局域网中有A、B、C三台机器,假设ip地址和mac地址如下:
A主机:ip地址为:192.168.0.1,mac地址为:0a:0a:0a:0a:0a:0a
B主机:ip地址为:192.168.0.2,mac地址为:0b:0b:0b:0b:0b:0b
C主机:ip地址为:192.168.0.3,mac地址为:0c:0c:0c:0c:0c:0c
开源软件七大盈利模式
[ 2008/03/23 12:30 | by selboo ]
开源软件在发展历程中,已经不仅仅是开放源代码的免费软件。开源软件与商业并不冲突,它是一种新兴的商业模式。与传统的商业软件相比,开源软件采用了开放源代码、免费分发等形式,减少了营销与销售成本,更易于广泛传播。
开源软件可以是成功的商业行为,那么这意味着什么呢?首先,商业公司必须要能够生存和盈利;其次,商业公司生存的意义在于为用户创造价值。那么我们来看看开源软件是如何生存、如何创造价值、并如何借助其创造的价值来获得回报的。
在开源软件领域中,常见的盈利模式一共有7种。下面,让我们来逐一列举和分析。
盈利模式之一:多种产品线
在这种模式中,利用开源软件为直接产生收入的专有软件来创造或维持一种市场地位。例如,开放源代码的客户端软件带动了服务器软件的销售,或者借用开源版本带动商业许可版本的产品销售。这种模式应用的比较普遍。如 MySQL 产品就同时推出面向个人和企业的两种版本,即开源版本和专业版本,分别采用不同的授权方式。开源版本完全免费以便更好的推广,而从专业版的许可销售和支持服务获得收入。再如 Redhat 自 Redhat Linux 9.0 后将原桌面操作系统转为 Fedora 项目,借 Fedora Core Linux 在开源社区的声望而促进 Redhat Enterprise Linux AS/ES/WS 服务器产品线的销售。
盈利模式之二:技术服务型
在这种模式中,开放源代码软件采用了一种全新的市场定位,并非面向产品,而是针对技术服务。JBoss就是这种模式的典型代表。JBoss 应用服务器完全免费,而通过提供技术文档、培训、二次开发支持等技术服务而获得收入。
盈利模式之三:应用服务托管(ASP)
这种模式适用于基于开源软件的应用服务供应商(ASP)。
例如,PHP Live! 就是一种构架于 PHP、MySQL 之上的开源软件,它可为企业用户提供实时交谈服务。目前已经有数十家公开提供 PHP Live! 托管服务的应用服务提供商。
盈利模式之四:软、硬件一体化
这种模式是针对硬件制造商的。随着竞争的普及,市场压力迫使硬件公司开发并维护软件,但是软件本身却并不是利润中心,因而采用开源软件。 这种模式为大型公司广泛采纳,比如 IBM HP 等服务器供应商巨头,通过捆绑免费的 Linux 操作系统销售硬件服务器。SUN 公司近期将其 Solaris 操作系统开放源码,以确保服务器硬件的销售收入,也是这种模式的体现。
盈利模式之五:附属品
在这种模式中,出售开放源代码的附加产品。比如在低端市场,出售杯子和T恤衫等;在高端市场上,出售专业编辑出版的文档和书籍。O'Reilly集团是销售开源软件附加产品公司的典型案例,他出版了很多优秀的开放源代码软件的参考资料。O'Reilly实际上雇用和支持了一些著名的开放源代码黑客(例如Larry Wall和Brain Behlendorf),并以此提高它在市场上的声望。
盈利模式之六:品牌战略、服务致上
在这种模式中,开源公司通过开源软件先天的传播优势,以极低的成本建立和传播品牌。并通过向用户提供产品相关的服务来获得回报。 康比尔公司的 Compiere ERP & CRM 软件是这种模式的典型案例。康比尔公司开发了开源的 ERP & CRM 软件,由于其产品优秀,很快便获得了北美、欧洲和亚洲中小企业用户的认可,Compiere 品牌也因此迅速地传播到了世界各地,在企业管理软件市场已经成为全球知名品牌。
盈利模式之七:市场策略
这种模式,是一种快速抢占市场的营销策略,主要是为以后增强版产品的销售打下基础。 这种情形的案例有很多。比如,微软宣称部分的公开 Office 的源代码,就是执行这种策略。另一个案例则是CRM 领域的新星 SugarCRM,这款由速加科技开发的开源版本从2004年上半年公开下载后广为传播,为在9月推出的盒装专业版套件做好口碑上的准备。
开源软件的经营模式多种多样,随着开源软件的发展,会有更多的盈利模式应运而生。事实上,一家公司可能混合采用其中的几种盈利模式,比如康比尔公司不仅采用了第六种品牌策略,同时也采用了第二种提供技术服务的方式。 在开源软件大潮的冲击之下,包括微软在内的商业软件公司,也开始认可开源软件"软件成为服务"的本质。微软支持的金牌合作伙伴已经提供包括 Exchange Server 2003、SharePoint Server 2003 等在内的托管服务,如 ASP-One.com 每月每用户起价1美元的 SharePoint Server 2003 租赁服务和全包价9.95美元每月的Exchange Server 2003 租赁服务。 在欧洲和亚太地区各国政府的压力下,微软被迫开放Windows 和Office 的部分源代码,以改善政府的信任度,赢得庞大的政府采购订单。 开源软件的商业运动正方兴未艾。这是否会对传统的商业模式构成致命一击?开源软件在走向成熟的过程中,企业用户和政府用户由怀疑上升到愿意尝试,并最终形成了信任。开源软件已经成为软件业未来发展的重要趋势。正如 Navica 公司 CEO 本纳德·高登所说,"短短两三年间,任何人在选择任何企业软件之时,都开始考虑一个问题:是否有开源软件可作替代?"
开源软件可以是成功的商业行为,那么这意味着什么呢?首先,商业公司必须要能够生存和盈利;其次,商业公司生存的意义在于为用户创造价值。那么我们来看看开源软件是如何生存、如何创造价值、并如何借助其创造的价值来获得回报的。
在开源软件领域中,常见的盈利模式一共有7种。下面,让我们来逐一列举和分析。
盈利模式之一:多种产品线
在这种模式中,利用开源软件为直接产生收入的专有软件来创造或维持一种市场地位。例如,开放源代码的客户端软件带动了服务器软件的销售,或者借用开源版本带动商业许可版本的产品销售。这种模式应用的比较普遍。如 MySQL 产品就同时推出面向个人和企业的两种版本,即开源版本和专业版本,分别采用不同的授权方式。开源版本完全免费以便更好的推广,而从专业版的许可销售和支持服务获得收入。再如 Redhat 自 Redhat Linux 9.0 后将原桌面操作系统转为 Fedora 项目,借 Fedora Core Linux 在开源社区的声望而促进 Redhat Enterprise Linux AS/ES/WS 服务器产品线的销售。
盈利模式之二:技术服务型
在这种模式中,开放源代码软件采用了一种全新的市场定位,并非面向产品,而是针对技术服务。JBoss就是这种模式的典型代表。JBoss 应用服务器完全免费,而通过提供技术文档、培训、二次开发支持等技术服务而获得收入。
盈利模式之三:应用服务托管(ASP)
这种模式适用于基于开源软件的应用服务供应商(ASP)。
例如,PHP Live! 就是一种构架于 PHP、MySQL 之上的开源软件,它可为企业用户提供实时交谈服务。目前已经有数十家公开提供 PHP Live! 托管服务的应用服务提供商。
盈利模式之四:软、硬件一体化
这种模式是针对硬件制造商的。随着竞争的普及,市场压力迫使硬件公司开发并维护软件,但是软件本身却并不是利润中心,因而采用开源软件。 这种模式为大型公司广泛采纳,比如 IBM HP 等服务器供应商巨头,通过捆绑免费的 Linux 操作系统销售硬件服务器。SUN 公司近期将其 Solaris 操作系统开放源码,以确保服务器硬件的销售收入,也是这种模式的体现。
盈利模式之五:附属品
在这种模式中,出售开放源代码的附加产品。比如在低端市场,出售杯子和T恤衫等;在高端市场上,出售专业编辑出版的文档和书籍。O'Reilly集团是销售开源软件附加产品公司的典型案例,他出版了很多优秀的开放源代码软件的参考资料。O'Reilly实际上雇用和支持了一些著名的开放源代码黑客(例如Larry Wall和Brain Behlendorf),并以此提高它在市场上的声望。
盈利模式之六:品牌战略、服务致上
在这种模式中,开源公司通过开源软件先天的传播优势,以极低的成本建立和传播品牌。并通过向用户提供产品相关的服务来获得回报。 康比尔公司的 Compiere ERP & CRM 软件是这种模式的典型案例。康比尔公司开发了开源的 ERP & CRM 软件,由于其产品优秀,很快便获得了北美、欧洲和亚洲中小企业用户的认可,Compiere 品牌也因此迅速地传播到了世界各地,在企业管理软件市场已经成为全球知名品牌。
盈利模式之七:市场策略
这种模式,是一种快速抢占市场的营销策略,主要是为以后增强版产品的销售打下基础。 这种情形的案例有很多。比如,微软宣称部分的公开 Office 的源代码,就是执行这种策略。另一个案例则是CRM 领域的新星 SugarCRM,这款由速加科技开发的开源版本从2004年上半年公开下载后广为传播,为在9月推出的盒装专业版套件做好口碑上的准备。
开源软件的经营模式多种多样,随着开源软件的发展,会有更多的盈利模式应运而生。事实上,一家公司可能混合采用其中的几种盈利模式,比如康比尔公司不仅采用了第六种品牌策略,同时也采用了第二种提供技术服务的方式。 在开源软件大潮的冲击之下,包括微软在内的商业软件公司,也开始认可开源软件"软件成为服务"的本质。微软支持的金牌合作伙伴已经提供包括 Exchange Server 2003、SharePoint Server 2003 等在内的托管服务,如 ASP-One.com 每月每用户起价1美元的 SharePoint Server 2003 租赁服务和全包价9.95美元每月的Exchange Server 2003 租赁服务。 在欧洲和亚太地区各国政府的压力下,微软被迫开放Windows 和Office 的部分源代码,以改善政府的信任度,赢得庞大的政府采购订单。 开源软件的商业运动正方兴未艾。这是否会对传统的商业模式构成致命一击?开源软件在走向成熟的过程中,企业用户和政府用户由怀疑上升到愿意尝试,并最终形成了信任。开源软件已经成为软件业未来发展的重要趋势。正如 Navica 公司 CEO 本纳德·高登所说,"短短两三年间,任何人在选择任何企业软件之时,都开始考虑一个问题:是否有开源软件可作替代?"
遇到这样的程序员,你怎么办?
[ 2008/03/23 11:59 | by selboo ]
转自 Wyulnnhtg's Blog
此文没什么价值,纯属发牢骚而已!~时间不多的朋友就不要往下看了!
我不知道其它的运维人员或者是安全人员对上线的web项目是否做安全检测!反正我是没有这个习惯。我拿的只是运维的工资,我我负责的只是服务器的运行维护,和操作系统的安全性保证!如果程序员写的程序每个都要让运维来做安全检测的话,那还要程序员干什么?还要测试工程师干什么?我不知道其它的运维人员有没有遇到这样的新鲜事,现在我来讲一讲我遇到的。
今天早上一到单位,闲着没事,做了次服务器的例行检查。突然发现一台服务器的管理员帐号被克隆了。靠,不应该啊!硬防静默了所有的端口,外部攻击基本上不可能啊!接下来开始查比较常规的系统漏洞,目录权限和端口等。确定一切都没有问题后,开始把目标转向web应用。四五个应用,还跑了个VM。没办法,查吧!结果发现一个项目,真的是相当傻,相当和谐了!直接输入域名,没问题。当在域名后加上index.aspx。好嘛!直接进后台了,连验证都没有!看了看后台,更吃惊了,有个上传模块,没有验证文件类型,甚至连扩展名都没有验证!我地神呐,这不要了我命吗?
这台服务器是归属于某部门的,由于只有一台,所以db和web没有分离。并且为了内部传输文件方便,还装了serv-u,更不巧的是他们还申请了开放外部ftp端口!思路不用理顺,都很清晰,webshell上去,serv-u提权,反弹木马装上,好了,系统权限拿到!没什么好说的,迅速上报,领导让我直接去找负责这个项目的人说明情况!到程序员那一说,好嘛,人家来了句:没事,那个我知道,我加上就好了。靠,知道你不早加上!故意整我不是?(当然这话没说出来)能忍则忍了!一个小时后,电话告诉我,改好了。我把他们的站点开放,安全起见,又看了一下。结果呢,还是没有登录验证,只是把我提示他的,上传模块加了个验证,直接输入index.aspx进去的,还是没有登录验证,首页的探针依然显示,无奈了!最后找来他们主管,直接把网站停掉,告诉他们,什么时候你们自己测试好了,再来找我!我就是个运维的,没有义务,更没有时间去教你写程序!
要是你遇到了这样的程序员,你怎么收拾他?
此文没什么价值,纯属发牢骚而已!~时间不多的朋友就不要往下看了!
我不知道其它的运维人员或者是安全人员对上线的web项目是否做安全检测!反正我是没有这个习惯。我拿的只是运维的工资,我我负责的只是服务器的运行维护,和操作系统的安全性保证!如果程序员写的程序每个都要让运维来做安全检测的话,那还要程序员干什么?还要测试工程师干什么?我不知道其它的运维人员有没有遇到这样的新鲜事,现在我来讲一讲我遇到的。
今天早上一到单位,闲着没事,做了次服务器的例行检查。突然发现一台服务器的管理员帐号被克隆了。靠,不应该啊!硬防静默了所有的端口,外部攻击基本上不可能啊!接下来开始查比较常规的系统漏洞,目录权限和端口等。确定一切都没有问题后,开始把目标转向web应用。四五个应用,还跑了个VM。没办法,查吧!结果发现一个项目,真的是相当傻,相当和谐了!直接输入域名,没问题。当在域名后加上index.aspx。好嘛!直接进后台了,连验证都没有!看了看后台,更吃惊了,有个上传模块,没有验证文件类型,甚至连扩展名都没有验证!我地神呐,这不要了我命吗?
这台服务器是归属于某部门的,由于只有一台,所以db和web没有分离。并且为了内部传输文件方便,还装了serv-u,更不巧的是他们还申请了开放外部ftp端口!思路不用理顺,都很清晰,webshell上去,serv-u提权,反弹木马装上,好了,系统权限拿到!没什么好说的,迅速上报,领导让我直接去找负责这个项目的人说明情况!到程序员那一说,好嘛,人家来了句:没事,那个我知道,我加上就好了。靠,知道你不早加上!故意整我不是?(当然这话没说出来)能忍则忍了!一个小时后,电话告诉我,改好了。我把他们的站点开放,安全起见,又看了一下。结果呢,还是没有登录验证,只是把我提示他的,上传模块加了个验证,直接输入index.aspx进去的,还是没有登录验证,首页的探针依然显示,无奈了!最后找来他们主管,直接把网站停掉,告诉他们,什么时候你们自己测试好了,再来找我!我就是个运维的,没有义务,更没有时间去教你写程序!
要是你遇到了这样的程序员,你怎么收拾他?
近来与Arp相关恶意软件越来越猖獗,受害者的也不少,国内的各大杀毒厂商也纷纷推出Arp防火墙。但大部分防火墙虚有其表,原因下面会具体介绍。这篇文章不是科普,主要是思路,更想起到抛砖引玉的作用。让世界清静一点。此外,末学接触并熟悉Arp协议到写出Arp欺骗和反欺骗的test code,前前后后也不过一个星期多一点的时间。经验有限,疏漏之处,再所难免,各位见谅。
Arp协议和Arp欺骗这里就不做介绍了。网络这方面的文章比比皆是。
为了便于理解,下面构造一些名词:
假如局域网内,有网关,发起欺骗的主机(以下简称欺骗主机),受骗主机
双向欺骗:欺骗主机使得网关认为欺骗主机是受骗主机同时让受骗主机认为欺骗主机是网关;
单向欺骗网关:欺骗主机只使网关认为欺骗主机是受骗主机;
单向欺骗目标主机:欺骗主机只使受骗主机认为它是网关;
Arp除了能sniffer之外,现在比较流行的做法就是利用Arp进行HTTP挂马的情况了。所以下面考虑的影响基本以这个角度的方面来衡量。
由于环境不同,继续往下分,一个机房被Arp欺骗的情,机房一般以服务器为主,对外发的数据多以http应答包为主,此时单向欺骗目标主机的危害比较大。另外一个普通的公司,家庭,及网吧之类的局域网环境,对外发的数据多以http请求为主,接收的数据多以http应答包为主,此时单向欺骗网关危害比较大。
还有的就是和网关有关了,网关简单的先分两种:
1、支持IP和mac绑定的;
2、不支持IP和mac绑定。
支持IP和mac绑定的网关都好办,所以这里就不讨论这种情况了,主要讨论不支持IP和mac绑定的情况:
下面举的例子都是Arp双向欺骗已经存在的情况,装上Arp FW后FW将处理情况。
第一种情况——普通公司,家庭,及网吧之类局域网环境下,网关不支持IP和mac绑定:
先说欺骗策略,说到这里不得不提Arpspoof(以下简称as),最近流行这个工具,并且开源,好分析,也确实写的不错。我手头拿到的3.1版本的源代码。若不修改as代码,在当前情况下,并处在双向欺骗时,只要把配置文件稍微改改,就能够实现利用ARP挂马。但如果受骗主机绑定了正确网关的mac,就不灵了。但如果有人修改了as代码,使其能支持gzip解码,并且把本应发给受害主机的包,重组并解码然后再发给受害主机。就又能欺骗了。
然后再回来看看现在国内的Arp FW。比较弱的,FW一进去,连正确的网关mac都检测不出来,需要手动填。好点的能自动检测正确的网关的mac。一般步骤是:
1. 获取当前网关mac(如利用sendARP函数等等);
2. 利用网关IP发一个广播包,获取网关的mac;
3. 抓包对比,如果第一步和第二步获得网关的mac相同,则认为网关mac不是伪造的。如过第二步获得两个Arp reply,则把这两个包与第一步的mac对比,相同的说明是伪造的。如果第二步只获得一个Arp reply,以第二步获得mac为准。
检测到正确网关mac后,就静态的绑定网关IP和mac,防止别人伪造网关。
基本上都这么搞,这个思路是有缺陷的。没错,是可以防的住现在的as。因为as发Arp欺骗包间隔是3s,如果不改源代码的话。在这个的时间间隔下,这三步是有能力获得正确的网关,但是如果把间隔设短,甚至没有间隔发Arp欺骗包的话。现在国内市面上的Arp FW全都倒下。我测了两款,这里把测的结果说一下:
1、金山Arp FW,二话不说,倒下了。(as如果不设间隔的话能实现双向欺骗)。
2、360 Arp FW,倒下了,倒的挺爱的。它倒下的同时,如果你点击重新获取正确网关,它等几秒后,报告有Arp攻击。我一看攻击报告里头的恶意mac,结果恶意的mac恰恰是正确网关发来的。(不设间隔的话能双向欺骗)。
瑞*的我没测。因为我没搞到它的注册码。向一个有可能有哥们要。结果被那哥们鄙视了,他的原话是“没有哦垃圾瑞星我才不用那”(聊天记录直接CTRL+V出来,连错别字都我都没改)。现在若评世界上哪一款杀软的自身进程最多,瑞*应该能排第一吧。^_^
虽然没测,但结果应该是跑不掉的。因为Arp协议在那里摆着。
先说为什么间隔3s的话,能检测到正确网关mac,在执行第二步时,在发广播包之前必须先发一个Arp reply给网关,告诉网关自己正确的mac,然后网关才能把它本身的mac发给受骗主机。这个过程必须在3s内完成。因此如果as的spoof不设间隔的话。那么网关在接收了你的ip和mac之后。发起欺骗的主机马上就去网关那把它改回来。这样受骗主机虽然发了广播包,但是网关根据mac,会把它本身的mac发给欺骗主机而不是发给受骗主机,这样受骗主机依然得不到正确网关的mac。另外,哪怕受骗主机得到了正确的网关mac,也只能保证自己对外发包不受欺骗,但是收到的包还是会被欺骗的。当然FW可以和as玩拉锯,二者都争先恐后的去网关那边刷自己的mac。但是这样导致是容易丢包。
其实这种状况还是有一个相对的解决方案。就是彻底的改头换面掉。同时改自己的IP和mac,不论FW用什么添加ndis虚拟网卡,或者通过代码直接就把当前IP和mac替掉。获得正确网关mac才有保证,否则连正确网关mac都拿不到。其它的就更不用说了(至于什么手动填网关mac之类的。就先不讨论了。知道网关是什么东西的用户原没有想象中的那么多)。
说这是一个相对的解决方案,是因为前提是局域网内得有富余的IP资源。另外它还有一些弊端。就是如果有些机器关机的话,而受害者替换了它的IP之后,以后将造成冲突。当然也是有解决方案了。比较多,这里就先不讨论了。
因此,先要确定哪些IP是未被使用的,可以广播Arp request 局域网各个IP的mac,如果有人应答的话说明这个IP被用,没人应答的话,就是富余的IP了。
只要把自己的IP和mac一改
改了之后,迅速刷新网关,获得正确网关的mac之后,可以询问用户是否改回来,改回来,因为无法避免丢包。网速也容易受影响。
第二种关于机房Arp欺骗的情况这里就不多说,参考上面文字。有几点要说明的是,机房里,外网IP和内网IP是映射的,同时改IP和mac是会导致断网的,有一定危险性。另外获得正确网关的mac后,IP和mac必须改回来。也就是说在机房这种情况下,丢包是免不了的。
Arp协议和Arp欺骗这里就不做介绍了。网络这方面的文章比比皆是。
为了便于理解,下面构造一些名词:
假如局域网内,有网关,发起欺骗的主机(以下简称欺骗主机),受骗主机
双向欺骗:欺骗主机使得网关认为欺骗主机是受骗主机同时让受骗主机认为欺骗主机是网关;
单向欺骗网关:欺骗主机只使网关认为欺骗主机是受骗主机;
单向欺骗目标主机:欺骗主机只使受骗主机认为它是网关;
Arp除了能sniffer之外,现在比较流行的做法就是利用Arp进行HTTP挂马的情况了。所以下面考虑的影响基本以这个角度的方面来衡量。
由于环境不同,继续往下分,一个机房被Arp欺骗的情,机房一般以服务器为主,对外发的数据多以http应答包为主,此时单向欺骗目标主机的危害比较大。另外一个普通的公司,家庭,及网吧之类的局域网环境,对外发的数据多以http请求为主,接收的数据多以http应答包为主,此时单向欺骗网关危害比较大。
还有的就是和网关有关了,网关简单的先分两种:
1、支持IP和mac绑定的;
2、不支持IP和mac绑定。
支持IP和mac绑定的网关都好办,所以这里就不讨论这种情况了,主要讨论不支持IP和mac绑定的情况:
下面举的例子都是Arp双向欺骗已经存在的情况,装上Arp FW后FW将处理情况。
第一种情况——普通公司,家庭,及网吧之类局域网环境下,网关不支持IP和mac绑定:
先说欺骗策略,说到这里不得不提Arpspoof(以下简称as),最近流行这个工具,并且开源,好分析,也确实写的不错。我手头拿到的3.1版本的源代码。若不修改as代码,在当前情况下,并处在双向欺骗时,只要把配置文件稍微改改,就能够实现利用ARP挂马。但如果受骗主机绑定了正确网关的mac,就不灵了。但如果有人修改了as代码,使其能支持gzip解码,并且把本应发给受害主机的包,重组并解码然后再发给受害主机。就又能欺骗了。
然后再回来看看现在国内的Arp FW。比较弱的,FW一进去,连正确的网关mac都检测不出来,需要手动填。好点的能自动检测正确的网关的mac。一般步骤是:
1. 获取当前网关mac(如利用sendARP函数等等);
2. 利用网关IP发一个广播包,获取网关的mac;
3. 抓包对比,如果第一步和第二步获得网关的mac相同,则认为网关mac不是伪造的。如过第二步获得两个Arp reply,则把这两个包与第一步的mac对比,相同的说明是伪造的。如果第二步只获得一个Arp reply,以第二步获得mac为准。
检测到正确网关mac后,就静态的绑定网关IP和mac,防止别人伪造网关。
基本上都这么搞,这个思路是有缺陷的。没错,是可以防的住现在的as。因为as发Arp欺骗包间隔是3s,如果不改源代码的话。在这个的时间间隔下,这三步是有能力获得正确的网关,但是如果把间隔设短,甚至没有间隔发Arp欺骗包的话。现在国内市面上的Arp FW全都倒下。我测了两款,这里把测的结果说一下:
1、金山Arp FW,二话不说,倒下了。(as如果不设间隔的话能实现双向欺骗)。
2、360 Arp FW,倒下了,倒的挺爱的。它倒下的同时,如果你点击重新获取正确网关,它等几秒后,报告有Arp攻击。我一看攻击报告里头的恶意mac,结果恶意的mac恰恰是正确网关发来的。(不设间隔的话能双向欺骗)。
瑞*的我没测。因为我没搞到它的注册码。向一个有可能有哥们要。结果被那哥们鄙视了,他的原话是“没有哦垃圾瑞星我才不用那”(聊天记录直接CTRL+V出来,连错别字都我都没改)。现在若评世界上哪一款杀软的自身进程最多,瑞*应该能排第一吧。^_^
虽然没测,但结果应该是跑不掉的。因为Arp协议在那里摆着。
先说为什么间隔3s的话,能检测到正确网关mac,在执行第二步时,在发广播包之前必须先发一个Arp reply给网关,告诉网关自己正确的mac,然后网关才能把它本身的mac发给受骗主机。这个过程必须在3s内完成。因此如果as的spoof不设间隔的话。那么网关在接收了你的ip和mac之后。发起欺骗的主机马上就去网关那把它改回来。这样受骗主机虽然发了广播包,但是网关根据mac,会把它本身的mac发给欺骗主机而不是发给受骗主机,这样受骗主机依然得不到正确网关的mac。另外,哪怕受骗主机得到了正确的网关mac,也只能保证自己对外发包不受欺骗,但是收到的包还是会被欺骗的。当然FW可以和as玩拉锯,二者都争先恐后的去网关那边刷自己的mac。但是这样导致是容易丢包。
其实这种状况还是有一个相对的解决方案。就是彻底的改头换面掉。同时改自己的IP和mac,不论FW用什么添加ndis虚拟网卡,或者通过代码直接就把当前IP和mac替掉。获得正确网关mac才有保证,否则连正确网关mac都拿不到。其它的就更不用说了(至于什么手动填网关mac之类的。就先不讨论了。知道网关是什么东西的用户原没有想象中的那么多)。
说这是一个相对的解决方案,是因为前提是局域网内得有富余的IP资源。另外它还有一些弊端。就是如果有些机器关机的话,而受害者替换了它的IP之后,以后将造成冲突。当然也是有解决方案了。比较多,这里就先不讨论了。
因此,先要确定哪些IP是未被使用的,可以广播Arp request 局域网各个IP的mac,如果有人应答的话说明这个IP被用,没人应答的话,就是富余的IP了。
只要把自己的IP和mac一改
改了之后,迅速刷新网关,获得正确网关的mac之后,可以询问用户是否改回来,改回来,因为无法避免丢包。网速也容易受影响。
第二种关于机房Arp欺骗的情况这里就不多说,参考上面文字。有几点要说明的是,机房里,外网IP和内网IP是映射的,同时改IP和mac是会导致断网的,有一定危险性。另外获得正确网关的mac后,IP和mac必须改回来。也就是说在机房这种情况下,丢包是免不了的。
局域网内找到ARP病毒源
[ 2008/03/23 11:34 | by selboo ]
第一招:使用Sniffer抓包 在网络内任意一台主机上运行抓包软件,捕获所有到达本机的数据包。如果发现有某个IP不断发送请求包,那么这台电脑一般就是病毒源。原理:无论何种ARP病毒变种,行为方式有两种,一是欺骗网关,二是欺骗网内的所有主机。最终的结果是,在网关的ARP缓存表中,网内所有活动主机的MAC地址均为中毒主机的MAC地址;网内所有主机的ARP缓存表中,网关的MAC地址也成为中毒主机的MAC地址。前者保证了从网关到网内主机的数据包被发到中毒主机,后者相反,使得主机发往网关的数据包均发送到中毒主机。
第二招:使用arp -a命令 任意选两台不能上网的主机,在DOS命令窗口下运行arp -a命令。例如在结果中,两台电脑除了网关的IP,MAC地址对应项,都包含了192.168.0.186的这个IP,则可以断定192.168.0.186这台主机就是病毒源。原理:一般情况下,网内的主机只和网关通信。正常情况下,一台主机的ARP缓存中应该只有网关的MAC地址。如果有其他主机的MAC地址,说明本地主机和这台主机最后有过数据通信发生。如果某台主机(例如上面的192.168.0.186)既不是网关也不是服务器,但和网内的其他主机都有通信活动,且此时又是ARP病毒发作时期,那么,病毒源也就是它了。
第三招:使用tracert命令 在任意一台受影响的主机上,在DOS命令窗口下运行如下命令:tracert 61.135.179.148。 假定设置的缺省网关为10.8.6.1,在跟踪一个外网地址时,第一跳却是10.8.6.186,那么,10.8.6.186就是病毒源。原理:中毒主机在受影响主机和网关之间,扮演了“中间人”的角色。所有本应该到达网关的数据包,由于错误的MAC地址,均被发到了中毒主机。此时,中毒主机越俎代庖,起了缺省网关的作用。
第二招:使用arp -a命令 任意选两台不能上网的主机,在DOS命令窗口下运行arp -a命令。例如在结果中,两台电脑除了网关的IP,MAC地址对应项,都包含了192.168.0.186的这个IP,则可以断定192.168.0.186这台主机就是病毒源。原理:一般情况下,网内的主机只和网关通信。正常情况下,一台主机的ARP缓存中应该只有网关的MAC地址。如果有其他主机的MAC地址,说明本地主机和这台主机最后有过数据通信发生。如果某台主机(例如上面的192.168.0.186)既不是网关也不是服务器,但和网内的其他主机都有通信活动,且此时又是ARP病毒发作时期,那么,病毒源也就是它了。
第三招:使用tracert命令 在任意一台受影响的主机上,在DOS命令窗口下运行如下命令:tracert 61.135.179.148。 假定设置的缺省网关为10.8.6.1,在跟踪一个外网地址时,第一跳却是10.8.6.186,那么,10.8.6.186就是病毒源。原理:中毒主机在受影响主机和网关之间,扮演了“中间人”的角色。所有本应该到达网关的数据包,由于错误的MAC地址,均被发到了中毒主机。此时,中毒主机越俎代庖,起了缺省网关的作用。