`
Michaelmatrix
  • 浏览: 209164 次
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

针对网络流量的病毒

 
阅读更多
针对网络流量的病毒过滤,应该有很多方式,这里提出的是使用NetFilter_Queue这种方式。
[前提]
如果想使用这种方式应该满足以下前提:
1. 希望针对网卡接口,流入流出流向进行过滤
2. 需要针对协议和端口进行过滤
3. 希望仅扫描部分数据包数据,如数据报前100个字节
4. 病毒引擎是用户态的
5. 实现起来简单
6. 对于性能不苛求
[背景]
在linux-2.6.1*版本的内核中nfnetlink正式纳入了官方发布版本中,nfnetlink通过使用子系统nfnetlink_queue扩展了原来的ip_queue的功能。
nfnetlink_queue子系统可以通过设置iptables的 NFQUEUE选项将某些特定规则的网络流量放置到一个队列中,这些放置在队列中的数据包需要用户态的某个程序进行检查后才能放行,用户态程序通过 libnetfilter_queue库来对这个这个队列中的数据包进行操作,如设置NF_ACCEPT标志则放行这个数据包,如果设置了NF_DROP 则就就丢弃该数据包。病毒引擎在这里就作为一个仲裁者了。当然libnetfilter_queue库也可以对数据报进行修改转发, NF_REPEAT标志就发挥了作用。nfnetlink_queue子系统在理论上可以提供65536个队列,来提供65536个调用 libnetfilter_queue库的应用程序使用,也就是说每个应用程序来控制一个队列。
[实现]
1. 首先确保linux内核是否提供nfnetlink接口
当运行过使用libnetfilter_queue库的应用程序后,nfnetlink_queue模块会被导入。
可以通过lsmod | grep nfnetlink命令证实这一点
[root@localhost ~]# lsmod | grep nfnetlink
nfnetlink_queue 160010
nfnetlink 107132 nfnetlink_queue,ip_conntrack
2.编译libnfnetlink和libnetfilter_queue
注意libnetfilter_queue的编译方式:
LIBNFNETLINK_CFLAGS=-I/usr/local/include/libnfnetlink LIBNFNETLINK_LIBS=/user/local/lib ./configure
make
make install
3. libnetfilter_queue库的使用
libnetfilter_queue库的使用还是比解简单的。
libnetfilter_queue-0.0.13/utils/nfqnl_test.c 就是很好的例子
当然习惯使用KDevelop,需要设置如下:
-I/usr/local/include
-L/usr/local/lib -lnetfilter_queue -lnfnetlink
函数调用次序:
nfq_open 打开库
nfq_unbind_pf 解除nf_queue绑定
nfq_bind_pf 绑定nf_queue
nfq_create_queue 选择处理队列号和设置处理函数
参数2 队列号
参数3 处理函数指针
nfq_set_mode 设置netlink处理方式
设置NFQNL_COPY_PACKET参数表示返回数据包
nfq_nfnlh,nfnl_fd 结构转换
recv 此处循环,将接收的队列数据报,调用nfq_handle_packet来处理接收到的数据,nfq_handle_packet再会调用 nfq_create_queue时设置的处理函数处理数据包,这里可以通过设置recv接收缓冲区的大小,来实现扫描部分数据包的目的(第三个参数)
nfq_destroy_queue 关闭队列处理
nfq_close 关闭库
对于队列数据包放行与否的判断,都在nfq_create_queue 的处理函数中实现
这个处理函数的原型为
typedef int nfq_callback(struct nfq_q_handle *qh, struct nfgenmsg *nfmsg,
struct nfq_data *nfad, void *data);
处理函数中重要的函数调用
nfq_get_payload 获取数据包负载,病毒扫描时这就是需要传入的缓存区
nfq_get_msg_packet_hdr 获取包头,这里可以判断数据包的协议
nfq_get_indev 获取数据包的流入设备
(可以在iptables设置时就进行设置,也就不需要判断了)
nfq_get_outdev 获取数据包的流出设备(同上)
nfq_set_verdict 最重要的函数华丽的登场了
根据病毒扫描的结果,来设置数据包的生杀大权
NF_ACCEPT放行
NF_DROP 丢弃
[测试]
createchian.sh脚本的作用
将所有流出的tcp协议(-p tcp)进行队列( -j NFQUEU),设置队列号为0(--queue-num 0, 默认就是0)。Netfilter的层次设在最初的mangle这层。
# createchian.sh
#! /bin/sh
iptables -t mangle -N NF_QUEUE_CHAIN
iptables -t mangle -A NF_QUEUE_CHAIN -m mark --mark 0 -p tcp -j NFQUEUE --queue-num 0
iptables -t mangle -A NF_QUEUE_CHAIN -j MARK --set-mark 0
iptables -t mangle -I OUTPUT -j NF_QUEUE_CHAIN
运行createchian.sh脚本,启动病毒过滤程序(上面那个程序,我并没有实现病毒检查,虽然身边有个商用病毒引擎的SDK)进行病毒过滤。
停止病毒过滤程序,执行removechain.sh脚本删除iptables的队列策略
# removechain.sh
#! /bin/sh
iptables -t mangle -D PREROUTING -j NF_QUEUE_CHAIN
iptables -t mangle -D OUTPUT -j NF_QUEUE_CHAIN
iptables -t mangle -F NF_QUEUE_CHAIN
iptables -t mangle -X NF_QUEUE_CHAIN
[弱点]
性能应该是这种方式最大的问题
数据包队列和用户态病毒扫描处理发生的延时
数据包通过netlink的传送应该会发生数据拷贝(这一点未确认)
解决这些问题的方法:
1. 尽可以将需要过滤的数据报进行筛选,比如仅针对流入数据,TCP协议,开发服务的端口。
2. 扫描部分的数据包
3. 使用多个队列对数据包进行判定,当然这可能要求病毒引擎是可重入的(这个应该不会有什么问题)
4. 不使用这种方式,采用硬件过滤的方式。
当然网络流量的病毒过滤本身就有很多问题
1. 对于性能的影响
2. 误报率比较高
[参考]
libnetfilter_queue man Brad Fisher
用netfilter_queue 在用户态修改网络数据包的例子程序hellwolf
从ip_queue到nfnetlink_queue(上) 独孤阁
从ip_queue到nfnetlink_queue(下) 独孤阁
nfnetlink的子系统独孤阁

nfnetlinkip_queue 独孤阁

[后记]

强烈建议不要使用这种方式,snort_inline就是使用QUEUE这种方式,经测试snort_inline根本撑不住大流量,在ThreadEx测试下,造成netlink数据溢出,前台程序根本来不及处理队列数据。估计10M流量就是极限了。

分享到:
评论

相关推荐

    网络流量分析解决方案

    随着网络的应用越来越广泛,了解网络承载的业务,掌握网络流量特征,以便使网络带宽配置最优化,是当前网络管理员面临的一大挑战。H3C公司的NTA解决方案基于网络流信息的统计和分析系统,通过分析采集网络中的数据...

    高校网络流量监控管理系统论文:基于SNMP协议的高校网络流量监控管理系统的研究

    在校园网及其他大型企业网的复杂应用环境中,网络面临的攻击及威胁主要来源于网络内部,如大量病毒、网内主机的主动攻击及网络异常流量的突增都将引起网络设备负荷过重,从而导致网络拥塞,并可能进一步导致网络瘫痪....

    论文研究-基于网络结构和流量特征相似性的僵尸网络检测方法 .pdf

    基于网络结构和流量特征相似性的僵尸网络检测方法,何箫楠,,僵尸网络已经超越木马,病毒等恶意软件成为国内乃至世界安全领域最为关注的危害之一。当前的僵尸网络检测方法针对P2P僵尸网络检出

    中型企业防病毒指南 好东西

    • 全面扫描网络流量,并通过识别表示存在恶意代码的病毒模式,检测出恶意 代码。 • 扫描具体的服务,比如:电子邮件(扫描传入的电子邮件,然后转发给内部 Exchange Server,再分发给客户端)。 • 服务器: 运行在...

    论文研究-基于IXP2800和VxWorks的嵌入式病毒防火墙实现.pdf

    针对隐蔽在网络流量中的攻击,提出了基于Intel IXP2800网络处理器和VxWorks的嵌入式病毒防火墙(embedded antivirus firewall)实现方案。该方案将硬件包过滤技术与应用层病毒实时防护相结合,底层数据包的实时...

    网络安全及病毒防范反垃圾邮件网络安全审计系统技术指标【模板】.docx

    网络安全及病毒防范反垃圾邮件网络安全审计系统技术指标【模板】全文共4页,当前为第1页。网络安全及病毒防范反垃圾邮件网络安全审计系统技术指标【模板】全文共4页,当前为第1页。网络安全及病毒防范 网络安全及...

    智能防火墙防护勒索病毒方案.docx

    利用这些检测引擎能够对于Locky病毒及其变种,在其开始传播到最后执行阶段的攻击流量特征和异常网络行为,进行全方位的检测和阻断。 除此之外,山石的云端生态系统能够实时与第三方信誉网站进行Locky及变种勒索病毒...

    青藤云幕-NPATCH漏洞吴晓华解决翻案-4

    青藤云幕·NPatch产品⸺通过旁路镜像流量的方式接入用户网络,检测网络流量中针对漏洞的恶意探测行为及攻击行为,NPatch在接入的网络流量中一旦发现漏洞利用行为,可以模拟阻断报文,将该会话强制断开,漏洞从而使...

    安卓版大蜘蛛防病毒软件 Dr.Web Security Space PRO 12.6.2 中文多.zip

    •过滤设备和系统应用程序上安装的应用程序的外部网络流量。在 Wi-Fi 和蜂窝网络过滤之间进行选择,并利用可自定义的规则(按IP地址和/或端口以及整个网络或IP范围进行过滤)。 •监视当前和以前传输的流量;提供...

    工控安全职业证书技能实践:工控网络安全设备部署实战.pptx

    工控安全网关不仅支持传统信息系统网关的基础访问控制功能,还提供针对工业协议的数据级深度过滤,实现了对 Modbus、OPC 等主流工业协议和规约的细粒度检查和过滤,帮助用户阻断来自网络的病毒传播、黑客攻击等行为...

    网络安全解决方案.doc

    具体而言,就是针对网络中所有可能的病毒攻击设置对应的防毒 软件,通过全方位、多层次的防毒系统配置,使网络没有薄弱 环节成为病毒入侵的缺口。 2)选择合适的防病毒产品 考虑防病毒产品的性能如下: 价格:产品...

    流量精灵 v6.1.2 官方版.zip

    流量精灵采用基于IE内核自主研发的嵌入式浏览器,针对网站站长、博客主、网络写手、SEO工作者、QQ空间爱好者等各类网络用户,实现提高每日PV(访问量),UV(独立访客),IP(独立IP),搜索引擎关键字排名,热门关键字,...

    教师计算机网络安全培训.pptx

    有效控制内网的网络流量,减轻网络负担 并可以降低人为从互联网误下载病毒文件的几率 教师计算机网络安全培训全文共13页,当前为第8页。 系统、应用软件管理 系统管理:安装正版系统并及时为系统打补丁补漏洞,安装...

    ATD运维手册V1.0

    他们目的性强,动机也很明显,往往有明确的商业、经济利益或政治诉求,攻击手段从传统的随机病毒、木马感染及网络攻击,到近来的利用社交工程、各种零日漏洞以及高级逃逸技术(AET)发起的有针对性的APT攻击,具有...

    北京石景山区政府城域网内网安全案例

    冰之眼网络入侵保护系统为受保护的网络提供“流量净化”功能,过滤正常流量中的恶意流量,如蠕虫、网络病毒、P2P下载、网络游戏、在线视频等,有效解决石景山区政府网络资源滥用的情况,为网络加速,还原一个干净、...

    System Safety Monitor(SSM)

    此类型软件的基本概念犹如『个人防火墙』 - Personal Firewall,简称 PF,PF 可监控网络流量并选择性地阻止某些程序对网络资源的存取,而 SSM 可调整程序性能并控制它们对本地资源的存取,在这层意义上我们可将 SSM...

    浅谈计算机网络信息安全.doc

    病毒可能会感染大量的机器系统,也可能会大量占用网络带宽,阻 塞正常流量,如:发送垃圾邮件的病毒,从而影响计算机网络的正常运行。 (二)软件本身的漏洞问题 任何软件都有漏洞,这是客观事实。就是美国微软公司...

    通信网络安全防护.docx

    其次,针对网络攻击和业务层面的攻击,应在移动互联网的互联边界和核心节点部署流量分析、流量清洗设备,识别出正常业务流量、异常攻击流量等内容,实现对DDoS攻击的防护。 针对手机恶意代码导致的滥发彩信、非法...

    网络安全论文:分析企业网络安全管理问题与解决方案.doc

    IP未经允许被占用,违规使用代理,疯狂下载电影占用网络带宽和流量,上班时间 聊天、游戏等行为,影响网络的稳定,降低了运行效率。 3常用技术防范措施与应用缺陷 3.1防火墙技术。 目前,防火墙技术已经成为网络中...

    Python绝技:运用Python成为顶级黑客_奥克罗_电子工业_2016.1.pdf.7z

    Python是一门常用的编程语言,它不仅上手容易,而且还拥有...本书结合具体的场景和真实的案例,详述了Python在渗透测试、电子取证、网络流量分析、无线安全、网站中信息的自动抓取、病毒免杀等领域内所发挥的巨大作用。

Global site tag (gtag.js) - Google Analytics