蓝队应急响应之Linux篇

LINUX

分析敏感文件或目录

TMP临时目录

tmp目录是一个放置临时文件的目录,普通用户对其目录内的文件都具有读写的权限,因此tmp目录通常用于提权

蓝队应急响应之Linux篇_第1张图片


开机自启动文件分析

查看自启动文件:ls -alh /etc/init.d/ (-h显示文件大小)
蓝队应急响应之Linux篇_第2张图片
蓝队应急响应之Linux篇_第3张图片
蓝队应急响应之Linux篇_第4张图片


查询敏感文件

以下是常用到的find命令:

查询一些敏感的文件后缀名, 例如php, aspx, jsp等webshell常用后缀

find ./ mtime 0 name "*.php"   //查找24小时内修改过的指定文件 mtime(修改时间) 0表示24小时
find ./ ctime -2 name "*.php"  //查找72小时内生成的指定文件  ctime(创建时间) 
find ./ iname "*.php*" -perm 777   //查找权限为777的指定文件  iname表示不区分大小写 perm表示权限

请添加图片描述

分析可疑进程

分析网络连接

常用命令:

netstat -pantl ,列出TCP相关的服务连接。

netstat -pantl | grep "ESTABLISHED",查看已建立的TCP服务连接。


以下是netstat的使用参数

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

对进程文件分析

以下是常用到的linux命令

  • ps -aux :列出所有的进程

  • ps -aux | grep pid:列出指定pid的进程

  • lsof -i:端口号:列出指定端口的进程

  • kill -9 pid : 关闭指定pid进程

蓝队应急响应之Linux篇_第5张图片

蓝队应急响应之Linux篇_第6张图片


分析异常登录

在linux的操作都会被记录在系统日志中,可以通过查询日志信息判断是否有异常登录

last -i | grep -v 0.0.0.0 : 查询非本地登录的日志信息,-i表示IP

蓝队应急响应之Linux篇_第7张图片


w命令 : 实时查看登录日志

蓝队应急响应之Linux篇_第8张图片

分析异常用户

提权root用户实操

新建用户,随后修改用户uid为0, 以此获取root权限

useradd test

passwd test {输入密码}

vim /etc/passwd    //修改用户uid为0

蓝队应急响应之Linux篇_第9张图片

蓝队应急响应之Linux篇_第10张图片


排查异常用户

grep "0:0" /etc/passwd : 查找root权限用户

蓝队应急响应之Linux篇_第11张图片


ls -l /etc/passwd : 查看用户文件最近修改时间

蓝队应急响应之Linux篇_第12张图片


awk -F: '$3==0 {print $1}' /etc/passwd : 查看root权限用户

请添加图片描述

蓝队应急响应之Linux篇_第13张图片


awk -F: '$2=="!" {print $1}' /etc/shadow : 查看空密码用户

蓝队应急响应之Linux篇_第14张图片


禁用以及删除可疑账号

usermod -L user   //禁用帐号,帐号无法登录

userdel user    //删除

userdel -r user   //将删除user用户,并且将/home目录下的user目录一同删去

分析历史命令

linux系统之前执行的命令会保存在/root/.bash_history文件中,以下是查看history的命令。

cat /root/.bash_history

蓝队应急响应之Linux篇_第15张图片

history

蓝队应急响应之Linux篇_第16张图片


常见的可疑历史命令: wegt(远程下载)、ssh(连接内网)、tar zip(压缩打包)

特别要注意, 有些黑客还会修改你的系统命令,例如把netstat命令给改成别的了,从而导致无法使用此命令


分析计划任务

crontab命令排查计划任务

crontab -l    //列出计划任务

crontab -r	  //删除计划任务

crontab -e    //编辑计划任务

蓝队应急响应之Linux篇_第17张图片

蓝队应急响应之Linux篇_第18张图片


anacron命令实现异步定时任务调度

vi /etc/anacrontab  

@daily   10   example.daily  /bin/bash /home/shell.sh  //每天机器开机十分钟之后运行shell.h。

more命令查询计划任务目录

使用more命令查询以下目录,重点查询/etc/cron.d/*目录

/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/*

分析自启动项

设置开机自启动

ls /etc/init.d/ 查看开机自启动文件

update-rc.d apache2 enable 设置apache2服务开机自启动

通过创建软连接设置自启动,将脚本文件放在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软连接即可。

S100ssh是sshd脚本的软连接,S表示运行级别加载时自启动,K则表示加载时需关闭

ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh   

ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/K100ssh

关闭开机自启动

update-rc.d apache2 disable 取消apache2服务开机自启动


排查启动项文件

more /etc/rc.local 

more /etc/rc.d/rc[0~6].d

ls -l /etc/rc.d/rc3.d/

分析服务自启动项

修改服务自启动

1、使用chkconfig命令(红帽linux)

命令参数:chkconfig [--level 运行级别][独立服务名][on|off]

chkconfig –level  2345 httpd on  //自动启动http服务

chkconfig httpd on  //若没填写level参数,默认值为2345

2、修改/etc/rc.local文件,加入 /etc/init.d/httpd start

蓝队应急响应之Linux篇_第19张图片

3、使用ntsysv命令管理自启动,该命令适用于红帽linux


入侵排查

chkconfig --list   //查看服务自启动状态,可以看到所有的RPM包安装的服务

ps aux | grep crond    //查看当前服务

查看3与5级别下的启动项

chkconfig --list | grep "3:启用|5:启用"  //中文环境下


chkconfig --list | grep "3:on|5:on"  //英文环境下

$PATH变量异常

$PATH就是环境变量,分析是否有异常环境变量

echo $PATH : 输出环境变量目录

蓝队应急响应之Linux篇_第20张图片

export PATH=$PATH:/usr/lol/theshy 添加环境变量,临时有效,重启无效

蓝队应急响应之Linux篇_第21张图片

vim /etc/profile,随后添加export PATH=$PATH:/usr/lol/faker,再source /etc/profile。这个是永久修改$PATH变量的方法

蓝队应急响应之Linux篇_第22张图片

蓝队应急响应之Linux篇_第23张图片


系统日志分析

日志存放位置

日志默认存放位置:/var/log/

查看日志配置:more /etc/rsyslog.conf

日志文件 说明
/var/log/cron 记录定时任务日志
/var/log/cups 记录打印信息日志
/var/log/mailog 记录邮件信息日志
/var/log/message 记录系统重要信息日志,若出问题,首先检查该日志
/var/log/btmp 记录错误信息日志,二进制文件,要用lastb命令查看
/var/log/lastlog 记录所有用户最后一次登录时间日志,二进制文件
/var/log/wtmp 记录所有用户的登录、注销信息,同时记录系统的启动、重启等事件,是个二进制文件
/var/log/utmp 记录当前登录用户信息,会随着用户注销而不断变化,只能通过w,who,users命令查看

日志分析技巧

注意:Centos系统登录日志记录在/var/log/secure,Ubuntu系统登录日志记录在/var/log/auth.log。

1、分析爆破root账户的ip相关信息

查看爆破root用户的IP数量

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 "$1\n";}'|uniq -c|sort -nr

2、分析登录成功的ip

查看所有的登录成功的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}'

3、查看用户操作的日志

grep "useradd" /var/log/secure   //查看“useradd”命令的操作日志

grep "userdel" /var/log/secure   //查看“userdel”命令的操作日志

rkhunter工具使用

rkhunter工具会自动为我们排查linux系统的加固安全隐患

安装工具:apt-get install rkhunter

常用命令:rkhunter --check --sk //–sk表示自动补全

蓝队应急响应之Linux篇_第24张图片
蓝队应急响应之Linux篇_第25张图片


安全加固

阻止非root用户登录

touch /etc/nologin

给密码文件设置权限

chmod命令的使用可以看我linux专栏的文章,这里不过多解释

chmod 644 /etc/passwd

chmod 600 /etc/shadow

chmod 644 /etc/group

修改文件默认权限

umask=027

给日志或其他重要文件加固

chattr +a /var/log/messages    //设置此文件只能追加数据

chattr +i /var/log/messages.*  //设置文件不能被修改且删除

chattr +i /etc/shadow          

chattr +i /etc/passwd 

chattr +i /etc/group 

屏蔽banner信息

vi /etc/ssh/sshd_config   将banner设置成NONE

蓝队应急响应之Linux篇_第26张图片


增强秘钥

authconfig --passalgo=sha512 --update  //启用 SHA512 替代 MD5加密

限制登录次数

auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=120  
//登录三次后锁定账户,普通用户5秒后解锁,root用户120秒后解锁

设置历史命令最大保存条数

vim /etc/profile,修改HISTSIZE为20(默认是1000)

蓝队应急响应之Linux篇_第27张图片

你可能感兴趣的:(渗透蓝队,linux,系统安全,护网)