赞
踩
查看CPU相关信息
# lscpu
操作系统信息
# uname -a
# cat /proc/version
查看已载入系统的模块信息
# lsmod
//查看系统所有用户信息
1、# cat /etc/passwd
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
无密码用户只允许本机登陆,不允许登陆远程
2、# cat /etc/shadow
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警 告天数:密码过期之后的宽限天数:账号失效时间:保留
3、查看系统可登录用户
# cat /ect/passwd | grep "/bin/bash"
1、查看UID=0的账号,root用户UID=0,若存在其他UID为0账户,需要特别关注
# awk -F: '{if($3==0) print $1}' /etc/passwd
2、查看系统可登录账号
# cat /etc/passwd | grep '/bin/bash'
3、查询可以远程登录的账号信息
# awk '/\$1|\$6/{print $1}' /etc/shadow
4、查看用户错误登录信息
# lastb
5、查看所有用户最后的登录信息
# lastlog
6、查看用户最近登录信息,其中wtmp为登录成功信息、btmp为登录失败信息、utmp为当前登录信息
# last
7、查看当前用户登录系统情况(tty本地登陆、pts远程登录)
# who
8、查看空口令账户
# awk -F: 'length($2)==0 {print $1}' /etc/shadow
9、查看登陆多久、多少用户,负载
# uptime
10、查看系统信息、某一时刻用户的行为
# w
11、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
12、禁用或删除多余及可疑的帐号
# usermod -L user 禁用user帐号,帐号无法登录,/etc/shadow第二栏为!开头
# userdel user 删除user用户
# userdel -r user 将删除user用户,并且将/home目录下的user目录一并删除
攻击者在攻击成功后往往会设置开机自启动,以实现持久化控制。
在Linux系统中,系统启动内核挂载根文件系统,然后启动并运行一个init程序,init进程的任务就是运行开机启动的程序,init是非内核进程中第一个被启动运行的,因此它的PID的值总是1,init读取其配置文件来进行初始化工作。
Linux系统为不同的场合分配不同的开机启动程序,又称为“运行级别”(run level) ,如下表所示:
运行级别 | 说明 |
---|---|
运行级别0 | 系统停机状态,系统默认运行级别不能为0,否则将不能正常启动 |
运行级别1 | 单用户工作状态,root 权限,用于系统维护,禁止远程登录 |
运行级别2 | 多用户状态(没有NFS ) |
运行级别3 | 完全的多用户状态(有NFS),登录后进入控制台命令行模式 |
运行级别4 | 系统未使用,保留 |
运行级别5 | X11控制台,登录后进入GUI模式 |
运行级别6 | 系统正常关闭并重启,默认运行级别不能为6,否则将不能正常启动 |
7个运行级别分别对应7个目录,对应/etc/rc[0-6].d
下的7个文件夹(rc0.d--->rc6.d
),每个目录下有对应的启动文件,具体文件路径都是在/etc/rc.d/init.d/
目录中。
其中,文件名:字母S[K]+两位数字+程序名
”的形式。字母S表示Start,启动;字母K表示Kill,关闭。
旧版本的linux下/etc/rc.d/
目录下还有init.d目录和rc.local文件;新版本linux是在/etc目录下查看。
init.d目录
通常用于存放一些脚本, 包括linux系统中以rpm包安装时设定的一些服务的启动脚本,类似于Windows系统中的注册表;
rc.local文件会在用户登录之前读取,在每次系统启动时都会执行一次,也就是说,如果有任何需要在系统启动时运行的工作,那么只需写入/etc/rc.d/rc.local配置文件即可。
注意:新版linux系统已经没有rc.local文件了,
(点击访问)激活rc.local service方法。
进行应急响应处置时应重点关注以下目录文件(依系统而定) :
1、查看运行级别:
# runlevel
2、配置运行级别
# vi /etc/inittab
# id=5:initdefault 系统开机后直接进入哪个运行级别
3、查看启动项文件:
# more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/
4、查看init.d下的所有文件信息
# ls -alt /etc/init.d
5、查看init.d下的rc.local文件内容
# cat /etc/init.d/rc.local
6、rc.local为开机启动配置文件,查看rc.local文件内容
# cd /etc/rc.local
# cd /etc/rc.d/rc[0~6].d
默认编写的crontab文件会保存在 (/var/spool/cron/用户名)
查看当前任务计划
# crontab -l
查看用户任务计划
# crontab -u username -l(username为用户名)
查看/etc目录下的任务计划(一般Linux下任务计划以cron开头,可利用通配符*进行查看)
# ls /etc/cron*
删除每个用户cront任务(删除所有的计划任务)
# crontab -r
使用编辑器编辑当前用户下的crontab文件
# crontab -e
需重点关注以下目录中是否存在恶意脚本:
/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/*
查看目录下所有文件
# more /etc/cron.daily/*
查看历史命令
# histroy
为历史的命令增加登录的IP地址、执行命令时间等信息:
1、保存1万条命令
# sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
2、在/etc/profile的文件尾部添加如下行数配置信息:
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"
3、source /etc/profile让配置生效
使用netstat 网络连接命令,分析可疑端口、IP、PID
netstat -antlp|more
查看下pid所对应的进程文件路径,
运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号)
使用ps命令,分析进程
ps aux | grep pid
服务自启动
第一种修改方法:
chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig –level 2345 httpd on 开启自启动
chkconfig httpd on (默认level是2345)
第二种修改方法:
修改/etc/re.d/rc.local 文件
加入 /etc/init.d/httpd start
第三种修改方法:
使用ntsysv命令管理自启动,可以管理独立服务和xinetd服务。
入侵排查
1、查询已安装的服务:
RPM包安装的服务
chkconfig --list 查看服务自启动状态,可以看到所有的RPM包安装的服务
ps aux | grep crond 查看当前服务
系统在3与5级别下的启动项
中文环境
chkconfig --list | grep "3:启用\|5:启用"
英文环境
chkconfig --list | grep "3:on\|5:on"
源码包安装的服务
查看服务安装位置 ,一般是在/user/local/
service httpd start
搜索/etc/rc.d/init.d/ 查看是否存在
1、查看敏感目录,如/tmp、/usr/bin、/usr/sbin等目录下的文件,有可能作为恶意软件下载目录及相关文件被替换的目录。注意以..
为名的文件夹具有隐藏属性。
2、~/.ssh
、/etc/ssh
有时候会作为后门的配置路径,对其路径下进行检查。
3、得到发现WEBSHELL、远控木马的创建时间,可以使用find命令
来查找。
查找区块装置文件、目录、字型装置文件、具名贮列、符号连结、普通文件、Socket:
# find -type b/d/c/p/l/f/s
过去n天内被修改过的文件:
# find -ctime n
过去n天内被读取的文件:
# find -atime n
如 find /etc -iname "*" -atime 1 -type f
显示 /etc
下一天前访问过的文件。
也可以通过webshell命名规则和特征进行排查:
/www/var下是否存在.php文件,发现的php文件中是否存在egrep关键字
# find /www/var -name "*.php" | xargs egrep
4、针对可疑文件可以使用stat命令
对文件的创建时间、修改时间、访问时间进行排查
# stat filename
5、对特殊文件进行排查
特殊权限文件查找(/tmp目录下权限维777的文件):
# find /tmp -perm 777 | more
对系统命令进行查找,有时,攻击者可能会替换ls、ps等命令,下命令可查看系统命令更改时间:
# ls -alt /bin
排查文件大小,防止攻击者注入恶意文件或替换系统文件
# ls -alh /bin
6、排查SUID程序
SUID为某一个命令设置特殊权限
# find / -type f -perm -04000 -ls -uid 0 2>/dev/null
7、Linux的后门检测
可以使用第三方查杀工具(如chkrootkit、 rkhunter) 进行查杀。
chkrootkit工具用来监测当前系统是否被安装rootkit。
rootkit:一种后门程序,隐蔽性强。
若出现infected,则说明检测出系统后门;若未出现,则说明未检测出系统后门
# chkrootkit
使用rkhunter可以进行系统命令(Binary) 检测,包括MD5校验、rootkit检测 、本机敏感目录
检测、系统配置检测、服务及套件异常检测、第三方应用版本检测等。
# rkhunter -c
Linux系统下日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
日志文件 | 说明 |
/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授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
/var/spool/mail | 邮件相关日志记录文件 |
1、日志文件中统计独立IP地址个数的命令:
# awk '{print $1}' dpkg.log|sort|uniq|wc -l
# awk '{print $1}'dpkg.log|sort|uniq -c|head -10
2、查找指定时间段日志的命令:
# sed -n '/2022-3-17 11:20:30/,/2022-3-17 11:21:22/p' user.log
# grep '2022-03-17 11:20:30' kern.log
3、
定位有多少IP地址在暴力破解主机root账号的命令:
# cat /var/log/auth.log |awk '/Accepted/{print $(NF- 3)}'Isortluniq -c|awk '{print $2"="$1;}'
# grep "Failed password for root" /var/log/quth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些IP在爆破:
# grep "Failed password" /var/log/auth.log |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/auth.log|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
4、查看登录成功的IP地址的命令:
# cat /var/log/auth.log |awk '/Failed/{print $(NF- -3)}' sort| uniq -c|awk '{print $2"="$1;}'
查看登录成功的日期、用户名、IP地址的命令:
# grep "Accepted " /var/log/auth.log | awk '{print $1,$2,$3,$9,$11}'
对服务器进行内存的提取,分析其中的隐藏进程。
内存的获取方法:
基于用户模式程序的内存获取;
基于内核模式程序的内存获取;
基于系统崩溃转储的内存获取;
基于操作系统注入的内存获取;
基于系统休眠文件的内存获取;
基于虚拟化快照的内存获取;
基于系统冷启动的内存获取;
基于硬件的内存获取。
查看相关的地址连接情况: PCHunter、Process Monitor等工具或netstat等)命令。
查看内部流量:使用Wireshark等网络封包分析软件。
注:日志分析、内存分析、流量分析,后面会给出单独的分析教程,并在此文章附上链接地址。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。