对于运营这个词大家可能不陌生,任何的活动、产品甚至内容都需要运营,运营做的事大部分是涵盖了整个项目、产品所有环节,比如产品运营,产品上线前需要搞清楚产品定位和目标用户,然后用户使用了产品,运营还需要收集和分析用户数据,参与优化产品,同时还少不了活动策划、用户沟通等;这其中少不了需要进行内容建设、用户维护等,整体其实围绕的就是为了让产品更好,用的人更多,带来的效益更高。
那么安全运营又是啥?目的是为了啥?
在说安全运营之前,我们先来说说企业安全的需求。我们常把企业安全挂在口头讲,但大家能讲清楚企业安全的需求是什么吗?
企业安全需求总体是保障安全,可能很多同学的答案也是这个,但具体怎么保障呢?又包含哪些方面呢?包含但不限于以下方面:
问题收敛就是通过一些检测手段、规范和流程,最大限度的避免安全问题的产生,或者在产品上线前或者上线后主动发现和修复问题;流程和规范这块主要通过安全开发流程和安全规范,基于相关流程规范进行开发和运维,能最大限度的避免一些人为不经意引入的安全问题;而通过代码审计、漏洞扫描等方式,可以主动发现业务代码中可能存在的漏洞,内部及时修复,避免导致的后续损失和风险扩大。
风险感知包含事前和事中感知,事前通过威胁情报、漏洞跟踪等方式提前预知可能面对的安全风险,提前制定相关安全方案进行应对、防范和修复;而事中则主要是入侵检测为主,在安全问题被利用的时候可以及时感知并且即使掐断黑客入侵渠道,避免损失扩大。
至于攻击防御,主要的是DDoS和Web应用攻击,DDoS方面需要有一定的预案和承受能力,在受到攻击要保障业务稳定不受影响;而Web攻击则同样需要阻断的能力,通过在边界部署WAF可以有效防御和阻断。
至于最后的安全管理和应急响应,主要是穿插在各个环节中,也是安全运营的主要工作内容。在各个不同的环节都需要安全管理配置,如问题收敛中需要推行安全规范,这里就涉及管理的工作,而在入侵检测检测到入侵行为则需要应响应配置,进行溯源和入侵点排查等。
以上就是企业安全的一些需求,安全运营就是从以上的各个方面入手保障安全。
如何去满足上面列的那些点呢?在企业安全的建设中,是不是购买一些安全产品就可以了?当然不是的,安全是一个变化、复杂的工程,是一个持续过程,这在过程中少不了运营的工作,而绝不是购买几个安全产品放在那就可以了,安全产品更多的时候是安全运营的工具。回顾我们之前的课程,比如在攻击防御方面有针对Web攻击的WAF,有针对DDoS攻击的抗D产品,而在使用这些产品的过程,从来没有哪款产品敢说可以把所有的东西交给他们,而无需安全人员的干预,实则比如WAF,通过安全运营人员参与进行针对业务的规则配置,才能更好的起到防护的作用。
整体来说,安全运营的目的是推进安全流程,感知和确定安全威胁,实施控制安全风险,保障系统中信息资产的安全。
如何去落地这些安全运营工作?安全运营的工作需要为效果负责,所以说不限于使用什么样的方式。
漏洞的收敛一般会从源头遏制、事中检测、事后修复总结以及随时响应三块去落地:
源头
1、推动推动SDL,安全开发流程来规范开发,在开发环节避免产生漏洞
2、白盒代码审计及业务上线前安全检查,如通过在CI系统,也就是持续集成中加入自动化的代码静态或者动态检查,提前发现存在漏洞的代码进行修复
事中检测
1、弱口令、高危端口等周期检测
2、日志、流量审计检测,发现漏洞利用情况
3、黑盒测试、安全众测等手段手发现漏洞,这里安全众测包含SRC的方式
事后修复总结
1、外部报告漏洞响应和推动修复
3、内部PR,通过内部宣传加强员工安全意识
随时响应
以上就是关于漏洞收敛这一个项的一些点,当然这些点可能不是完全覆盖了各个方面,但应该覆盖大部分情况,通过多种手段和方式的推进和落地,在这过程中需要一些安全工具包含安全产品的辅助,如自动化动静态代码审计、漏洞扫描、黑盒测试、日志、流量审计等,需要具有一定能力的对应安全产品和工具进行辅助,以此才能真正推动相关东西的落地。
这就是关于安全运营的落地,我们只是举了一个漏洞收敛这个例子,但实际上是不是每个企业都要实行我上面列举的那么多点呢?因企业而异,需要考虑办公和业务部署环境,区分对待,主要针对重点资源实现严格策略,对次要资产实现普通策略,不能以一概全。
除了以上的内容,在安全运营中大家有的时候还会经常听到安全运营中心,也就是SOC,Security Operations Center。一般地,SOC被定义为:以资产为核心,以安全事件管理为关键流程,采用安全域划分的思想,建立一套实时的资产风险模型,协助管理员进行事件分析、风险分析、预警管理和应急响应处理的集中安全管理系统。
通俗的讲,SOC是一个安全运营的统一管理平台。过去我们都让安全专家来管理各种类型的防火墙、IDS和诸如此类的安全措施,这主要是因为安全问题一般都发生在网络中非常具体的某个地点。但是,现在的情况已经变化,安全问题已经不再像当年那么简单。安全是一个动态的过程,因为敌方攻击手段在变,攻击方法在变,漏洞不断出现;我方业务在变,软件在变,人员在变,妄图通过一个系统、一个方案解决所有的问题是不现实的,也是不可能的,安全需要不断地运营、持续地优化。安全措施应当被实施在应用层、网络层和存储层上。
到了今天,大家已经就安全形成普遍共识,安全是一个动态的过程,是一个复杂的工程,需要持续的进行,所以安全运营的将变得越来越重要,而传统买完安全产品就放置不管,指望实现检测和防御的情况将会被舍弃。
扩展阅读:
1、甲方漏洞跟踪响应流程图
3、怎么做漏洞跟踪与预警?
1、自建监控系统,通过爬虫主动爬取网上公开的漏洞发布平台、安全资讯平台、RSS订阅源、相关著名安全研究人员的Twitter、微博等,爬取最新的符合条件,如特定关键词的漏洞信息,然后根据自己关注的组件进行筛选和邮件、短信推送等
3、一些安全团队、公司每日推送的安全预警内容
4、通过一些漏洞跟踪预警产品
3.2 在解决了监控问题,就需要专人跟踪评估每次爆发的漏洞,判断爆发的漏洞组件在自己公司业务中是否被使用,这里怎么判断呢?可能就涉及到另外一块内容,叫做资产普查,需要安全人员对自己公司业务使用的组件心里有数,因为在大部分时候,公司服务器和业务过多的情况下,运维或者开发人员也没有谁能够说清楚都用了哪些组件。
3.3 在跟踪漏洞的过程中主要要关注漏洞的危害程度和漏洞利用及影响版本,影响版本是用来判断自己公司业务中使用的该组件版本是否在影响范围内,而危害程度和漏洞利用则决定了这个漏洞对企业可能造成的损失;漏洞利用主要看着漏洞是否容易被利用,是否已经有PoC和Exp被公开出来了,如果有的话,则说明任何的黑客都可以轻而易举的使用该漏洞,如果没公开则说明只有一些顶尖的黑客才能利用漏洞或者漏洞利用方式根本没被公开,那么事情的严重程度就会降一个级别;而漏洞危害程度主要看漏洞类型,比如一个远程命令执行和XSS的危害程度完全不是一个层面的,XSS最多可以被利用进行欺诈等行为,而远程命令执行则可能导致服务器直接沦为黑客肉鸡。
3.4 在跟踪的同时需要根据漏洞最新的情况制定相应的安全修复方案,并且在同一时间普查公司所有受影响的业务,及时推动业务进行修复,这些都是要在评估漏洞影响后的第一时间并行处理的,漏洞的跟踪响应及推动修复要争取在1小时内,这样才能最大程度的避免损失,这个就是我们俗称的黄金1小时。
3.5 最后的话,推动修复漏洞后不是这样就完了,而是还要重新验证之前普查的影响业务是否都修复了,同时针对利用该漏洞的入侵需要在相关IDS等添加规则,避免前面环节的遗漏而导致黑客利用该漏洞入侵,这样也能及时感知并及时止损。然后整个流程结束后,还应该增加内宣也就是内部宣传,让业务团队意识漏洞的严重程度和安全团队做这些事的目的,以及加强培训、做总结,不断改进流程和配合等。
1、常见的勒索解密工具
2、常见的勒索病毒
1、Phobos病毒
中毒特征:<原文件名>.ID-<随机8位字符串>.<邮件地址>.Phobos
2、GANDCRAB病毒
病毒版本:GANDCRAB V5.0.4 GANDCRAB V5.1 GANDCRAB V5.2
中毒特征:<原文件名>.随机字符串
3、GlobeImposter 3.0病毒(十二生肖病毒)
中毒特征:<原文件名>.XXXX4444
特征后缀收集: .China4444 .Help4444 .Rat4444 .Ox4444 .Tiger4444 .Rabbit4444 .Dragon4444 .Snake4444 .Horse4444 .Goat4444 .Monkey4444 .Rooster4444 .Dog4444 .all4444 .Pig4444 .Alco4444等
4、Crysis(Dharma)病毒
中毒特征:<原文件名>.ID-<随机8位字符串>.<邮件地址>.特征后缀
5、CryptON(x3m)病毒
中毒特征:<原文件名>.<随机字符串ID>.<邮件地址>.x3m
特征后缀收集: .x3m .nemesis .x3m-pro .X3M .mf8y3 .nem2end
6、PRCP(Matrix变种)病毒
勒索信息:#README_PRCP#.rtf
特征后缀收集: .PRCP
7、Clop病毒
中毒特征:<原文件名>.Clop
特征后缀收集: .Clop
8、PyLocky病毒
中毒特征:<原文件名>.pyd
特征后缀收集:.pyd .lockedfile .lockymap
9、其他病毒
特征示例:
特征后缀收集:
.auchentoshan
扩展阅读:
1、挖矿木马处置流程
1.1、了解现状
安全设备告警?
CPU使用率突然很高?
内网主机挂了?
1.3、了解系统架构[服务器类型、网络拓扑等
服务器类型:windows、linux
cms:dedecms、phpcms、trs cms等
中间件、容器、框架、数据库:tomcat、iis、apache、weblogic、struts、mysql等
脚本语言:asp、php、jsp等
业务架构:如前端网页内容是否是后端通过ftp上传的(新闻网偏多)等
这里了解的信息要尽量详细,为下一步分析收集足够证据;
1.4、确认感染者
通过上面的定位,确认中招主机:
1.5、处置建议
断网或ACL隔离;
结束恶意进程;
提取木马样本;
删除木马;
1.6、防御措施
安装杀毒软件,对被感染机器进行安全扫描和病毒查杀;
对系统进行补丁更新,封堵病毒传播途径;
制定严格的口令策略,避免弱口令;
结合备份的网站日志对网站应用进行全面代码审计,找出攻击者利用的漏洞入口进行封堵;
2、案例一、挖矿木马处置01
(1)事件概述
发现多台服务器被植入挖矿木马;
(2)事件分析
➜ipconfig /displaydns 显示 DNS 解析程序缓存的内容
通过对该木马分析后发现该木马会创建名称为:system_updatea的系统服务;
(3)结论
最后清理后,统一查看网络连接、进程、等是否正常,
1、勒索病毒处置流程
2、挖矿木马处置流程
3、DDos攻击处置流程
l 流量异常增大?
l 哪些系统、业务受影响?
l 安全设备告警?
l 了解当前带宽总量,是否为重要业务系统设置QoS,进行带宽独享以及优化。
这里了解的信息要尽量详细,为下一步分析收集足够证据;
3、根据流量情况统计,查看流量协议的分布情况,查看入网的流量何种应用层协议的分布明显突增,如HTTP、DNS、SMB等。
判断依据:
(1)根据TCP/UDP层以及应用层协议的流量突增情况,可区分出当前遭受到的攻击是网络层攻击或应用层攻击以及属于哪一种协议的攻击;
(2)CC攻击所占用的资源分为三种,分别为:带宽、Web连接数、数据库连接数;目的通常是消耗网络资源以及系统性能资源,导致访问缓慢或业务系统崩溃。通过分析异常时间段内的Web访问日志或流量中HTTP访问记录,分析是否存在异常访问;主要关注IP分布、各个IP的请求数、请求URL。
l 带宽:
一般占用带宽的情况,主要表现为频繁大量的访问大资源文件,Web服务器的连接数并不高,但长期访问大资源文件,将导致带宽占满,导致业务中断,如访问rar、zip、数据备份、媒体资源文件等;
l Web连接数:
一般占用Web服务器的连接数,主要表现为频繁大量的访问Web系统上的URL,包括动态资源或静态资源,将导致Web服务器的连接数占满,无法接收处置新的请求,最终导致业务中断;针对Web连接数的CC攻击可观察到当前有异常多的网络连接数以及Web服务进程的CPU使用率过高;
l 数据库连接数:
一般占用Web服务器的连接数同时占用数据库连接数,主要表现为频繁大量的访问Web系统上的动态资源URL,每次请求将创建一个HTTP会话连接以及一次数据库连接,将可能导致数据库连接数占满,同时Web服务器的连接数也可能占满,无法接收处置新的请求,最终导致业务中断;针对数据库连接数的CC攻击可观察到当前有异常多的来自Web服务器的连接,同时数据库进程的CPU使用率过高。
(3)如流量无明显突增,则可能是设备或应用故障造成,不符合DDoS的攻击特征。
扩展阅读:
1、文件排查
(1)敏感目录的文件分析[类/tmp目录,命令目录/usr/bin /usr/sbin等]
ls 用来显示目标列表
-a 显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
-C 多列显示输出结果。这是默认选项;
(2) 查看tmp目录下的文件➜➜➜ ls –alt /tmp/
如图,发现多个异常文件,疑似挖矿程序病毒:
(3) 查看开机启动项内容➜➜➜ls -alt /etc/init.d/,/etc/init.d 是 /etc/rc.d/init.d 的软链接
(5) 查看历史命令记录文件~/.bash_history
查找~/.bash_history命令执行记录,主要分析是否有账户执行过恶意操作系统;命令在linux系统里,只要执行过命令的用户,那么在这个用户的HOME目录下,都会有一个.bash_history的文件记录着这个用户都执行过什么命令;
那么当安全事件发生的时候,我们就可以通过查看每个用户所执行过的命令,来分析一下这个用户是否有执行恶意命令,如果发现哪个用户执行过恶意命令,那么我们就可以锁定这个线索,去做下一步的排查;
(6) 查看操作系统用户信息文件/etc/passwd
查找/etc/passwd文件, /etc/passwd这个文件是保存着这个linux系统所有用户的信息,通过查看这个文件,我们就可以尝试查找有没有攻击者所创建的用户,或者存在异常的用户。我们主要关注的是第3、4列的用户标识号和组标识号,和倒数一二列的用户主目录和命令解析程序。一般来说最后一列命令解析程序如果是设置为nologin的话,那么表示这个用户是不能登录的,所以可以结合我们上面所说的bash_history文件的排查方法。首先在/etc/passwd中查找命令解释程序不是nologin的用户,然后再到这些用户的用户主目录里,找到bash_history,去查看这个用户有没执行过恶意命令。
/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
(7) 查看新增文件
find:在指定目录下查找文件
-type b/d/c/p/l/f查是块设备、目录、字符设备、管道、符号、链 接、普通文件
find ./ -mtime 0 -name "*.php"(查找24小时内被修改的php文件)
find / -ctime 2(查找72小时内新增的文件)
PS:-ctime 内容未改变权限改变时候也可以查出;
grep 一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来
-v 反转查找
-E 使用正则表达式选项
-n 输出包含匹配字符串的行数
--color=auto 标记匹配颜色
tail 查看档案的结尾,默认显示最后十行
-f 动态显示文件最新追加的内容;
(8) 特殊权限的文件查看
查找777的权限的文件➜➜➜ find / *.jsp -perm 4777
(9)隐藏的文件(以 "."开头的具有隐藏属性的文件)
PS:在文件分析过程中,手工排查频率较高的命令是 find grep ls 核心目的是为了关联推理出可疑文件;
2.4.2.2、进程排查
(1)使用top命令实时动态地查看系统的整体运行情况,主要分析CPU和内存多的进程,是一个综合了多方信息监测系统性能和运行信息的实用工具
字段含义如下表:
列名
含义
PID
进程id
PPID
父进程id
UID
进程所有者的用户id
USER
进程所有者的用户名
GROUP
进程所有者的组名
TTY
启动进程的终端名
PR
优先级
NI
nice值;负值表示高优先级,正值表示低优先级
RES
进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR
共享内存大小,单位kb
进程状态:
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
%CPU
%MEM
进程使用的物理内存百分比
TIME
TIME+
COMMAND
命令名/命令行
(2)用netstat 网络连接命令,分析可疑端口、可疑IP、可疑PID及程序进程
选项参数:
-a 显示所有连线中的Socket。
-n 直接使用IP地址,而不通过域名服务器。
-t 显示TCP传输协议的连线状况。
-u 显示UDP传输协议的连线状况。
-v 显示指令执行过程。
-p 显示正在使用Socket的程序识别码和程序名称。
-s 显示网络工作信息统计表。
netstat –antlp | more
说明:
a) "Recv-Q"和"Send-Q"指的是接收队列和发送队列。
b) Proto显示连接使用的协议;RefCnt表示连接到本套接口上的进程号;Types显示套接口的类型;State显示套接口当前的状态;Path表示连接到套接口的其它进程使用的路径名。
c) 套接口类型:
-t TCP
-u UDP
-raw RAW类型
--unix UNIX域类型
--ax25 AX25类型
--ipx ipx类型
--netrom netrom类型
d)状态说明:
LISTENING 侦听状态
ESTABLISHED 建立连接
CLOSE_WAIT 对方主动关闭连接或网络异常导致连接中断
如图,可查看到本地mysql数据库有外部连接行为:
(3)根据netstat 定位出的pid,使用ps命令,分析进程
-a 代表 all。同时加上x参数会显示没有控制终端的进程
-aux 显示所有包含其他使用者的行程(ps -aux --sort -pcpu | less根据cpt使用率进行排序)
-C 显示某的进程的信息
-axjf 以树形结构显示进程
-e 显示所有进程。和 -A 相同。
-f 额外全格式
-t ttylist by tty 显示终端ID在ttylist列表中的进程
ps aux | grep pid | grep –v grep
将netstat与ps 结合:
可以使用lsof -i:1677 查看指定端口对应的程序;
lsof:
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息。
lsof filename 显示打开指定文件的所有进程
lsof -i 用以显示符合条件的进程情况,在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。
COMMAND:进程的名称
PID 进程标识符
USER 进程所有者
FD 文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE 文件类型,如DIR、REG等
DEVICE 指定磁盘的名称
SIZE 文件的大小
NODE 索引节点(文件在磁盘上的标识)
NAME 打开文件的确切名称
(4)使用ls 以及 stat 查看系统命令是否被替换
两种思路:
ls -alt /usr/bin | head -10
ls -al /bin /usr/bin /usr/sbin/ /sbin/ | grep "Jan 15"
备注:如果日期数字<10,中间需要两个空格。比如1月1日,grep “Jan 1”
(5)隐藏进程查看
ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2
2.4.2.3、系统信息排查
(1)查看分析history (cat /root/.bash_history),曾经的命令操作痕迹,以便进一步排查溯源。运气好有可能通过记录关联到如下信息:
a) wget 远程某主机(域名&IP)的远控文件;
b) 尝试连接内网某主机(ssh scp),便于分析攻击者意图;
c) 打包某敏感数据或代码,tar zip 类命令
d) 对系统进行配置,包括命令修改、远控木马类,可找到攻击者关联信息…
查看UID为0的帐号➜➜➜awk -F: '{if($3==0)print $1}' /etc/passwd
PS:UID为0的帐号也不一定都是可疑帐号,Freebsd默认存在toor帐号,且uid为0.(toor 在BSD官网解释为root替代帐号,属于可信帐号);
(3)查看分析任务计划
crontab -u <-l, -r, -e>
-u 指定一个用户
-l 列出某个用户的任务计划
-r 删除某个用户的任务
-e 编辑某个用户的任务(编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件)
(4)查看linux 开机启动程序
l ls –alt /etc/init.d/
l chkconfig
chkconfig是管理系统服务(service)的命令行工具,对开机启动的可疑程序进行更改;
设置service启动信息:
chkconfig name on/off/reset
设置service运行级别
chkconfig --level levels
utmp文件中保存的是当前正在本系统中的用户的信息。
/var/log/wtmp 文件结构和/var/run/utmp 文件结构一样,都是引用/usr/include/bits/utmp.h 中的struct utmp;
(6)系统路径分析
echo $PATH 分析有无敏感可疑信息
(7)指定信息检索
l strings命令在对象文件或二进制文件中查找可打印的字符串;
l 分析sshd 文件,是否包括IP信息strings /usr/bin/.sshd | grep '[1-9]{1,3}.[1-9]{1,3}.'
*PS:此正则不严谨,但匹配IP已够用;
l 目录: /etc/ssh ./.ssh/
2.4.2.4、后门排查
(1)系统后门排查
➜chkrootkit:
chkrootkit是用来监测 rootkit 是否被安装到当前系统中的工具。rootkit ,是一类入侵者经常使用的工具。这类工具通常非常的隐秘、令用户不易察觉,通过这类工具,入侵者建立了一条能够常时入侵系统,或者说对系统进行实时控制的途径。所以,我们要用 chkrootkit 来定时监测系统,以保证系统的安全。
chkrootkit主要功能:
l 检测是否被植入后门、木马、rootkit
l 检测系统命令是否正常
a) chkrootkit安装:
b) 检测
# chkrootkit –n;如果发现有异常,会报出“INFECTED”字样。
c) 定时检测
➜Rkhunter:
rkhunter是Linux系统平台下的一款开源入侵检测工具,具有非常全面的扫描范围,除了能够检测各种已知的rootkit特征码以外,还支持端口扫描、常用程序文件的变动情况检查。
rkhunter主要功能:
l 系统命令(Binary)检测,包括Md5 校验
l Rootkit检测
l 本机敏感目录、系统配置、服务及套间异常检测
l 三方应用版本检测
➜RPM check检查
系统完整性也可以通过rpm自带的-Va来校验检查所有的rpm软件包,有哪些被篡改了,防止rpm也被替换,上传一个安全干净稳定版本rpm二进制到服务器上进行检查。
如果一切均校验正常将不会产生任何输出。如果有不一致的地方,就会显示出来。输出格式是8位长字符串,c 用以指配置文件, 接着是文件名. 8位字符的每一个 用以表示文件与RPM数据库中一种属性的比较结果 。 . (点) 表示测试通过。.下面的字符表示对RPM软件包进行的某种测试失败:
下图可知ps, pstree, netstat, sshd等等系统关键进程被篡改了:
➜Webshell Check
Webshell的排查可以通过文件、流量、日志三种方式进行分析,基于文件的命名特征和内容特征,相对操作性较高,在入侵后排查过程中频率也比较高。
a)Webshell的排查可以通过可根据webshell特征进行命令查找,简单的可使用(当然会存在漏报和误报)
find /var/www/ -name "*.php" |xargs egrep 'assert|phpspy|c99sh|milw0rm|eval|\(gunerpress|\(base64_decoolcode|spider_bc|shell_exec|passthru|\(\$\_\POST\[|eval \(str_rot13|\.chr\(|\$\{\"\_P|eval\(\$\_R|file_put_contents\(\.\*\$\_|base64_decode'
综上所述,通过chkrootkit 、rkhunter、RPM check、Webshell Check 等手段得出以下应对措施:
1.根据进程、连接等信息关联的程序,查看木马活动信息。
2.假如系统的命令(例如netstat ls 等)被替换,为了进一步排查,需要下载一新的或者从其他未感染的主机拷贝新的命令。
3.发现可疑可执行的木马文件,不要急于删除,先打包备份一份。
4.发现可疑的文本木马文件,使用文本工具对其内容进行分析,包括回连IP地址、加密方式、关键字(以便扩大整个目录的文件特征提取)等。
(2)手工Webshell排查
通过文件内容中的危险函数,去找到网站中的web后门。最常见的Webshell文件内容中常见的恶意函数:
PHP
Eval、System、assert、……
JSP
getRunTime、 FileOutputStream、……
ASP
eval、execute、 ExecuteGlobal、……
➜➜➜find /var/www/html/ -type f -name '*.php'|xargs grep 'eval' |more
除了通过grep去找webshell,我们还可以用类似 D盾之类的webshell查杀工具,把源码拖下来在本机查杀。
有时候黑客在上传完webshell后门,获取到自己想要的信息后,就会删除掉webshell,又或者遇到了一些变形过的webshell后门,我们的关键字没有搜索到,这时候通过文件去找到webshell的方法就不适用了。那么这个时候就只能通过分析web日志,来找到黑客的webshell文件。直接分析web日志的最直接方式就是通过web日志中的特征来判断是否存在恶意的webshell后门,比如上面列表展示的这些常见webshell会传递的get参数。常见webshell后门日志特征如下:
Darkblade:goaction=login
JspSpy:o=login
PhpSpy:action=phpinfo
Regeorg: cmd=connect
Other:cmd=
不过这种方式能发现的问题不多,因为很多时候web后门接收参数的方式都是post,前面说了大部分中间件默认情况下只能记录get,如果需要记录post的话,就需要安装第三方模块。
Ps:常规黑客攻击流程,一个黑客通常通过web漏洞获取管理员密码进入后台,然后上传webshell,这个webshell文件在以前的访问记录是没有的,那么我们就可以通过统计每天访客所访问过的动态脚本文件,来列出每天新增加的文件入口的记录,快速查找webshell后门,最后我们可以根据统计低频访问的动态脚本文件,来找出可能是webshell的文件,因为一般来说webshell的访问ip只有几个,并且访问的次数也不多,那么根据这个分析模型,我们就可以发现可能是恶意的动态脚本文件。此排查需要懂一点了解编程,作为思路了解。
2.4.2.5、日志排查
Linux系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到日志文件中去。完成这个过程的程序就是syslog。syslog可以根据日志的类别和优先级将日志保存到不同的文件中。
(1)日志类型
类型
说明
auth
用户认证时产生的日志,如login命令、su命令。
authpriv
与 auth 类似,但是只能被特定用户查看。
console
针对系统控制台的消息。
cron
系统定期执行计划任务时产生的日志。
daemon
某些守护进程产生的日志。
ftp
FTP服务。
kern
系统内核消息。
邮件日志。
mark
行的格式类似于 May 26 11:17:09 rs2 -- MARK --,可以由此
news
网络新闻传输协议(nntp)产生的消息。
ntp
user
用户进程。
(2)日志优先级:
优先级
说明
emerg
紧急情况,系统不可用(例如系统崩溃),一般会通知所有用户。
alert
需要立即修复,例如系统数据库损坏。
crit
危险情况,例如硬盘错误,可能会阻碍程序的部分功能。
err
一般错误消息。
warning
警告。
notice
不是错误,但是可能需要处理。
info
通用性消息,一般用来提供有用信息。
debug
调试程序产生的信息。
none
没有优先级,不记录任何日志消息。
(3)常用日志文件
日志目录
作用
/var/log/message
包括整体系统信息
/var/log/userlog
记录所有等级用户信息的日志
/var/log/cron
记录crontab命令是否被正确的执行
记录Linux FTP日志
/var/log/lastlog
/var/log/secure
var/log/wtmp
var/log/faillog
(4)日志配置
(5)日志分析
日志查看分析,主要为grep,sed,sort,awk的综合运用;
5.1.1、/var/log/wtmp
l last命令
-f: <记录文件>:指定记录文件
-a: 把从何处登入系统的主机名称或ip地址,显示在最后一行
5.1.2、/var/run/utmp
5.1.3、/var/log/lastlog(lastlog)
5.1.4、/var/log/btmp(lastb)
5.2、系统日志
/var/log/secure
安全日志secure包含验证和授权方面信息,比如最常用的远程管理协议ssh,就会把所有授权信息都记录在这里。所以通过查看该日志,我们就能查看是否有人爆破ssh,通过查看存在过爆破记录的ip是否有成功登录的行为,我们就能知道是否有攻击者通过ssh暴力破解的方式成功攻击进来了。通过时间的纬度去判断,可以查看出是机器行为还是人为的,机器登录事件间隔特别密;
主要分析点:是否有ip爆破ssh成功;
定位有多少IP在爆破主机的root帐号:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
grep "Accepted " /var/log/ secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
5.3、中间件日志
Web攻击的方法多种多样,但是默认情况下Web日志中所能记录的内容并不算丰富,最致命的是web日志是不会记录post内容的,想要从Web 日志中直接找出攻击者的webshell是非常难的,所以一般来说我们的分析思路都是先通过文件的方式找到webshell,然后再从日志里找到相应的攻击者ip,再去分析攻击者的整个攻击路径,来回溯攻击者的所有行为;
但各种各样的原因,如黑客在入侵完了之后把webshell删除了,通过文件搜索的方式找不到webshell或者只能通过分析web日志去发现webshell,比如这时候要排查的话,难度会稍大。Web日志主要分析access_log,本文以常见的中间件apache为例,其他中间件日志格式和分析思路大同小异;
Apache默认自动生成两个日志文件,访问日志access_log和error_log;
Apache日志字段说明:
字段
说明
远程主机IP
表明是谁访问了网站
空白(E-mail)
用于记录浏览者进行身份验证时提供的名字
方法
资源
协议
请求的方式:METHOD、GET、POST、HEAD等
请求的文件
请求的协议:HTTP+版本号
状态码
请求的状态码
发送的字节数
表示发送给客户端的总字节数。它告诉我们传输是否被打断(该数值是否和文件的大小相同)
Referer
从哪个页面链接过来的
User-Agent
使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等信息
在url中视图搜索所有关键词为“union”的请求,可以发现172.24.123.120在尝试SQL注入,类似,通过通过特殊的关键词搜索web攻击。如/etc/passwd,alert等。但单凭web日志无法判断攻击者是否攻击成功了,只能知道攻击者在尝试攻击;
查询访问量前十的IP地址:
查询访问量前十的URL:
在对WEB日志进行安全分析时,可以按照下面两种思路展开,逐步深入,还原整个攻击过程;
2)一般攻击者在入侵网站后,通常会上传一个后门文件,以方便自己以后访问。我们也可以以该文件为线索来展开分析;
5.4、数据库日志
查看是否开启查询日志:
查看数据库文件:路径为/var/log/mysql/,记录一次数据库的连接、查询和退出中间的数据库操作;
在查询语句中搜索所有关键词为“union”的请求,可以发现172.24.123.120在尝试SQL注入,类似,通过通过特殊的关键词搜索有无敏感的数据库操作。如读取/etc/passwd敏感文件,写webshsll等;