客户的监控系统发现有异常行为,我临时顶替应急的同事处理一下。
连接到服务器,首先通过ps auxef 和 netstat -tulnp两个命令查看异常进程信息,果然发现了两个异常进程 xmp 和 [atd]
通过 ls -al /proc/[pid]/exe 查看这两个进程的程序位置,其中[pid]为xmp 和 [atd]两个进程的进程id
最后确认xmp在 /lib/PROXY/ 目录下,该目录下有两个文件,一个是xmp,一个是config.json [atd]在 /var/spool/at/.sqe/ 目录下,该目录下有很多文件,包括 [atd], cyc.acc, seed, stealth, randfiles 等
把两个进程上传到virustotal,均超过一半的杀毒软件报毒
执行stat /lib/PROXY/xmp, stat /var/spool/at/.sqe/[atd], 发现这两个文件的Change time都是在23,24这两天
所以怀疑应该是23日左右被入侵了,查看 history, /var/log/secure 发现文件都被清空了,查看 /root/.ssh/known_hosts 发现600多条记录。 找不到蛛丝马迹,只能以为是ssh暴破登录了。
重启服务器后,发现[atd]进程依然存在,应该是加入了开机启动,我采用了比较粗暴的方式定位开机启动,在根目录执行
皇天不负苦心人,果然被我找到,在/bin/seed 中有启动[atd]的代码,这个脚本非常简单,只是cd到/var/spool/at/.sqe/然后执行[atd]
接下来我去/etc目录,继续执行 grep -rn seed *, 这条命令执行结果很多行,逐个过滤后,发现在/etc/rc.sysinit 某一行,新增了一个命令seed,这样就能解释为什么[atd]能开机启动了,然而并没有找到xmp的开机启动项,xmp也不会随着服务器重启自启动
看[atd]的进程名,猜测这是一个执行定时任务进程,这个进程监听udp端口,猜测应该是攻击者通过这个进程控制服务器,执行命令,包括启动xmp
再回过头来看xmp,通过config.json文件可以知道这是一个门罗币挖矿病毒
最后清除过程很简单,删除/etc/rc.sysinit seed那一行,删除/bin/seed,删除/lib/PROXY,删除/var/spool/at/.sqe/
加固 *** 为把一些不必要的端口配置iptables拒绝所有连接请求,修改ssh密码为不常见的强密码。
言归正传,应急响应的标准流程应该如何? Security+给出了一套流程:
Preparation –> Identification –> Containment –> Eradication –> Recovery –> Lessons learned
以上面的背景里的例子来说,Preparation就是一线人员提供我接入服务器的渠道。Identification就是我发现xmp和[atd]确认服务器被感染病毒。Containment把所有可能受影响的系统都隔离,包括上述known_hosts 发现600多台主机。Eradication根据上面的清除清除所有受影响的主机。Recovery是在清除之后,解除隔离,让业务系统恢复。Lessons learned总结反思事件,一方面从源头上减小安全事件的发现,另一方面提升应急响应的效率。
上面的应急响应还是非常片面的,我搜罗了一系列网友分享的应急响应经验,整理成章方便以后查阅。
我把应急响应流程分为三个部分,分别是 【1】入侵现场,【2】攻击维持,【3】入侵原因,下面我将从这三个方面展开
所谓入侵现场,是指服务器被怀疑中毒的现场环境,一般来说,服务器被怀疑中毒都有异常现象,比如异常的 *** 流量,异常的端口,cpu/内存占用率异常等等。
为了避免系统命令被替换,预加载动态库等问题,下载静态链接版本的?busybox来执行调查。或者下载源码编译?busybox源码,注意编译的时候采用静态链接编译。
查看 *** 监听的tcp和udp端口及对应的进程信息:busybox netstat -tulnp
查看 *** 所有的 *** 连接:busybox netstat -anp
通过 *** 监听及 *** 连接来辅助定位异常进程
注意如果攻击者获取到了Root权限,被植入内核或者系统层Rootkit的话,连接是可以被隐藏的。
如果系统被发现异常,那很大概率是有异常进程在执行
通过ps查看进程信息
通过grep -v 过滤掉一些正常进程,再逐个排查异常进程
通过top命令查看cpu/内存占用异常的进程
查找ps中隐藏的进程,通过对比proc中的进程id和ps中的进程id,判断是否有些进程在proc中但不在ps中显示
执行pstree查看进程树:pstree -p
注意如果攻击者获取到了Root权限,被植入内核或者系统层Rootkit的话,可以把进程隐藏的更彻底。参考文献[1]做了部分的扩展,供读者参考。
首先执行busybox stat /usr/bin/ls, busybox stat /usr/bin/lsof, busybox stat /usr/bin/stat, 确认这几个文件没有被修改过
ls
排查 可读写执行目录
排序 $PATH 环境变量下的目录的文件,比如
递归查看所有文件
stat
针对任何的可以文件,都通过stat命令查看各个时间点。
lsof
另外可以通过lsof命令联合查看,lsof常用options如下
find
通过find命令来查找近期新增/修改文件
?例如要查找24小时内被修改的 *** P文件
?查找72小时内新增的文件
?查找特殊权限的文件
diff
用diff命令把重要的目录做对比,分别对比入侵环境和纯净环境下的不同
比如把连个环境的重要目录都拷贝到PC-x中,利用下面的命令对比两个目录
若发现有非法进程,运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为异常进程的pid),查看下 pid 所对应的进程文件路径。
运行cat /proc/$PID/cmdline查看进程执行的命令及参数
通过file命令查看恶意程序文件类型,比如:file /tmp/.sh
如果是ELF文件,可以通过strings查看ELF里带的字符串,可能会泄露一些信息,比如 stirngs /tmp/.elf
如果碰到恶意程序被删除,可以通过内存转储的方式从内存中导出恶意程序
通过 stat命令查看恶意程序的Access,Modify,Change时间,了解系统大概是什么时间被入侵。
可以把可疑的恶意程序或内存转储的程序上传到virustotal进行病毒扫描
其他可能用到的命令,比如strings, strace, lsattr, chattr -i, getfacl,setfacl等。
chkrootkit
使用 *** :
rkhunter
使用 *** :
busybox cat ~/.bash_history
查看环境变量动态库劫持
查看配置文件动态库劫持
如果不确定动态库是不是恶意的,可以把动态库上传到virustotal检测。
busybox cat /etc/passwd | grep -v nologin
busybox cat /etc/shadow
busybox stat /etc/passwd
busybox cat /etc/sudoers
查看服务器近期登录的帐户记录:last
遍历查看 /etc/ 目录下的init开始的系列目录及文件,以及rc开头的系列目录及文件
查看 /etc/init.d/目录下的文件
查询系统服务,特别是开机自启动的服务
chkconfig –list
service –status-all
重点查看以下罗列的目录及文件内容
通过crontab -l罗列当前用户的定时任务
查看内核模块加载情况:l *** od
到 /root/.ssh 目录下查看是否有公钥,以及查看known_hosts文件,看本机通过ssh连接过哪些主机,很可能这些主机有一部分也被入侵了。
首先通过netstat查看对外开放的服务,确认这些服务(比如mysql,redis,zookeeper,tomcat等)是否有配置认证,认证使用的是否为弱密码或者默认密码。
查看这些服务的日志信息,看是否有入侵记录。
日志包括系统日志和应用程序日志,系统日志存放在 /var/log 目录下,应用程序日志需要看应用程序的具体配置
系统日志包括
查看ssh登录记录
大多数情况恶意进程的父进程都是1,而有些情况下恶意进程的父进程可能不是1,比如父进程是httpd,这种情况下,就可以大胆猜测攻击者是通过利用父进程的漏洞达成攻击。
通过命令ps -ef 查看进程的父进程pid也就是ppid
通过 ps auxef 查看恶意进程启动的用户,如果发现比如是mysql用户启动,那么就可以推断是通过mysql服务入侵。
修改各个对我开放的服务密码
限制对外开放的服务,如果不方便操作,则通过iptables限制可访问的主机
升级系统组件或者服务使用到的中间件
由于笔者水平有限,文章难免会有错误的,欢迎读者批评指正。笔者个人邮箱:kafrocyang@gmail.com
[1]?https://www.freebuf.com/articles/system/186012.html
[2]?https://cloud.tencent.com/document/product/296/9604
[3]?https://xz.aliyun.com/t/1140
[4]?https://www.freebuf.com/column/162604.html
[5]?https://www.freebuf.com/articles/system/218407.html
[6]?https://xz.aliyun.com/t/48#toc-0
[7]?https://www.secrss.com/articles/7374
网站要害词优化_百度要害词如何优化-奈何做好百度要害词优化 我要说要领也是你知道的,不妨不说,因为大部门能力都是透明的,本身的思维创新出来的有的人不肯意分享,我们需要的就是创新本身的思维,正如都在为原...
飞鸽儿童平衡车是一款国内老知名品牌,选用铝合金材料,小朋友应用起來十分的轻巧,做为小玩具的另外还能够锻练小孩的均衡工作能力,下边我产生飞鸽儿童平衡车应用测评,期待对大伙儿有一定的协助。 飞鸽儿童...
虾皮们?了解海面为什么是咸的吗?大家都知道,一样是水,水流、河流是淡的,而海面确是咸的。这是为什么呢? 在很多很多年之前,人们认为海面是地球上赠予给他的礼品。海面以构造水、结晶水的方式贮藏在矿物质和...
孩子张口呼吸是什么原因,哪些情况会造成孩子张口呼吸的情况,孩子喜欢张口呼吸怎么办呢,友谊长存小编就来说说吧。 什么是张口呼吸? 人类呼吸时,气流既可以通过鼻腔也可以通过口腔进入呼吸道。在正常情况下...
文章回顾了近几年NLP的发展历程,从项目实施的两个阶段中带我们梳理了NLP技术的应用演变。 第一个与大家分享的Case,基于NLP展开。分为3个部分,分别是NLP的发展、项目叙述、以及Lesson...
如今的社会,自主创业变成大家嘴中见怪不怪的话题讨论,自主创业的新项目也是成千上万。实际上我觉得,自主创业沒有必需去过度追求完美当今有前景的行业,挑选适合的创业好项目才算是取得成功的重要因素。那麼小创业...