应急响应:系统入侵排查指南

目录

系统基本信息排查

Windows系统排查

Linux系统排查

CPU信息

操作系统信息

载入模块排查

用户排查

Windows系统用户排查

排查所有账户

Linux用户排查

root账户排查

查看所有可登录账户  

查看用户错误的登录信息

查看所有用户最后登录信息

排查空口令账户

启动项排查

Windows系统启动项排查

任务管理器

注册表排查

Linux系统启动项排查

计划任务排查

Windows系统计划任务排查

计划任务程序库

Powershell命令查看

Linux计划任务排查

日志排查

Windows系统日志排查

日志位置

系统日志

安全性日志

应用程序日志

日志筛选器分析日志

第三方日志分析工具:FullEventLogView       Event Log Explorer

Linux系统日志排查

日志位置 /var/log

其它应用程序位置

进程排查

Windows系统进程排查

任务管理器

tasklist命令查询

Linux进程排查

服务排查

Windows服务排查

Linux服务排查


系统基本信息排查

Windows系统排查

命令行输入 msinfo32 ,就会打开系统信息窗口,可以显示本地计算机的硬件资源、组件、软件环境、正在运行的任务、服务、系统驱动程序、加载模块、启动程序等。

重点关注以下几个位置即可

Linux系统排查

CPU信息

命令行输入 lscpu 命令,查看CPU相关信息

操作系统信息

命令行输入 uname -a ,查看当前操作系统信息

命令行速录 cat /proc/version 命令,查看Linux版本

载入模块排查

命令行速录 lsmod 命令,查看Linux已载入模块信息

用户排查

攻击者会采用的方法主要有如下几种:

  1. 直接建立一个新的账户(有时是为了混淆视听,账户名称与系统常用名称相似)
  2. 激活一个系统中的默认账户,但这个账户是不经常使用的
  3. 建立一个隐藏账户 (在 Windows 系统中,一般在账户名称最后加$)

Windows系统用户排查

关于Windows系统的用户,用户组管理可以参考这篇文章:应急响应之系统排查方法_世界尽头与你的博客-CSDN博客

排查所有账户

黑客创建的某些隐藏账户通过dos指令无法发现, 但是当我们查看注册表时就可以发现

通过注册表检查是否存在账户名为“xxx$”或修改注册表创建的隐藏账户,再检查是否存在可疑账户,并进行禁用

注册表路径:

给SAM目录添加当前用户可读写属性

HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names

同时,在此项下导出所有以 00000 开头的项,将所有导出的项与 000001F4 (该项对应Administrator用户)导出内容做比较,若其中的 F 值相同,则表示可能为克隆账户

命令行输入 wmic useraccount get name,SID 查看系统中的用户信息

Linux用户排查

命令行输入 cat /etc/passwd 查看所有用户信息

用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell

最后显示的 /bin/bash 表示该用户可登录 ; sbin/nologin  不可登录

root账户排查

输入命令 awk -F: '{if($3==0) print $1}' /etc/passwd  可查询可登录账户 UID 为0的账户,root是 UID为0的可登录账户,如果出现其他为 0 的账户,就要重点排查

查看所有可登录账户  

命令行输入 cat /etc/passwd | grep '/bin/bash' 或者 cat /etc/passwd | grep '/bin/zsh'

查看用户错误的登录信息

命令行输入 lastb  可查看显示用户错误的登录列表,包括错误的登录方法、IP 地址、时间等

查看所有用户最后登录信息

命令行输入 lastlog  

排查空口令账户

命令行输入 awk -F: 'length($2)==0 {print $1}' /etc/shadow

如果有用户是空口令就会显示出来

启动项排查

启动项是系统开机时在前台或者后台运行的程序,攻击者有可能通过启动项使用病毒后门等实现持久化控制。

Windows系统启动项排查

任务管理器

命令行输入 msconfig

注册表排查

很多病毒木马通过注册表实现持久化驻留

开机启动项排查:命令行输入 regedit 即可

注册表中重点关注以下三个:

HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\run 
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce

查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。

Linux系统启动项排查

命令行输入 ls -alt /etc/init.d

计划任务排查

Windows系统计划任务排查

计划任务程序库

命令行输入  taskschd.msc  可以查看任务的名称,状态,触发器等信息

Powershell命令查看

Powershell命令行输入  Get-ScheduledTask  可以查看计划任务的路径,名称,状态

Powershell命令行输入  schtasks

Linux计划任务排查

查看当前的计划任务 crontab -l

查询到一个挖矿恶意程序的任务计划设置,其会每隔 12 分钟远程下载恶意网站上的 crontab.sh 脚本文件

日志排查

Windows系统日志排查

日志位置

在Windows系统中,日志文件包括:系统日志、安全性日志及应用程序日志,其位置如下。

在Windows 2000专业版/Windows XP/Windows Server 2003系统中:

系统日志的位置为:
C:\WINDOWS\System32\config\SysEvent.evt
安全性日志的位置为:
C:\WINDOWS\System32\config\SecEvent.evt
应用程序日志的位置为:
C:\WINNT\System32\config\AppEvent.evt

在Windows Vista/Windows7/Windows8/Windows10/Windows Server2008及以上版本系统中:

系统日志的位置为:
%SystemRoot%\System32\Winevt\Logs\System.evtx
安全性日志的位置为:
%SystemRoot%\System32\Winevt\Logs\Security.evtx
应用程序日志的位置为:
%SystemRoot%\System32\Winevt\Logs\Application.evtx

系统日志

系统日志主要是指 Windows 系统中的各个组件在运行中产生的各种事件。这些事件一般可以分为:系统中各种驱动程序Q在运行中出现的重大问题、操作系统的多种组件在运行中出现的重大问题及应用软件在运行中出现的重大问题等。这些重大问题主要包括重要教据的丢失、错误,以及系统产生的崩溃行为等

例如:事件ID=10016

安全性日志

安全性日志主要记录了各种与安全相关的事件。构成该日志的内容主要包括:各种登录与退出系统的成功或不成功的信息,对系统中各种重要资源进行的各种操作,如对系统文件进行的创建、删除、更改等操作

应用程序日志

应用程序日志主要记录各种应用程序所产生的各类事件。例如,系统中 SQL Server 数据库程序在受到暴力破解攻击时,日志中会有相关记录

 日志常用ID

 登录相关事件ID

日志筛选器分析日志

第三方日志分析工具:FullEventLogView       Event Log Explorer

Linux系统日志排查

日志位置 /var/log

可以使用 cat 命令查看 

/var/log/wtmp:记录登录进入、退出、数据交换、关机和重启,即 last。
/var/log/cron:记录与定时任务相关的日志信息。
/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:记录登录系统不成功的账号信息。

其它应用程序位置

IIS日志位置

%SystemDrive%\inetpub\logs\LogFiles
%SystemRoot%\System32\LogFiles\W3SVC1
%SystemDrive%\inetpub\logs\LogFiles\W3SVC1
%SystemDrive%\Windows\System32\LogFiles\HTTPERR

Apache日志位置

/var/log/httpd/access.log
/var/log/apache/access.log
/var/log/apache2/access.log
/var/log/httpd-access.log

Nginx日志位置

默认在 /usr/local/nginx/Togs 目录下,access.log 代表访问日志error.log 代表错误日志。若没有在默认路径下,则可以到nginx.conf 配置文件中香找

Tomcat 日志的位置:
默认在 TOMCAT HOME/Logs/ 目录下,有 catalina.out、catalina.YYYY-MM- DD.og、localhost.YYYY-MM-DD.og.ocalhost access log.YYYY-MM-DD.txt、host-manager.YYYY-MM-DD.g、manager.YYYY-MM-DD.log 等几类日志

WebLogic 日志的位置:
在默认情况下,WebLogic 有三种日志,分别是 access og、server log 和 domain log

access.log
$MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\access.log

server.log
$MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\<server_name>.log

domain.log
$MW_HOME\user_projects\domains\<domain_name>\servers\<adminserver_name>\logs\<domain_name>.log

进程排查

Windows系统进程排查

对于 Windows 系统中的进程排查,主要是找到恶意进程的 PID、程席路径,有时还需要找到 PPID (PID 的父进程)及程序加载的DLL。对于进程的排查,一般有如下几种方法。

任务管理器

tasklist命令查询

命令行输入 tasklist 可以显示计算机上的所有进程

命令行输入 tasklist /m 可显示进程加载DLL情况

tasklist /m ntdll.dll 查看特定DLL调用的进程

netstat可以显示网络连接信息

命令行输入命令  netstat -ano | findstr "ESTABLISHED"  定位可疑的ESTABLISHED

PID=12306有大量的网络连接

命令行输入 tasklist | find "12306" 查看具体的程序

Linux进程排查

命令行输入 netstat 网络连接命令,分析可疑端口,可疑IP,可疑PID

PID=2963存在恶意外链的情况

根据 PID 的值,利用  ls -alt /proc/PID  命令,可查看其对应的可执行程序

也可以利用  Lsof -D PID  命令,查看进程所打开的文件。使用  Lsof -p 2963  命令,可查看 PID 为2963 的进程所打开的文件,发现文件mbrn 为可疑文件

命令行输入指令,杀死进程  kill -9 PID  kill -9 2535

命令行输入指令,删除文件  rm -rf filename   rm -rf mbrn

如果 root 用户都无法删除相关文件,那么很可能是因为该文件被加上了 i 属性。使用 Lsatter filename  命令,可查看文件属性,然后使用  chattr -i filename   命令,可移除 i 属性,进而删除文件。也有的进程因为存在守护进程而无法删除,我们可以先把进程挂起,查杀守护进程后,再返回将进程删除

有时攻击者会隐藏进程,需要学会查看隐藏进程,一次输入以下指令即可查看

ps -ef  awkprint sort -n uniq >1

ls /proc sort -n uniq >2

diff 1 2

服务排查

Windows服务排查

命令行输入 services.msc ,之后会打开服务窗口,查看所有服务项,名称,描述,状态

Linux服务排查

命令行输入 chkconfig --list  查看系统运行的服务

其中,0、1、2、3、4、5、6 表示等级,具体含义如下:

  • 1 表示单用户模式,
  • 2 表示无网络连接的多用户命令行模式;
  • 3 表示有网络连接的多用户命令行模式
  • 4表示不可用;
  • 5 表示带图形界面的多用户模式:
  • 6 表示重新启动。

命令行输入 service --status-all  可以查看所有服务的状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/32730.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Flutter】如何在 Flutter 中获取设备 ID

文章目录 一、 前言二、 设备 ID 的重要性1. 什么是设备 ID2. 设备 ID 的作用 三、 在 Flutter 中获取设备 ID1. 需要的工具和库2. 简单代码示例3. 完整可以运行的代码 四、 注意事项1. 权限问题2. 设备兼容性问题 五、 总结 一、 前言 在移动应用开发中&#xff0c;有时我们需…

面试官: 请你讲下AMS在Android起到什么作用……

心理分析&#xff1a;这道题在发生在大多数场景下。面对这道题 很多求职很茫然&#xff0c;不知道该如何说起。AMS本身比较复杂难以理解。工作多年也很难弄清AMS的作用&#xff0c;其实我们大可从以下几点入手组件启动、进程切换、Crash异常入手 求职者:AMS难以表述 我们就从最…

【机器学习】PCA案例的python实现

一、说明 虽然可以通过更改优化算法来加快机器学习算法的拟合速度&#xff0c;但加快算法速度的更常用方法是使用主成分分析 &#xff08;PCA&#xff09;。如果您的学习算法由于输入维度太高而太慢&#xff0c;那么使用 PCA 加速它可能是一个合理的选择。这可能是PCA最常见的应…

正则表达式-捕获组,命名捕获组,非捕获组

正则表达式的作用 测试目标字符串是否符合规则 返回true/false按照规则从目标字符串提取内容 返回匹配的数组 在线测试工具 regex101: build, test, and debug regexRegular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, …

【单片机】STM32F103C8T6 最小系统板原理图

STM32F103C8T6是一款基于ARM Cortex-M3内核的32位微控制器&#xff0c;由STMicroelectronics&#xff08;ST&#xff09;公司生产。它是STMicroelectronics的STM32系列微控制器中的一员&#xff0c;被广泛应用于嵌入式系统和电子设备中。 STM32F103C8T6单片机的主要特点和资源…

基于.Net6使用YoloV8的分割模型

前言 在目标检测一文中&#xff0c;我们学习了如何处理Onnx模型&#xff0c;并的到目标检测结果&#xff0c;在此基础上&#xff0c;本文实现基于.Net平台的实例分割任务。 执行YoloV8的分割任务后可以得到分割.pt模型。由于Python基本不用于工业软件的部署&#xff0c;最终还…

SpringBoot 如何使用 @RequestBody 进行数据校验

SpringBoot 如何使用 RequestBody 进行数据校验 在 Web 开发中&#xff0c;前台向后台发送数据是非常常见的场景。而在 SpringBoot 框架中&#xff0c;我们通常使用 RequestBody 注解来接收前台发送的 JSON 数据&#xff0c;并将其转化为 Java 对象。但是&#xff0c;接收到的…

Zookeeper集群的特点

一、Zookeeper集群的特点 Zookeeper:一个领导者 (Leader)&#xff0c;多个跟随者 (Follower) 组成的集群集群中只要有半数以上节点存活&#xff0c;Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器全局数据一致:每个Server保存一份相同的数据副本&#xff0c;C…

git——使用ssh连接远程仓库

文章目录 前言一. 获取邮箱和密码1. 本地配置你的名字和邮箱2. 使用命令获取你本地的邮箱和密码 二、生成ssh公钥1.任意一个文件夹路径打开Git Bash Here并输入以下命令连按三次回车2. 根据上面红框部分的地址打开文件夹3. 打开并查看id_rsa.pub 文件 三、在GitHub上连接ssh1. …

UE5.1.1 C++从0开始(15.作业4个人作业分享)

教程链接&#xff1a;https://www.bilibili.com/video/BV1nU4y1X7iQ 好吧这个作业应该是之前写的&#xff0c;但是我发现我没写&#xff0c;后面我又回去自己写了一遍再看代码&#xff0c;感觉上大差不差&#xff0c;各位可以看着我的和老师的还有自己的对比下。 SBTService_…

[LeetCode周赛复盘] 第 107 场双周赛20230624

[LeetCode周赛复盘] 第 107 场双周赛20230624 一、本周周赛总结6898. 字符串连接删减字母1. 题目描述2. 思路分析3. 代码实现 6895. 构造最长的新字符串1. 题目描述2. 思路分析3. 代码实现 6898. 字符串连接删减字母1. 题目描述2. 思路分析3. 代码实现 6468. 统计没有收到请求…

Consul 理解

Consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案&#xff0c;不再需要依赖其他工具&#xff08;比如ZooKeeper等&#xff09;。服务部署简单&#xff0c;只有一…

(转载)支持向量机(support vector machine, SVM)的分类(matlab实现)

支持向量机(support vector machine,SVM)是一种新的机器学习方法&#xff0c;其基础是Vapnik 创建的统计学习理论(statistical learning theory,STL)。统计学习理论采用结构风险最小化(structural risk minimization,SRM)准则&#xff0c;在最小化样本点误差的同时&#xff0c;…

HTML点击显示、点击隐藏details 标签

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><details> <summary>Copyright 1999-2011.</summary> <p> - by Refsnes Da…

Redis数据类型

Redis数据类型 一、String数据类型1、概述2、实验 二、List数据类型1、概述2、实验 三、Hash数据类型&#xff08;散列类型&#xff09;1、概述2、实验 四、Set数据类型&#xff08;无序集合&#xff09;1、概述2、应用范围3、实验 五、Sorted Set数据类型&#xff08;zset、有…

JAVA开发与运维(怎么通过docker部署微服务jar包)

目标&#xff1a; 通过docker的方式部署微服务。 一、背景&#xff1a; 我们通过java开发的微服务可以打成jar包&#xff0c;我们可以直接通过裸机部署&#xff0c;也可以通过docker来部署&#xff0c;本文介绍通过docker来部署微服务。 二、首先我们介绍一下docker的发展过程…

2022 年第十二届 MathorCup 高校数学建模挑战赛D题思路(移动通信网络站址规划和区域聚类问题)

目录 一、前言 二、问题背景 三、问题 四、解题思路 &#xff08;1&#xff09;针对问题1&#xff1a; &#xff08;2&#xff09;针对问题2&#xff1a; &#xff08;3&#xff09;针对问题3&#xff1a; 五、附上几个典型代码 &#xff08;1&#xff09;K-means算法…

【HTTP 协议】掌握 Web 的核心技术

哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a;保护小周ღ 谈起 HTTP 协议&#xff08;超文本传输协议&#xff09;&#xff0c;不知道大家第一次是从什么地方了解到这个协议的呢&#xff1f;在真实的网络环境中网络协议的种类非常多&#xff0c;其中有一些耳熟能详的…

深入解析大型语言模型:从训练到部署大模型

简介 随着数据科学领域的深入发展&#xff0c;大型语言模型—这种能够处理和生成复杂自然语言的精密人工智能系统—逐渐引发了更大的关注。 LLMs是自然语言处理&#xff08;NLP&#xff09;中最令人瞩目的突破之一。这些模型有潜力彻底改变从客服到科学研究等各种行业&#x…

SpringSecurity实现Remember-Me实践

【1】基于会话技术的实现 也就是基于Cookie的实现&#xff0c;用户信息通过某种规则进行加密然后生成一个字符串设置为cookie。 ① 登录页面 这里name"remember-me"表示“记住我”的复选框&#xff0c;默认key是remember-me。 <form action"/user/login&…
最新文章