目 录
1.绪论 1
1.1 研究背景及意义 1
1.1.1研究背景 1
1.1.2 研究意义 1
1.2 国内外研究现状 2
1.2.1 国外研究现状 2
1.2.2 国内研究现状 2
1.3 论文组织结构 3
2.关键技术 4
2.1缓冲区溢出 4
2.2 SQL注入攻击 5
2.3基于脚本的DDos攻击 6
2.4其他的不安全因素 6
3.Web的木马检测系统的设计 8
3.1体系结构 8
3.2处理流程 9
3.3对客户端访问的响应 11
3.4策略引擎的设计 13
3.4.1策略的属性 14
3.4.2策略的加载 15
3.4.3策略的调度 16
3.4.4策略的接口 16
4.Web的木马检测系统的实现 17
4.1基于ISAPI 的解析及响应模块的实现 17
4.1.1使用ISAPI Filter获取Http报文信息 18
4.1.2使用ISAPI进行Http响应 19
4.1.3在服务器上的安装配置ISAPI Filter 22
4.2基于VC++的策略实现 22
4.2.1对策略的封装 22
4.2.2 VC++策略脚本示例 23
4.3基于xml的策略管理 24
5.系统运行过程及测试 25
6.结论 27
参考文献 28
致 谢 29
3.Web的木马检测系统的设计
由于系统要对客户端发送的Http报文进行分析,这需要对Http报文进行解析,Http报文解析的方式主要有两种:
(1)自解析:系统对原始数据报文自行解析;
(2)由Web服务器进行解析,需要时系统通过Web服务器提供的接口查询。
方式(1)可以提供比方式(2)更好的移植性,但这种报文解析的方式需要一种截获下层原始报文的能力,这可以通过截获传输层或网际层报文的实现,由于我们将这套系统定位于仅针对Web访问的木马检测,我们对Http协议外的报文并不关心,所以我们选择方式(2)作为我们的Http报文解析方案,即通过Web服务器提供的接口仅仅截获应用层的Http报文。
要对客户端发起的请求进行完全的监控光靠检测客户端的行为是不够的,因为这样我们只知道客户端发起什么样的请求但无法知道服务器端是如何对客户端进行响应的。一次完整的Http会话既然包括客户端发送请求和服务器端对请求的响应,那么只有监控服务器端响应的内容后,才能知道这次Http会话何时结束。如果Web服务器提供Http报文封装的接口,则在对客户端进行响应时我们也尽量调用Web服务器的这些接口而不是自己组装Http报文。
这样,这套木马检测系统的核心便是其策略引擎, 通过强大而灵活的策略引擎来实现特征检测或者异常检测。下面将介绍这个Web的木马检测系统的具体体系结构和处理流程。
本文分析了当前流行的针对Web服务器的安全威胁,设计并实现了一套保护Web服务器安全的轻量级的木马检测系统。提供方便的编写策略脚本的机制,方便Web服务器管理员配置安全的Web服务器环境。同时应该注意到这套系统仅仅是针对Web服务器安全的,一套整体的安全网络环境是需要靠网络中每一个独立单元都具有较好的安全配置才能实现的。这套木马检测系统也存在一些需要完善的地方,本文转载自http://www.biyezuopin.vip/onews.asp?id=14730比如目前直接使用编辑配置文件和策略脚本的方式来更新配置,如果能使用UI管理策略和系统,能使这套系统的使用更加方便。在本系统的策略中,由于对客户端的识别的粒度是基于IP的,这样会导致一些策略对使用NAT的用户造成影响。由于采用灵活的策略插入机制,所以可以通过策略增加系统的功能。


#include "..\include\globals.hpp"
#include "IClient.hpp"
#include "IClientToLua.hpp"
#include "Logger.hpp"/*** Get HTTP Header from a client* @param lua_State *L* @return * */
static int l_GetHeader(lua_State *L)
{const char *header = lua_tostring(L, -1);lua_rawgeti(L, -2, 0);IClient *client = (IClient *)lua_touserdata(L, -1);lua_settop(L, 0);lua_pushstring(L, (client->GetHeader(header)).c_str());return 1;
}/*** Set HTTP Header to client* @param lua_State *L* @return*/
static int l_SetHeader(lua_State *L)
{const char *value = lua_tostring(L, -1);const char *header = lua_tostring(L, -2);lua_rawgeti(L, -3, 0);IClient *client = (IClient *)lua_touserdata(L, -1);lua_settop(L, 0);client->SetHeader(header, value);return 0;
}static int l_AddHeader(lua_State *L)
{const char *value = lua_tostring(L, -1);const char *header = lua_tostring(L, -2);lua_rawgeti(L, -3, 0);IClient *client = (IClient *)lua_touserdata(L, -1);lua_settop(L, 0);client->AddHeader(header, value);return 0;
}static int l_SendMsg(lua_State *L)
{const char *msg = lua_tostring(L, -1);const char *status = lua_tostring(L, -2);lua_rawgeti(L, -3, 0);IClient *client = (IClient *)lua_touserdata(L, -1);lua_settop(L, 0);client->SendMsg(status, msg);return client->ConnectClose();
}static int l_SendFile(lua_State *L)
{const char *filename = lua_tostring(L, -1);const char *status = lua_tostring(L, -2);lua_rawgeti(L, -3, 0);IClient *client = (IClient *)lua_touserdata(L, -1);lua_settop(L, 0);client->SendFile(status, filename);return client->ConnectClose();
}static int l_Redirct(lua_State *L)
{const char * url = lua_tostring(L,-1);        lua_rawgeti(L, -2, 0);IClient *client = (IClient *)lua_touserdata(L, -1);lua_settop(L, 0);client->Redirct(url); return client->ConnectClose();
}static int l_UrlRewrite(lua_State *L)
{const char *newUrl = lua_tostring(L,-1);      lua_rawgeti(L, -2, 0);IClient *client = (IClient *)lua_touserdata(L, -1);lua_settop(L, 0);client->UrlRewrite(newUrl);   return 0;
}static int l_GetServerVariable(lua_State *L)
{const char *svName = lua_tostring(L,-1);lua_rawgeti(L, -2, 0);IClient *client = (IClient *)lua_touserdata(L, -1);lua_settop(L, 0);string sv = client->GetServerVariable(svName);lua_pushstring(L,sv.c_str());return 1;
}static int l_Logger(lua_State *L)
{const char *msg = lua_tostring(L, -1);//WebFirewall::logger.Append(msg);Logger logger;logger.Append(msg);return 0;
}static const struct luaL_reg webfilewall_lib []= {{"GetHeader", l_GetHeader},{"SetHeader", l_SetHeader},{"AddHeader", l_AddHeader},{"SendMsg", l_SendMsg},{"SendFile", l_SendFile},{"Redirct", l_Redirct},{"UrlRewrite", l_UrlRewrite},{"GetServerVariable",l_GetServerVariable},{"Logger", l_Logger},{NULL, NULL} /* sentinel */
};static int ref;int client_openlib(lua_State *L)
{   const luaL_reg *l = webfilewall_lib;lua_newtable(L);for (; l->name; l++){ lua_pushcfunction(L, l->func);lua_setfield(L, -2, l->name);          }    ref = luaL_ref(L, LUA_REGISTRYINDEX);return 0;
}void client_call(lua_State *L, IClient *client, const char *func)
{lua_getglobal(L, func);lua_newtable(L);lua_pushlightuserdata(L, client);lua_rawseti(L, -2, 0);lua_pushvalue(L, -1);lua_setmetatable(L, -2);lua_rawgeti(L, LUA_REGISTRYINDEX, ref);lua_setfield(L, -2, "__index");if (lua_pcall(L, 1, 0, 0) != 0) {const char *err = lua_tostring(L,-1);}
}









web木马检测系统的设计与实现相关推荐

  1. 基于神经网络的目标检测论文之目标检测系统:实时路况检测系统的设计与实现

    第五章 实时路况检测系统的设计与实现 物体识别技术被广泛应用于人们的生产生活中.随着深度学习与云计算的飞速发展,带动了物体识别技术产生质的飞跃.高分辨率图像和检测的实时性要求越来越高. 从本章开始,我 ...

  2. 基于Vue和SpringBoot的论文检测系统的设计与实现

    作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue.SpringBoot和微信小程序).系统定制.远程技术指导. ...

  3. 基于单片机的空气检测系统的设计

    基于STM32的室内空气检测系统的设计 摘  要:为保证居民生活环境的安全性,应该对室内空气质量参数进行检测,使人们能够及时了解室内的空气质量,排除险情,该设计通过STM32单片机结合蓝牙通信和温湿度 ...

  4. 【毕设狗】【单片机毕业设计】基于单片机的室内空气质量检测系统的设计

    软件安装: Keil:点击下载 Proteus:点击下载 AD:点击下载 Visio:点击下载 设计简介: 本设计是基于单片机的室内空气质量检测系统的设计,主要实现以下功能: 实现通过甲烷气体传感器检 ...

  5. 基于电容传感器的压力检测系统的设计

    基于电容传感器的压力检测系统的设计 本系统以电容式传感器为压力感应元件,将压力信号转换为相应的电信号,经ADC0809模数转化芯片将电信号转化为数学信号再经单片机在输出端显示电感式传感器所受到的压力值 ...

  6. 基于Python(Django)+MySQL 实现(Web)SQL智能检测系统的设计与实现【100010694】

    摘 要 为了满足不同的用户群体的需求,中国移动的套餐业务更新频繁,每个月都会推出很多个性化的套餐服务,当前,中国移动创建套餐的方式是手动编辑上百行 SQL 语句之后插入到数据库中,一旦 SQL 语句中 ...

  7. 基于Selenium与Pytest框架的Web UI自动化测试系统的设计与实现

    摘要 随着互联网的高速发展,软件技术日新月异,产品更新换代的加快等,始终都离不开一个最核心的要素就是保证产品的质量,测试人员则在其中担任着不可或缺的角色.测试人员的主要工作职责就是通过各种测试手段去发 ...

  8. 操作系统读写者问题实验报告_基于S3C2410微处理器和操作系统实现光电测量仿真检测系统的设计...

    引言 动基座光电测量平台按载体的不同可分为车载.舰载.机载和星载四种.为了保证测量平台系统的可靠性和测量的准确性,平台在正式放到载体上运行之前需要进行仿真检测.目前的动基座光电测量仿真检测系统大多成本 ...

  9. 单片机课程设计——基于51单片机温湿度检测系统的设计与实现

    本文主要介绍了怎么使用51单片机最小系统板和温湿度传感器制作一个温湿度检测系统. 本次设计主要涉及了温湿度的测量.显示以及实现简单控制.硬件方面有五个模块,即STC89C52单片机主控模块.传感器模块 ...

  10. 【单片机毕业设计】基于单片机的空气质量(烟雾、天然气或煤气、CO、有害混合气体)检测系统的设计

    一.功能简介 项目编号:mcuclub-hj-008 单片机类型:STC89C52.STM32F103C8T6 具体功能: 1.通过MQ-2检测烟雾值,超过设置最大值进行声光报警,并开启风扇和净化器 ...

最新文章

  1. 源哥每日一题第十七弹 poj 1568 Alpha-Beta剪枝
  2. 闲谈.NET中的类型和访问修饰符
  3. C#实现发送邮件的三种方法
  4. 【LeetCode1046】最后一块石头的重量(堆heap)
  5. kinect1+depthimage_to_laserscan
  6. C++11新特性(4)
  7. HCIP-RS-MPLS-LSP建立-静态LSP
  8. 多张DXF格式图纸网页上转换成PDF格式如何操作?
  9. 主成分分析法的SPSS操作
  10. 【083】毛笔字在线生成器-在线生成几十种毛笔字
  11. 出口商贸易融资工具:出口保理
  12. rust服务器人数查询网站,Rust Web框架列表
  13. 电子计算机里CE,电子计算机上的ce表示什么意思
  14. 防火墙之ipsec vpn实验
  15. 如果学好SQL有啥好?
  16. 如何从照片中提取文字?
  17. python发邮件给多个人发送消息_【Python3】 发送邮件给多人
  18. My97DatePicker日历控件基本用法
  19. 设计一个算法的方法论
  20. Bluetooth Profile Specification之(HFP篇)4.3 音频连接设置

热门文章

  1. iOS App 打包上架AppStore超详细流程
  2. SuperMap的数据组织
  3. 分辨率单位及换算,LW / PH、LP / mm、L / mm、Cycles / mm、Cycles / pixel、LP / PH
  4. matlab画空间分布图,matlab空间图形的画法.doc
  5. calico更换ip地址池-k8s
  6. UE5 IK重定向并修改人物姿势
  7. PHP的设计模式及场景应用介绍
  8. IPTABLES中SNAT和MASQUERADE的区别
  9. grammarly word安装失败
  10. 计算机专业课题 结题报告,计算机结题报告.doc