一个用于应急响应作业的网站

代码链接:https://pan.baidu.com/s/1tkgKH34ogYXoqBdEqQFwDA
提取码:2wnf

总体思路如下,后台是python flask,通过python维护一个ssh连接对象,通过该对象和服务器进行交互,执行设定好的命令同时将结果返回前端,最后将所有检测的结果合成为html类型的应急响应报告并输出。

整体思路
攻击者在进行网络攻击时具有相似的攻击思路:通过寻找服务器和网页的漏洞,逐渐由浅入深,最终控制服务器,并有目的地进行一些操作,如添加挖矿程序,设置后门用户等。本系统根据攻击者的攻击思路,将攻击分为扫描探测、web攻击、暴露内网、权限维持这四个主要步骤,针对每个攻击步骤里的攻击行为有针对性地设置应急策略,并尝试对攻击行为进行溯源。整体思路如图1所示。
图1 整体思路
(1)扫描探测步骤:攻击者会使用扫描器探测漏洞、SSH暴破弱口令等;
(2)web攻击:攻击者利用常见web漏洞进行攻击,如SQL注入、XSS漏洞、文件上传、文件包含、SSRF等漏洞;
(3)暴露内网:攻击者上传webshell或者可执行文件,执行命令,控制服务器;
(4)权限维持:攻击者添加用户、计划任务、修改系统命令、添加开机启动项等。

基于攻击链模型的应急响应策略
网络攻击链是洛克希德·马丁的计算机事件响应小组提出的,是攻击者随着时间的推移穿透信息系统对目标进行攻击所采取的路径及手段的有序集合, 攻击者通常按照这些阶段来计划和实施入侵。随着APT攻击的泛滥,攻击者在攻入系统内部后,往往以入侵主机为跳板通过横向运动,入侵更多的内部主机。为此,Malone等人从内部攻击入手,提出了攻击链扩展模型,图3很好地描述了一个完整的攻击链。

在这里插入图片描述
“未知攻、焉知防”,通过对攻击链模型的研究,了解攻击者的思路,才能更好的设计应急响应策略。基于攻击链模型,可以将web服务器的攻击事件分为四个步骤:扫描探测、web渗透、暴露内网、权限维持,然后再针对这四个步骤中的每种攻击行为制定相应的应急策略,四个主要的攻击步骤如图4所示。针对不同的攻击步骤中的攻击行为,本系统采取以下应急策略:
在这里插入图片描述
在这里插入图片描述
攻击阶段Ⅰ之扫描探测
攻击者在开始攻击时,会通过扫描器发送大量请求来进行检测和信息搜集,寻找漏洞。这样的行为会在各类日志中留下痕迹。

(1)系统日志分析
提取主机被攻陷十天之内的/var/log/secure日志,统计每分钟写入的日志条数,筛选具有SSH登录口令爆破的时间点,缩小可疑爆破攻击的时间范围,精确到日期和小时。以此为线索,以登录失败“Failed password”为特征,排查这个时间范围内可疑的IP。进一步通过Accepted 关键字匹配,确定SSH爆破后成功登录的攻击者,还原攻击过程的思路如图5。
在这里插入图片描述
此外,本系统通过分析secure日志,提示使用者近期出现的可疑命令操作,帮助使用者快速进行攻击行为溯源。
(2)web日志分析
首先通过find命令查找受害主机所有web中间件的日志,包括Weblogic、Nginx、Apache的access.log,Tomcat的localhost_access_log.yyyy-MM-dd.txt等,提取主机被攻陷十天之内web日志。将可疑攻击日志分为两类,分别是扫描探测和入侵事件。
对于扫描探测类的可疑日志,遍历web日志,按照IP出现的次数排序,提取访问次数异常的IP,统计该IP在10天内的访问次数以及访问最多的URL,如表2,并查询IP所在归属地,绘制扫描探测类攻击的IP来源地图。
在这里插入图片描述
攻击阶段Ⅱ之Web渗透
Web服务是攻击者的首选目标之一。应急响应需重点对web服务和web日志进行检查,以确定是否存在web漏洞导致攻击者成功实施攻击行为。
本系统对被入侵网站的访问日志,根据自定义规则[1],筛选具有攻击特征的访问记录,确定攻击类型,并提取攻击者IP、攻击时间、访问的URL、攻击事件条数,查询IP所在归属地。部分攻击类型的日志匹配规则如表3所示。
在这里插入图片描述
进一步对提取到的手工入侵事件进行分析。按照攻击类型分类,做成可视化的饼图和柱状图,对该主机容易受到的攻击类型进行宏观把握。Web日志分析总体思路如图6所示。
在这里插入图片描述
攻击阶段Ⅲ之暴露内网
攻击者通过漏洞或弱口令获得服务器权限后,通常会占用服务器资源进行挖矿,或者以该服务器为跳板,尝试对内网的其他服务器进行攻击,执行恶意操作。
(1)可执行文件筛查
使用ps -aux命令,筛选CPU占用率超过10%的进程,提取PID,自动生成杀进程的shell命令,等待用户点击执行。
根据上一步提取到的异常进程的PID,去每个异常进程的/proc/$PID/cwd文件中,查看该进程对应的静态可执行文件的所在目录(但只能定位到目录,无法直接定位到文件)。在该目录下执行find命令,使用atime参数,查找最近3天执行过的文件,同时使用perm参数,查找包含111执行权限的文件,保存可疑文件的路径。
使用cat命令,获取可疑文件的内容,保存在服务端,调用微步API,传入沙箱,分析可疑文件的行为。用户点击按钮可以查看文件的行为签名、静态信息、执行流程、进程详情、网络行为、释放文件等。实现过程如图7。
最后提供解决方案,根据提取到的文件名,自动生成删除文件的shell命令,等待用户点击执行。
在这里插入图片描述
(2)网络连接状态
使用netstat -antulp 查看网络连接状态,并结合人工经验筛选端口转发。

(3)可疑历史命令
查看root用户的历史命令有两种方法,一是手动查看/root/.bash_history文件,二是使用history命令自动查看。如果攻击者为抹除攻击痕迹,执行了history -c命令,会清空保存在内存中的系统历史命令,此时使用history命令将无法排查历史命令。而history -c命令并不能清空配置文件.bash_history中的记录,所以本系统采用读取/root/.bash_history文件内容的方法来排查可疑历史命令。
具体实现过程包括,先查看/home下有哪些用户家目录,读取每个用户家目录中的.bash_history文件,然后匹配表4所示的关键字systemctl、wget、curl、rpm、install、tar、zip、chmod、rm、mv等。
在这里插入图片描述
攻击阶段Ⅳ之权限维持
攻击者在成功获取服务器权限后,会留下后门用户或其他访问途径,以期进行下一次攻击。具体包括添加可以远程登录的影子用户,将普通用户提权为系统管理员等高权限用户,将恶意程序添加开机自启动,以期被发现和终止后在下一次开机时再次启动,创建计划任务,定时向恶意目标网站发送远程木马或挖矿脚本等的下载和更新的请求。
(1)可远程登录的用户
Linux系统中,只有root和普通用户拥有密码,系统用户或进程用户是没有密码的。而只有设置了密码的普通用户才可以远程登录。
在/etc/shadow文件中,每个用户都有一个对应的记录行,它记录了用户密码的基本属性。每行记录又被冒号分隔为9个字段,其格式和具体含义如表5所示
在这里插入图片描述
密码字段sp_pwdp有三种可能,以!!开头的字符串表示用户未设置密码或者密码已经过期;以!或*开头的字符串表示用户被锁定;以$6、$5、1开头的字符串为密文域。参考Linux标准源文件passwd.c,在其中的口令加密函数pwencrypt中发现,密文域是由三部分组成的,即:1开头的字符串为密文域。 参考Linux标准源文件passwd.c,在其中的口令加密函数pw_encrypt中发现,密文域是由三部分组成的,即:1开头的字符串为密文域。参考Linux标准源文件passwd.c,在其中的口令加密函数pwencrypt中发现,密文域是由三部分组成的,即:idsaltsaltsaltencrypted。id为1时,采用md5进行加密;id为5时,采用SHA256进行加密;id为6时,采用SHA512进行加密。因此本系统使用awk结合正则匹配来匹配$1、$5或$6字符,匹配到的用户即是可以远程登录的用户。
最后提供解决方案,根据提取到的用户名,自动生成锁定用户的usermod -L命令,等待用户点击执行。这里选择锁定用户,而不是删除用户,因为锁定用户,使其无法登录,已经可以避免其在应急响应过程中实施干扰破坏,而删除用户可能会影响正常业务。 因此建议锁定用户。
(2)uid为0的用户
在/etc/passwd文件中,记录了用户的一些基本属性,具体文件结构如图8所示。
在这里插入图片描述
可以看到用户的uid。uid为0表示和root用户处于同一用户级别,使用awk命令筛选uid字段为0的用户,最后提供解决方案,根据提取到的用户名,自动生成锁定用户的usermod -L命令,等待用户点击执行。
(3)开机启动项
攻击者拿下服务器的权限之后,出于将权限持久化的动机,可能会将可执行文件添加到开机启动项,这样一来,就算定位到了恶意进程并杀掉,再次开机后又会自动运行恶意程序。排查方法如图9所示。
在这里插入图片描述
Linux所有服务启动都是通过脚本进行,它会把启动脚本放置到/etc/rcN.d/中。N表示运行级别。首先列出/etc/rc.d目录下不同运行级别N对应的rcN.d目录,然后分别排查rc0.d、rc1.d、rc2.d、rc3.d、rc4.d、rc5.d、rc6.d目录中的启动脚本,分为两种,以K开头的,开机时不启动,以S开头的, 表示start,开机时会自动服务,比如S10network,表示开机时,第10个启动的服务是network服务。因此要重点关注S开头的服务,使用grep '^S’来进行筛选。
然后使用stat命令,筛选“Change”关键字,查看启动脚本的状态改动时间,将最近修改的开机启动项的信息,呈现在页面上。
最后提供解决方案,根据提取到的服务名,自动生成停止服务并关闭开机自启的命令,等待用户点击执行。
(4)定时任务
攻击者拿下服务器的权限之后,出于将权限持久化的动机,往往会添加定时任务,比如每隔10分钟检测木马文件,若发现文件被删除或修改,再次从指定网站下载恶意程序等。从/etc/passwd文件中获取可以远程登录的用户名,使用crontab -u指定用户,逐个排查每个用户创建的计划任务。
在这里插入图片描述
最后提供解决方案,根据查询到的计划任务,自动生成删除计划任务的命令,等待用户点击执行。

基于机器学习的webshell检测
攻击者成功实施攻击后,往往会在服务器中留下webshell,通过webshell 攻击者可以轻松的在服务器上执行恶意命令。在面对海量的流量和代码,系统管理员很难精确地找到本地web目录下的webshell。机器学习可以很好的帮助管理员解决这个问题,本系统通过机器学习的方法,能高效、快速地检查出webshell。主要分为以下几个步骤:1.数据搜集和清洗 2.特征化 3.训练 4.预测。

检测原理
本质上webshell是一个攻击者留下的远程管理工具,攻击者通过调用系统函数执行恶意命令,控制服务器。因此本系统尝试针对php函数调用建立特征,使用朴素贝叶斯算法来识别webshell。将正常的php文件和webshell文件按照函数调用或者字符串常量分词后,按照1-gram算法得到词集,从而得到文件每一行在该词集上的分布情况,形成特征向量;然后将正常的php文件也按照如上方法在如上词集上得到特征向量。

特征化
针对样本,以1-gram算法生成全局词汇表,其中1-gram基于函数和字符串常量进行切割,所以设置token的切割方法:\b\w+\b(|'\w+'切割出函数和字符串常量,作为特征向量。(其中webshell样本来自于github的webshell-sample,正常PHP文件来自于开源框架WordPress)。
对生成的特征向量进行标记,webshell文件的行标记为1,正常php文件的行标记为0,特征向量和标记在一起组成数据集。

训练
使用GaussianNB方法对数据进行训练,其中GaussianNB是先验为高斯分布的朴素贝叶斯训练器。

预测
用训练好的分类器检查指定的web目录是否存在webshell。

优点
朴素贝叶斯识别webshell的主要优点有:
(1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
(2)不需要大量数据就能达到较好的效果,能处理多分类任务,适合增量式训练。
(3)对缺失数据不太敏感,常用于文本分类.

最终成品结果
图11展示的是SSH远程连接页面,用户输入服务器IP、管理员账号、密码和端口号,点击登陆。
在这里插入图片描述
暴破威胁态势
登陆后,进入首页,图2展示的是近10天SSH暴破攻击的威胁态势,箭头表示SSH暴破的攻击者IP来源,坐标点的不同颜色表示攻击不同的数量。
在这里插入图片描述
图13展示的是可疑攻击时间和具有暴破特征的可疑攻击者IP,图14展示的暴破后成功登录的攻击者IP和归属地。该时间属于一级事件,出现该事件,说明攻击者已经通过暴破拿到了web服务器的登录密码,此时需要管理员立即修改密码,切勿使用弱口令。
在这里插入图片描述
在这里插入图片描述
资源动态展示
图15展示了受害主机的CPU和内存占用情况,实时监控,方便排查挖矿等大量消耗系统资源的进程。
在这里插入图片描述
主机概况
(1)系统信息
在这里插入图片描述
(2)系统启动项
在这里插入图片描述
(3)定时任务
在这里插入图片描述
一键应急
(1)web日志分析

在这里插入图片描述
(2)异常进程
在这里插入图片描述

(3)可远程登录的用户
在这里插入图片描述
(3)可疑文件
在这里插入图片描述
(4)网络连接
在这里插入图片描述
(5)可疑历史命令
在这里插入图片描述
webshell检测
点击webshell检测,图22提示输入网站根目录,检测结果如图23,发现tmp/tmp/目录下有个webshell文件0ad641eb3ac0848e5992c137d21b971eddfb2167.php。
在这里插入图片描述

在这里插入图片描述
报告输出
点击报告输出,生成report.html文件并下载到本地,可通过浏览器查看,如图24
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值