1、网站挂马检测
常见的网站挂马代码类型:
1) 框架嵌入式挂马
网页木马被攻击者利用iframe语句,加载到任意网页中都可执行的挂马形式,是最早也是最有效的的一种网络挂马技术。通常的挂马代码如下:
解释:在打开插入该句代码的网页后,就也就打开了
http://www.xxx.com/muma.html
页面,但是由于它的长和宽都为“0”,所以很难察觉,非常具有隐蔽性。
2) Js调用型网页挂马
js挂马是一种利用js脚本文件调用的原理进行的网页木马隐蔽挂马技术,如:黑客先制作一个.js文件,然后利用js代码调用到挂马的网页。通常代码如下:
http://www.xxx.com/gm.js
就是一个js脚本文件,通过它调用和执行木马的服务端。这些js文件一般都可以通过工具生成,攻击者只需输入相关的选项就可以了。
3) 图片伪装挂马
随着防毒技术的发展,黑手段也不停地更新,图片木马技术逃避杀毒监视的新技术,攻击者将类似:http://www.xxx.com/test.htm中的木马代码植入到test.gif图片文件中,这些嵌入代码的图片都可以用工具生成,攻击者只需输入相关的选项就可以了。图片木马生成后,再利用代码调用执行,是比较新颖的一种挂马隐蔽方法,实例代码如下:
当用户打开http://www.xxx.com/test.htm,时候是,显示给用户的是
http://www.xxx.com/test.jpg,而http://www.xxx.com/test.htm网页代码也随之运行。
4) 网络钓鱼挂马(也称为伪装调用挂马)
网络中最常见的欺骗手段,黑客们利用人们的猎奇、贪心等心理伪装构造一个链接或者一个网页,利用社会工程学欺骗方法,引诱点击,当用户打开一个看似正常的页面时,网页代码随之运行,隐蔽性极高。这种方式往往和欺骗用户输入某些个人隐私,然后窃取个人隐私相关联。比如攻击者模仿腾讯公司设计了一个获取QQ币的页面,引诱输入QQ好和密码,如图5所示。等用户输入完提交后,就把这些信息发送到攻击者指定的地方,如下:
5) 伪装挂马
高级欺骗,黑客利用IE或者Fixfox浏览器的设计缺陷制造的一种高级欺骗技术,当用户访问木马页面时地址栏显示www.sina.com或者security.ctocio.com.cn等用户信任地址,其实却打开了被挂马的页面,从而实现欺骗,示例代码如下:
检测方法:
检查过程主要是通过借助软件检测、异常文件检查、系统日志分析、web日志分析等工作进行。
1) 借助Urlsnooper ,一款URL嗅探工具来进行探测
第一次使用时需要程序会自动检查网卡,查看能否正常连接,设置正确无误后,应该出现如图1所示的画面。
在Urlsnooper中的“Protocol Filter”中选择“ShowAll”,然后单击“Sniff Network”按钮开始监听网络。接着使用IE浏览器打开需要进行检测木马的网站,Urlsnooper会自动抓取网站中的所有连接,在Index中按照五位数字序号进行排列,如下所示。
在侦测结果中可能包含的连接地址非常多,这个时候就需要进行排查,可以选中每一个记录,Urlsnooper会在下方中显示详细的监听结果,如下所示,就发现存在一段疑似挂马代码:
复制疑似代码,在搜索引擎中对其进行搜索,从查询结果可以辅佐证明该段代码为挂马代码。
2) 使用站点探索软件获取网站内容到本地查看
如可以使用Flashget的资源管理器去获取网站的内容,如下所示,打开Flashget下载工具,单击“工具”-“站点资源探索器”,打开站点资源探索器,在地址中输入网站的url,然后回车即可获取该网站的一些资源,在站点资源探索器中可以直接下载看见的文件,下载到本地进行查看。
使用“Flashget站点资源探索器”可以很方便的获取挂马者代码地址中的一些资源,这些资源可能是挂马的真实代码,透过这些代码可以知道挂马者是采用哪个漏洞。
3) 检查系统上是否存在异常文件
手动对关键目录进行检查,查看是否存在异常文件,如文件名称、日期、格式等等。
例如通过日志查看或者单个恶意文件得知网站被攻击挂马的时间,即可根据该时间段搜索修改或者新生成的文件,逐一进行排查。
4) 使用常见的具有检测功能的插件或者搜索引擎进行检测
如利用google搜索引擎检测。在Google搜索框之间输入你的网站进行检测。如果网站有木马,google会在搜索列表的下方提示该网站有不安全因素。
如使用带有McAfee SiteAdvisor安全插件的浏览器访问目标网站。
2、Web攻击事件检测
总体思路:
1) 确认攻击位置
确认被攻击的具体位置,才能准确、快速地分析事件,还原攻击过程。
是哪一台服务器被攻击,IP地址是多少?上面有什么应用?应用框架是什么?
中间件使用的是哪种:tomcat/weblogic/apache/nginx?
开发语言使用的是哪种:PHP/JSP/.NET/ASP/JAVA?
2) 确认攻击时间
系统文件时间:分析系统文件被篡改的时间,或者出现不明可执行文件(代码)的时间
WEB日志时间:记录Web日志出现异常请求的时候
异常现象时间:系统出现异常情况时间
外部消息时间
3) 确认攻击行为
历史操作记录:.bash_history/SSH
查看Web日志,攻击者是否上传Webshell
攻击残留文件
异常行为:内部网络扫描/暴力破解等
4) 确认被攻击环境
Web系统,应用框架,第三方程序,操作系统平台,网络设备环境
5) 确认攻击者意图
采用何种攻击方式
攻击所涉及哪些范围
攻击事后的动作
6) 溯源攻击
全面梳理攻击来源地址以及受影响的范围,定向捕捉攻击者的踪迹。
检测方法:
准备相应的工具,与系统管理员沟通,了解需要的情况
a) 系统的特征资料,具体包括网络活动特征、操作系统活动特征、进程和用户活动特征、文件系统的特征、系统的接入配置以及网络的配置等参考资料
b) 日志的审计工具(网站日志分析工具、系统日志分析工具等)
c) 网络监听工具
d) 基线检查工具
e) 取证工具
f) 详细了解Web架构,服务器环境等信息,各种日志的存放路径等,以便快速着手处理、解决问题。
2) WEB攻击常见迹象
对服务器进行漏洞扫描,确认是否存在危险程度较高的系统漏洞,与开发运维人员沟通,如:
a) CPU占用率很高
b) 网站出现service unavailable提示
c) 网络连接状态:netstat –na,观察到大量的ESTABLISHED的连接状态,单个IP高达几十条甚至上百条
d) 服务器上出现不明脚本代码(asp,aspx,jsp,php等)或者可执行程序
e) 服务器上出现畸形文件(命名格式非一般常见格式)
f) 页面无故被篡改(删除/修改/增加)
g) 页面非正常显示(报错,图片显示异常,无故弹窗等)
h) 服务器出现不明进程
可借助Process Explorer,一款增强型的任务管理器,可以使用它方便地管理程序进程,能强行关闭任何程序(包括系统级别的不允许随便终止的”顽固”进程)。
i) 服务器与不明IP地址建立了非正常连接,利用netstat命令查看。
参数介绍(windows):
在命令行中输入netstat /? 可以查看netstat的相关信息。
C:Documents and SettingsAdministrator>netstat /?
显示协议统计信息和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-t] [-v] [interval]
-a 显示所有连接和监听端口。
-b 显示包含于创建每个连接或监听端口的可执行组件。在某些情况下已知可执行组件拥有多个独立组件,并且在这些情况下包含于创建连接或监听端口的组件序列被显示。这种情况下,可执行组件名在底部的[]中,顶部是其调用的组件,等等,直到TCP/IP部分。注意此选项可能需要很长时间,如果没有足够权限可能失败。
-e 显示以太网统计信息。此选项可以与 -s 选项组合使用。
-n 以数字形式显示地址和端口号。
-o 显示与每个连接相关的所属进程 ID。
-p proto 显示proto指定的协议的连接;proto可以是下列协议之一:TCP、UDP、TCPv6或UDPv6。如果与-s选项一起使用以显示按协议统计信息,proto可以是下列协议之一:IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP或UDPv6。
-r 显示路由表。
-s 显示按协议统计信息。默认地,显示 IP、 IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
-p 选项用于指定默认情况的子集。
-t 显示当前连接卸载状态。
-v 与 -b 选项一起使用时将显示包含于为所有可执行组件创建连接或监听端口的组件。
interval重新显示选定统计信息,每次显示之间暂停时间间隔(以秒计)。按CTRL+C停止重新显示统计信息。如果省略,netstat显示当前配置信息(只显示一次)
3) 恶意文件扫描
通过自动化工具或者手工去查找攻击者留下的webshell/后门脚本文件。。
-
检查系统上是否存在异常文件
手动对关键目录进行检查,查看是否存在异常文件,如文件名称、日期、格式等等存在明显不一致的,与管理员进行确认是否是已知文件,如果不是已知人为操作的,之前可判断为web系统已经被入侵。
-
查看日志
WEB日志会记录客户端对WEB应用的访问请求,这其中包括正常用户的访问请求和攻击者的恶意行为。为了区分正常用户和恶意攻击者,通常恶意攻击向网站发起的请求中会带有特定的攻击特征,如利用WEB扫描器在对网站进行漏洞扫描时往往会产生大量的404错误日志。
当有人对网站进行SQL注入漏洞探测时,WEB访问日志中通常会出现如下日志:
我们可以通过分析WEB日志中是否存在特定的攻击特征来区分攻击者和正常用户的访问行为。但是有些攻击行为并不会被记录到WEB访问日志中,比如POST型SQL注入就不会记录在WEB访问日志中,这时就需要通过其他手段来监测这种攻击行为。
首先确定受到攻击、入侵的时间范围,以此为线索,查找这个时间范围内可疑的日志,进一步排查,最终确定攻击者,还原攻击过程。
一般攻击者在入侵网站后,通常会上传一个后门文件,以方便自己以后访问。我们也可以以该文件为线索来展开分析。
仅仅分析WEB日志,可能无法准确识别当下多样化的攻击手段,可以参照以上流程多角度去分析,不能忽视任何一个小细节。
3、JSP文件上传检测
检查过程主要是通过常规检查、漏洞扫描、木马文件扫描、异常文件检查、系统日志分析、web日志分析等工作进行。
1) 常规检查(访谈)
与用户或者管理员沟通,是否存在:用户或者管理员账号被盗用、服务器出现骚扰性的垃圾信息、业务服务功能失效、业务内容被明显篡改、系统崩溃运行资源不足、系统运行不稳定、系统页面频繁报错。
如果存在以上异常情况,则应怀疑存攻击行为。
2) 漏洞扫描
对服务器进行漏洞扫描,确认是否存在危险程度较高的系统漏洞,与开发运维人员沟通,如:
a)如果网站上传模块存在任意文件上传漏洞并未修复,攻击者可以上传任意可解析的脚本文件到服务器上,进而直接获得webshell;
b)如果网站中间件存在解析漏洞并且未进行补丁更新,攻击者可以上传普通图片文件,然后通过中间件的解析漏洞获得webshell;
c)如果网站使用了Struts2开发框架,并且没有更新S2-019的漏洞补丁,那么攻击者有可能是通过Struts2开发框架的远程代码执行漏洞获得webshell。
3) 木马文件扫描
使用查杀工具检查服务器是否存在恶意代码:
通过webshell检测工具检查,若网站根目录下没有发现webshell等恶意脚本,判断攻击途径不是Struts2开发框架的远程代码执行漏洞。如果攻击者是通过Struts2开发框架的远程代码执行漏洞获得的webshell,一般都是将webshell写入到网站根目录的。
若在上传目录(如网站头像图片等目录)发现大量webshell恶意脚本文件,则判定为网站上传模块存在任意文件上传漏洞。
4) 检查系统上是否存在异常文件
手动对关键目录进行检查,查看是否存在异常文件,如文件名称、日期、格式等等存在明显不一致的,与管理员进行确认是否是已知文件,如果不是已知人为操作的,之前可判断为web系统已经被入侵。
5) 查看日志
根据发现的恶意脚本文件,分析响应的服务器日志文件,查找攻击者的攻击IP并进行查询,初步判断攻击者IP是否可追溯。
4、PHP文件上传检测
检查过程主要是通过漏洞扫描、木马文件扫描、异常文件检查、系统日志分析、web日志分析等工作进行。
1) 漏洞扫描
对服务器进行漏洞扫描,确认是否存在危险程度较高的系统漏洞。
2) 木马文件扫描
使用工具如python查马脚本检查服务器是否存在恶意代码;
如果存在恶意代码,通过其类型、生成以及存在时间来判断系统被入侵的严重程度。
3) 检查系统上是否存在异常文件
手动对关键目录进行检查,查看是否存在异常文件,如文件名称、日期、格式等等存在明显不一致的,与管理员进行确认是否是已知文件,如果不是已知人为操作的,之前可判断为web系统已经被入侵。
4) 查看web日志是否存在异常操作
常见的日志目录文件如下:
Apache日志,默认存放路径为:
/var/logs/httpd/;
分析日志:
查看是否存在大量的扫描日志;
是否存在请求成功的日志,若存在成功请求,可在浏览器里对这条请求进行测试;
查看是否存在其他不明请求;
若日志中存在代码片段如:菜刀一句话木马eval($_POST[f]),可根据攻击者的请求测试看菜刀能否连接成功;
如果根据日志查找文件,测试通过菜刀连接成功,则初步断定,攻击者已经获取到了WebShell权限。
5) 系统日志检查
检查系统日志,是否存在异常登录,认证等行为。
默认存放路径为:/var/logs/;
Windows日志可以通过右击计算机—管理--事件查看器--Windows日志,分别查看应用程序、安全、系统等日志。
关注公众号了解更多资讯
原文始发于微信公众号(纵横安全圈):盘一盘Web安全事件检测
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论