“ 真相只有一个”
本文大部分都来自下面这个链接,里面写的很详细,我也只是跟着敲一下
https://www.saulgoodman.cn/2020/07/03/penetrationtest-blue-1/
我有很多服务器,之前租国外的服务器(ubuntu),用来跑跑目录,子域名啥的,当时暑假嘛,租了两个月,一个月大几十块钱。
我当时对应急响应没了解过,我服务器用了十来天之后,就很卡,刚开始也没注意,以为我里面装的东西太多了,我用的finalshell,左边的框框一直显示cpu爆满,我当时还想着我也没开多少服务啊,我就重置了一遍机器。
通过这几天的学习,我严重怀疑我的主机当时挖矿了,要是现在回去到那个时间段,我不得当一回名侦探柯南,好好查一查。
基本命令
查看进程的命令
top
ps -aux
lsof
查看网络链接,端口这些
netstat -ano
netstat -pantu
开机启动项
/etc/init.d/*
/etc/rc*.d/
/etc/rc.local
查看计划任务
ls -a /var/spool/cron/
ls -altr /etc/cron.daily/
cron.daily,每天执行的脚本还有hourly,monthly,weekly
查看登录情况
last
lastb
查看的是这两个文件/var/log/btmp/,var/log/wtmp
查看ssh key
authorized_keys 看看这个文件里面有没有写入ssh密钥,ssh用这个来免密登录。在.ssh目录下面
查看用户
cat /etc/passwd
cat /etc/shadow
查看动态链接库
echo $LD_PRELOAD
//如果有动态链接库,那么看看路径之前的文件有没有别篡改,是不是正常
LD_PRELOAD可用来bypass disable function,还可以用来提权。
入侵排查
检测账号是否安全
cat /etc/passwd
#root:x:0:0:root:/root:/bin/bash
#用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
#注意:无密码只允许本机登陆,远程不允许登陆
cat /etc/shadow
查看当前登录用户
who
我敲我为啥同时登录了七个。。。
查看系统信息
w
查特权用户
awk -F: '$3==0{print $1}' /etc/passwd
查可以远程登录账号
awk '/$1|$6/{print $1}' /etc/shadow
查除了root外还有没有sudo权限的
more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"
管理账号的命令
useradd 添加用户
usermod -L user 禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头
userdel user 删除user用户
userdel -r user 将删除user用户,并且将/home目录下的user目录一并删除
查看入侵的历史命令
history
history -c
echo > /.bash_history
查看端口,进程
看有没有异常的进程,端口,还有挖矿的cpu爆满特点。
端口
netstat -ano
进程
ps aux
检查启动项
检测运行级别
runlevel
开机启动配置文件
/etc/rc.local
/etc/rc.d/rc[0~6].d
开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可
ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的。
启动项文件:
more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
检查定时任务
定时任务crontab基本命令
crontab -l 列出某个用户cron服务的详细内容
Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e 使用编辑器编辑当前的crontab文件
如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件
anacron定时任务
每天运行 /home/backup.sh脚本:vi /etc/anacrontab 10 example.daily /bin/bash /home/backup.sh
当机器在 backup.sh 期望被运行时是关机的,anacron会在机器开机十分钟之后运行它,而不用再等待 7天。
入侵检测
判断下面文件夹有没有恶意脚本
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
检查服务
服务自启动三种方法
one
chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig –level 2345 httpd on 开启自启动
chkconfig httpd on (默认level是2345)
two
修改/etc/re.d/rc.local 文件
加入 /etc/init.d/httpd start
three
使用ntsysv命令管理自启动,可以管理独立服务和xinetd服务
入侵检查
看安装的文件
chkconfig --list 查看服务自启动状态,可以看到所有的RPM包安装的服务
ps aux | grep crond 查看当前服务
,一般是在/user/local/
service httpd start
查看是否存在
检查异常目录,文件
1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性
2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?
可以使用find命令来查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件
3、针对可疑文件可以使用stat进行创建修改时间。
检查系统日志
一些分析的语句
定位有多少IP在爆破主机的root帐号:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些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 "$1n";}'|uniq -c|sort -nr
登录成功的IP有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
一些相关的应急响应工具
rookit查杀
http://www.chkrootkit.org
使用方法:
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxvf chkrootkit.tar.gz
cd chkrootkit-0.52
make sense
#编译完成没有报错的话执行检查
./chkrootkit
rkhunter
http://rkhunter.sourceforge.net
病毒查杀
Clamav
http://www.clamav.net/download.html
webshell查杀
看我之前的文章
RPM 检查
系统完整性可以通过rpm自带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了:
./rpm -Va > rpm.log
如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。
验证内容中的8个信息的具体内容如下:
S 文件大小是否改变
M 文件的类型或文件的权限(rwx)是否被改变
5 文件MD5校验是否改变(可以看成文件内容是否改变)
D 设备中,从代码是否改变
L 文件路径是否改变
U 文件的属主(所有者)是否改变
G 文件的属组是否改变
T 文件的修改时间是否改变
如果命令被替换了,如何还原回来(例如ps,ls被替换):
文件提取还原案例:
rpm -qf /bin/ls 查询ls命令属于哪个软件包
mv /bin/ls /tmp 先把ls转移到tmp目录下,造成ls命令丢失的假象
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取rpm包中ls命令到当前目录的/bin/ls下
cp /root/bin/ls /bin/ 把ls命令复制到/bin/目录 修复文件丢失
linux检测脚本
Github项目地址:
https://github.com/grayddq/GScan
https://github.com/ppabc/security_check
https://github.com/T0xst/linux
下一篇文章更新windows的。
---------------------
---------------------
欢迎关注公众号:虚拟尽头
师傅们,聊天框发送"二维码",加我好友一起交流呀(加的时候请备注来自公众号)。
原文始发于微信公众号(虚拟尽头):linux应急响应命令
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论