应急响应—常见应急响应处置思路

2023-05-16

下图是常见应急响应处置思路的思维导图

下面将对 "常见应急响应处置思路" 进行详细的讲解

一、操作系统后门排查

排查目标:找出后门程序在哪里,找到后门是怎么启动的,尽可能发现后门修改了系统的那些地方。

Windows常见系统后门排查

1、工具列表

  • Pchunter               恶意代码检测工具
  • Process Explorer  恶意代码检测工具
  • Autoruns               显示Windows启动时自动运行的程序
  • D盾                       WebShell查杀
  • Logparser             日志分析工具

        Windows的自带命令集没有linux的强大,不能完全满足应急响应时的处置工作,所以一般来说我们都需要借助外部工具进行恶意后门分析

2、检查项目

  • 注册表启动项        查看注册表中的自启动项
  • 恶意进程               查看是否存在可疑进程和用户
  • 系统服务               查看是否存在可疑系统服务
  • 网络连接               查看是否存在可疑的网络连接
  • 计划任务               查看是否存在可疑计划任务条目

       上述的排查项,全部可以使用PChunter和Autoruns完成。

PChunter使用方法:右击,以管理员身份运行——选中 "进程" 选项,然后右键选择 "校验所有数字签名",就可以筛选出数字签名有问题的进程;同样的在PChunter的 "启动信息" 选项中,对 "启动项"、"服务"、"计划任务" 这3个项都需要校验一下数字签名,数字签名的颜色代表什么呢?

  • 黑色:表示微软的进程
  • 蓝色:表示非微软的进程
  • 粉红色:表示没有签名的模块
  • 红色:表示可疑进程,隐藏服务、被挂钩函数

        简单来说就是红色是极大可能是恶意进程,粉红色的话就需要人工再进一步判断一下,蓝色一般来说是正常企业的签名,黑色是微软自己的签名。那么黑色是不是代表就安全的呢?不一定,因为黑客如果使用cmd.exe或者powershell.exe这些命令执行的程序去启动恶意脚本,那么它的签名也会是黑色的,所以这里还是需要注意一下。
        PChunter的其他功能,比如“网络”功能也需要看一下,查看一下有没有对危险服务器建立恶意连接。
        Autoruns这个工具也挺简单,一般我们只要打开查看它的 "Everything" 选项就行了,这个选项是显示所有开机启动项的信息,如果想分类查看的话,就点击别的选项卡就行了。

3、系统日志——查看是否存在恶意登陆情况

Windows的系统日志可以用以下两种方法对其进行分析

  • 方法一:可以使用Logparser格式化后进行分析。
  • 方法二:直接打开 Windows控制面板——管理工具——事件查看器 进行分析,比如我们要筛选是否存在 3389 rdp 暴力破解行为的话,只要在 "安全" 日志中筛选事件ID为4624(登陆成功)和4625(登陆失败)的事件即可。

两种方法使用起来各有千秋,具体使用哪种还是看各自的习惯了。

4、Shift粘滞键后门

        查看C:\WINDOWS\system32\sethc.exe文件是否被替换,或者直接按5下Shift键,看看弹出来的是不是正常的系统粘滞键,如果是的话,那么就可能没有被黑客安装后门,不过也有后门会伪装成正常的粘滞键程序。

5、NTFS(ADS)数据流

检查方法:

  • 首先打开cmd,切换到要检查的目录下,使用命令 "dir /r" 检查目标目录里是否存在使用NTFS数据流隐藏的文件。(hidden、Indentifier)
  • 如果存在,就使用 "notepad 文件名:NTFS隐藏文件名" 来查看隐藏的文件的内容是什么。

        很多时候黑客会使用NTFS数据流的方式去隐藏自己的后门或者WebShell,这时就需要我们通过以上方法检查是否存在ntfs数据流隐藏的文件,从而去发现黑客遗留的后门。

Linux常见系统后门排查命令

1、检查异常账号——cat /etc/passwd

        通过检查/etc/passwd,查看有没有可疑的系统用户,这个文件是以冒号:进行分割字段,一般我们只要注意第三个字段即可,第三个字段是用户ID,也就是UID,数字0代表超级用户的UID,即这个账号是管理员账号。一般Linux只会配置一个root账号为系统管理员,当出现其他账号是系统管理员的时候,就要注意了,很可能是黑客建立的账号。

2、检查异常登陆

  • who         查看当前登录用户(tty本地登陆  pts远程登录)
  • w             查看系统信息,想知道某一时刻用户的行为
  • last          列出所有用户登陆信息
  • lastb        列出所有用户登陆失败的信息
  • lastlog      列出所有用户最近一次登录信息

3、网络连接——netstat -pantl

        通过查看网络连接,检查是否存在对外的恶意连接,这些恶意连接是哪个进程产生的,就可以判断出服务器是否被黑客入侵。

4、查看进程——ps -ef | more

        查看进程信息,进程运行参数太长或存在不可见字符时,需加 more命令 或把ps命令的结果输出到文件查看。

        查看系统进程可以有效的发现是否存在黑客运行的恶意程序。这里要注意一点,PID是进程运行的ID号,PPID是父进程号,也就是启动这个进程的程序是谁,不过我们一般只要注意PID就可以了。很多时候服务器运行的进程较多,而且当进程的参数出现不可见字符的时候,我们只用ps -ef很可能会忽略掉一些进程的启动信息,所以建议大家使用ps -ef查看进程时加一个more命令,这样就能有效的避免我刚才说到的情况。

        很多时候黑客运行的程序会做很多伪装,比如我们通过ps命令查看到一个进程名是abc,但是如果黑客经过伪装的话,启动这个程序的文件名就可能不是abc了,是其他的命令,所以我们就要通过在/proc这个内存目录来查看具体是哪个程序启动的这个进程,同样的,使用lsof -p命令我们一样能达到同样的效果

ls -la /proc/<PID>/exe    或

lsof -p <PID>

5、计划任务

  • crontab -l               列出计划任务列表
  • crontab -e              编辑计划任务,当计划任务出现不可见字符时,需要此命令才能看到具体信息
  • ls -la /var/spool/cron/          查看计划任务文件
  • more /etc/crontab               查看计划任务

        计划任务也是黑客经常会使用到的一个功能,通过查看计划任务,可以发现黑客是否在系统中添加了定期执行的恶意脚本或程序。如果发现某个计划任务是定期运行一个python脚本,但我们不知道这个python脚本是不是恶意的,这时就需要我们去查看python脚本的内容来确定它是不是一个恶意脚本了。

6、系统启动项

  • more /etc/rc.local
  • ls -l /etc/rc.d/rc<0~6>.d       优先查看/etc/rc.d/rc3.d的内容
  • more /etc/ld.so.preload       ld.so.preload是linux动态链接库,linux正常程序运行过程中,动态链接器会读取LD_PRELOAD环境变量的值和默认配置文件/etc/ld.so.preload的文件内容,并将读取到的动态链接库进行预加载,即使程序不依赖这些动态链接库。

       查看系统启动项也是一个有效发现黑客攻击的方法,一般来说我们只需要查看上述的这几个文件就行。

7、系统日志

  • /var/log/secure        SSH登陆日志、su切换用户日志,只要涉及账号和密码的程序都会记录
  • /var/log/message    记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,但因为记录的信息太杂,一般不查看。
  • /var/log/cron            计划任务日志
  • /var/log/wtmp          记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。这个文件是二进制文件,需要使用last命令来查看

        通过查看系统日志,能发现黑客究竟做了一些什么事情,不过一般我们只查看secure日志即可,这个日志能有效的发现黑客有没有通过暴力破解的方法攻破过服务器,查看日志的方式也很简单,使用cat、more、grep等命令查看即可。

8、Rootkit查杀

  • chkrootkit
  • rkhunter

        如果遇到更顽强的系统木马,比如Rootkit这类型的后门,我们就要使用一些专门的Rootkit查杀工具了,直接运行就可以开始查杀。

二、Web日志分析

目标:1.找出可能是攻击成功的真实攻击; 2.找出可能是webshell的文件

        Web日志会有很多没用的攻击日志记录,那些日志记录的都是没有攻击成功的日志信息,这些日志对我们来说的参考作用不大,所以一般可以直接忽略。

        Web日志分析会相对难一点,因为针对Web的攻击手法是最多种多样的,而Web日志所记录的信息也并不完善,所以Web日志分析会相对其他日志麻烦一点。

1、网站所在目录和网站日志

        对于Web日志分析,第一个问题就是怎么找到Web目录所在的位置,大家可能会说直接问现场的客户不就知道了。其实大多数情况下是可以直接问客户,但是很多时候现场的客户自己都不知道自己的网站目录在哪里,所以这时就要我们自己找web目录了。

常见中间件与其配置信息(Linux下):

  • Apache              /etc/httpd/conf/httpd.conf
  • Nginx                 /etc/nginx/nginx.conf
  • Tomcat               server.xml
  • Weblogic            登陆控制台查看
  • WebSphere        登陆控制台查看

       找web目录的方法很简单,只要通过查看中间件的配置文件,就能找到对应的web目录和web日志的位置。这里列出的配置文件路径不是固定的,只是默认情况下的配置文件路径。找到中间件的配置文件后,查找到相应的网站目录配置和网站日志目录配置,就能找到web目录和web日志了。

       当然还有更简单的方法,就是直接用find命令查找如php这样后缀的动态脚本文件。如 # find  / -name *.php

常见中间件与其配置信息(Windows下):

  • 前面Linux列出的所有中间件
  • IIS                     打开IIS配置查看
  • XAMPP             XAMPP目录下的htdocs目录
  • PHPStudy         PHPStudy目录下的www目录
  • ApmServ           ApmServ目录下的htdocs目录

        Windows下的中间件除了刚才讲到的Linux下常见中间件外,还有IIS和其他一键部署环境,比如XAMPP、Apmserv这些,都是Windows下常用的一键部署环境,看到这样命名的目录的时候,基本就能知道web目录在哪里。

        当然,windows下也能直接通过全盘搜索如php等脚本文件来找到web所在目录。

2、web日志分析

确定了web目录以及web日志,接下来就是对web日志进行分析了。

第一步:排除常见状态码

  • 200           正常访问,服务器已成功处理了请求。
  • 301/302   永久移动/临时移动,跳转到新的网页。
  • 400          错误的HTTP数据包,服务器不理解请求的语法。
  • 401          请求要身份验证。
  • 403          服务器拒绝请求。
  • 404          服务器找不到请求的网页。
  • 500          某个网页出错、服务器遇到错误,无法完成请求。

        Web日志中有很多无用的杂质和没有成功的攻击信息,所以在进行web日志分析时,会先排除掉一些无用信息,一般会先对301、302、400、401、403、404这几个状态码排除掉,Linux下可以使用grep -v参数进行排除。Windows下可以使用sublime或notepad++辅助分析

       web日志分析的目标就是找出可能存在的真实攻击,和找出可能是webshell的脚本文件。

       在Windows下进行web日志分析时,由于没有很好的原生命令,所以需要借助第三方编辑器去进行分析,这样会比较方便,这时就可能需要用到正则表达式来辅助我们分析。我们只需要掌握简单的正则表达式的基础,就可以完全上手进行日志分析了。

简单的正则表达式

  • \n           换行符
  • \w           匹配一个字母,数字,下划线
  • \W           除\w了以外的任意字符
  • \d           数字
  • \D           除数字之外的任意字符
  • \s           空白、空格字符
  • \S           除空白、空格的任意字符
  • ^            以某个字符串开始
  • $            以某个字符串结束
  • *            0次、1次或多次
  • ?            0次或1次
  • +            1次

第二步:筛选web日志中所述语言后缀

       查看网站是使用什么语言开发的,然后筛选出那个语言对应的后缀名。如使用PHP语言开发的网站,就筛选.php后缀的文件,因为如果网站的脚本文件是php后缀的,那么黑客攻破网站后上传的WebShell木马也会是php后缀。

        Linux系统下可以使用命令:# grep .php access_log 来筛选出php后缀的Web日志信息

第三步:开始逐条分析日志

       先使用命令  wc -l 统计筛选后的日志条数,若数量不多,则可以开始逐条分析日志。日志中重复性较大的相同类型日志可以快速忽略,当发现可能攻击成功的攻击日志时,则需要仔细分析后面的日志信息,找出可能存在的WebShell木马。

三、网站劫持类事件分析

目标:1.找出网站被劫持的原因;2.找出网站被劫持的方式;3.尽可能找到网站被劫持的源头。

方法一:

        打开Chrome浏览器的F12检查功能,选中 "NetWork(网络)" 选项,刷新存在问题的网站页面,即可看到所有网站加载的动态和静态文件,如gif、css、js等文件全部都能看到。

方法二:

       查看网站源代码,查找是否存在可能是恶意加载的js文件或javascript代码。

       当发现可疑javascript代码,并且该代码被混淆或加密过,可以使用chrome浏览器的 F12 检查功能,利用console.log()这个打印方法把混淆过的javascript代码打印出来,这样就能获得解密后的明文代码。

方法三:

       打开WireShark进行抓包,刷新存在问题的网站页面,对抓取到的PCAP数据包进行分析。这种方法一般适用于运营商的链路劫持事件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应急响应—常见应急响应处置思路 的相关文章

  • SQL版本:多表连接查询(两张表为例)

    SQL版本 xff1a 数据准备 xff1a 创建一个数据库company CREATE DATABASE IF NOT EXISTS company 创建部门表 CREATE TABLE dept id INT PRIMARY KEY A
  • 【Redis 常用五大数据类型】

    常用五大数据类型 官方获取redis常见数据类型操作命令 xff1a http www redis cn commands html 1 Redis键 key keys 查看当前库所有key 匹配 xff1a keys 1 exists k
  • 【Mysql 基础知识】

    一 引言 1 1 现有的数据存储方式有哪些 xff1f Java程序存储数据 xff08 变量 对象 数组 集合 xff09 xff0c 数据保存在内存中 xff0c 属于瞬时状态存储 文件 xff08 File xff09 存储数据 xf
  • vue3 + vite + ts + setup , 第九练 自定义指令directive的使用,简单封装一个拖动指令

    除了 Vue 内置的一系列指令 比如 v model 或 v show 之外 xff0c Vue 还允许你注册自定义的指令 xff0c 一个自定义指令被定义为一个包含类似于组件的生命周期钩子的对象 钩子接收指令绑定到的元素 1 Vue3指令
  • MyBatis框架知识点总结

    一 引言 1 1 什么是框架 xff1f 框架 xff1a 框架使用你的 xff0c 而不是你在使用框架的 框架让我们提供什么信息 xff0c 配置信息 xff0c 数据库连接用户名密码等 xff0c 你必须提供 xff0c 还得按照框架要
  • AndroidStudio Unresolved reference

    在学习Kotlin过程中 xff0c 出现了两次在activity main xml中已注册id xff0c 但是在MainActivity kt中无法找到该Button的情况 后面发现是没有在build gradle中导入 39 koti
  • Spring学习(全)

    本文目录 1 Spring概述2 IOC 控制反转2 1 简单介绍2 2 Spring的第一个程序2 3 DI入门2 3 1 XML之set注入简单类型的set注入引用类型的set注入引用类型的自动注入autowire 2 3 2 XML之
  • Python3读写dbf文本

    Python3读写dbf文本 安装环境 pip install dbf 关于dbf的文档可以在一下网址了解dbf文档 https pythonhosted org dbf 还有github的地址 https github com ethan
  • minicom的usb串口的驱动以及识别

    fire 64 fire test lsmod grep usb usbserial 49152 1 pl2303 fire 64 fire test dmesg 383 172363 usb 2 1 4 new full speed US
  • ubuntu搭建http文件服务器

    搭建的过程 sudo apt install apache2 sudo apt install apache2 sudo apt install php sudo apt get install libapache2 mod php sud
  • ubuntu搭建http文件服务器

    搭建的过程 sudo apt install apache2 sudo apt install apache2 sudo apt install php sudo apt get install libapache2 mod php sud
  • 元胞自动机-森林火灾模拟

    引入 xff1a 元胞自动机 xff0c 英文名及缩写 xff1a cellular automata xff0c CA 最初是由冯诺依曼在二十世纪五十年代为模拟生物自保的自我复制而提出的 xff0c 但是当时并未受到重视 后来才逐渐发展起
  • wsl,Ubuntu,关于解决 mysql-server : 依赖: mysql-server-5.7 但是它将不会被安装 问题

    出现问题 xff1a 安装mysql时 xff0c sudo apt span class token operator span get install mysql span class token operator span serve
  • vue3 + vite + ts + setup , 第十练 自定义hooks的使用

    Vue3 自定义Hook 主要用来处理复用代码逻辑的一些封装 这个在vue2 就已经有一个东西是Mixins mixins就是将这些多个相同的逻辑抽离出来 xff0c 各个组件只需要引入mixins xff0c 就能实现一次写代码 xff0
  • 完全去中心化的学习(Fully Decentralized Learning)

    完全去中心化的学习是一种使用区块链技术实现的机器学习方法 xff0c 其中参与者可以在不需要信任中心的情况下共同训练模型 相比于传统的集中式学习方法 xff0c 完全去中心化的学习有以下几个优点 xff1a 数据隐私性更好 xff1a 传统
  • 【Ubuntu】Ubuntu出现一直登录界面循环状况

    问题描述 xff1a 在Ubuntu中登录密码输入正确但却无法登录 xff0c 闪动以后再次回到登录界面 ubuntu版本 xff1a ubuntu 16 04 7 问题原因 xff1a 可能是 etc profile文件中PATH配置不正
  • FTPclient简单使用

    1 下载jar包 1 new一个项目 xff1a 2 进去 http mvnrepository com 3 搜说commons net 3 点进去选择版本 3 3 xff0c 复制 xff1a 第一行不要 4 新建标签复制 5 新建一个T
  • 每天一道算法练习题--Day21&& 第一章 --算法专题 --- ----------位运算

    我这里总结了几道位运算的题目分享给大家 xff0c 分别是 136 和 137 xff0c 260 和 645 xff0c 总共加起来四道题 四道题全部都是位运算的套路 xff0c 如果你想练习位运算的话 xff0c 不要错过哦 xff5e
  • 第八章 常用类

    文章目录 8 1 1包装类基本知识对于包装类来说 xff0c 这些类的用途主要包含两种 xff1a 8 1 3自动装箱和拆箱八种包装类和基本数据类型的对应关系8 1 4包装类的缓存问题String类可变的字符序列 xff1a StringB
  • Activit、Fragment的生命周期 及横竖屏切换的一些问题 及解决方案

    Activity 的生命周期 xff1a 1 onCreate 表示Activity 正在被创建 第一个方法 加载一些界面布局文件 xff0c 初始化Activity 2 onRestart 重新启动 3 onStart 当前Activit

随机推荐