一、Linux入侵排查
1.检测系统的账号安全
查询特权用户
# 查看UID为0的用户,排查可疑新用户
awk -F: '{if($3==0)print $1}' /etc/passwd
查询可以登录的用户
# 查看能够登录的用户
cat /etc/passwd |grep bin/bash
# 查看可以远程登录的账号
awk '/\$1|\$6/{print $1}' /etc/shadow
2 历史命令
通过.bash_history查看帐号执行过的系统命令
1、root的历史命令
histroy
2、打开/home各帐号目录下的.bash_history,查看普通帐号的历史命令
入侵排查:
进入用户目录下
cat .bash_history >> history.txt
3 检查异常端口
使用netstat 网络连接命令,分析可疑端口、IP、PID
netstat -antlp|more
查看下pid所对应的进程文件路径,
运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号)
4 检查异常进程
使用ps命令,分析进程
ps aux | grep pid
二、应急响应过程
1 排查网络连接
Nststat -anpt 根据PID号查找程序位置:
lsof -p 11393 查看文件创建时间
stat shell.elf
之后再将文件放在微步上检测
2 排查历史命令
History 查看是否有黑客执行的命令
cd /root
cat .bash_history 在 root账户下排查是否有黑客执行的命令
3 排查后门账户
who 查看当前登录系统的用户
awk -F: '$3==0 {print$1}' /etc/passwd 查看特权账户
awk '/\$1|\$6/{print $1}' /etc/shadow 查看可以远程登录的帐号信息
grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}' 查看用户最近登录情况
4 排查crontab后门
cd /var/spool/cron
cat root 查看服务器的定时任务
5 排查是否有命令被替换
rpm -Vf /usr/bin/*
rpm -Vf /usr/sbin/*
#rpm -Vf /usr/bin/xxx
#S 关键字代表文件大小发生了变化
#5 关键字代表文件的 md5 值发生了变化
#T 代表文件时间发生了变化
ls -al ps
cat ps 查看ps命令内容
/bin是系统的一些指令。
bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、 mount、rm、su、tar等。
/sbin一般是指超级用户指令。
(system binary)主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
/usr/bin是你在后期安装的一些软件的运行脚本。
主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。
/usr/sbin放置一些用户安装的系统管理的必备程式。
例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
6 总结
- 找到后门文件 :/root/shell.elf 、/centos_core.elf
2、找到后门账户:wxiaoge
3、找到恶意定时任务
4、ps命令被替留ps命令后门
清除后门文件
rm -rf /root/shell.elf
rm -rf /centos_core.elf
将ps命令删除再将 .hide_command/ps 恢复
rm -rf /usr/bin/ps
mv /.hide_command/ps /usr/bin/ps
删除后门账户
vi /etc/passwd
#vi编辑额passwd文件,按dd删除 wxiaoge那一行,之后保存并推出
三、应急响应溯源
1 查看后门
stat shell.elf(文件名)查看文件创建时间
总结后门植入顺序
2 排查安全日志
查看secure日志,发现爆破的时间范围
cat secure |grep Failed
查看爆破的次数、攻击IP、破的用户名
#查询有哪些IP在爆破命令
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
#查询被爆破的用户名都有哪些
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
接下来查看用户最近登录情况
grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'
3.书写溯源总结
四、常用的shell命令
Linux下常用的shell命令如:find、grep 、egrep、awk、sed
小技巧:
1、grep显示前后几行信息:
标准unix/linux下的grep通过下面參数控制上下文:
grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行
grep -B 5 foo file 显示foo及前5行
grep -A 5 foo file 显示foo及后5行
查看grep版本号的方法是
grep -V
2、grep 查找含有某字符串的所有文件
grep -rn "hello,world!"
* : 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
3、如何显示一个文件的某几行:
cat input_file | tail -n +1000 | head -n 2000
#从第1000行开始,显示2000行。即显示1000~2999行
4、查找文件
find /etc -name init
//在目录/etc中查找文件init
5、只是显示/etc/passwd的账户
`cat /etc/passwd |awk -F ':' '{print $1}'`
//awk -F指定域分隔符为':',将记录按指定的域分隔符划分域,填充域,
$0则表示所有域,$1表示第一个域,$
n表示第n个域。
6、删除历史操作
sed -i '153,$d' .bash_history
删除历史操作记录,只保留前153行