当企业发生黑客入侵,系统崩溃或者影响其他业务逻辑的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查询入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或者减少损失。
针对常见的攻击事件,结合工作中应急响应事件分析和解决的方法,整理了一些思路。
基本使用:
root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:密码:用户ID:组ID:用户说明:家目录:登录之后shell
roor:6oGs1PqhL2p3ZetrE
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期的警告天数:密码过期之后的宽限天数:账号失效时间:保留
root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组ID:用户说明:家目录:登录之后shell 注意:无密码只允许本机登录,远程不允许登录
2.影子文件/etc/shadow
root:6oGs1PqhL2p3ZetrE
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期的警告天数:密码过期之后的宽限天数:账号失效时间:保留
who:查看当前登录用户(tty本地登录 pts远程登录)
w :查看系统信息。想知道某一时刻用户的行为
uptime:查看登录多久,多少用户,负载
入侵排查
[root@localhost ~]# awk -F: '$s==0{print $1}' /etc/passwd
[root@localhost ~]# ak '/\$1|\$6/{print $1}' /etc/shadow
3.除了root账号之外,其他账号是否存在sudo权限,如非管理需要,普通账号应删除sudo权限
more /etc/sudores | grep -v "^#\|^$" | grep "ALL=(ALL)"
usermod -L user 禁用账号,账号无法登录,/etc/shadow第二栏为!开头
userdel user 删除user用户
userdel -r user 将删除user账户,并且将/home目录下的user目录一并删除
1.查询特权用户为uid为0
[root@localhost ~]#awk -F: 'You can't use 'macro parameter character #' in math modeYou can't use 'macro parameter character #' in math mode1|You can't use 'macro parameter character #' in math modeYou can't use 'macro parameter character #' in math mode" | grep "ALL=ALL"
4.禁用或删除多余及可疑账号
usermod -L user 禁用账号,账号无法登录,/etc/shadow第二栏为!开头
userdel user 删除user用户
userdel -r user 将删除user账户,并且将/home目录下的user目录一并删除
(1)root历史命令
history
通过.bash_history查看账号执行过得权限 (2)打开/home各账号目录下的.bash_history,查看普通账号的历史命令 为历史命令增加登录的IP地址,执行命令时间等信息。
sed -i 's/^HISTSIZE=1000/HISTSZE=10000/g' /etc/profile
(3)在/etc/profile的文件尾部添加如下行数配置信息:
jiagu history xianshi
USER_IP=who -u am i 2>/dev/null | awk '{print
jiagu history xiashi
(4)source /etc/profile 让配置生效
生成效果: 1 2021-3-16 19:45:39 193.xxx.xxx.xxx root source /etc/profile
但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录
cat .bash_history >> history.txt
使用netstat网络命令连接命令,分析可疑端口,IP,PID
查看下pid所对应的进程文件路径:运行:ls -l /proc/PID/exe或 :file /proc/PID/exePID:对应的pid号
使用ps命令,分析进程
pa aux | grep pid
基本使用: 这里顺便提一嘴Windows Windows系统运行级别示意图:
查看运行级别的命令:runlevel
系统默认允许级别
id=3: initdefault 系统默认开机后直接进入哪个运行级别
开机启动的配置文件
/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
基本使用
1.利用crontbab创建计划任务
crontab -l 列出某个用户cron服务的详细内容 Tips: 默认编写的crontab文件回报存在:/var/spool/cron/用户名(例如:root) crontab -r 删除某个用户cront任务 谨慎:删除某个用户的所有计划任务 crontab -w 使用编辑器编辑当前的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会在开机十分钟后运行它,而不用再等待。
重点关注以下目录中是否存在恶意脚本
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monnthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
小技巧:
more /etc/cron.daily/* 查看目录下面的所有文件
服务自启动
第一种修改方式:
chkconfig [--level 运行级别] [独立服务台] [on|off]
chkconfig -level 2345 httpd on 开机自启动
chkconfig httpd on (默认level2345)
第二种修改方式:
修改/etc/re.d/rc.local 文件
加入/etc/init.d/httpd start
第三种修改方式:
使用ntsysv命令管理自启动,可以管理独立服务和xinetd服务。
入侵排查
1.查询已安装的服务
RPM包安装服务
chkconfig --list 查看服务自启动状态,可以看到所有RPM包安装的服务 ps aux | grep crond 查看当前服务 chkconfig -- list | 查看当前服务器自启动状态,可以看到所有的RPM安装服务
系统在3与5级别下的启动项:
chkconfig -- list | grep "3:启用|5:启用" chkconfig -- list | grep "3:on|5:on"
源码包安装服务:
查看服务安装位置,一般是在/usr/local/ 搜索/etc/rc.d/init.d/ 查看是否存在 service httpd start
日志默认存放位置:/var/log/ 查看默认日志配置情况: more /etc/rsyslog.conf
日志分析技巧:
1.定位有多少IP在爆破主机:
grep "Failed password for root" /var/log/secure | awk '{print $11}'
| sort | uniq -c | sort -nr more
2.定位有哪些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
3.爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>)
{ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
4.登录成功的IP有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort |
uniq -c | sort -nr | more
5.登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
6.增加一个用户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
7.删除用户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
8.su切换用户:
Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened
for user good by root(uid=0)
9.sudo授权执行:
sudo -l
Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now
#grep "useradd" /var/log/secure
Rookit查杀
(1)chkrootkit:http://www.chkrootkit.org
wget ftp://ftp.pangeia.com.vr/pub/seg/pac.chkrootkit.tar.gz
tar zxvf chrookit.tar.gz
cd chkrootkit-0.版本
make sense
./chkrootkit
(2)rkhunter:http:.rkhunter.sourceforge.net
wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz
tar -zxvf rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4
./installer.sh --install
rkhunter -c
病毒查杀
(1)Clamav:http://www.clamav.net/download.html
wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz tar -zxvf zlib-1.2.7.tar.gz
CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/
useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
tar –zxvf clamav-0.97.6.tar.gz
./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib
touch /opt/clamav/logs/freshclam.log
touch /opt/clamav/logs/clamd.log
chown clamav:clamav clamd.log
chown clamav:clamav freshclam.log
/opt/clamav/bin/freshclam 升级病毒库
./clamscan -r /home 扫描所有用户的主目录就使用
./clamscan -r --bell -i /bin 扫描bin目录并且显示有问题的文件的扫描结果
1.安装zlib:
wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz
tar -zxvf zlib-1.2.7.tar.gz
cd zlib-1.2.7
CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/
make && make install
2.添加用户组clamav和组成员clamav:
groupadd clamav
useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
3.安装Clamav
tar –zxvf clamav-0.97.6.tar.gz
cd clamav-0.97.6
./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib
make
make install
4.配置Clamav
mkdir /opt/clamav/logs
mkdir /opt/clamav/updata
touch /opt/clamav/logs/freshclam.log
touch /opt/clamav/logs/clamd.log
cd /opt/clamav/logs
chown clamav:clamav clamd.log
chown clamav:clamav freshclam.log
5.ClamAV 使用:
/opt/clamav/bin/freshclam 升级病毒库
./clamscan –h 查看相应的帮助信息
./clamscan -r /home 扫描所有用户的主目录就使用
./clamscan -r --bell -i /bin 扫描bin目录并且显示有问题的文件的扫描结果
linux版本:
河马webshell查杀:http://www.shellpub.com
深信服Webshell网站后门检测工具:http://edr.sangfor.com.cn/backdoor_detection.html
河马webshell查杀:http://www.shellpub.com 深信服Webshell网站后门检测工具:http://edr.sangfor.com.cn/backdoor_detection.html
系统完整性可以通过rpm自带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了:
./rpm -Va > rpm.log
如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。
如果命令被替换了,如果还原回来:
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/目录 修复文件丢失
文件提取还原案例: 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/目录 修复文件丢失