应急响应(IR)

应急响应场景基本都是客户主机沦陷,主机在断网隔离环境中,需要技术人员对其进行系统性的排查,找到落地文件、反查攻击者、判断影响范围。

Windows应急响应

常用的工具

自启动项检测工具Autoruns:用于显示在Windows启动或登录时自动运行的程序,并且允许用户有选择地禁用或删除它们。
常见的自启动项包括程序程序启动文件夹、Run、RunOnce(WIndows自启动注册表项之一)和其他注册表项中的程序和驱动程序、Windows资源管理器的shell扩展、IE浏览器插件、系统服务和设备驱动程序、计划任务等多种不同的自启动程序。

进程分析监控Process Explorer:Windows系统和应用程序监控工具,清晰展示进程的CPU占用率、PID等,还能够监视映像加载(DLL和内核模式驱动程序)、系统引导时记录所有操作等。

端口网络状态检测工具TCPView:显示系统上所有TCP和UDP端点的详细列表,包括本地和远程地址以及TCP连接的状态可查看主机网络端口 的开放状态,进程名称。

文件行为分析工具Process Monitor:显示实时文件系统、注册表和进程/线程活动,并且显示所有操作的启动时间记录。

日志分析工具Event Log Explore

Windows应急响应指南

应急响应第一步收集到隔离主机的基本信息
确认信息-当前系统版本补丁版本确定存在什么系统级漏洞
找出入口-确认一些明显的后门入口和异常外连
找主体-基本推断异常进程和落地文件
找权限维持-排查隐藏异常账户
找持久化-排查出异常自启动
找横向+异常-排查出横向信息和异常行为完成攻击链路描绘
找历史记录

系统基本信息

IP、主机名、系统版本、启动时间、补丁安装情况、网卡信息
确定主机基本情况,主要看系统版本和补丁安装情况确定是否存在系统层面的漏洞。
可以通过systeminfo查询主机名、OS版本、启动时间、安装补丁编号等信息,通过查询补丁编号对应的漏洞可以获取该机器可能存在的漏洞

网络连接信息

主机网络连接情况、监听端口/服务、建立连接情况
通过网络信息,确定主机是否存在监听端口是否已经建立可以外连
netstat -anob:查询网络连接情况,整体情况
netstat -anob | findstr LISTENING:查询监听端口/服务,找入口后门入口、内网代理、横向入口
netstat -anob | findstr ESTABLESHED:查询建立连接情况,找出口C2通信、异常外连

进程信息

(主要通过Process Explorer进行)查看进程加载的DLL文件、CPU占用率、执行命令、回连地址、恶意进程查询
判断是否加载恶意/可疑的DLL文件(DLL常用于白加黑进行权限维持)
进程是否高占用(可能是挖矿程序)
是否执行了可疑命令(用于反弹shell)
这里的恶意查询功能,主要是通过将进程加载的可执行文件的哈希值发送给Virus Total API进行查询,是否已有该哈希记录,以及各个杀毒引擎判定结果。综合判定是否为恶意进程

用户账户

查询Windows用户账户和隐藏账户
Windows用户账户主要通过net user进行查看
隐藏账户则通过注册表查询:HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Users/Names(查询不到需要进行权限提升)

启动项计划任务信息

查寻可疑的自启动项目
自启动文件夹:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
注册表项:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
并不是每台都存在
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

计划任务:taskschd.msc

访问记录:查询IE浏览器访问记录、运行记录、路径访问记录
IE浏览器历史记录:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
运行记录:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
路径访问记录:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths

Windows日志

(eventvwr.exe):排查谁,在什么时候,用什么方式,做了什么操作?
日志文件类型为evt、evtx
默认路径 %SystemRoot%\System32\config;%SystemRoot%\System32\Winevt\Logs
审核策略更改4719 系统审核策略己更改(最关注) 关联->事件ID为1102的日志事件:日志清除事件
审核身份验证策略更改:4717 系统安全访问被授予一个账户(最关注)
审核登录时间:4624 一个帐户已成功登录(最关注)4625 一个帐户登录失败(最关注)loginType(登录类型)-2交互式登录:用户在本地进行登录;3网络(SMB):最常见在连接到共享文件夹或共享打印机时;10远程交互(RDP):通过终端服务、远程桌面或远程协助访问计算机。
审核账户管理:4720:已创建用户账户4722:已启用用户账户、4724:已尝试重置账户密码

第二步针对搜集到的信息进行分析研判
攻击入口->攻击类型->攻击方法->后门位置->持久化机制->权限情况->横向方向

第三步进行处置
Kill进程、断网、IP封禁、后门删除、去持久化、会话清理、账号处置

特殊后门排查

shift后门
C:\Windows\System32\sethc.exe,连续按下五次shift键弹出粘滞键执行的就是这个文件,这个文件替换成了其他的二进制文件

放大镜后门
C:\Windows\System32\magnify.exe,系统放大镜调用的就是这个文件,这个文件替换成了其他的二进制文件

排查可以通过certutil -hashfile计算可执行文件的哈希值对比Windows官方的哈希值,进行判断是否被替换。

映像劫持
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options,设置了Debugger参数,使系统在启动指定程序时执行恶意程序,从而实现持久化或权限劫持。

排查,Image File Execution Options下有没有Debugger的属性

案例实践

RDP爆破

日志审计后发现存在大量4625并且loginType为10的安全日志出现之后才出现4624并且loginType为4624的安全日志。确定该主机被攻击者进行了RDP爆破,并且持续了一段时间爆破后登录成功。

挖矿木马-WindowsDriverMine

现象,内网大量Windows主机蓝屏、自动重启,并向其他机器445端口发送连接,C:\Windows\Temp目录下存在大量恶意文件,主机安装有杀软,文件没有被加密。

信息搜集:查看进程、计划任务、日志、注册表、用户账户后确定了恶意程序对应的进程以及进程加载的文件目录
C:\Windows\Temp目录下存在m.psl、mkatz.ini、svchost.exe、svchost.mlz等异常文件

并且存在隐藏账户,K8h3d,在powershell设置了计划任务并且将恶意文本经过base64加密,其内容为向互联网发送受害主机所在的域,得到黑客服务器域名http://v.beahh.com

攻击符合挖矿马Windows Wanna系列特征,确认攻击类型,日志中确定发生的时间和源头,计划任务启动项中存在持久化机制,横向失败。
进行处置,停止svchost进程,删除其服务、计划任务、防火墙规则等恶意行为,删除文件,给服务器打上补丁关闭445端口使其停止传播。

Linux应急响应

Linux应急响应指南

Linux应急响应和Windows并无本质区别,Windows系统可以靠工具来进行信息收集分析,但是Linux万物皆文件打多都依靠命令来进行信息搜集

主机基本信息

主机名/系统时间/IP地址/系统版本
hostname主机信息
date系统时间
ifconfig IP地址
uname -a系统信息
cat /etc/system-release系统内核

用户及用户组信息

用户信息,超级用户、克隆用户、系统可登录用户、非系统自身自带用户
/etc/passwd
用户名:密码:UID(用户ID):GID(用户组ID):描述信息:主目录:默认shell
排查超级用户:more /etc/passwd | awk -F: ‘{if($3==0) print $1}’
排查克隆用户:awk -F: ‘{a[$3]++}END{for(i in a)if(a[i]>1)print i}’ /etc/passwd
排查系统可登录用户:cat /etc/passwd | grep -E “/bin/bash$” | awk -F: ‘{print $1}’
排查非系统本身自带用户:more /etc/passwd | awk -F: ‘{if($3>=1000) print $1}’

/etc/shadow
用户名:密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:账号闲置时间:失效时间:标志
排查空口令用户:awk -F: ‘($2==””){print $1}’ /etc/shadow

/etc/group
用户主组组名:组密码占位符:用户主组GID:当前组为附加组的用户成员列表
排查特权用户:cat /etc/group | awk -F:'{if ($1!=”root”&&$3=0) print $1}
排查相同GID用户组:cat /etc/goup | awk -F ‘{print $3}’ | uniq -d
排查相同用户组名:cat /etc/group | awk -F:'{print $1}’ | uniq -d

网络连接信息

主机监听的端口/服务,连接方式,进程端口对应关系
netstat -antup
a:显示所有套接字,包括监听和不监听的
n:以数字形式显示地址信息,即点分10进制格式
t:显示tcp类型套接字
u:显示udp类型套接字
p:显示进程信息

grep 80 /etc/services辅助查看开放端口情况
/etc/services文件记录的是网络服务名对应的端口号以及协议

lsof -i显示进程和端口对应关系
lsof -Pnl -i tcp 使用tcp通信的进程文件
lsof -PnI -i dup 使用udp通信的进程文件
lsof -i :80 占用80端口的文件

进程信息

查询进程信息、资源占用、进程加载文件、隐藏进程等
ps -aux进程查看
pstree进程树

top资源占用顺序

lsof -i:1677查看指定端口对应的程序
lsof -p PID查看进程打开的文件

proc/pid/进程信息

隐藏进程查看:
ps -ef | awk ‘{print}’ | sort -n | uniq >1
ls /proc | sort -n | uniq >2
diff 1 2
程序系统调用:strace -o aa -ff -p PID
跟踪调用文件:grep open aa* | grep -v -e No -e null -e denied | grep WR

Linux系统日志

Linux通过syslog API进行log记录,syslog会通过socket将log发送给syslogd,syslogd(Linux提供的一个守护进程来处理系统日志)在获取到log后会对log进行处理,然后根据用户配置,将log保存到本地或者远端服务器
syslog.conf(Syslogd默认配置文件)格式:服务类型+条件运算符+信息等级 日志保存的位置

日志分析三剑客使用

find查找
按照时间表搜索
-atime 访问时间
-mtime 修改时间
-ctime 变化时间
-find .-atime 7 type f 最近七天内被访问过的所有文件
查找当亲目录下所有的.py和.sh文件
find -name “*.py” -or -name “*.sh”
按照文件类型查询
find .-type d #只列出目录 -type f 文件/ I 符号链接 / d目录
查看本地目录下的所有二进制文件(因为二进制文件和文本文件无法直接区分)
find .-type f | xargs file | grep ELF | awk ‘{print $1}’ | tr -d ‘:’ #查看当前目录下的所有二进制文件

grep文本搜索
| 可实现 or 操作
grep “Accepted\|Failed” /var/log/secure
-e参数可支持多个检索条件实现or操作
grep -e “Accepted” -e “Failed” /var/log/secure
grep嵌套实现and操作
grep “Aug 17 19” /var/log/secure | grep “Failed”
-sort、uniq、wc、cut
sort -n:按照数字进行排序 -d:按照字典进行排序 -r:逆序排序
uniq -c:统计各行在文件中出现的次数 -d找出重复行
wc -I:统计行数 -w:统计单词数 -c:统计字符数
cut -f:指定需裁取的列数,多个可使用,分割 -d:只当分割符
grep “Accepted” /var/log/sercure | cut -d ” ” -f 11 | sort -n
grep “Accepted” /var/log/sercure | cut -d ” ” -f 11 | sort -n | uniq -c

awk数据流处理工具
NR:表示记录数量
NF:表示字段数量
$0:这个变量包含执行过程中当前行的文本内容
$1:第一个字段的文本内容
$2:第二个字段的文本内容
grep “Accepted” /var/log/secure | cut -d ” ” -f 11 | sort -n | uniq -c | awk ‘{print NR,NF,$0,$1,$2}’

Linux下的一些关键日志

/var/log/cron 记录了系统定时任务相关的日志
排查定时下载:more /var/log/cron* | grep “wget|curl”
排查定时执行脚本:more /var/log/cron* | grep -E “\.py$|\.sh$|\.pl$”

/var/log/message 记录系统重要信息的日志。这个日志文件中会记录linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
排查文件传输情况:more /var/log/messages | grep “ZMODEM:.*BPS”
排查DNS使用情况:more /var/log/messages * | grep “using nameserver”
排查su认证信息:more /var/log/messages* | grep “su:”

/var/log/secure 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如ssh登录,su切换用户sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
排查用户成功登录情况:more /var/log/secure* | grep “Accepted password”
排查用户登录失败情况:more /var/log/secure* | grep “Failed password”
排查新增用户:more /var/log/secure* | grep “new user”
排查新增用户组:more /var/log/secure* | grep “new group”
排查su认证相关:more /var/log/secure* | grep “authenticatioin failure”
排查账户修改密码:more /var/log/secure* | grep “password changed”


/var/log/btmp 记录错误登录日志(用户登录和推退出事件),这个文件是二进制文件,不能直接w查看,而要使用lastb命令查看
lastb
last -f /var/log/btmp

/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi而要使用lastlog命令查看
lastlog -u root查看root用户最近一次登录
lastlog -t 7 查询七天的内的登录

/var/log/wtmp 永久记录所有用户的登录(登录失败的记录),注销信息,同时记录系统的启动,重启,关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
last往回搜索wtmp来显示自从文件第一次创建以来登录过的用户以及系统启停
last root查看root用户登录历史

/var/log/utmp 记录当前己经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi而要使用w,who,users,finger等命令来查询
使用w命令可显示用户人数、事件、CPU、在线时间、登录事件、登录事件,确定当前哪些用户已登录系统
TTY:分配给用户会话的终端。ttyX表示在控制台登录,pts/X和ttypX表示网络链接
From:远程登录主机的IP地址

/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog 记录邮件信息

文件系统排查

文件特权检查、文件完整性检查、新增文件检查
根据时间排序文件:ls -alt /tmp/ | head -10
根据确定时间去匹配:ls -al /bin /usr/bin /usr/sbin /sbin/ | grep “Jan 15”
SUID是一种特殊权限,设置了suid位的程序文件,在用户执行程序时,用户的权限是该程序文件属主的权限
设置SUID:chmod u+s filename
去除SUID:chmod u-s filename
输出所有设置了SUID的文件:find / -perm -004000 -type f

文件完整性检查
rpm -Vf package
5:MD5校验码,S:文件尺寸,L:符号连接,D:设备,U:用户,G:用户组
新增文件查找:通过查找时间发生前一段时间修改或生成的文件,快速定位问题
find / -mtime 0 | grep -E “\.(py|sh|per|pl|php|asp|jsp)$”
文件“时间信息 + 属性”查看stat
stat /etc/passwd

启动项计划任务信息

持久化排查

启动类持久化(开机自启)

系统服务,随着系统启动而启动,随着系统关闭而关闭的程序。
Linux下可以使用chkconfig –list(旧版)查看服务启动信息,各服务的启动脚本放在/etc/init.d/和/etc/xinetd.d目录下

rc.local(传统启动项)
cat /etc/rc.local

systemd 服务(新版重点)
systemctl list-unit-files | grep enabled
systemctl list-units –type=service
服务文件目录:
ls /etc/systemd/system/
ls /lib/systemd/system/

init 配置(旧版系统)
cat /etc/inittab
ls /etc/init/
cat /etc/rc.d/rc.sysinit
cat /etc/rc.d/rc.local

init 核心配置文件
cat /etc/inittab (定义运行级别及启动行为)
ls /etc/init/(Upstart 服务配置文件)

系统初始化脚本
cat /etc/rc.d/rc.sysinit(系统启动时执行的初始化脚本)

服务启动目录
ls /etc/rc.d/init.d/(存放服务脚本如 sshd、network 等)

rc.local(高危持久化点)
cat /etc/rc.d/rc.local(开机最后执行,最常被攻击者利用

运行级别启动项
ls /etc/rc*.d/S*(不同运行级别下的启动服务,S 开头表示启动)

计划任务持久化(cron / at)

计划任务crond是Linux下用户来周期性执行某种任务或等待处理某些事件的一个守护进程,与Windows下的计划任务类似,crond进程每分钟会定期检查是否有要执行的任务。
系统计划任务:/etc/crontab
用户计划任务:所有用户定义的crontab文件都被保存在/var/spool/cron目录

用户级 crontab
crontab -l

系统级 cron 目录
ls -alh /var/spool/cron/
ls -alh /etc/cron*

关键配置文件
cat /etc/crontab
cat /etc/anacrontab

cron 权限控制
cat /etc/cron.allow
cat /etc/cron.deny

root 计划任务(重点)
cat /var/spool/cron/crontabs/root
# 或(部分系统)
cat /var/spool/cron/root

at 计划任务
cat /etc/at.allow
cat /etc/at.deny

用户环境持久化

全局环境变量
cat /etc/profile
cat /etc/bashrc

用户级环境变量
cat ~/.bash_profile(.bash_profile:用户登录时执行)
cat ~/.bashrc(.bashrc:每次打开 shell 执行)
cat ~/.profile(.profile:用户级环境配置)

服务与启动目录
ls /etc/rc.d/
ls /etc/rc.d/init.d

案例实践

服务器被上传大量博彩文件且rm -rf不能删除

对博彩页面的js packed解密找到博彩站点

博彩文件被设置i、a属性,所以不能直接删除

chattr -ia filename去除ia属性后删除
chattr是Linux下用于修改文件“扩展属性”的工具会改变文件系统层面的行为,优先级高于chmod,即使是root也可能被控制。
对应的查看命令位lsattr
基本语法chattr [选项] [属性] 文件

选项说明
+添加属性
-移除属性
=精确设置属性
-R递归(目录常用)

常见属性

-i 不可改变
不能删除
不能修改
不能重命名
不能创建硬链接

-a 只能追加
只能追加写入
不能覆盖

-A 不更新atime(文件被读取的时间)
-S 同步写入磁盘

去除扩展属性后进行删除

服务器被ssh登录后上传博彩文件

进行日志查看的时候发现几个异常的ssh登录日志

但是提取IP进行威胁情报查询等都没拿到什么有效信息,但是查看端口信息发现异常连接

异常连接的端口对应的进程,每个进程相关的目录都对应一个博彩文件目录

tree看进程发现所有异常进程存在一个父进程,ID位10754

但是查看进程的可执行文件被删除了

继续排查发现新的异常进程出现,进程相关目录为/usr/lib64/rhythmbox/plugins/rb

其目录下的文件URL.conf记录了窃取的SSH密码信息
意味着攻击者替换或者劫持了系统的sshd进程,每当有合法用户输入密码时,该插件就会截获明文密码,并将其写入这个隐藏文件。

Web应急响应

Web应急响应是基于操作系统(Linux/Windows)环境,对Web攻击行为进行分析,通常以Web中间件日志为切入点,并结合系统日志、进程行为、文件变化及持久化机制进行全面溯源与处置。前面讲述了操作系统层面的应急响应,这里主要针对Web中间件,也就是对Web中间件的应急响应。

IIS

默认日志路径
%systemroot%\system32\LogFiles(IIS6)
%SystemDrive%\inetpub\logs\LogFiles(IIS7)
日志文件名
exYYMMDD.log(IIS6)
u_exYYMMDD.log(IIS7)
日志记录时间为UTC/GMT 0,转换为北京时间需要+8

Apache

默认配置文件
httpd.conf
默认访问日志文件名
access_log

Tomcat

默认配置文件
${catalina}/conf/server.xml

Nginx

默认配置文件
nginx.conf
默认访问呢日志文件名
access.log

案例实战

IIS服务器webshell排查
某公司门户网站来自搜索引擎的访问会跳转至博彩网页,根目录发现webshell恶意现需要排查攻击者的入侵路径
已知信息
服务器:Windows Server 2016
中间件:IIS服务器
日志类型:二进制IBL文件
日志大小:7.45GB
webshell:wait.php、huo.php

查看IIS服务器日志配置信息得知
每个日志文件属于服务器整个站群的日志,需将排查站点的日志单独导出分析
日志为二进制IBL格式,需要用到LogParser(日志分析工具)
首先确定排查网站的ID号:97676953

使用LogParser将日志导出,logparser “select * into log.txt from *.ibl where siteid =97676953″,日志大小变为63M

导出的日志文件中有以下字段,标红需要重点关注

使用grep命令筛选webshell文件名,分析第一次出现时间,可以发现攻击者使用/dede/file_manage_view.php界面操作webshell文件行为,该界面为织梦后台的文件管理。

筛选/dede/file_manage_view.php发现IP为136.158.51.61的攻击者多条访问记录,且对文件进行上传和修改操作

筛选恶意IP 136.158.51.61
cat log1.txt | grep 136.158.51.61
攻击者2021-08-31 16:24成功登录到后台

排查时间在2021-08-31 16:24前后的日志,发现IP为156.234.226.35的攻击者于2021-08-31 15:31开始爆破后台路径

攻击者于2021-08-31 15:33探测到后台,并于2021-08-31 15:34分开始爆破后台管理登陆界面

爆破后持续到15:50后IP为223.11.134.131的攻击者记录爆破,疑似再2021-08-31 16:01爆破成功

流量层面信息搜集

流量分析工具

wireshark:多个接口可供选择抓取流量

wireshark可以通过协议对数据包进行解析
NO:按顺序的唯一标识数据包的序列号
Time:捕获数据包时的时间戳
Souce:捕获数据包的源IP地址
Destionation:捕获数据包的目的IP地址
Protocol:捕获数据包的协议类型
Length:捕获数据包的大小
Info:数据包的附加信息

下方面板中包含该数据包的字节序列

wireshark支持数据过滤

比如进行TCP流量过滤

wireshark过滤规则

如果过滤表达式为空,则不对流量进行过滤,如果过滤表达式不为空,则保留使表达式为“真”的流量。过滤表达式由一个或多个语句构成,原语句通过逻辑运算符连接,每个原语由限定符和标识符构成

  • dst host 192.168.1.1 过滤数据包目标地址为192.168.1.1
  • src host 192.168.1.1 过滤数据包源地址为192.168.1.1
  • ether host 11:22:33:44:55:66 当数据包的以太网源地址或目的地址为11:22:33:44:55:66
  • ether dest 11:22:33:44:55:66 当数据包的以太网目的地址为11:22:33:44:55:66
  • ether src 11:22:33:44:55:66 当数据包的以太网源地址为11:22:33:44:55:66
  • dst net 192.168.1.0/24 C段

常见:通过协议、IP、http响应为200数据进行过滤,也会混合进行过滤

TcpDump

常用命令参数
-i 指定网络接口
-s 0:抓取数据包时默认抓取长度为68字节。加上-S 0后可以抓到完整的数据包
-w ./target.cap:保存成cap文件方便用

监听制定网络接口数据包:tcpdump -i eth0
监听制定主机数据包:tcpdump host 210.27.48.1
截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通信:tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3)
监听指定主机和端口的数据包
tcpdump tcp port 23 and host 210.27.48.1
tcpdump udp port 123
抓取指定网络接口的包并保存到文件
tcpdunp -i eth0 -s 0 -w /tmp/target.cap

Linux流量筛选命令
string xxx.cap | grep xxx -C 5显示流量中匹配到xxx的上下各5行
string xxx.cap | grep Hxxx 统计User-Agent
string target.cap | grep HTTP/1.1$ | sort -r -n | uniq -c | sort -r -n 统计所有访问的路径

恶意流量特征

扫描

目标扫描时常用HEAD请求方式
响应中大量存在404状态码
特定扫描器的HTTP头部(比如User-Agent带有扫描器指纹)
漏洞探测的payload

DirBUster扫描特征

爆破

大量失败请求
GET型表单爆破

POST型表单爆破

ssh爆破
触发服务器的日志记录(4625 loginType 10)
触发DNS 反向查询

客户端将自己的用户名+密码生成的会话密钥key进行加密后传送到服务器端进行验证,服务器端验证通过,则响应成功,否则再进行有限次重新认证。这里只能通过SSH端口的访问情况来推断SSH爆破,要确认还需要结合日志分析(/var/log/secure)

SQL注入

明显的SQL语句特征

SQLmap等工具的User-Agent特征

文件上传/任意文件读取/文件包含

明显的一句话木马及其变形
明显的目录遍历形式
明显的高危函数

上传一句话webshell后门

命令/代码执行

高危命令执行函数
高危代码执行函数
执行可疑命令

命令执行

代码执行

Shiro反序列化攻击

Aapche Shiro 1.2.4反序列化(CVE-2016-4437):流量上remeberMe字段有明显特征,可以通过工具进行解密,判断反序列化攻击

蚁剑

POST传输
对上传内容进行URLencode编码
访问文件(一般就是webshell)

冰蝎流量特征

POST请求
Base64编码请求内容
响应内容为不可见字符
访问文件(一般就是webshell)

Mysql爆破
出现大量mysql登录日志
大量的mysql请求失败后登录成功

Redis未授权访问

通过访问redis端口(6379)进行写入文件或者命令执行

ICMP隧道后门

ICMP流量中出现后门程序或者命令控制的通讯
ICMP流量中出现命令执行结果

DNS隧道后门

冷知识:NetSarang系列软件的关键网络通信组件nssocket2.dll被植入了恶意代码,厂商在发布软件时为发现恶意代码,并给感染组件打上了合法的数字签名随着新版软件包一起发布,用户机器一旦启动软件,就会加载组件中的恶意代码,将主机的用户信息通过特定DGA(域名生成算法)产生的DNS域名传送至远程命令控制服务器,同时服务器下发恶意代码至用户机器执行。XShell就被植入过DNS隧道后门

DNS流量中出现命令执行结果
出现大量dns 的TXT记录
DNS流量中出现明显经过编码的内容
长子域名

HTTP隧道后门

MSF meterpreter_reverse_http后门流量该后门通过HTTP隧道通信

持续请求一个特定的URL
请求为不可见字符
存在心跳响应
无响应实体

远控木马

心跳通信(固定周期通信)
持续性流量
异常外连一个地址
请求加密或者不可见

CS的心跳通信特征

对应急响应的思路和理解

应急响应前先向客户或者一线了解清楚具体的情况
操作系统类型?部署服务?目前情况是什么?

主机侧应急响应

Windows操作系统
确认为Windows操作系统后
1.确认系统的基础信息,确认主机IP、系统版本、安装补丁、网卡等信息,在系统信息层面根据系统版本与补丁情况,判断是否存在已知高危漏洞,比如永恒之蓝(对开放的445端口的SMB服务发起MS17_010)等
随后根据攻击者的内网渗透思路进行逐一排查
2.检查主机网络信息排查攻击的入口和出口,是否存在可疑的监听服务,是否存在可疑的外连行为,重点关注异常外联(C2通信)、高频连接及非常规端口通信行为。。在网络信息层面初步筛选出可疑监听和连接,比如一些明显的反弹shell、后门程序等
3.检查主机进程信息排查攻击者落地实体,一些可疑的进程、高占CPU占用的进程对应加载的文件/DLL文件所在的目录,进入文件目录基本确认攻击落地实体
4.检查主机用户账户、启动项、计划任务排查攻击者的持久化,一些新增的用户隐藏的用户大概率就是攻击者为了持久化创建的。自启动项目,自启动文件夹、注册表项(Run、RunOnce)、计划任务中是否有攻击者设置的持久化。
5.检查日志并梳理攻击流程,通过Windows系统日志(如果有sysmon日志,首先考虑sysmon日志,sysmon日志相比Windows日志具有更细粒度的记录能力)中的4624和4625内容判断是否对某台内网主机进行了横向及提权行为,以及其他操作日志104的清除等等,来还原攻击全链路并构建攻击时间线
后续进行处置Kill进程删除后门去持久化等等操作即可

Linux操作系统:
确认为Linux操作系统后
1.确认系统的基础信息,确认主机IP、系统版本、网卡等信息,系统内核,安装组件及其版本(Web组件:nginx、apache;服务组件:ssh/mysql)。基于系统版本、内核版本及已安装组件,评估是否存在已知高危漏洞或安全风险。比如系统内核出现的脏牛提权、Web组件apache可能存在的版本漏洞。
2.检查主机网络信息排查攻击的入口和出口,是否存在可疑的监听服务,是否存在可疑的外连行为,重点关注异常外联(C2通信)、高频连接及非常规端口通信行为。在网络信息层面初步筛选出可疑监听和连接,比如一些明显的反弹shell、后门程序等
3.检查主机进程信息排查攻击者落地实体,一些可疑的进程、高占CPU占用的进程、隐藏进程对应加载的文件及权限,所在的目录及权限,进入文件目录基本确认攻击落地实体
4.检查主机用户用户组、启动项、计划任务排查攻击者的持久化。新增用户用户组、特权用户用户组、超级用户克隆用户、非系统本身自带用户、空口令用户都可能是为了持久化创建的。从启动类系统服务(systemd)、init配置、服务与启动目录;计划任务crontab/at;全局环境变量中进行排查是否有攻击者设置的持久化。细致一点可以去对文件系统进行检查,比如检查ssh公钥、SUID权限文件、新增文件(可解析文件)、 以及文件完整性来防止攻击者的免密登录以及权限滥用等实现持久化。
5.检查日志并梳理攻击流程,通过分析Linux的日志守护进程syslogd、rsyslog记录的日志,利用文本三剑客find查找、grep文本搜索、awk数据流处理工具对关键日志进行检索比如定时任务相关日志/var/log/cron、系统信息日志/var/log/message、记录验证和授权方面信息日志/var/log/secure等判断是否对其他主机进行了横向,及提权行为,来还原攻击全链路并构建攻击时间线
后续进行处置Kill进程删除后门去持久化等等操作即可

Web侧应急响应

Web 应急响应是基于操作系统(Linux/Windows)环境,对 Web 攻击行为进行分析,通常以 Web 中间件日志为切入点。主要几个中间件nginx、apache、tomcat、IIS的日志进行分析,遵循5w原则(who when where what how ),还原攻击链路并构建攻击时间线。

流量侧加强验证

流量分析可以通过识别流量层的特征,比如蚁剑流量访问文件POST型请求对请求内容进行URLencode编码;冰蝎流量访问文件POST型请求方法对请求内容进行base64编码响应内容为不可见字符。识别一些异常流量和通信协议,比如爆破时大规模的登录流量,ICMP隧道:流量中出现可疑编码内容、DNS隧道:流量中存在大量DNS的TXT记录流量中出现可疑编码内容等等

在主机日志缺失或被清理的情况下,流量分析往往成为还原攻击行为的关键数据来源。

附加

内存马对抗

不死马对抗

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇