应急响应
windows入侵排查
常见的应急响应事件分类:
- web入侵:网页挂马,主页篡改,webshell
- 系统入侵:病毒木马,勒索软件,远控后门
- 网络攻击:ddos攻击,dns劫持,arp欺骗
入侵排查思路
一、检查系统账号安全
- 检查服务器是否有弱口令,远程管理端口是否对公网开放。
(询问相关服务器管理员)
- 检查服务器是否有可以账号,新增账号。
(cmd窗口输入lusrmgr.msc,查看是否有新增或可疑账号,如果管理员组administrator有新增账号请立刻删除或禁用)
- 查看服务器是否存在隐藏账号,克隆账号。
(打开注册列表,查看管理员对应键值;使用D盾web查杀工具)
- 查看日志管理员登录时间,用户名是否正常。
(win+r输入eventvwr.msc运行,打开事件查看器,导出windows日志-安全,利用Log Parser进行分析。)
二、检查异常端口、进程
- 检查端口连接情况,是否有远程连接,可疑连接。
(netstat -ano查看目前的网络连接,定位可疑的established;根据netstat定位出的pid,通过tasklist命令定位进程 tasklist | findstr "PID")
- 进程
(win+r输入msinfo32,依次点击“软件环境-正在运行任务”就可以一次看到进程的详细信息:进程路径,进程id,文件创建日期,启动时间等;打开D盾查杀工具-进程查看,关注没有签名信息的进程;通过process exploere等工具进行排查。还可以通过观察没有签名信息的进程,没有描述信息的进程,进程属主,进程的路径是否合法,CPU或内存资源占用长时间过高的进程)
- 小技巧
-
- 查看端口对应的PID:netstat -ano | findstr "port"
- 查看进程对应的PID:任务管理器-查看-选择列-PID或者tasklist | findstr "PID"
- 查看进程对应的程序位置:任务管理器-选择对应进程-右键打开文件位置,win+r输入wmic,cmd界面输入process
- tasklist /svc 进程-PID-服务(可能需要管理员权限)
- 查看windows服务对应的端口:%system%/system32/drivers/etc/services(一般%system%就是C://windows)
三、检查启动项、计划任务、服务
- 检查服务器是否有异常的启动项
-
- 点击“开始-所有程序-启动”,默认情况该目录是一个空目录,确认是否有非业务程序在该目录下。
- win+R输入msconfig,查看是否存在命名异常的启动项目,如果存在异常可以取消勾选,并且删除路径下的文件。
- 利用杀毒软件查看启动项,开机时间管理。
- win+R输入gpedit.msc查看“组策略编辑器-本地计算机策略-计算机配置-windows设置-脚本(启动/关机)”,查看是否有脚本。
- win+R输入regedit,打开注册列表:
HKEY_CURRENT_USER\Software\Microsoft\Windows\Currentversion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
- 检查计划任务
-
- 点击“开始-设置-控制面板-任务计划”,查看计划属性,便可以发现木马文件的路径。
- win+R打开cmd,输入at,检查计算机与网络上的其他计算机之间的会话或者计划任务,若有,则确认是否为正常连接。
- 服务自启动
-
- win+R打开cmd输入service.msc,注意服务状态和启动类型,检查是否有异常服务。
四、检查系统相关信息
- 查看系统版本以及补丁信息
-
- win+R打开cmd输入systeminfo,查看系统信息。
- 查找可疑目录及文件
-
- 查看用户目录,新建账号会在这个目录生成一个用户目录,查看是否有新建用户目录。
windows 2003 c:\documents and setting
windows 2008r2 c:\users\
-
- win+R输入%UserProfile%\Recent,分析最近可疑文件。
- 在服务器各个目录,根据时间进行排序,查找可疑文件。
五、自动化查杀
- 病毒查杀
下载安全软件,更新最新病毒库,进行全盘扫描。
- webshell查杀
选择站点路径进行webshell查杀,建议使用两款webshell查杀工具同时查杀,可以互相补充规则库的不足。
六、日志分析
- 系统日志
-
- 开启审核策略,若日后系统出现故障,安全事故则可以查看系统日志文件,排除故障,追查入侵者的信息等。
- win+R运行eventvwr.msc,打开“事件查看器”
- 导出应用程序日志,安全日志,系统日志,利用Log Parser进行分析。
- WEB访问日志
-
- 找到中间件web日志,打包到本地方便进行分析。
- Windows下推荐使用EmEditor进行日志分析,支持大文本;Linux下,使用Shell命令组合查询分析。
工具推荐
病毒分析
病毒查杀
卡巴斯基,大蜘蛛,火绒安全软件,360杀毒
病毒动态
在线病毒扫描网站
webshell查杀
Linux入侵排查
一、账号安全
- 用户信息文件/etc/passwd
root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
注意:无密码只允许本机登陆,远程不允许登陆
- 影子文件/etc/shadow
root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV 9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
who 查看当前登录用户(tty本地登陆 pts远程登录)
w 查看系统信息,想知道某一时刻用户的行为
uptime 查看登陆多久、多少用户,负载
入侵排查
- 查询特权用户(uid为0)
awk -F: '$3==0{print $1}' /etc/passwd
- 查询可以远程登录的账号信息
awk '/\$1|\$6/{print $1}' /etc/shadow
- 除root账号外,其他账号是否存在sudo权限。如非管理需要,普通账号应删除sudo权限。
more /etc/sudoers | grep -V "^#\|^$" | grep "ALL=(ALL)"
- 禁用或删除多余及可疑的账号
usermod -L user #禁用账号,账号无法登录,/etc/shadow第二栏为!开头
userdel user #删除user用户
userdel -r user #删除user用户,并且将/home目录下的user目录一并删除
二、历史命令
- root的历史命令
history
- 打开/home各账户目录下的.bash_history,查看普通账号的历史命令
为历史命令增加登录的ip地址、执行时间等信息:
-
- 保存一万条命令
sed -i 's/^HISTSIZE=100/HISTSIZE=10000/g' /etcprofile
-
- 在/etc/profile的尾部文件添加如下配置:
########history xianshi#########
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"
##########history xianshi########
-
- 使配置生效
source /etc/profile
- 历史操作命令的清除
history -c
注:此命令并不会清楚保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录。
入侵排查
进入用户目录下
cat .bash_history>>history.txt
三、端口
使用netstat查看
netstat -antlp | more
ls -l /proc/$PID/exe或file /proc/$PID/exe ($PID是对应的pid号)
四、进程
ps aux | grep pid
五、开机启动项
运行级别 |
含义 |
0 |
关机 |
1 |
单用户模式,可以想象为windows的安全模式,用户系统修复 |
2 |
不完全命令的模式,不含NFS服务 |
3 |
完全的命令格式,是标准字符界面 |
4 |
系统保留 |
5 |
图形模式 |
6 |
重启动 |
- 查看运行级别
runlevel
- 系统默认允许级别
vim /etc/inittab
id=3:initdefault #系统开机后直接进入哪个运行级别
- 开机启动配置文件
/etc/rc.local
/etc/rc.d/rc[0~6].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/
六、定时任务
- 利用crontab创建计划任务
crontab -l #列出某个用户cron服务的详细内容
注默认编写的crontab文件会保存在/car/spool/cron/用户名 例如:/var/spool/cron/root
crontab -r #删除每个用户的cront任务
crontab -e #使用编辑器编辑当前的crontab文件
注:分钟小时日月星期。
- 利用anacron实现异步定时任务调度
vim /etc/anacrontab
@daily 10 example.daily /bin/bash /home/back.sh #开机后十分钟运行该脚本
入侵排查
重点关注以下目录
/etc/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
七、服务
服务自启动
方法一
chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig -level 2345 httpd on
方法二
etc/re.d/rc.local文件
/etc/init.d/httpd start
方法三
使用ntsysv命令管理自启动
入侵排查
- 查询已安装的服务:
chkconfig --list #查看服务自启动状态,可以看到所有RPM包安装的服务
ps aux | grep crond #查看当前服务
搜索/etc/rc.d/init.d #查看是否存在
八、系统日志
日志默认存储位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
日志文件 |
说明 |
/var/log/cron |
记录系统定时任务相关的日志 |
/var/log/cups |
记录打印信息的日志 |
/var/log/dmesg |
记录了系统在开机时自检的信息,也可以用demesg命令直接查看内核自检信息记录邮件信息 |
/var/log/mailog |
记录邮件信息 |
/var/log/message |
记录重要信息的日志,这个日志文件中惠济路linu绝大多数的重要信息,如果系统出现文件就应该首先检查这个日志 |
/var/log/btmp |
记录错误登录日志,该文件为二进制文件,不能直接查看vi,需要使用lastb命令查看 |
/var/log/lastlog |
记录系统中所有用户最后一次登录时间,二进制文件,使用lastlog命令查看 |
/var/log/wtmp |
永久记录所有用户的登录,注销信息,同时记录系统的启动,重启,关机事件。使用last命令查看 |
/var/log/utmp |
记录当前用户信息,随着用户登录注销不断变化,需要使用w,who,users等命令来查询 |
/var/log/secure |
记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在日志文件中 |
日志分析技巧
-
- 定位有多少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 "$1\n";}'|uniq -c|sort -nr
- 登录成功的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}'
工具推荐
一、rookit查杀
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxvf chkrootkit.tar.gz
cd chkrootkit-0.52
make sense #编译完成没有报错的话执行检查
./chkrootkit
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
./installer.sh --install
rkhunter -c
二、病毒查杀
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
#
安装一下
gcc
编译环境:
yum install gcc
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
目录并且显示有问题的文件的扫描结果
或者
#
安装
yum install -y clamav
#
更新病毒库
freshclam
#
扫描方法
clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log
clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log
clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log
#
扫描并杀毒
clamscan -r --remove /usr/bin/bsd-port
clamscan -r --remove /usr/bin/
clamscan -r --remove /usr/local/zabbix/sbin
#
查看日志发现
cat /root/usrclamav.log |grep FOUND
三、webshell查杀
linux版
四、RPM check检查
./rpm -Va > rpm.log
参数 |
含义 |
S |
文件大小是否改变 |
M |
文件的类型或文件的权限(rwx)是否被改变 |
5 |
文件的MD5校验是否改变(可以看成文件内容是否改变) |
D |
设备中,从代码是否改变 |
L |
文件路径是否改变 |
U |
文件的属主(所有者)是否改变 |
G |
文件的数组是否改变 |
T |
文件的修改时间是否改变 |
还原方法
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/目录 修复文件丢失
windows实战
FTP暴力破解
应急思路
因为爆破会在安全日志里产生大量的登录审核。根据具体的事件ID定位到具体的事件。同时也可以通过wireshark抓包获取对方ip。
应急措施
- 关闭外网FTP端口映射
- 删除本地服务器FTP测试
常规措施
- 进制FTP传输文件,若开放必须限定管理ip地址并加强口令安全审计
- 更改服务器FTP默认端口
- 部署入侵检测设备,增强安全防护
蠕虫病毒
应急思路
svhost.exe出现大量从本地向外网发起大量的主动连接。
预防措施
- 安装杀软,定期全盘扫描
- 对来历不明的软件,不随意接入未经查杀的U盘
- 定期对windows系统楼哦东进行修复,不给病毒可乘之机
- 做好重要文件的备份
勒索病毒
应急思路
所有文件被以固定形式加密,可以将样本上传到病毒样本网站,如果没有办法解密,只能认栽
预防措施
- 安装杀软,监控,扫描全盘
- 及时更新windows安全补丁,开启防火墙时关闭端口,如445,135,137,138,3389等端口
- 及时更新web漏洞补丁,升级web组件
- 备份重要的资料
- 强化网络安全意识,陌生的链接不惦记,陌生文件不下载,陌生邮件不打开
ARP病毒
应急思路
服务器一直在向外法宝,目的地址改变,MAC地址不变,端口为137。137位netbios端口。
预防措施
- 关闭无用端口135/137/138/139/445
- 及时更新系统补丁
挖矿病毒
应急思路
cpu占用很高,打开任务管理器会看到很多异常进程参数
wmic process get caption,commandine /value >> tmp.txt #分析进程参数
wmic process where caption="svhost.exe" get caption,commandline /value #查看某一进程的具体参数
临时方案
- 根据实际环境路径,删除WebLogic程序下列war包及目录
rm -f /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.war
rm -f
/home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.interna
l/wls-wsat.war
rm -rf
/home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_in
ternal/wls-wsat
- 重启WebLogic或系统后,确认以下链接访问是否为404
http://x.x.x.x:7001/wls-wsat
防范措施
- 安装杀毒软件并升级病毒库,定期全盘扫描,保持实时防护。
- 及时更新windows安全补丁,开启防火墙临时关闭端口。
- 及时更新web漏洞补丁,升级web组件。
Linux实战
捕捉短连接
短连接是相对于长连接,用时建连接,不用断开。由于短连接很难发现。所以需要通过脚本方式观察。
#!/bin/bash
ip=118.184.15.40
i=1
while :
do
tmp=netstat -anplt|grep $ip|awk -F '[/]' '{print $1}'|awk '{print $7}'
#echo $tmp
if test -z "$tmp"
then
((i=i+1))
else
for pid in $tmp;
do
echo "PID: "${pid}
result=ls -lh /proc/$pid|grep exe
echo "Process: "${result}
kill -9 $pid
done
break
fi
done
echo "Total number of times: "${i}
挖矿病毒
排查思路
netstat -anplt | grep “可疑pid”
ps -aux | grep “可疑进程”
盖茨木马
排查思路
在top时查看异常的cpu使用。盖茨木马会篡改系统命令,伪装成系统命令。
排除过程
- 判断有无下列文件
cat /etc/rc.d/init.d/selinux
cat /etc/rc.d/init.d/DbSecutirySpt
ls /usr/bin/bsd-port
ls /usr/bin/dpkgd
- 判断大小是否正常
ls -lh /bin/netstat
ls -lh /bin/ps
ls -lh /usr/sbin/lsof
ls -lh /usr/sbin/ss
- 上传命令到/root下
ps netstat ss lsof
- 删除如下目录文件
rm -rf /usr/bin/dpkgd (ps netstat lsof ss)
rm -rf /usr/bin/bsd-port #木马程序
rm -f /usr/bin/.sshd #木马后门
rm -f /tmp/gates.lod
rm -f /tmp/moni.lod
rm -f /etc/rc.d/init.d/DbSecuritySpt #启动上述的木马变种程序
rm -f /etc/rc.d/rc1.d/S97DbSecuritySpt
rm -f /etc/rc.d/rc2.d/S97DbSecuritySpt
rm -f /etc/rc.d/rc3.d/S97DbSecuritySpt
rm -f /etc/rc.d/rc4.d/S97DbSecuritySpt
rm -f /etc/rc.d/rc5.d/S97DbSecuritySpt
rm -f /etc/rc.d/init.d/selinux(
默认是启动
/usr/bin/bsd-port/getty)
rm -f /etc/rc.d/rc1.d/S99selinux
rm -f /etc/rc.d/rc2.d/S99selinux
rm -f /etc/rc.d/rc3.d/S99selinux
rm -f /etc/rc.d/rc4.d/S99selinux
rm -f /etc/rc.d/rc5.d/S99selinux
- 找出异常程序并杀死
- 删除含木马命令并重新安装
挂载命令rpm包:
mkdir /mnt/chrom/ 建立挂载点
mount -t iso9660 /dev/cdrom /mnt/cdrom/ 挂在光盘
mount/dev/sr0 /mnt/cdrom/
卸载命令
umount 设备文件名或挂载点
umount /mnt/cdrom/
可以通过挂载rpm包,覆盖原有软件进行病毒清除。
DDOS
略
Web实战
网站被置入shell
常见途径
前后台任意文件上传,远程命令执行,sql注入写入文件。
可通过记事本打开查看根目录下异常文件。
批量挂黑页
解决方法
尝试打开显示隐藏文件,对相关链接进行删除。
网页劫持
解决方法
- 通过抓包查看,是由加载奇怪进程。
- 查看Nginx的virtualhost.conf文件,是否通过反向代理被劫持
- 查看代码中被加密的incluede内容