前言

作为一个安全打工人,每次在摸鱼的时候,总会碰到一些突发情况,例如以下情况。

老板:那啥XX企业被打了,你去支撑一下吧,顺便出个报告。

老板:XX企业安全设备告警了,你去看一下,看能不能开拓一下市场,顺便出个报告。

我:???

回到正题,像上述影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的系统或业务在最短时间内恢复正常工作,并后续进一步查找入侵来源,还原入侵过程,同时输出文档及安全建议,这样才能接到项目(不,是为企业减少经济损失。)

应急思路及流程

那么问题又来了,应急前我们应该干嘛呢?应急时我们应该干嘛呢?应急后我们应该干嘛呢?

首先,我们应该有一个好的整体思路。奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_java

信息收集:收集到发生安全事件的资产设备,整理时间线,是否存在恶意文件样本,是什么操作系统等。

判断事件类型:判断是否为安全事件,是web入侵,还是系统入侵,还是网络攻击。

深入排查:通过分析日志、启动项、系统用户、进程、恶意文件等找寻入侵来源。

清除处置:杀掉恶意进程、文件,配合运维人员打好补丁

输出文档:分析整体流程,产出报告。

附一些简单的思维图:​奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_linux_02

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_linux_03

应急排查工具集

在了解事件的基础情况后,使用一些好的排查工具能让我们快速定位到突破口,节省大量的时间。正所谓工欲善其事,必先利其器,下述推荐一些常用的排查工具。

网络分析排查工具

当我们需要查看传输的数据包时,可能会经常用到下述这些网络排查工具

Wireshark

一款常用的网络分析排查工具,可用来分析网络攻击等事件。如下图,wireshark看出来主机正在遭受arp攻击。奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_centos_04

Tcpview

微软内置工具集,网络连接查看工具,体积小,效果比较直观。奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_安全_05

Tcpdump

如果系统是linux的话,推荐使用tcpdump,比较轻量,也更方便。

常用命令:

​https://www.jianshu.com/p/d9162722f189​​​奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_运维_06

进程分析排查工具

有时候有些进程无法直接通过简单的命令查询到,这个时候我们可以借助下述工具对恶意进程进行分析和排查。

PChunter奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_linux_07

ProcessHacker奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_安全_08

启动项分析工具

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

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_java_09

其它类型的工具

像有些特定的病毒,需要专杀工具去查杀和修复正常文件;再或者我们能Everything工具搜索关键字等;再或者用D盾或者河马查杀后门等。奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_java_10

综合查询工具

按照常规查询方向一个一个排查可能需要大量的时间,这个时候有个自动化脚本就显得尤为重要了,这里推荐两个好的的综合查询工具。

GScan

这款工具Checklist比较全面,检测速度相对来说也比较快。​奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_linux_11

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_centos_12

dfirtriage

一款用于基于Windows的事件响应的数字取证工具,该工具将在执行时自动运行各种命令。所获取的数据将驻留在执行目录的根目录中。DFIRTriage可以从USB驱动器运行,也可以在目标上的远程外壳中执行。仅支持Windows。奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_linux_13

工具集分享

网上有一些大佬将资源整合了,这里附上下载链接地址,请确保安全情况下使用。

tips:请确保安全情况下使用

https://github.com/theLSA/hack-er-tools

手动排查

在某些情况下,我们需要手动分析和排查,这个时候就需要掌握一些应急的命令和技巧,下述分别以linux和windows来阐述。

Windows

排查系统账号

查看服务器是否新增用户,是否存在弱口令,是否开了redis、远程桌面、ssh是否开启等。

测试方法

可以通过咨询客户,或者通过命令行查询,再或者通过简单的扫描得到

查看服务器是否存在可疑账号、隐藏账户、新增账号

Win+R -> lusrmgr.msc

或通过注册表查看(记得赋予对SAM键的权限)

Win+R -> regedit.exe
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names

如下图可以看出目标服务器被添加了隐藏账户test$奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_java_14

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_linux_15

日志分析与排查
系统日志分析

Win+R>eventvwr.msc

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_centos_16

导出Windows的安全日志,利用LogParser进行分析,或者通过手动分析。

Windows常见的日志事件ID
附:Vista/Win7/Win8/Win10/Server2008/Server2012及之后的版本

事件ID 说明
1102 清理审计日志
4624 账号成功登录
4625 账号登录失败
4768 Kerberos身份验证(TGT请求)
4769 Kerberos服务票证请求
4776 NTLM身份验证
4672 授予特殊权限
4720 创建用户
4726 删除用户
4728 将成员添加到启用安全的全局组中
4729 将成员从安全的全局组中移除
4732 将成员添加到启用安全的本地组中
4733 将成员从启用安全的本地组中移除
4756 将成员添加到启用安全的通用组中
4757 将成员从启用安全的通用组中移除
4719 系统审计策略修改
加入安全交流君羊:965912595一起吹水聊天挖洞
LogParser常用命令
https://www.jianshu.com/p/0f3ec2fb57a4

例:查看事件258的记录奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_java_17

Web日志分析

先找到中间件的web日志,打包到本地进行分析

检查异常进程、端口

攻击者如果入侵主机后一般会上传恶意文件,这个时候一般会有外联情况,所以我们需要查看主机是否存在异常进程、端口

netstat -ano
tasklist | find"PID"

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_java_18

如果找寻到恶意进程,可以使用以下命令获取系统进程详细信息

简单使用:

cmd >wmic process

复杂一点:

wmic process get caption,commandline,creationDate,executablepath,handle,handleCount> C:1.txt
caption:进程名
commandline:进程名、进程执行参数、程序执行路径
creationDate:进程启动时间(格式为:年月日时分秒)
executablepath:程序执行路径
handle:进程pid
handleCount:该进程的父pid
加入安全交流君羊:965912595一起吹水聊天挖洞

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_安全_19

像有些比较难找出的恶意进程,可以尝试用上述工具集里的工具进行针对性的排查。

检查系统相关信息

通过检查系统版本和判断补丁信息,再回忆近期是否有什么重大型漏洞,或者是去提权辅助界面看看是否存在可利用的信息。

cmd > systeminfo

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_运维_20

查看用户目录及文件,如果攻击者新建账号的话会生成一个用户目录,同时可以根据文件的事件排序,看看是否有可疑的文件夹

Win+R >cmd >%UserProfile%\Recent

检查计划任务、启动项、服务、环境变量
检查主机是否存在计划任务

Cmd > schtasks或at

检查主机是否存在异常启动项

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 >services.msc

检查主机环境变量是否存在异常
使用set命令将环境变量导出检查

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_linux_21

恶意文件及病毒查杀

恶意病毒查杀:建议下载安全软件,对系统进行全盘扫描并查杀。

恶意文件查杀:像如果是webshell这种,可以使用D盾,河马等查杀工具进行查杀。

防火墙及杀毒软件排查

检查操作系统防火墙是否存在异常

windows操作防火墙配置着允许/拒绝通行的入站/出站规则,可根据防火墙配置判断该主机在同网段内的可攻击面积。

netsh firewall show state  //查看防火墙此时状态
netsh advfirewall firewall show rulename=all dir=in //入站规则
netsh advfirewall firewallshow rule name=all dir=out //出站规则

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_运维_22

检查杀软是否检测出异常

如果目标主机安装了杀软,攻击者在入侵主机时杀软难免会记录到部分痕迹,这个时候我们可以对杀软日志记录进行分析。

Linux

如果是linux系统应急的话,可能需要掌握一些常见的排查命令

Uptime:查看当前系统时间,存在用户,负载等信息

Stat:会显示文件UID,文件名,文件属性,文件访问时间等
Lsof:列出来当前系统打开文件
Find:目录文件列出来,也可以查找文件
md5sum:该命令用于生成和校验文件的md5值
Ps:列举常用进程
Netstat:查看网络连接及开放端口号
Top:经常用来监控linux的系统状况
加入安全交流君羊:965912595一起吹水聊天挖洞

更多命令参数请查看下述链接:

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].d
ls -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文件下,以下收集了一些常用的筛选方式

1、定位有多少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=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
#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
加入安全交流君羊:965912595一起吹水聊天挖洞

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 -l
Jul 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  --znotallow=public  --add-port=8080/tcp  --permanent

查看防火墙状态:

firewall-cmd   --state

重启防火墙:

systemctl  restart firewalld

查看端口列表:

firewall-cmd --znotallow=public  --list-ports

二者的配置一般在**/etc/sysconfig/iptables 或 /etc/firewalld/zones/pulic.xm**l下

检查杀软是否检测出异常

如果目标主机安装了杀软,攻击者在入侵主机时杀软难免会记录到部分痕迹,这个时候我们可以对杀软日志记录进行分析。

报告模板

相信通过上述方式排查后,或多或少会有些收获吧,这个时候我们需要输出报告文档,这里收集了网上的一些简单文档,总体格式都差不多,后续可以自行添加和删除。

https://www.uedbox.com/post/9816/

奇安信大佬倾囊相授,熬夜总结应急响应与心得分享(快收藏!)_linux_23

最后,望各位师傅项目接的多,漏洞一挖一个准,最好没有应急突发情况,文章写的不好,望多多担待,不喜勿喷,DD怕疼。