应急响应总结与心得分享
作者:巧克力威化饼 编辑:白帽子社区运营团队
"白帽子社区在线CTF靶场BMZCTF,欢迎各位在这里练习、学习,BMZCTF全身心为网络安全赛手提供优质学习环境,链接(http://www.bmzclub.cn/)
"
点击链接参与白帽子社区赠书活动(5月29日上午12:00结束):https://mp.weixin.qq.com/s/D5vc4Mxn3NBF-_Uq56YlyA


那么问题又来了,应急前我们应该干嘛呢?应急时我们应该干嘛呢?应急后我们应该干嘛呢?
首先,我们应该有一个好的整体思路。

信息收集:收集到发生安全事件的资产设备,整理时间线,是否存在恶意文件样本,是什么操作系统等。
判断事件类型:判断是否为安全事件,是web入侵,还是系统入侵,还是网络攻击。
深入排查:通过分析日志、启动项、系统用户、进程、恶意文件等找寻入侵来源。
清除处置:杀掉恶意进程、文件,配合运维人员打好补丁
输出文档:分析整体流程,产出报告。


https://github.com/mrknow001/Mind_Map/blob/main/%E5%BA%94%E6%80%A5%E5%93%8D%E5%BA%94/%E5%BA%94%E6%80%A5%E5%93%8D%E5%BA%94%E6%80%BB%E7%BB%93%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE.png
在了解事件的基础情况后,使用一些好的排查工具能让我们快速定位到突破口,节省大量的时间。正所谓工欲善其事,必先利其器,下述推荐一些常用的排查工具。
网络分析排查工具
当我们需要查看传输的数据包时,可能会经常用到下述这些网络排查工具
Wireshark
一款常用的网络分析排查工具,可用来分析网络攻击等事件。如下图,wireshark看出来主机正在遭受arp攻击。


Tcpview
微软内置工具集,网络连接查看工具,体积小,效果比较直观。
Tcpdump
如果系统是linux的话,推荐使用tcpdump,比较轻量,也更方便。
常用命令:
https://www.jianshu.com/p/d9162722f189
进程分析排查工具
有时候有些进程无法直接通过简单的命令查询到,这个时候我们可以借助下述工具对恶意进程进行分析和排查。
PChunter

ProcessHacker

启动项分析工具
一般是为了方便定位病毒启动项,常用的工具为AutoRuns(win上使用)。
AutoRuns

其它类型的工具
像有些特定的病毒,需要专杀工具去查杀和修复正常文件;再或者我们能Everything工具搜索关键字等;再或者用D盾或者河马查杀后门等。

综合查询工具
按照常规查询方向一个一个排查可能需要大量的时间,这个时候有个自动化脚本就显得尤为重要了,这里推荐两个好的的综合查询工具。
GScan
这款工具Checklist比较全面,检测速度相对来说也比较快。


dfirtriage
一款用于基于Windows的事件响应的数字取证工具,该工具将在执行时自动运行各种命令。所获取的数据将驻留在执行目录的根目录中。DFIRTriage可以从USB驱动器运行,也可以在目标上的远程外壳中执行。仅支持Windows。

工具集分享
网上有一些大佬将资源整合了,这里附上下载链接地址,请确保安全情况下使用。
tips:请确保安全情况下使用
https://github.com/theLSA/hack-er-toolshttps://www.52pojie.cn/thread-1315923-1-1.html

在某些情况下,我们需要手动分析和排查,这个时候就需要掌握一些应急的命令和技巧,下述分别以linux和windows来阐述。
Windows
排查系统账号
查看服务器是否新增用户,是否存在弱口令,是否开了redis、远程桌面、ssh是否开启等。
测试方法:
可以通过咨询客户,或者通过命令行查询,再或者通过简单的扫描得到
查看服务器是否存在可疑账号、隐藏账户、新增账号
Win+R -> lusrmgr.msc或通过注册表查看(记得赋予对SAM键的权限)
Win+R -> regedit.exeHKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
如下图可以看出目标服务器被添加了隐藏账户test$


日志分析与排查
系统日志分析
Win+R>eventvwr.msc
导出Windows的安全日志,利用LogParser进行分析,或者通过手动分析。
Windows常见的日志事件ID附:Vista/Win7/Win8/Win10/Server2008/Server2012及之后的版本说明1102 清理审计日志4624 账号成功登录4625 账号登录失败4768 Kerberos身份验证(TGT请求)4769 Kerberos服务票证请求4776 NTLM身份验证4672 授予特殊权限4720 创建用户4726 删除用户4728 将成员添加到启用安全的全局组中4729 将成员从安全的全局组中移除4732 将成员添加到启用安全的本地组中4733 将成员从启用安全的本地组中移除4756 将成员添加到启用安全的通用组中4757 将成员从启用安全的通用组中移除4719 系统审计策略修改
LogParser常用命令https://www.jianshu.com/p/0f3ec2fb57a4
例:查看事件258的记录

Web日志分析
先找到中间件的web日志,打包到本地进行分析
检查异常进程、端口
攻击者如果入侵主机后一般会上传恶意文件,这个时候一般会有外联情况,所以我们需要查看主机是否存在异常进程、端口
netstat -anotasklist | find"PID"

如果找寻到恶意进程,可以使用以下命令获取系统进程详细信息
简单使用:
cmd >wmic process复杂一点:
:1.txtcaption:进程名commandline:进程名、进程执行参数、程序执行路径creationDate:进程启动时间(格式为:年月日时分秒)executablepath:程序执行路径handle:进程pidhandleCount:该进程的父pid

像有些比较难找出的恶意进程,可以尝试用上述工具集里的工具进行针对性的排查。
检查系统相关信息
通过检查系统版本和判断补丁信息,再回忆近期是否有什么重大型漏洞,或者是去提权辅助界面看看是否存在可利用的信息。
cmd > systeminfo
查看用户目录及文件,如果攻击者新建账号的话会生成一个用户目录,同时可以根据文件的事件排序,看看是否有可疑的文件夹
Win+R >cmd >%UserProfile%\Recent检查计划任务、启动项、服务、环境变量
检查主机是否存在计划任务
Cmd > schtasks或at检查主机是否存在异常启动项
Win+R >regedit打开注册表,查看开机启动项是否正常,特别注意以下三个注册表项
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\runHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
检查主机是否存在异常服务
Win+R >services.msc检查主机环境变量是否存在异常
使用set命令将环境变量导出检查

恶意文件及病毒查杀
恶意病毒查杀:建议下载安全软件,对系统进行全盘扫描并查杀。
恶意文件查杀:像如果是webshell这种,可以使用D盾,河马等查杀工具进行查杀。
防火墙及杀毒软件排查
检查操作系统防火墙是否存在异常
windows操作防火墙配置着允许/拒绝通行的入站/出站规则,可根据防火墙配置判断该主机在同网段内的可攻击面积。
netsh firewall show state //查看防火墙此时状态netsh advfirewall firewall show rulename=all dir=in //入站规则netsh advfirewall firewallshow rule name=all dir=out //出站规则

检查杀软是否检测出异常
如果目标主机安装了杀软,攻击者在入侵主机时杀软难免会记录到部分痕迹,这个时候我们可以对杀软日志记录进行分析。
Linux
如果是linux系统应急的话,可能需要掌握一些常见的排查命令
Uptime:查看当前系统时间,存在用户,负载等信息Stat:会显示文件UID,文件名,文件属性,文件访问时间等Lsof:列出来当前系统打开文件Find:目录文件列出来,也可以查找文件md5sum:该命令用于生成和校验文件的md5值Ps:列举常用进程Netstat:查看网络连接及开放端口号Top:经常用来监控linux的系统状况
更多命令参数请查看下述链接:
https://www.hackjie.com/1402.html在了解这些命令之后,才只是我们正式排查的开始,接下来我们可以按照下述方式进行排查。
排查系统账号
通过以下命令查看系统用户
/etc/passwd //该文件用于用户登录时校验 用户的口令/etc/shadow //存放相应的用户密码,又称为影子文件/etc/group //记录组ID和组名的对应文件
查询特权用户:cat /etc/passwd | awk-F":" '$3==0{print $1}'查询可以远程登录的账号:cat /etc/shadow |awk'/\$1|\$6/{print $1}'查询具有sudo权限账号:more /etc/sudoers | grep -v "^#\|^$" | grep"ALL=(ALL)"
查看历史记录
一般是如下两个命令
history //记录执行过的命令.bash_history //记录执行过的命令
二者区别
history显示内存和~/.bash_history中的所有内容;内存中的内容并没有立刻写入~/.bash_history,只有当当前shell关闭时才会将内存内容写入shell。
检查异常进程、端口
netstat -antlp //查看端口命令,a是查看所有ps -aux //查看进程命令
检查开机启动项、定时任务、服务、异常文件
查看启动项常用方式
more /etc/rc.local/etc/rc.d/rc[0-6].dls -l /etc/rc.d/rc3.d
查看服务常用方式
chkconfig -list //列出chkconfig所知道的所有的服务的情况
查看定时任务
/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/*/etc/cron.daily/*
查看异常文件
可以查看临时目录下的文件,也可以查看. .. 等前缀 或关键字的异常文件
查看系统环境变量
Linux的系统级环境变量位于/etc/目录中,用户级环境变量位于~/目录中。
常看到的两个目录:
/etc/profile/home/用户/.bash.profile
env:该命令显示所有的环境变量set:该命令显示所有本地定义的Shell变量
tips:alias也可以实现隐藏指定程序的内容回显,应值得注意日志分析与排查
Linux下的日志记录一般都在/var/log文件下,以下收集了一些常用的筛选方式
原文链接:https://mp.weixin.qq.com/s/bYVebbDIL18odT0ShA6s7Q1、定位有多少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
2、登录成功的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、增加一个用户kali日志:
Jul 10 00:12:15 localhost useradd[2382]:new group: name=kali, GID=1001Jul 10 00:12:15 localhost useradd[2382]:new user: name=kali, UID=1001, GID=1001, home=/home/kali, shell=/bin/bashJul 10 00:12:58 localhost passwd:pam_unix(passwd:chauthtok): password changed for kali#grep "useradd" /var/log/secure
4、删除用户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
5、su切换用户:
Jul 10 00:38:13 localhost su:pam_unix(su-l:session): session opened for user good by root(uid=0)sudo授权执行:sudo -lJul 10 00:43:09localhost sudo: good : TTY=pts/4 ;PWD=/home/good ; USER=root
防火墙及杀毒软件排查
检查操作系统防火墙是否存在异常
linux操作防火墙配置着允许/拒绝通行的入站/出站规则,可根据防火墙配置判断该主机在同网段内的可攻击面积。
不同的linux版本可能命令会不一样,这里以centos为例
Centos 6.x版本iptables:
service iptables status //查看防火墙状态service iptables start //开启防火墙
Centos 7版本 firewall:
开放特定端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent查看防火墙状态:
firewall-cmd --state重启防火墙:
systemctl restart firewalld查看端口列表:
firewall-cmd --zone=public --list-ports
二者的配置一般在/etc/sysconfig/iptables 或 /etc/firewalld/zones/pulic.xml下
检查杀软是否检测出异常
如果目标主机安装了杀软,攻击者在入侵主机时杀软难免会记录到部分痕迹,这个时候我们可以对杀软日志记录进行分析。
报告模板
相信通过上述方式排查后,或多或少会有些收获吧,这个时候我们需要输出报告文档,这里收集了网上的一些简单文档,总体格式都差不多,后续可以自行添加和删除。
https://www.uedbox.com/post/9816/
最后,望各位师傅项目接的多,漏洞一挖一个准,最好没有应急突发情况,文章写的不好,望多多担待,不喜勿喷,DD怕疼。
参考文章链接:
https://www.freebuf.com/articles/terminal/192859.htmlhttps://mp.weixin.qq.com/s/bYVebbDIL18odT0ShA6s7Q
