溯源(三)之Linux-入侵排查
溯源(一)之溯源的概念与意义
溯源(二)之 windows-还原攻击路径
Linux入侵排查
日志分析
web日志分析
由于操作系统的不同,Windows是图形化的界面,而Linux是命令行的界面,在Linux系统中,如果我们要去入侵排查,筛选,也只能用命令去执行
在排查Linux系统时,可以多注意当天访问次数最多的一个IP,因为攻击者在攻击网站时,会进行漏洞扫描等等会产生大量连接的行为,因此往往当天访问次数最多的IP很有可能就是攻击者的IP
cut -d- -f 1 log_file|uniq -c | sort -rn | head -20 //列出当天访问次数最多的IP命令
这样可以查看日志文件中最多的IP
awk '{++S[$1]}END {for (a in S) print a,S[a]}'log_file //查看每一个IP访问了多少个页面
grep "/index.php" log_file |wc -l //看某一个页面被访问的次数
grep 192.168.0.106 log_file| awk '{print $1,$7}' //查看某一个IP访问了哪些页面
grep -E -i "select" logfile //SQL注入检攻击检测
grep -E -i " (S)%26%23x3c%3B(S+)%3E|(S)%26%23x3c%3B(S+)%2F%3E|(S+)<(S+)>|(S+)<(S+)/" logfile //xss跨站脚本攻击检测
grep -E -i "ping%20-c%20|ls%20|cat%20|%20pwd|net user" logfile //命令注入攻击攻击检测
grep -E -i "eval|%eval|%execute|%3binsert|%20makewebtaski|/1.asp|/1.jsp|/1.php|/1.aspx%if" logfile //网站被植入webshell后门检测
grep -E -i "login" /www/logs/access.log | grep -E -i "POST" | grep -E -i "200" //暴力破解账号攻击检测
文件分析
检查异常系统文件
find -mtime 0 -name "*.php" //查找24小时内被修改的php文件,当然想要查询其他类型的文件大家可以自己替换
find -type f -name "*.php" | xargs grep 'eval' | more //查找一句话木马文件
find -ctime 0 -name "*.php" //查找今天新增加的文件
-1 代表前一天
-2 代表前二天
以此类推
find -iname "*.php" -perm 777 //查找被赋予777权限的php文件
find -user root //查找root所属组的文件
find -nouser //查找垃圾文件
awk '{print substr($4,2,11)}' logfile |sort | uniq -c //查找某一天的访问记录有多少条
awk -F:'length($2)==0 {print $1}' /etc/shadow //查找空口令账号
系统日志分析
Linux系统中系统日志具体位置及作用如下图所示
系统安全日志存放位置:
cat /var/log/secure // Centos系统
cat /var/log/auth //Ubuntu系统
一般来说对应的系统有对应的日志存放位置,如果不知道对应日志存放的位置,可以运行下面这条命令
vim /etc/rsyslog.conf //查看日志存放位置
grep "Failed password" /var/log/auth.log | wc -l //密码验证失败
可以看到这里是0次
grep "Accepted password for" /var/log/auth.log //密码认证成功
可以看到这里有一条远程登陆并且密码认证成功的记录,如果短时间内有大量登录失败的记录,那么说明服务器很可能遭受到了暴力破解
grep "Failed password" /var/log/auth.log | awk '{if (NF==16){c[$13]++}else{c[$11]++}}END{for(u in c)print u,c[u]}' | sort -k 2 -nr | head //查看每个ip登录失败的次数
grep "Failed password" /var/log/auth.log | awk '{if (NF==16){c[$11]++}else{c[$9]++}}END{for(u in c)print u,c[u]}' | sort -k 2 -nr | head //查看每个用户名登录失败的次数
lastb //查看登录失败的记录
last //查看登录成功的记录
/etc/passwd 是我们在排查Linux系统异常账号时需要去排查的,在排查异常账号时要注意异常账号的uid是不是0,因为攻击者常常会把新增加的账号uid设为0,以此来获得同root用户相同的权限,同时nologin也是我们需要重点排查的一个地方,nologin代表用户从来没有登陆过,如果出现了其他的,需要注意一下
ls -l /etc/passwd //可以查看文件修改时间,如果文件被修改过,什么时候新增加了用户,可以从这里看出来
awk -F: '$3==0{print $1}' /etc/passwd //查看权限为特殊权限的用户
这样也能查出系统中存在的恶意账户,一般攻击者在新增加账户时都会设置成root权限
进程分析
netstat -napt //查找网络连接的状态
top //查看系统占用程序,如果是占用非常高的程序,有可能遭受到了挖矿木马
ls -alt /proc/PID //查找恶意程序的路径
可以看到该可执行程序路径在这,如果确定该程序是恶意进程,那我们就需要对其进行删除等操作
kill PID //杀死恶意程序
假如某些恶意程序打开或者关联了其他恶意程序,我们可以使用以下命令查看
lsof -p PID
我们在进行异常经常排查时,有些恶意进程可能是被攻击者做了隐藏的,我们可以使用以下命令查看被攻击者隐藏的进程
ps -ef|awk '{print}'| sort -n |uniq >1
ls /proc| sort -n |uniq >2
这里因为我的机器上没有隐藏进程,就暂时不提供图片了,把命令给到大家就行了
计划任务
cat /var/spool/cron/crontabs/root //查看隐藏计划任务
crontab -u root -l
cat /etc/rc.d/rc.local
ls /etc/rc3.d