防ssh暴力破解的应急响应

SSH暴力破解的应急响应实战案例
事件的起因:
在管理员的某次巡查时发现,22端口存在异常连接的IP。使用命令查看22端口的连接情况:
netsatat -anpl | grep 22

 

 

跟踪排查思路:
一、排除系统账户情况
1、除了root之外是否还有其它具有特权的的用户(uid为0):
awk -F: ‘$3==0{print $1}’ /etc/passwd

 

 

2、可以远程登录的账户
 

 

 

普通用户是没有权限的


二、确认攻击情况
1、查看密码登录错误次数
grep -o “Failed password” /var/log/secure|uniq -c

 

 

 

 

 

 


2、输出登录爆破的第一行和最后一行,确认爆破时间范围:
grep “Failed password” /var/log/secure|head -1

 

 

 

3、定位爆破IP:进一步定位都有哪些IP在爆破?
grep "Accepted " /var/log/secure | awk ‘{print $1,$2,$3,$9,$11}’

 

 

 

4、确认爆破使用的字典

grep “Failed password” /var/log/secure|perl -e ‘while($_=<>){ /for(.*?) from/; print “$1\n”;}’|uniq -c|sort -nr

 

 

 

5、确认成功登陆的IP
grep "Accepted " /var/log/secure | awk ‘{print $11}’ | sort | uniq -c | sort -nr | more

 

 

 

二、历史操作查询
1、当前登陆的用户:(tty本地登陆 pts远程登录):who

 

 

 

2、查看系统信息:想知道某一时刻用户的行为:w

 

 

 

3、查看登陆多久、多少用户,负载:uptime

 

 

 

4、查看历史操作命令:通过.bash_history查看帐号执行过的系统命令
4.1 root的历史命令:histroy

 

 

 

4.2 打开/home各帐号目录下的.bash_history,查看普通帐号的历史命令
为历史的命令增加登录的IP地址、执行命令时间等信息:
1)保存1万条命令
sed -i ‘s/^HISTSIZE=1000/HISTSIZE=10000/g’ /etc/profile

2)在/etc/profile的文件尾部添加如下行数配置信息:
######Jaky history #########
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”
#########Jaky history ##########

4.3 source /etc/profile让配置生效
生成效果: 1 2018-07-10 19:45:39 192.168.204.1 root source /etc/profile

4.4 历史操作命令的清除:history -c
但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录。

 

三、端口信息的排查

netstat -antlp|more

使用netstat 网络连接命令,分析可疑端口、IP、PID

查看下pid所对应的进程文件路径

运行ls -l /proc/P I D / e x e 或 f i l e / p r o c / PID/exe或file /proc/PID/exe或file/proc/PID/exe($PID 为对应的pid 号)

 

 

 

四、异常进程的排查

ps aux | grep pid

 

 

 

五、开机启动项的排查

系统运行级别示意图:

 

 

 

查看运行级别命令

runlevel

 

 

 

系统默认允许级别

vi /etc/inittab
id=3:initdefault 系统开机后直接进入哪个运行级别

开机启动配置文件

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

 

 

 

启动项文件:
more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/

六、检查定时任务的排查
1、利用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 每分钟写入文件

 

 

 

 

 

2、利用anacron实现异步定时任务调度
使用案例

每天运行 /home/backup.sh脚本:
vi /etc/anacrontab
@daily 10 example.daily /bin/bash /home/backup.sh

当机器在 backup.sh 期望被运行时是关机的

anacron会在机器开机十分钟之后运行它,而不用再等待 7天。

七、目录恶意文件的排查

1、重点关注以下目录中是否存在恶意脚本(以下文件夹都是定时任务文件夹下的文件)
经常查看这几个文件里面是否有异常代码或脚本,比如挖矿脚本。
/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/*

2、检查异常文件

1、查看敏感目录,如/tmp(缓存文件)目录下的文件,同时注意隐藏文件夹,以“…”为名的文件夹具有隐藏属性

2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?

​ 可以使用find命令来查找,如 find /opt -iname “*” -atime 1 -type f 找出 /opt 下一天前访问过的文件

3、针对可疑文件可以使用stat进行创建修改时间。

八、常见的日志说明

 

posted @ 2023-04-12 20:35  往事已成昨天  阅读(159)  评论(0编辑  收藏  举报