重要的目录、文件:

  • /etc/passwd 用户信息文件
  • /etc/crontab 定时任务文件
  • /etc/anacrontab 异步定时任务文件
  • /etc/rc.d/rc.local 开机启动项
  • /var/log/btmp 登陆失败日志,使用last命令查看
  • /var/log/cron 定时任务执行日志
  • /var/log/lastlog 所有用户最近登陆信息,使用lastlog查看
  • /var/log/secure 验证、授权等日志
  • /var/log/wtmp 包含用户登录日志,使用last命令查看
  • /var/log/utmp 当前登陆系统的用户信息,使用last命令查看

使用top查看CPU使用率:

image-20201104112145928

关于这个cpu查看占用率我一直陷入了一个误区就是单看其中一个cpu占用率:

image-20201231100246486

有的时候总的cpu占用率还是极其低下的,而其中一个进程会占用超百分之100,百分之200这种,在开发环境下属于正常的,比如java环境的占用率。

ps -aux查看进程:

image-20201104161125755

使用ldd命令可以查看是否有进程被注入了可以的.so文件

image-20201104161806815

检查数据库日志:

mysql连接上后使用:

show variables like 'general_log_file';

查看日志存放路径:

image-20201104162157752

这里我到该路径下并没有该日志,原因是global变量的general_log并没有设置on状态所以默认不会产生mysql日志。

检查定时任务

crontab -l

image-20201104182925818

查看登陆成功的IP

grep "Accepted " /var/log/secure* | awk '{print $11}'

定位有爆破行为的IP

grep "Failed password" /var/log/secure|awk '{print $11}' | sort | uniq -c | sort -nr |more

隐藏进程查看

ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n | uniq >2
Diff 1 2

检查Web目录中是否存在Shell

常用查找web目录思路:

默认tomcat:/var/www/html

weblogic、nginx

ps -aux|grep weblogic
ps -aux|grep nginx

nginx通用方法:

nginx -t

即可看到conf的路径,在nginx.conf中的server下的root即为nginx的web路径。

使用cat conf路径|grep ‘root’即可。

以前查到的路径例子:

root /usr/share/nginx/html

Tomcat:

可以使用ps -ef寻找tomcat路径:

image-20201231095827960

比较通用的linux下寻找web目录方法:

ps -ef -ww即可确定web目录

查看用户登陆情况:

lastlog

image-20201231100638744

关于这个其实可以看异常用户登录情况,很多情况下,www不会被登陆,但如果网站被突破,并且赋予的网站www权限,那么这时候就需要留心了。

netstat –anop

网络连接主要看处于监听状态的:

netstat -anop|grep LISTEN

因为shell就是处于这个状态的。

最常用命令-history

查看历史命令是非常重要的,无论作为应急的蓝队还是上线的红队。

从历史输入命令中有可能能够收集到修改的明文密码,运维的日常习惯,等等有用的信息。

history、cat ~/.bash_history

image-20201231101026373

比如看我的就是一个‘老’(low)渗透了。

其他的是写这篇文章时候留下的。在这中间又涉及到一个隐藏身份了,此文主要讲响应就不扯那么多了。

ls这个命令,一直以来都被我用来查看文件,但忽略了它的选项。

比如ls -a可以输出文件详细信息,ls -alt可以输出所有文件并排序排序是时间的逆序。

image-20201231101309493

还有一个很niu的命令就是stat了。

比如下面这个stat:

image-20201231101415539

其中的access是访问时间,modify是创建时间,change是修改时间。

通过这个命令可以有效的在应急中去溯源时间节点,不过聪明的攻击者老早就把这几个参数都改成了假时间。

针对时间节点又有新说道了:

查找当前目录下。指定天数内修改的指定类型(or名称)文件:find ./ -mtime 0 -name "*.jsp"
查找当前目录下,指定天数内新增的指定类型(or名称)文件:find ./ ctime 0 -name "*.jsp"

病毒应急

首先需要了解几种常见类型的病毒:

  • 勒索病毒
  • 挖矿病毒
  • 其他类型

勒索病毒

勒索病毒通常的行为是加密用户文件,从而勒索用户。

勒索病毒往往利用主机漏洞、SSH爆破等手法。因此需要把溯源重点放在主机补丁、弱口令上为主。

针对上面这句话,排查手段我认为的有如下:

windows的在此文不说,首先是爆破可以通过查看登录日志:

last -f /var/log/btmp 查看登陆失败用户

再通过查看安全日志也可以查看到尝试爆破的IP:

grep 'Failed' /var/log/secure

关于linux查看补丁主要是通过查看版本来完成:

cat /proc/version or uname -a

image-20210104100517970

image-20210104100557961

勒索病毒的现象一般是出现奇奇怪怪的后缀,也就是正常文件被清一色修改了。

然后是文件无法正常打开。

一般到现场需要先隔离异常主机,然后可以到:

https://lesuobingdu.qianxin.com

查看是否能解密。

在无法解密的情况下只能进行备份以及重装系统,以及即使打补丁。

后续需要对弱口令等进行修改,还需要排查其余内网主机是否失陷,即使进行主机补丁更新。

挖矿病毒

挖矿病毒通常会消耗主机大量资源用以计算比特币的hash值。

挖矿病毒需要定期外联,因此溯源重心需要放到定时任务、网络连接、以及资源消耗上。

现象根据上述就能描述大概是Cpu占用过高,系统经常崩溃。

排查的话跟上述溯源重心类似:

  • 资源占用排查
  • 定时任务排查
  • 系统服务排查
  • 开机启动项排查

最后需要对异常进程进行及时的查杀,隔离异常主机。

其他类应急

其他类型的应急通过是由Web漏洞所引起的,因此,往往需要重点关注中间件日志。

关于中间见日志的快速定位:ps -aux|grep 中间件名

然后下去找Log就很快。

针对这种应急一般采用文件、日志、关键字关联方式。

整个过程可描述为:发现网页篡改、账户异常、异常外联等情况。然后到现场对日志、定时任务、文件系统、网络连接进行一一排查。最后对异常文件进行处理,对漏洞进行及时修复。