不输的办法只有一个,就是不上场
常用命令
代码语言:javascript复制top # 命令可以直接看到进程实时情况。
ps aux --sort=pcpu | head -10 # 查看cpu占用率前十的进程,有时候可以发现top发现不了的东西
netstat -anpl # 检查当前存在的连接与监听端口
ps -ef #查看当前系统上运行的所有进程与其使用的命令
w # 查看活动用户
who # 查看当前登录用户(tty 本地登陆 pts 远程登录) /var/log/utmp
last # 查看用户登录日志,查看我们系统的成功登录、关机、重启等情况 /var/log/wtmp
lastb # 查看登陆失败的用户日志 /var/log/btmp
lastlog # 查看所有用户登陆日志 /var/log/lastlog
lsof -i :3306 # 查看谁在使用某个端口
lsof -nPi 查看内部对外的网络连接
Strace 集诊断、调试、统计一体的工具。 `strace -f -p pid` 查看进行的行为
busybox是应急常用的工具。 如果系统命令被替换了可以使用此命令来查看系统相关信息
查看History详细
设置history显示时间和用户名,更方便排查谁在什么时间执行了什么
代码语言:javascript复制export HISTTIMEFORMAT="%F %T `whoami` " #设置history显示时间和用户名
查看文件改动
检查最近创建的php、jsp文件和上传目录 例如要查找24小时内被修改的JSP文件:
代码语言:javascript复制find ./ -mtime 0 -name "*.php"
stat /etc/passwd #查看密码文件上一次修改的时间,如果最近被修改过,那就可能存在问题。
cat /etc/passwd | grep -v nologin #查看除了不可登录以外的用户都有哪些,有没有新增的
cat /etc/passwd | grep x:0 #查看哪些用户为root权限,有没有新增的
cat /etc/passwd | grep /bin/bash #查看哪些用户使用shell
与测试环境目录做对比
diff -r {生产dir} {测试dir}
账号
代码语言:javascript复制1、查询特权用户特权用户(uid 为0)
root@drunk:~# awk -F: '$3==0{print $1}' /etc/passwd
root
2、查询可以远程登录的帐号信息
root@drunk:~# awk '/$1|$6/{print $1}' /etc/shadow
root:$6$xJe1PRKN$U33UxLJ6zr3Iar4TQuaLdLSu9cmEo3DfKwE6mBmzq2Du5QeW5UOa6545wPADMpWbPrCSALA6cU6FSU8IcE9XwL1:18652:0:99999:7:::
root@drunk:~#
域名hosts
有一些挖矿程序会修改 /etc/hosts
文件,请看一下其中内容是否被更改过
前两天在另外的项目组上发现的某个挖矿病毒就会修改hosts文件
这是从那台服务器上提取的一些恶意的配置内容
0.0.0.0 aliyun.one
0.0.0.0 evle.org
日志
secure是应急中最常用的文件,主要记录系统存取数据的文件。日志默认存放位置:/var/log/,日志总是能发现一些蛛丝马迹。
日志文件 | 说明 |
---|---|
/var/log/cron | 记录了系统定时任务相关的日志 |
/var/log/cups | 记录打印信息的日志 |
/var/log/dmesg | 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息 |
/var/log/mailog | 记录邮件信息 |
/var/log/message | 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件 |
/var/log/btmp | 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看 |
/var/log/lastlog | 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看 |
/var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看 |
/var/log/utmp | 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询 |
/var/log/secure | 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
注:secure
在一些较新的linux已经被rsyslog
替换,下面命令中的/var/log/secure
可以尝试换成/var/log/auth.log
1、定位有多少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
2、登录成功的IP有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
或者last命令,它会读取位于/var/log/wtmp的文件,并把该文件记录的登录系统的用户名单,全部显示出来。
登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
3、增加一个用户kali日志:
Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali
, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
#grep "useradd" /var/log/secure
4、删除用户kali日志:
Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
# grep "userdel" /var/log/secure
5、su切换用户:
Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)
sudo授权执行:
sudo -l
Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now
常用的shell命令
find、grep 、egrep、awk、sed
1、grep显示前后几行信息:
代码语言:javascript复制 标准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 查找含有某字符串的所有文件
代码语言:javascript复制 grep -rn "hello,world!"
* : 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
3、如何显示一个文件的某几行:
代码语言:javascript复制cat input_file | tail -n 1000 | head -n 2000
#从第1000行开始,显示2000行。即显示1000~2999行
命令替换后门
黑客会替换替换top、ps等命令
检测 stat命令查看文件状态并且使用md5sum命令查看文件hash并将其与正常文件hash进行比较。如果确定被替换,使用正常文件替代坏文件即可
工具
1.利用自动化检测程序rookithunter进行检测 rookithunter可以自动化检查主机上可能存在的rookit木马文件,与被篡改的命令等,找到被篡改的命令后可以选择删除命令,然后重新安装命令。
代码语言:javascript复制# centos
yum install -y rkhunter
# ubuntu
apt-get install rkhunter
rkhunter --update #更新rkhunter版本
rkhunter --propupd #更新rkhunter的特征数据库
# 常见命令
rkhunter --check --sk #自动检测每个部分中间不需要暂停
rkhunter --check #自动检测每个部分,每监测完一个部分中断一次,输入enter之后会继续检测下个部分
rkhunter -c --sk --rwo #自动检测并只显示告警信息
webshell查杀
使用Webshell查杀工具 Windows下D盾等,Linux下河马等
代码语言:javascript复制河马webshell查杀:http://www.shellpub.com
深信服Webshell网站后门检测工具:http://edr.sangfor.com.cn/backdoor_detection.html
参考
https://bypass007.github.io/Emergency-Response-Notes/LogAnalysis/第2篇:Linux日志分析.html
欢迎师傅加个好友位(๑•̀ㅂ•́)و✧