目录
知识点
应急响应原则
3W1H原则:3W即Who、What、why,1H即How,做应急响应要带着疑问来做事,定要收集清楚这些信息。网络拓扑是怎么样的?需求是啥?发生了什么事?你能做什么?用户用了什么产品?产品版本多少?病毒库版本多少?多少主机中了?主机是普通PC还是服务器?服务器是做什么的?……信息收集越多,对应急响应越有利。
易失性原则:做应急响应免不了要做信息收集和取证的,但这里是有一定的先后顺序的,即最容易丢失的据,应该最先收集,其它的依次类推。
要素原则:做应急响应,主要是抓关键证据,即要素,这些要素包括样本、流量日志、进程及模块、内存、启动项。
避害原则:做应急响应,要做到趋利避害,不能问题还没有解决,反而引入了新的问题。譬如,自己使用的工具被感染而不知情:给用户使用不恰当的工具或软件造成客户主机出现问题;给别人发样本,不加密,不压缩,导致别人误点中毒,最极端的场景就是给别人发勒索样本不加密压缩,导致别人误点中毒。
应急响应流程
基本思路
收集信息:收集客户信息和中毒主机信息,包括样本。
判断类型:判断是否是安全事件,何种安全事件,勒索、挖矿、断网、DoS等等
深入分析:日志分析、进程分析、启动项分析、样本分析。
溯源追踪:根据分析结果,追踪攻击者的攻击路径和入侵点,并为追踪攻击者收集线索。
清理处置:直接杀掉进程,删除文件,打补丁,抑或是修复文件。
系统恢复:对系统中存在的漏洞进行修复,防止再次被攻击。
产出报告:整理并输出完整的安全事件报告。
例:
ID | 事件 |
4624 | 登录成功 |
4625 | 登录失败 |
4634 | 注销成功 |
4647 | 用户启动的注销 |
4672 | 使用超级用户登录 |
4720 | 创建用户 |
Windows
Linux
附:常用工具
沙箱:微步在线:https://s.threatbook.com/ VT:VirusTotal
综合分析工具:火绒剑、OpenArk
查杀工具:d盾、河马
典型案例:银狐
银狐远控木马,又名谷随大盗,游蛇。是2023年4月上旬开始活跃的一支黑产团伙。
投递方式:邮件钓鱼、水坑、微信社工投递木马等,水坑攻击中伪造的软件多达数十款,包括但不限于软件wps、pdf、cad、qwbpro(企微宝)、微信、加速器、压缩软件、ppt、美图和向日葵软件等。初始载荷exe、chm、msi。
银狐的攻击手法多样,包括使用远控木马获得受害主机的控制权,并驻留在受害主机中,实现对目标的长期控制,伺机骗取或盗取用户数据及财产(曾通过替换微信联系人的方式,实施诈骗)。
入侵排查思路
Windows
检查系统账号安全
查看服务器是否有弱口令,远程管理端口是否对公网开放(使用netstat -ano
命令,或者问服务器管理员),使用lusrmgr.msc
命令查看服务器是否存在可疑账号或新增账号,如有管理员群组的(Administrators)里的新增账户,需要立即禁用或删除;然后利用D盾或者注册表中查看服务器是否存在隐藏账号、克隆账号,结合日志,查看管理员登录时间、用户名是否存在异常
检查方法:win+r打开运行,输入"eventvwr.msc
" 回车运行,打开"事件查看器",导出Windows日志——安全,利用Log Parser 进行分析
Log Parser(是微软公司出品的日志分析工具、它功能强大、使用简单、可以分析基于文本的日志文件、xml文件,CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统,Active Directory。它可以像使用SQL语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。
检查异常端口、进程
netstat -ano
检查端口连接情况,是否有远程连接、可疑连接;
任务管理器——进程功能
检查启动项、计划任务,服务
检查系统相关信息、查看系统版本以及补丁信息,再查找可疑目录及文件
日志分析:详见下一模块
Linux
账号安全
who查看当前登录用户(tty本地登陆 pts远程登录)w查看系统信息,想知道某一时刻用户的行为uptime查看登陆多久,多少用户,负载,若系统存在新增用户,可以优先观察影子文件中密码最后一次修改的日期
/etc/passwd #用户信息文件,存储一般的用户信息,任何人都可以访问
/etc/shadow #影子文件,存储用户的密码信息,只有 root用户可以访问
历史命令
查看历史命令:history
$history | grep 命令,!(history 显示的记录行号)回车执行。
Ctrl+R:输入若干字符(关键词),会搜索包含所输入关键词的历史命令。继续按Ctrl+R则会继续向前搜索包含关键词的历史命令。找到目标命令后,可以直接按enter键执行找到的命令。如果还想修改参数则可以按右箭头。
Ctrl+G:从Ctrl+R的搜索模式中跳出
检查异常端口
netstat -antlp | more:以数字形式显示系统上所有处于监听状态的TCP端口及其对应的进程信息,并通过more
命令分页显示这些信息,以便于用户查看。
检查异常进程
ps aux | grep pid
检查开机启动项
开机启动配置文件/etc/rc.local/etc/rc.d/rc[0~6].d
检查定时任务
crontab -l:列出某个用户cron服务的详细内容
默认编写的crontab文件会保存在(/var/spool/cron/用户名 例如:/var/spool/cron/root)
crontab -r:删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e:使用编辑器编辑当前的crontab文件
利用anacron实现异步定时任务调度
anacron和cron区别:若系统经常处于开机状态,且需要精确的时间控制,则选cron;若系统经常关闭或重启,并且需要确保即使在系统关闭时也能运行某些任务,则选anacron。
日志分析
Windows
概述
windows系统日志是记录系统中硬件,软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
windows主要有以下三类日志记录系统事件:应用程序日志,系统日志和安全日志。
系统日志:记录操作系统组件产生的事件,主要包括驱动程序,系统组件和应用软件的崩溃以及数据丢失错误等。
默认位置: %SystemRoot%\System32\Winevt\Logs\System.evtx
应用程序日志:包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志
默认位置:%SystemRoot%\System32\Winevt\Logs\Application.evtx
安全日志:记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、账号管理等
默认位置:%SystemRoot%\System32\Winevt\Logs\Security.evtx
系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。安全日志记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么,
审核策略与事件查看器
Windows Server 2008 R2系统的审核功能在默认状态下并没有启用,建议开启审核策略,若日后系统出现故障,安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等。
PS:默认状态下,也会记录一些简单的日志,日志默认大小20M
设置1:开始 -> 管理工具 -> 本地安全策略 -> 本地策略 -> 审核策略,参考配置操作
设置2:设置合理的日志属性,即日志最大大小、事件覆盖阀值等
查看系统日志方法:
在"开始"菜单上,依次指向"所有程序"、"管理工具",然后单击"事件查看器"
按"window+R",输入"eventvwr.msc"也可以直接进入"事件查看器"
常见安全事件ID
系统事件ID:
1074:查看计算机的开机、关机、重启的时间以及原因和注释。
6005:表示计算机日志服务已启动,如果出现了事件ID为6005,则表示这天正常启动了系统。104:记录所有审计日志清除事件,当有日志被清除时,出现此事件ID。
安全事件ID:
4624:表示成功登陆的用户,用来筛选该系统的用户登陆成功情况。
4625:这个事件ID表示登陆失败的用户。
4720, 4722, 4723, 4724, 4725, 4726, 4738, 4740:事件ID表示当用户帐号发生创建、删除、改变密码时的事件记录。
4727, 4737, 4739, 4762:事件ID表示当用户组发生添加、删除时或组内添加成员时生成该事件
Linux
日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
一般日志
日志文件 | 说明 |
/var/log/cron | 记录了系统定时任务相关的日志 |
/var/log/cups | 记录打印信息的日志 |
/var/log/dmesg | 记录了系统在开机时内核自检的信息,也可以使用 |
/var/log/mailog | 记录邮件信息 |
/var/log/message | 记录系统重要信息的日志。这个日志文件中会记录linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件 |
/var/log/btmp | 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看 |
/var/log/lastlog | 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看 |
/var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看 |
/var/log/utmp | 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w、who、users等命令来查询 |
/var/log/secure | 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如ssh登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
重要日志
日志文件 | 说明 |
/var/log/btmp | 登录失败记录 |
/var/log/lastlog | 最后一次登录记录 |
/var/log/wtmp | 登录成功记录 |
/var/log/secure | 登录日志记录 |
/var/run/utmp | 目前登录用户信息 |
日志分析命令
分析日志常用的shell命令有:find
、grep
、egrep
、awk
、sed
grep显示前后几行信息:
grep -C 5 foo file # 显示file文件里匹配f00字串那行以及上下5行
grep -B 5 foo file # 显示foo及前5行
grep -A 5 foo file # 显示foo及后5行
grep -v # 查看grep版本号的方法是
grep 查找含有某字符串的所有文件:
grep -r "str" /path
-r # 递归查找
-u # 是显示行号
-R # 查找所有文件包含子目录
-i # 忽略大小写
实操的例子:
显示一个文件的某几行:
cat input_file | tail -n +M | head -n N
# 从第M行开始,显示N行,即显示M~N-1行
在目录/etc中查找文件***
find /etc -name ***
只显示/etc/passwd
的账户
cat /etc/passwd |awk -F ':' '{print $1}'
# awk -F:指定分割符':',将记录按指定的域分割符划分域,填充域
删除历史记录,只保留前n行
sed -i 'n,$d' .bash_history