THIS IS B3c0me

记录生活中的点点滴滴

0%

应急响应

一、概述

1、概念

应急响应是指针对已经发生或可能发生的安全事件进行监控、分析、协调、处理、保护资产安全。主要是为了人们对网络安全有所认识、有所准备,以便在遇到突发网络安全事件时做到有序应对、妥善处理。

2、PDCERF

  • 准备阶段:预防为主,例如扫描、风险分析、打补丁等。简历监控措施、简历数据汇总分析体系、制定能够实现应急响应目标的策略和规程,建立信息沟通渠道,建立能够集合起来处理突发事件的体系。
  • 检测阶段:检测事件是已经发生的还是正在进行中的,以及事件产生的原因。确定事件性质和影响的严重程度,以及预计采用什么样的专用资源来修复。
  • 抑制阶段:限制攻击/破坏波及的范围,同时也是降低潜在的损失。
    • 抑制策略:完全关闭所有系统;从网络上断开主机或断开网络部分;修改所有防火墙和路由器过滤规则;封锁或删除被攻击的登录账号;加强对系统和网络行为的监控;设置诱饵服务器进一步获取事件信息;关闭受攻击的系统或其它相关系统的部分服务。
  • 根除阶段:通过事件分析找出根源并彻底根除,以避免攻击者再次使用相同的手段攻击系统。
  • 恢复阶段:把被破坏的信息和组织彻底还原到正常运作状态。
  • 总结阶段:回顾并整合应急响应过程的相关信息,进行事后分析总结和修订安全计划、政策、程序,并进行训练,以防止入侵的再次发生。

3、网络安全应急响应的场景

  • 应用安全
    • webshell
    • SQL注入
    • XSS
    • XXE
    • 文件上传
    • 命令执行
    • 文件包含
    • 逻辑漏洞
    • 网页篡改
  • 系统安全
    • 挖矿病毒
    • 勒索病毒
    • 数据泄漏
  • 网络安全
    • DDos攻击
    • DNS劫持
    • ARP欺骗
    • 流量劫持

4、网络安全应急响应处理流程

  • 事件类型
  • 时间范围
  • 系统排查
  • 进程排查
  • 服务排查
  • 文件痕迹排查
  • 日志分析
  • 得出结论

二、理论

1、系统排查

系统基本信息
  • windows:

    1
    2
    3
    msinfo32  #系统信息,显示本地计算机的硬件资源、组件和软件环境信息。正在运行任务、服务、系统驱动程序、加载的模块、启动程序等进行排查。

    systeminfo #系统信息,主机名、操作系统版本等详细信息。
  • Linux:

    1
    2
    3
    4
    lscpu  #CPU信息,型号、主频、内核等
    uname -a # 操作系统信息
    cat /proc/version # 操作系统版本信息
    lsmod # 所有载入系统的模块信息
用户信息
  • windows:

    1
    2
    3
    4
    5
    net user  #查看用户账户信息(看不到以$结尾的隐藏用户);
    net user username #查看用户名为username用户的详细信息;
    lusrmgr.msc #打开本地用户与组,可查看隐藏用户;
    打开计算机管理-本地用户与组可查看隐藏用户;
    wmic useraccount get name,sid #查看系统中的所有用户;

    windows查看是否存在克隆账号:

    1.通过windows安全日志进行排查

    管理相关的详细信息。与用户账号管理相关的windows日志事件ID如下:

当攻击你这创建克隆账号时,windows的安全日志会产生“创建用户“事件日志,可通过排查事件ID4720找到克隆账号

eventvwr.msc打开Windows事件查看器,通过筛选当前日志功能搜索事件ID“4720”,查看创建用户情况,审核所有的“创建用户”事件,看是否存在创建隐藏账户

​ 2.通过查看注册表文件进行排查

注册表是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。用户的账号信息在注册表中均能查看,其中包含克隆账号的信息。

查看注册表“HEKY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”的文件信息,发现存在“test$”账号对“test$”账号的子键F值与“administrator”账号的F值进行对比发现相同两个相同,因此判断“test$”账号是“administrator”的克隆账号,具有“administrator”的权限

​ 3.通过安全防护工具进行排查

可以使用D盾

顺便记录一下windows创建隐藏克隆账户的过程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 创建隐藏账户
net user test$ 123456 /add
这条命令创建了一个test账号,$的意思是隐藏的意思,虽然在cmd命令net user中看不到此账户了,但是在计算机管理账户中还是能够看到此账号

net localgroup administrators test$ /add
刚刚创建的test$账号还是user用户组,要提到administrator用户组

#克隆账号
cmd输入regedit,找到SAM,如果发现没有下级项,那么右击SAM,权限,给他administrator用户的完全控制权限,按f5刷新

找到administrator用户与test$用户users下的对应十六进制文件夹导出到桌面

记事本打开刚刚导出的administrator的相应文件,复制F标记一段代码至test$替换相应的位置代码

net user test$ /del
删除账号test$

双击运行刚刚修改后的之前的test$用户的注册表信息,两个

现在,账号成功隐藏,试试能否正常登陆。

上面test用户组属于空用户组,但是具有 a d m i n i s t r a t o r 权限,用 n e t t e s t 用户组属于空用户组,但是具有administrator权限,用net test用户组属于空用户组,但是具有administrator权限,用nettest /del 命令无法将其删除,所以需要用到脚本
  • linux:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    查看所有用户信息:cat /etc/passwd
    后续各项由冒号隔开,分别表示用户名、密码加密、用户ID、用户组ID、注释、用户主目录、默认登录shell。最后显示bin/bash的,表示账户状态可登录,显示sbin/nologin的,不可登陆。

    查看可登录账户:cat /etc/passwd | grep/bin/bash’

    查看用户错误的登录信息:lastb(包括错误的登录方法、ip、时间等)
    查看所有用户最后的登录信息:lastlog
    查看用户最近登录信息:last
    查看当前用户登录系统信息: who
启动项

开机系统在前台或者后台运行的程序,是病毒等实现持久化驻留的常用方法

  • windows:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    msconfig:可查看启动项的详细信息; 
    注册表查看:
    HKEY_CLASSES_ROOT:此处存储的信息可确保在windows资源管理器中执行时打开正确的程序。它还包含有关拖放规则、快捷方法和用户界面信息的更多详细信息;
    HKEY_CURRENT_USER:包含当前登录系统的用户的配置信息,有用户的文件夹、屏幕颜色和控制面板设置;
    HKEY_LOCAL_MACHINE:包含运行操作系统的硬件特定信息,有系统上安装的驱动器列表及已安装硬件和应用程序的通用配置;
    HKEY_USERS:包含系统上所有用户的配置信息,有应用程序配置和可视配置;
    HKEY_CURRENT_CONFIG:存储有关系统当前配置信息。
    查看注册表中的信息:
    reg query “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”
  • Linux:

    1
    2
    3
    4
    cat /etc/init.d/rc.local
    cat /etc/rc.local
    ls -alt /etc/init.d
    查看init.d文件夹下的所有文件的详细信息
计划任务

由于很多计算机都会自动加载“任务计划”,因此任务计划也是病毒实现持久化驻留的一种常用手段。

  • windows:

    1
    2
    3
    4
    eventvwr:打开事件查看器,可看日志
    打开计算机管理——系统工具——任务计划程序——任务计划程序库:可查看任务计划的名称、状态、触发器等信息;
    命令行输入schtasks:可获取任务计划信息,要求是本地Administrator组的成员;
    PowerShell下输入get-scheduledtask 可查看当前系统中所有任务计划信息,包括路径、名称、状态等详细信息。
  • Linux:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    crontab -l:可查看当前任务计划
    crontab -u root -l:查看root用户的任务计划(指定用户)

    查看etc目录下的任务计划文件:一般在linux系统中的任务计划文件是以cron开头的,可以利用正则表达式的筛选出etc目录下的所有以cron开头的文件,具体表达式为/etc/cron,例如查看etc目录下的所有任务计划文件就可以输入 ls/etc/cron命令。
    /etc/crontab
    /etc/cron.d/
    /etc/cron.daily/*
    /etc/cron.hourly/*
    /etc/cron.monthly/*
    /etc/cron.weekly/
    /etc/anacrontab
其他
1
2
3
windows防火墙的入站规则和出站规则
netsh :查看
netsh firewall show state:显示当前防火墙的网络配置状态

2、进程排查

  • windows:

    1
    2
    3
    4
    5
    6
    通过任务管理器查看;
    tasklist:可显示计算机中的所有进程,可查看进程的映像名称、PID、会话等信息;
    tasklist /svc:可以显示每个进程和服务对应的情况;
    tasklist /m:查询加载的DLL
    tasklist /m wmiutils.dll :查询特定dll的调用情况
    tasklist /svc /fi “pid eq 284”:过滤器功能,eq等于、nq不等于、gt大于、lt小于、ge大于等于、le小于等于
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    netstat:可显示网络连接的信息,包括活动的TCP连接、路由器和网络接口信息,是一个监控TCP/IP网络的工具。
    端口定位程序:通过netstat定位出PID,然后用tasklist查看具体的程序,例如:netstat -ano |findstr3306
    定位出pid=6616 tasklist |find6616
    netstat -anb 3306:端口快速定位程序,需要管理员权限;

    powershell排查:对于有守护进程的进程,许确认子父进程之间的关系
    get-wmiobject win32_process | select name,processid,parentprocessid,path

    wmic命令查询:可对进程进行查询以csv格式来显示进程名称、父进程id、进程id
    wmic process get name,parentprocessid,processid/format:csv
  • Linux:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    netstat:分析可疑端口、分析可疑ip地址、可疑pid及程序进程; 
    ls -alt /proc/PID:查看PID为600的进程可执行程序;
    lsof -p PID:查看进程所打开的文件;
    kill -9 PID:结束进程;
    rm -rf filename :删除名为filename的文件;
    如果root用户都无法删除相关文件,可能是因为该文件被加上了i属性,使用lsattr filename 查看文件属性,然后用chattr -i filename 可移除i属性,进而删除文件。也有因为进程存在守护进程而无法被删除,可先将进程挂起,查杀守护进程后,再返回将进程删除。
    补充:chattr +i filename 加i属性。
    查看隐藏进程:顺序执行以下三条命令
    ps -ef | awk ‘{print}’|sort -n |uniq>1
    ls /proc |sort -n |uniq>2
    diff 1 2
    top:可用于挖矿进程排查,显示占用率较高的进程。

3、服务排查

服务可以理解为运行在后台的进程,服务可以在计算机启动时自动启动,也可暂停和重启,而且不显示任何用户界面,服务非常适合在服务器上使用,通常在为了不影响在同一天计算机上工作的其它用户,且需要长时间运行功能时使用。在应急响应中,服务作为一种运行在后台的进程,是恶意软件常用的驻留方法。

  • windows:

    1
    services.msc:打开服务窗口,查看所有的服务项,包括服务的名称、描述、状态等。
  • Linux:

    1
    2
    chkconfig --list:可查看系统运行的服务;
    service --status-all:可查看所有服务的状态;

4、文件痕迹排查

恶意软件、木马、后门都会在文件维度上留下痕迹,排查思路:

a.对恶意软件常用的敏感路径进行排查;
b.在确定了应急响应事件的时间点后,对时间点前后的文件进行排查;
c.对带有特征的恶意软件进行排查,包括代码关键字或关键函数、文件权限特征。

  • windows:

    1
    2
    敏感目录
    各个盘下的temp(tmp)相关目录,有些恶意程序释放字体(即恶意程序运行时投放出的文件)一般会在程序中写好投放的路径,由于不同系统版本的路径有所差别,但临时文件的路径相对统一,因此在程序中写好的路径一般是临时路径;
    1
    查看浏览器历史记录、下载文件和cookie信息:攻击者可能会下载一些后续攻击工具;
    1
    2
    3
    4
    5
    6
    7
    查看用户Recent文件:存储最近运行文件的快捷方式,一般在windows中的路径为: C:\Document and Settings\Administrator(系统用户名)\Recent C:\Document and Settings\Default
    User\Recent::
    Prefetch:预读取文件夹,存放系统已经访问过的文件的读取信息,扩展名为pf,可加快系统启动进程,启动:%systemroot%\prefetch
    amcache.hve:可查看应用程序执行路径、上次执行时间及sha1值。启动 :%systemroot%\appcompat\programs
    时间点查找 forfiles 攻击者可能会对时间动手脚
    webshell
    D盾、HwsKill、WebshellKill等工具对目录下的文件进行规则查询,
  • Linux:

    1
    2
    敏感目录 /tmp、 /usr/bin、 /usr/sbin:经常作为恶意软件下载目录及相关文件被替换的目录;
    ~/.ssh、/etc/ssh:经常作为后门配置的路径
    1
    2
    3
    时间点查找 
    find:可对某一时间段内增加的文件进行查找;
    stat:对文件的创建时间、修改时间、访问时间进行排查;
    1
    2
    特殊文件
    查找777权限的文件:find /tmp -perm 777
    1
    2
    3
    webshell查找
    初筛:find /var/www/ -name “*.php”
    工具:findWebshell、Scan_Webshell.py扫描排查
    1
    2
    3
    4
    5
    6
    7
    8
    对系统命令进行排查
    ls、ps可能被攻击者替换,ls -alt /bin 查看命令目录中的系统命令的修改时间进行排查;
    ls -alh /bin:查看相关文件大小,若明显偏大,则文件很可能被替换;

    linux后门检测
    工具:chkrootkit(出现infected说明有后门)、rkhunter
    排查suid程序
    find /-type f -perm -04000 -ls -uid 0 2 >/dev/null

5、日志排查

  • windows:

    1
    在运行对话框中输入eventvwr,打开事件查看器窗口,可查看windows相关日志
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    系统日志:%SystemRoot%\System32\Winevt\Logs\System.evtx 系统中的各个组件在运行中产生的各种事件

    安全性日志:%SystemRoot%\System32\Winevt\Logs\security.evtx
    记录各种安全相关的事件,登录操作、对系统文件进行创建、删除、更改等操作。

    应用程序日志:%SystemRoot%\System32\Winevt\Logs\Application.evtx

    日志常用事件id
    4624:登陆成功
    4625:登录失败
    4720:创建用户
    1
    2
    3
    4
    5
    日志分析:
    日志筛选器进行分析
    PowerShell分析
    Get-WinEvent Get-WinEvent Security -InstanceId 4625:获取安全性日志下事件id为4625的所有日志信息。
    使用工具
  • Linux:

    Linux系统日志一般在/var/log/下

    1
    2
    3
    4
    5
    /var/log/wtmp:记录登录进入、退出、数据交换、关机和重启,及last
    /var/log/cron:记录与定时任务相关的日志信息;
    /var/log/message:记录系统启动后的信息和错误日志;
    /var/log/apache2/access.log:记录apache的访问日志;
    /var/log/auth.log:记录系统授权信息,包括用户登录和使用的权限机制等;
  • 其他日志:

    1
    2
    3
    IIS日志
    %systemdrive%\inetpub\logs\logfiles
    %systemroot%\system32\logfiles\w3svc1
    1
    2
    3
    4
    5
    Apache日志
    /var/log/httpd/access.log
    /var/log/apache/access.log
    /var/log/apache2/access.log
    /var/log/httpd-access.log
    1
    2
    Nginx日志
    默认在/usr/local/nginx/logs目录下,access.log代表访问日志,error.log代表错误日志。若没在默认路径下,则可到nginx.conf配置文件中查找。
    1
    2
    3
    4
    5
    Tomcat日志 
    tomcat/log
    Vsftp日志
    /var/log/messages
    可通过编辑/etc/vsftp/vsftp.conf配置文件来启用单独的日志,启用后,可访问vsftp.log和xferlog。
    1
    2
    Weblogic日志
    有三种日志:access logserver logdomain log
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    数据库日志:
    Oracle
    select * from v$logfile:查询日志命令,默认在$ORACLE/rdbms/log目录下,
    select * from v$sql:可查询之前使用的sql
    Mysql
    默认路径:/var/log/mysql/
    可查看日志是否开启:show variables like 'general';
    开启日志:set global general_log = 'ON';
    Mssql
    一般无法查看,需要登录到SQL Server Management Studio,在管理——SQL Server日志 中查看。

三、场景

1、勒索病毒网络安全应急响应

勒索病毒主要以邮件、程序木马、网页挂马等形式进行传播。利用非对称加密对称加密算法结合对文件进行加密,被感染者一般无法解密,必须拿到解密的私钥才能

常见勒索病毒
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
WannaCry勒索病毒
2017.5.12,通过MS-17-010(永恒之蓝)大肆传播
常见后缀名:wncry
特征:启动时会连接一个不存在的URL,创建系统服务mssecsvc2.0,释放路径为windows目录
Globelmposter勒索病毒
2017.5首次出现,主要通过钓鱼的方式传播
常见后缀:auchentoshan/动物名+4444
传播方法:RDP暴力破解、邮件钓鱼、捆绑软件
特征:释放在%appdata% 或 %localappdata%
Crysis/Dharma勒索病毒
2016年出现
通过远程RDP暴力破解的方式
常见后缀:id+勒索邮箱+特定后缀
特征:勒索信位置在startup目录,样本位置在%windir%\system32/startup目录 %appdata%
GandCrab勒索病毒
2018年首次出现,受感染主机上的数据库、文档、图片、压缩包等文件将被
Satan勒索病毒
Sacrab勒索病毒
Matrix勒索病毒
Stop勒索病毒
Paradise勒索病毒
常规处置方法
  • 隔离被感染的服务器、主机

防止勒索病毒通过网络继续染其它服务器、主机,防止攻击者通过感染的服务器/主机继续操纵其它设备

具体措施

  1. 物理隔离:断网、断电,关闭服务器/主机的无线网络、蓝牙连接等,禁用网卡,并拔掉服务器/主机上的外部存储设备;
  2. 访问控制:对访问网络资源的权限进行严格控制和认证,加策略和修改登录密码;
  • 排查业务系统

检查核心业务系统和备份系统,确定感染范围。

  • 确定勒索病毒种类,进行溯源分析

从加密的磁盘中寻找勒索信息,再通过勒索病毒处置工具查看是否可以解密;

溯源分析:查看服务器/主机上的日志和样本,可疑文件,工具进行日志和样本分析;

  • 恢复数据和业务

    备份数据恢复业务

    磁盘数据恢复

  • 第三方安全公司

​ 后续防护建议
​ 服务器终端防护
​ 强密码、杀毒软件、打补丁、开启日志收集;
​ 网络防护与安全监测
​ 内网安全域合理划分,限制横向移动范围;
​ 应用系统防护及数据备份
​ 加固、备份、预案;

错误处置方法

不在中毒服务器/主机上插U盘、硬盘等移动存储设备:勒索病毒会对服务器/主机上的所有文件加密;
不要用网上的解密工具反复读/写磁盘中的文件,可能降低数据正确恢复的概率,也可能破坏原始文件;

常用工具

被攻击之后,确定勒索病毒种类,判断能否解密
奇安信勒索病毒搜索引擎:lesuobingdu.qianxin.com
360安全卫士勒索病毒搜索引擎:lesuobingdu.360.cn

勒索病毒应急思路

了解事态现状、系统架构、感染时间、确定感染面;
对已中招服务器/主机下线隔离;
未中招做好防护:关闭端口加固、补丁等等

对服务器/主机进行检查:
系统排查
账户排查
进程排查
文件排查
补丁排查
日志排查
系统日志
安全日志
网络流量排查
清除加固
对服务器/主机进行抑制和恢复:对恶意账号、进程、任务计划、启动项、服务等进行清理,删除恶意样本、打补丁、强密码、安装杀毒软件、部署流量检测设备。

如何判断系统遭遇勒索病毒攻击

业务系统无法访问;
文件后缀被篡改;
勒索信展示;
桌面上有新的文本文件;

了解勒索病毒的加密时间

推断攻击者执行勒索程序的时间轴,方便后续进行溯源。

推断攻击者执行勒索程序的时间轴,方便后续进行溯源。
Windows
通过文件修改日期初步判断(要综合判断,因为攻击者可能伪造时间)
Linux
stat:可查看Access访问、Modify内容修改、Change属性改变三个时间

2、挖矿木马网络安全应急响应

主要查看高耗能的进程

3、SSH端口爆破的应急响应方案

查看进程中的隐藏sh

欢迎关注我的其它发布渠道