当前位置: 首页 > article >正文

应急响应之入侵排查(下)

一.进程排查

1.Windows
  1. 任务管理器查看

    • 在 Windows 系统中,可通过任务管理器查看进程信息。操作步骤为:在任务管理器界面,于 “查看” 选项中选择 “选择列”,随后添加 “映像路径名称” 和 “命令行”,以此查看更多进程详情。
  2. 使用 tasklist 命令

    1. 查看进程与服务对应情况:使用命令 tasklist /svc
    2. 针对某些 DLL 恶意进程:执行 tasklist /m
    3. 查看调用特定模块进程:若要查看调用 ntdll.dll
    4. 利用 /fi 进行过滤:如 tasklist /svc/fi "PID eq 2820"
  3. 通过 netstat 进行排查

    1. 查看当前网络连接:输入 netstat -ano | findstr "ESTABLISHED"

    2. 联合定位程序:先通过 “netstat” 定位出 PID,再借助 “tasklist” 命令进行程序定位,示例:

      • “wmic process where name="firefox.exe" get processid,executablepath,name”
      • “wmic process where processid=602444 get processid,executablepath,name”
    1. 快速定位端口对应程序(需管理员权限):netstat -anb
  4. 使用 Powershell 进行排查

    • 进入 Powershell 后,输入 get-wmiobject win32_process | select name,processid,parentprocessid,path​ ,可获取进程的相关详细信息。


  5. wmic 查询

    1. 以 csv 格式显示数据:

      • wmic process list full /format:csv
      • wmic process get name,parentprocessid,processid /format:csv
      • wmic process get executablepath,processid /format:csv
    1. 根据进程 ID 查询:wmic process where processid=2020 get executablepath,processid /format:csv
    2. 根据进程名称查询:wmic process where name="httpd.exe" get executablepath,processid /format:csv
2.Linux
  1. 查看进程:netstat -anptl

  2. 查看特定进程可执行程序及打开文件:

    • 先通过 “netstat” 查看到如 “3364” 进程,再执行 “ls -alt /proc/3364” 查看其可执行程序。
    • 查看进程打开的文件则使用 “lsof -p 3364”。
  1. 处理恶意进程:

    • 若判断为恶意进程,可杀掉进程:kill -9 3364
    • 接着删除可疑木马,执行 rm -rf 木马文件
  1. 处理文件属性问题:

    • 若无法删除文件,可能文件被加上 “i” 属性,此时先使用 lsattr 文件名​ 查看属性。
    • 再用 chattr -i 文件名​ 移除 “i” 属性,之后便可删除文件。
  1. 查杀守护进程:若进程无法删除,可疑先查杀守护进程,然后再尝试删除。
  2. 查看资源占用率高的进程:通过 “top” 命令查看相关资源占用率比较高的进程。

二.服务排查

1.Windows
  • 在 Windows 下,按 Win + R 调出 “运行” 对话框,输入 “services.msc” 回车,就能打开 “服务” 窗口,查看服务名、描述、状态等信息。
2.Linux
  1. 基于 Red Hat 系

    • 对 Red Hat 系列 Linux 系统,用 chkconfig --list​ 可查看系统运行服务,但它有系统适配性,仅适用于 Red Hat 系及其兼容系统。
  2. Debian 系(如 Ubuntu)及通用方式

    • 在 Debian 系(如 Ubuntu)中,因系统特性无 “chkconfig” 命令,可用 service --status-all​ 查看所有服务即时状态。


三.文件痕迹排查

确定应急响应事件时间点后,对该时间点前后的文件以及带有特定特征的恶意软件进行排查。特征包括代码关键字、关键函数、文件权限特征等。

1.敏感目录
  1. Windows:

    • 检查各个盘下的 temp(tmp)相关目录,恶意程序释放子体常投放于此,可查看临时目录下是否存在异常文件。对于人工入侵事件,需重点排查浏览器历史记录、下载文件和 cookie 信息。

      • 查看用户 Recent 文件:Recent 文件存储最近运行文件快捷方式,可分析排查可疑文件,存储位置为 C:\Users\Administrator\Recent、C:\Users\ 用户名 \Recent,或通过 “运行” 输入 “recent”。

      • 预读取文件夹查看:Prefetch 是预读取文件夹,存放系统访问过文件的预读取信息,扩展名为 pf,可加快系统启动进程。Windows 7 可保存最近 128 个可执行文件信息,Windows 8 和 Windows 10 可记录最近 1024 个可执行文件,位置为 % SystemRoot%\Prefetch\​,可在 “运行” 对话框输入 prefetch​ 或 % SystemRoot%\Prefetch\​,或打开 C:\Windows\Prefetch​。


  2. linux:
    常见敏感目录有 /tmp​ 目录和命令目录 /usr/bin​、/usr/sbin​ 等,常作为恶意软件下载或文件被替换目录;~/.ssh​ 以及 /etc/ssh​ 也常作为后门配置路径,需重点排查。

2.时间点

介绍:确认应急响应事件时间点,排查该时间点前后文件变动情况以缩小范围。

  1. Windows

    通过列出攻击日期内新增的文件来发现相关恶意软件。在 Windows 系统中,使用 forfiles​ 命令查找相应文件。

    • 命令示例:

      • 显示对 2024/1/17 后的创建的 txt 文件进行搜索:forfiles /m *.txt /d +2024/1/17 /s /p c:\ /c "cmd /c echo @path @fdate @ftime" 2>null​
      • 显示 2024/1/17 之后 pptx 名字包含” 网络 “的文件:forfiles /m *网络*.pptx /p f:\ /d +2024/1/17 /s /c "cmd /c echo @path @fdate @ftime" 2>null​
      • 显示 2024/1/17 后所有访问过的文件:forfiles /m *.* /p f:\ /d +2024/1/17 /s /c "cmd /c echo @path @fdate @ftime" 2>null​
      • 注:2>null​ 表示将错误输出重定向到空设备,即不输出错误信息。
    • 排查注意事项:对文件的创建时间、修改时间、访问时间进行排查。对于人工入侵的应急响应事件,攻击者可能会使用如 “菜刀” 这类工具修改文档时间以掩饰入侵行为、规避排查策略。若文件相关时间存在明显逻辑问题(如创建时间为 2024,修改时间为 2022),则需重点排查,很可能是恶意文件。

  2. Linux

    通过列出攻击日期内变动的文件来发现相关恶意文件,使用 find​ 命令对某一时间内增加的文件进行查找。

    • ​find​ 命令参数说明:

      • ​find​:在指定的目录下查找文件。
      • ​-type b/d/c/p/l/f​:查找块设备、目录、字符设备、管道、符号链接、普通文件。
      • ​-mtime -n +n​:按文件更改时间来查找文件,-n​ 指 n 天以内,+n​ 指 n 天前。
      • ​-atime -n +n​:按文件访问时间来查找。
      • ​-ctime -n +n​:按照文件创建时间来查找。
    • 命令示例:

      • 查找一天内新增的 txt 文件:find / -ctime 0 -name ".*txt"​
      • 查找 3 天内新增的 txt 文件:find / -ctime -3 -name "*.txt"​
      • 查看目录按照时间排序:ls -alt | head -n 10​(查看前 10 条的内容)
    • 时间排查要点:对文件的创建时间、修改时间、访问时间进行排查。使用 stat​ 命令可以查看文件详细信息,若修改时间距离应急响应事件日期接近且有线性关联,说明文件有可能被篡改。

  3. Linux特殊文件

    • 特殊权限文件查找:例如,查找 /tmp​ 目录下权限为 777 的文件:find /tmp -perm 777​
    • webshell 查找:webshell 排查可以通过文件、流量、日志分析。基于文件的命名特征和内容特征操作相对较高。例如查找 /var/www​ 下所有 php 文件:find /var/www/ -name "*.php"​;进一步对找到的 php 文件进行特定内容搜索:find /var/www/ -name "*.php" | xargs egrep "assert|eval|base64_decode|shell_exec|passthru|(\$\_\POST\["​
3.WebShell

WebShell(网站入侵脚本)在通过上述时间点相关文件筛选方法之后,还可以使用 D 盾、HwsKill、webshellKill 等工具对目录下的文件进行规则查询。

四.日志分析

1.Windows日志分析
  1. 日志文件位置

    • Windows XP/windows server 2003:

      • 系统日志:C:\Windows\System32\config\SysEvent.evt
      • 安全性日志:C:\Windows\System32\config\SecEvent.evt
      • 应用程序日志:C:\Windows\System32\config\AppEvnet.evt
    • Windows vista/windows 7/windows8/windows10/Windows server2008 之后:

      • 系统日志为 C:\Windows\System32\winevt\Logs\System.evtx
      • 安全性日志为 C:\Windows\System32\winevt\Logs\Security.evtx
      • 应用程序日志为 C:\Windows\System32\winevt\Logs\Application.evtx
      • 或者打开 “运行”,输入 eventvwr.msc
  2. 不同类型日志介绍

    • 系统日志:指 Windows 系统中的各个组件在运行中产生的各种事件,可分为系统中各种驱动程序、操作系统的多种组件及应用软件在运行中出现重大问题等情况,如重要数据丢失、错误及系统崩溃行为等。
    • 安全性日志:主要记录各种与安全相关的事件,包括各种登录与退出系统的成功或不成功信息,以及对系统中各种重要资源进行的操作。
    • 应用程序日志:主要记录各种应用程序产生的各类事件,如 SQL server 数据库程序在受到暴力破解攻击时会有相关记录及详细信息。
    • 其他日志:在应急响应中经常也会用到 PowerShell 日志。
  3. 日志分析方法

    • 通过内置的日志筛选器进行分析:使用日志筛选器可以对记录时间、事件级别、任务类别、关键字等信息进行筛选。
    • 使用 Powershell 对日志进行分析:在使用 powershell 进行日志分析时,需要管理员权限。常用命令有 Get-EventLog​(只获取传统事件日志)、Get-WinEvent​(从传统事件日志和新 windows 事件日志技术生成的事件日志中获取事件,还会获取 windows 事件跟踪(ETW)生成的日志文件中的事件,需要 windows vista/windows server2008 及更高版本的 windows 系统,还需要.NET Framework 3.5 及以上版本)。例如获取安全性日志下事件 ID 为 4624(登录成功)的所有日志信息:get-eventlog security -instanceid 4624​;get-winevent -filterhashtable @{logname='security';id='4624'}​。
2.Linux日志分析
  1. 日志存放位置

    Linux 系统中日志一般存放在目录 /var/log/​ 下,具体功能如下:

    • ​/var/log/wtmp​:记录登录进入、退出、数据交换、关机和重启,即 last,是一个二进制文件,可以使用 last 查看。
    • ​/var/log/cron​:记录与定时任务相关的日志信息。
    • ​/var/log/messages​:记录系统启动后的信息和错误日志,使用 cat /var/log/messages​ 查看。
    • ​/var/log/apache2/access.log​:记录 Apache 的访问日志。
    • ​/var/log/auth.log​:记录系统授权信息,包括用户登录和使用的权限机制等。
    • ​/var/log/userlog​:记录所有等级用户信息的日志。
    • ​/var/log/xferlog(vsftpd.log)​:记录 linux FTP 的日志。
    • ​/var/log/lastlog​:记录登录的用户,可以使用命令 lastlog 查看。
    • ​/var/log/secure​:记录大多数应用输入的账户和密码,以及登录成功与否。
    • ​/var/log/faillog​:记录登录系统不成功的账号信息。
    • ​ls -alt /var/spool/mail​:查看邮件相关记录文件。
    • ​cat /var/spool/mail/root​:可发现对 80 端口的攻击行为(当 web 访问异常时,及时向当前系统配置的邮箱地址发送报警邮件)。
  2. 日志分析方法

    对 Linux 系统日志分析主要使用 grep​、sed​、sort​、awk​ 等命令。查看日志的方法如下:

    • 查看最后 10 行日志:tail -n 10 test.log​。
    • 查看 10 之后的所有日志:tail -n +10 test.log​。
    • 查询头 10 行的日志:head -n 10 test.log​。
    • 查询除了最后 10 条的所有日志:head -n -10 test.log​。
3.其他日志
  1. IIS日志位置

    • %SystemDrive%\inetpub\logs\LogsFiles
    • %SystemRoot%\System32\LogFiles\W3SVC1
    • %SystemDrive%\inetpub\logs\LogFiles\W3SVC1
    • %SystemDrive%\Windows\System32\LogFiles\HTTPERR
  2. Apache 日志位置

    • /var/log/httpd/access.log
    • /var/log/apache/access.log
    • /var/log/apache2/access.log
    • /var/log/httpd-access.log
  3. Nginx日志位置

    • 默认在 /usr/local/nginx/logs​ 目录下,accessl.log​ 代表访问日志,error.log​ 代表错误日志,若没有在默认路径下,则可以到 nginx.conf 配置文件中查找。
  4. Tomcat日志位置

    • 默认在 TOMCAT_HOME/logs/​ 目录下,有 catalina.out​、catalina.YYYY-MM-DD.log​、localhost.YYYY-MM-DD.log​、localhost_access_log.YYYY-MM-DD.txt​、hostmanager.YYYY-MM-DD.log​、manager.YYYY-MM-DD.log​ 等几类日志。
  5. Weblogic日志位置

    在默认情况下,WebLogic 有三种日志,分别是 access log、server log 和 domain log。

    • access log 的位置:$MW_HOME\user_projects\domains<domain_name>\server<server_name>\logs\access.log
    • server log 的位置:$MW_HOME\user_projects\domains<domain_name>\server<server_name>\logs<server_name>.log
    • domain log 的位置:$MW_HOME\user_projects\domains<domain_name>\server<adminserver_name>\logs<domain_name>.log
  6. 数据库日志

    • Oracle 数据库:使用 select * from v$logfile​ 命令,可查询日志路径,在默认情况下,日志文件记录在 $ORACLE/rdbms/log​。使用 select * from v$sql​ 命令,查询之前用过的 SQL。
    • MySQL 数据库:使用 show variables like '%log_%'​ 命令,可查看是否启用日志,如果日志已开启,则默认路径为 /var/log/mysql​,使用 show variables like '%general%'​ 命令,可查看日志位置。
    • MsSQL 数据库:一般无法直接查看,需要登录到 SQL Server Management Studio,在 “管理 - SQL Server 日志” 中进行查看。

http://www.kler.cn/a/500872.html

相关文章:

  • 31_搭建Redis分片集群
  • 《Spring Framework实战》3:概览
  • QT中引入OpenCV库总结(qmake方式和cmake方式)
  • 79 Openssl3.0 RSA公钥加密数据
  • scala基础学习_方法函数
  • maven多模块项目编译一直报Failure to find com.xxx.xxx:xxx-xxx-xxx:pom:1.0-SNAPSHOT in问题
  • VSCode 更好用的设置
  • 2025-1-9 QT 使用 QXlsx库 读取 .xlsx 文件 —— 导入 QXlsx库以及读取 .xlsx 的源码 实践出真知,你我共勉
  • el-date-picker 禁用一个月前、一个月后(当天之后)的时间 datetimerange
  • ssh链接飞牛NAS的时候出现WARNING提示无法正常登录!按照这个可以解决
  • 数据结构与算法之二叉树: LeetCode 700. 二叉搜索树中的搜索 (Ts版)
  • 【网络云SRE运维开发】2025第2周-每日【2025/01/10】小测-【第10章 ACL理论和实操考试】解析
  • Golang——channel
  • DS内排—堆排序
  • LeetCode 521最长特殊序列
  • 【STM32-学习笔记-3-】TIM定时器
  • 【C++开源库】Boost.Asio网络库使用介绍
  • 大模型训练(2):内存开销
  • 网络安全-网站协议请求报文(基础篇)
  • NVIDIA Clara平台助力医学影像处理:编程案例与实践探索(下)
  • Word表格内容批量写入Excel
  • 动态规划【打家劫舍】
  • 【python爬虫入门教程13--selenium的自动点击 --小小案例分享】
  • 挖掘用户价值:链动2+1模式、AI智能名片与S2B2C商城小程序的应用研究
  • tensor core实现flash_attn_mma_share_kv源码分析
  • WebSocket、SSE(Server-Sent Events)、HTTP 和 Axios关系总结