护网蓝队之应急响应(非常详细)零基础入门到精通,收藏这一篇就够了
蓝队技术栈Linux入侵排查系统排查在Linux系统中,检查历史命令记录是安全审计的重要步骤之一,它可以帮助您了解系统上用户(包括潜在的黑客)的活动。以下是对您描述的重新表述和补充:检查历史命令首先,您需要以具有足够权限的用户身份(如root用户或具有sudo权限的用户)登录到服务器上。在命令行界面,输入history命令可以列出当前用户的历史命令记录。如果您想查看特定数量的最近命令,可以使用hi
蓝队技术栈
Linux入侵排查
系统排查
一、查看历史命令
在Linux系统中,检查历史命令记录是安全审计的重要步骤之一,它可以帮助您了解系统上用户(包括潜在的黑客)的活动。以下是对您描述的重新表述和补充:
检查历史命令
1、登录服务器:
首先,您需要以具有足够权限的用户身份(如root用户或具有sudo权限的用户)登录到服务器上。
2、使用history命令查看历史命令:
在命令行界面,输入history命令可以列出当前用户的历史命令记录。如果您想查看特定数量的最近命令,可以使用history 数字#,其中#是您想查看的命令数量。
3、查看.bash_history文件:
.bash_history文件位于每个用户的家目录下(对于root用户是/root/.bash_history,对于普通用户则是/home/用户名/.bash_history)。使用cat、less或tail等命令可以查看文件内容。例如:
<table><tbody style="-webkit-font-smoothing: antialiased;list-style: none;scrollbar-width: none;line-height: 24px;"><tr style="-webkit-font-smoothing: antialiased;list-style: none;scrollbar-width: none;line-height: 24px;"><td data-line-number="3" style="padding: 0px;-webkit-font-smoothing: antialiased;list-style: none;scrollbar-width: none;line-height: 24px;word-break: break-all;"><br></td></tr></tbody></table>
cat /root/.bash_history # 或者对于普通用户
cat /home/用户名/.bash_history
4、排查可疑活动:
在查看历史命令时,特别要注意以下几种类型的命令:
-
wget 或 curl:这些命令可能被用于下载恶意文件或脚本。
-
ssh:如果看到非预期的SSH连接,可能是黑客在尝试连接其他系统。
-
tar, zip, unzip:这些命令可能被用于打包或解压文件,但要小心数据泄露或恶意软件的传播。
-
系统配置命令:如vi, nano, sed, awk, find, grep等,这些命令可能被用于修改系统配置或搜索敏感信息。
5、其他注意事项:
-
历史命令可能会被黑客清除或篡改,因此除了.bash_history外,还应考虑其他可能的日志来源,如/var/log/auth.log(对于Debian/Ubuntu系统)或/var/log/secure(对于CentOS/Red Hat系统)等。
-
如果服务器启用了HISTCONTROL环境变量或相关的bash选项(如HISTIGNORE),则某些命令可能不会被记录在历史中。
-
某些用户可能使用了不同的shell(如zsh、fish等),这些shell可能有自己的历史记录机制。
二、Linux异常用户分析
在Linux系统中,进行异常用户分析是确保系统安全性的重要步骤。以下是关于如何执行此分析的一些方法:
1. 理解/etc/passwd文件
/etc/passwd文件存储了系统上的所有用户信息,每一行代表一个用户账号。每行的格式如下:
account:password:UID:GID:GECOS:directory:shell
-
account: 用户名
-
password: 用户密码的占位符(实际密码加密后存储在/etc/shadow)
-
UID: 用户ID,0表示root用户
-
GID: 主组ID
-
GECOS: 用户全名或描述信息
-
directory: 用户家目录
-
shell: 用户登录后使用的shell
查看特定用户:
- 查看可登录用户(使用bash shell):
grep '/bin/bash' /etc/passwd
或者使用awk:
awk -F: '$NF=="/bin/bash" {print $1}' /etc/passwd
- 查看UID为0的用户(root用户):
awk -F: '$3==0 {print $1}' /etc/passwd
2. 理解/etc/shadow文件(影子文件)
/etc/shadow文件存储了加密的用户密码和其他密码相关信息。每一行对应/etc/passwd中的一个用户。
查看特定用户密码状态:
- 禁用账号时,/etc/shadow中的密码字段以!开头。
3. 查看当前登录用户及登录时长
-
who: 显示当前登录系统的用户。
-
w: 显示已登录用户及其活动。
-
uptime: 显示系统运行时间、用户数及负载。
4. 排查用户登录信息
- 查看最近登录成功的用户及信息
last: 显示最近登录成功的用户列表,包括登录时间、登录终端(tty或pts)、IP地址(如果可用)等信息。该命令读取/var/log/wtmp文件。
- 查看最近登录失败的用户及信息
sudo lastb: 显示最近登录失败的用户列表。该命令读取/var/log/btmp文件,这个文件通常包含登录失败尝试的信息。
- 显示所有用户最近一次登录信息
lastlog: 显示所有用户最近一次登录系统的时间。信息存储在/var/log/lastlog文件中,按照用户ID(UID)排序。
- 查看当前登录的用户
users: 列出当前登录到系统的所有用户。
- 注意:如果/var/log/wtmp文件被删除或清空,last命令将无法提供有用的信息。为了避免这种情况,可以使用chattr命令为文件添加+a属性,使文件只能追加数据而不能被删除或修改。但是,请注意,这并不能完全防止恶意用户修改系统,只是增加了他们的难度。
注意:
- 如果/var/log/wtmp被删除或清空,last命令将无法提供有用的信息。可以使用chattr +a /var/log/wtmp来防止文件被删除。
5. 管理用户账号
- 创建用户:
useradd admin # 创建用户但不创建家目录
adduser admin2 # 创建用户并创建家目录(推荐使用)
- 修改密码:
passwd admin
- 禁用账号:
usermod -L user
- 删除账号:
userdel -r user # 删除用户及其家目录
注意:在删除用户之前,确保您已备份了任何重要数据。
6. 查看sudo权限用户
/etc/sudoers文件定义了哪些用户可以使用sudo命令。要查看具有sudo权限的用户,可以使用:
grep -E '^(root|[^:#%]\S+)\s+ALL=(ALL:ALL) ALL' /etc/sudoers
这条命令会列出所有具有完全sudo权限的用户(包括root)。
三、计划任务排查
在Linux系统中,计划任务(cron jobs)是自动执行命令或脚本的重要工具。系统管理员和用户可以利用cron来设置定时任务,以确保系统在特定时间执行必要的操作。以下是对计划任务排查的另一种表达方式:
1. 用户级别的计划任务
-
每个用户都可以在/var/spool/cron/{user}目录下管理自己的计划任务。
-
使用crontab -l命令可以列出当前用户的所有计划任务。
-
使用crontab -e命令可以编辑当前用户的计划任务。
-
使用crontab -r命令可以删除当前用户的所有计划任务。
-
如果需要查看其他用户的计划任务,可以使用crontab -u {username} -l命令(这需要适当的权限)。
2. 系统级别的计划任务
-
/etc/crontab文件是系统级别的计划任务文件,只有root用户才能修改。
-
/etc/cron.d/目录下可以放置额外的系统计划任务文件,这些文件的格式与/etc/crontab相同。
3. 周期性的计划任务
- 将脚本放在/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/和/etc/cron.monthly/目录中,可以确保这些脚本分别在每小时、每天、每周和每月自动执行。
4. 查看和管理cron服务
-
使用service cron status(或systemctl status cron,取决于系统)可以查看cron服务的状态。
-
/var/log/cron*日志文件包含了cron执行的命令记录和其他相关信息,可以用来排查问题。
5. 小技巧
-
使用ls -al /var/spool/cron/可以查看/var/spool/cron/目录下的所有文件,包括可能的隐藏计划任务。
-
使用more /etc/cron.daily/*可以查看/etc/cron.daily/目录下所有文件的内容。
-
使用cat /var/log/cron*可以查看crontab的日志文件,以确定计划任务的编辑时间和执行情况。
6. 入侵排查
在进行系统安全入侵排查时,应重点关注以下目录和文件是否存在恶意脚本:
-
/var/spool/cron/*
-
/etc/crontab
-
/etc/cron.d/*
-
/etc/cron.daily/*
-
/etc/cron.hourly/*
-
/etc/cron.monthly/*
-
/etc/cron.weekly/*
-
/etc/anacrontab
-
/var/spool/anacron/*
通过检查这些目录和文件,可以发现并移除任何潜在的恶意计划任务,从而提高系统的安全性。
四、开机启动项排查
**1、**系统运行级别
运行级别 | 含义 |
0 | 关机 |
1 | 单用户模式,可以想象为windows的安全模式,主要用于系统修复 |
2 | 不完全的命令行模式,不含NFS服务 |
3 | 完全的命令行模式,就是标准字符界面 |
4 | 系统保留 |
5 | 图形模式 |
6 | 重启动 |
**2、**查看运行级别
在SysV init系统中,可以使用runlevel命令来查看当前和之前的运行级别。但在systemd系统中,你可能需要查看/etc/systemd/system/default.target或运行systemctl get-default来获取默认目标。
**3、**开机启动配置文件
-
/etc/rc.local:这是一个在系统启动时可以执行的脚本文件。你可以在此文件的exit 0之前添加你的启动命令。
-
/etc/rc[0-6].d/:在SysV init系统中,这些目录包含启动和停止服务的符号链接。但在systemd系统中,你应该关注/lib/systemd/system/和/etc/systemd/system/目录中的.service文件。
**4、**开机执行脚本的方法
-
使用/etc/rc.local:
在/etc/rc.local的exit 0之前添加你的启动命令。确保你的脚本具有可执行权限。 -
使用update-rc.d(SysV init):
如果你的系统使用SysV init,你可以将你的脚本放在/etc/init.d/目录下,并使用update-rc.d命令来创建启动和停止链接。例如:
sudo ln -s /path/to/your/script /etc/init.d/yourscript
sudo update-rc.d yourscript defaults 99
-
使用systemd(现代Linux发行版):
创建一个新的.service文件在/etc/systemd/system/目录下,并使用systemctl命令来管理它。例如:
sudo nano /etc/systemd/system/yourscript.service
在文件中添加类似以下内容:
\[Unit\]
Description=My Custom Startup Script
After=network.target
\[Service\]
ExecStart=/path/to/your/script
\[Install\]
WantedBy=multi-user.target
然后启用并启动你的服务:
sudo systemctl enable yourscript.service
sudo systemctl start yourscript.service
5、入侵排查
当进行入侵排查时,你应该关注以下文件和目录:
-
查看开机启动项内容:ls -alt /etc/init.d/
-
查看开机启动项文件:
more /etc/rc.local:查看/etc/rc.local文件的内容。
ll /etc | grep rc:列出/etc/目录下与“rc”相关的文件和目录。
ls -l /etc/rc[0-6].d/:在SysV init系统中,查看启动和停止服务的链接。
-
检测开机自启动项列表:systemctl list-unit-files | grep enabled
请注意,不同的Linux发行版可能会有细微的差异,但上述信息应该适用于大多数基于Debian或Red Hat的发行版。
进程排查
- 使用top命令查看系统状态
- top 命令是一个实时监控系统性能的工具,它显示了当前系统中运行的进程、CPU使用率、内存使用等信息。在挖矿应急响应中,top 命令非常有用,因为挖矿病毒通常会占用大量的CPU资源。
- 使用ps命令查看进程信息
-
ps 命令提供了有关当前系统进程的详细信息。以下是一些常用的参数:
-
-a:显示所有用户的进程(包括其他终端)
-
-e:显示所有进程
-
-f:全格式显示,包括UID、PPID、C、STIME等
-
可以通过管道符 | 结合 grep 命令来过滤特定进程,例如 ps -ef | grep sshd 查找所有与sshd相关的进程。
- 查看非root用户运行的进程
- ps -U <用户名> -u <用户名> -N 可以用来查看特定非root用户运行的进程。-U 和 -u 分别指定实际用户ID和有效用户ID,-N 选项表示不显示与终端关联的进程。
- 查看root用户运行的进程
- 使用 ps -u root 命令可以查看root用户当前运行的所有进程。
- 查找可疑进程
- 可以使用 ps -aef | grep <关键字> 来查找包含特定关键字的进程。例如,如果你怀疑某个进程名称可能与恶意活动有关,可以使用这个命令来查找它。
- 检测隐藏进程
-
隐藏进程通常涉及更高级的技术,如进程注入或利用内核模块。直接使用 ps 命令可能无法看到这些进程。但可以通过检查 /proc 文件系统或使用其他专业工具(如 chkrootkit、rkhunter)来检测。
-
您提供的命令 ps -ef | awk ‘{print}’ | sort -n | uniq >1 和 ls /proc | sort -n | uniq >2 并不直接用于检测隐藏进程。这些命令更像是试图列出并排序所有进程ID和/proc目录下的内容,但这不是检测隐藏进程的标准方法。
- 检测系统守护进程
-
守护进程(Daemon)是在系统启动时启动并在后台运行的进程。/etc/crontab 是系统级的crontab文件,用于计划周期性执行的命令或脚本,但它不直接列出守护进程。
-
要查看系统守护进程,可以检查 /etc/init.d/、/etc/systemd/system/ 或 /lib/systemd/system/ 目录下的 .service 文件,或使用 systemctl list-units --type=service 命令(在systemd系统上)。
任务及用户活动排查命令
在服务器管理中,对任务和用户活动的排查是保障系统安全性的重要环节。以下是几种常见的命令和工具,用于检查系统的用户登录、命令历史以及进程关系。
- 查看当前登录用户使用 who命令可以查看当前登录到系统的用户列表,包括是通过本地终端(tty)还是远程会话(pts)登录的。
who
- 查看当前登录用户的IP信息通过 who命令的 -m选项,可以查看当前登录用户的IP地址(如果可用)和终端信息。
who -m
- 查看近期用户登录情况使用 last命令可以查看过去一段时间内用户的登录情况,包括登录时间、登录终端和IP地址等。-n选项可以指定显示的记录数。
last -n 5
- 查看历史命令
对于当前用户,history命令可以显示之前执行过的命令列表。默认情况下,这个列表保存在用户家目录下的 .bash_history文件中。通过指定数字参数,可以查看最近的几条命令。
history 5
- 查找空口令账号虽然现代系统通常不会使用空口令账号,但出于安全考虑,还是可以通过 awk命令检查 /etc/shadow文件(存储加密密码的文件)中是否存在空口令用户。但请注意,/etc/shadow文件通常只对root用户可读。
sudo awk -F: '($2=="")' /etc/shadow
如果没有找到空口令账号,则不会输出任何内容。
- 查找UID为0的账号UID为0的账号是root账号,具有系统的最高权限。使用 awk命令可以查找 /etc/passwd文件中UID为0的用户。
awk -F: '($3==0)' /etc/passwd
- **另一种查找UID为0的账号的方式(使用grep)**除了 awk,还可以使用 grep和 awk结合的方式来实现相同的功能。这里 -v -E "^#"是为了过滤掉以#开头的行(通常是注释行)。
grep -v -E "^#" /etc/passwd | awk -F: '$3==0{print $1}'
- 查看进程树并判断父子关系
pstree命令可以以树状图的形式显示进程及其父进程。-p选项可以在显示时包含进程的PID。
pstree -p
通过这个命令,可以轻松地查看是否有异常进程,并判断它们之间的父子关系。
请注意,在进行这些检查时,需要确保您有足够的权限来执行相关命令,特别是那些需要访问系统敏感文件(如 /etc/passwd 和 /etc/shadow)的命令。
网络端口排查命令
当涉及网络端口排查以检测挖矿病毒或其他恶意活动时,以下是使用不同命令和参数表达相同概念的几种方式:
- 列出本机所有的连接和监听的端口,查看有没有非法连接
使用 netstat命令时,可以通过以下命令组合来查看所有TCP和UDP的监听端口和连接:
netstat -tuln
这里:
-
-t显示TCP连接
-
-u显示UDP连接
-
-l显示监听状态的端口
-
-n以数字形式显示地址和端口号,不进行DNS解析
- 查看谁在使用某个端口
使用 lsof(注意,应该是 lsoft的一个常见错误或 lsof可能是一个拼写错误,正确的命令是 lsoft的别名 lsof或更常见的 lsof的替代品 lsoft,但通常我们使用 lsofp或 ss和 grep组合)或 ss和 grep组合来查找特定端口的进程:
使用 lsof(如果它存在):
lsof -i :22
或者使用 ss和 grep:
ss -tulnp | grep :22
- 查看多个进程号对应的文件信息
使用 lsof(如果它存在)时,可以使用 -p参数和逗号分隔的进程ID列表:
lsof -p 2,3
或者使用 fuser命令:
fuser -v /proc/2/fd/ /proc/3/fd/
注意:fuser显示使用指定文件或文件系统的进程。这里我们通过查看进程的文件描述符目录来间接地查看它们打开的文件。
- 查看所有tcp网络连接信息
使用 lsof(如果它存在):
lsof -i tcp
或者使用 ss:
ss -tuln | grep ESTAB
这里 ESTAB表示已建立的连接。
- 查看所有udp网络连接信息
使用 lsof(如果它存在):
lsof -i udp
或者使用 ss:
ss -uln
这里 -u表示UDP连接。
请注意,根据你的系统和已安装的工具,上述命令中的某些可能不可用。例如,lsof 可能不是标准命令,你可能需要使用 lsof 的正确替代品(如 lsoft、fuser、netstat、ss 等)。
文件排查命令
- 查看所有文件,包括隐藏的文件
使用 ls命令结合 -la参数可以列出目录中的所有文件和文件夹,包括隐藏的文件和文件夹(以 .开头的文件或文件夹)。
命令:
ls -la
- 查看文件路径
当你知道某个文件的名称但不确定其完整路径时,可以使用 whereis命令来查找。但请注意,whereis主要用于查找二进制文件、源代码文件和man手册页,并不总是能找到所有类型的文件。对于普通文件,你可能需要使用 find命令。
命令:
whereis filename
# 或者使用 find 命令查找文件路径
find / -name "filename" 2>/dev/null
- 查看文件创建时间
ls命令结合 -l和 -c参数可以查看文件的创建时间(如果文件系统支持的话)。但请注意,并非所有文件系统都保存了文件的创建时间,例如 ext4 默认只保存了修改时间和访问时间。
命令:
ls -lc filename
# 如果没有创建时间,你可能需要查看修改时间
ls -l filename
- 查找最近24小时内修改过的文件
使用 find命令结合 -mtime参数可以基于文件的修改时间进行搜索。
命令:
find /path/to/search -type f -mtime -1
这里 -mtime -1表示在最近24小时内修改过的文件。
- 查找以.txt结尾的文件名
find命令的 -name参数允许你基于文件名进行搜索。
命令:
find /path/to/search -type f -name "*.txt"
要忽略大小写,使用 -iname参数。
- 查找不是以.txt结尾的文件
你可以通过逻辑非操作符 !来排除以 .txt结尾的文件。
命令:
find /path/to/search -type f ! -name "*.txt"
注意:
-
在使用 find命令时,请确保指定了正确的搜索路径(/path/to/search),以避免不必要的系统资源消耗。
-
在某些情况下,你可能需要结合使用多个参数和选项来精确地找到你需要的文件。
-
如果你的服务器非常大或文件数量非常多,这些命令可能会需要一些时间来完成。
-
在执行这些命令之前,最好先备份重要数据,以防万一
日志分析
上一篇公众号细讲了
Linux内存分析
- 使用top和free命令:
top命令可以实时显示系统中各个进程的资源占用状况,包括CPU和内存使用情况。
free命令可以查看系统的内存使用情况,包括物理内存、交换分区和缓存等。
- 使用vmstat和iostat工具:
vmstat命令可以报告关于进程、内存、分页、块IO、陷阱和CPU活动的信息。
iostat命令主要用于监控系统输入/输出设备负载情况,也可以用来观察CPU使用情况。
- 分析/proc文件系统:
Linux的/proc文件系统是一个虚拟文件系统,用于提供内核、进程和其他系统信息的接口。
通过查看/proc/meminfo文件,可以获取系统的内存使用情况。
通过查看/proc/[pid]/maps文件(其中[pid]是进程ID),可以分析进程的内存映射情况。
- 使用strace和ltrace工具:
strace命令可以跟踪系统调用和信号,用于诊断进程行为。
ltrace命令可以跟踪进程调用库函数的情况,帮助分析进程在运行时对哪些库函数进行了调用。
- 使用Valgrind和AddressSanitizer等内存调试工具:
这些工具可以帮助你检测程序中的内存泄漏、数组越界、野指针等内存问题。
在入侵排查中,你可以使用这些工具来分析可疑进程或程序,查找是否存在恶意行为或漏洞利用。
Windows入侵排查
系统排查
1、系统信息
//可以显示本地计算机的硬件资源、组件、软件环境、正在运行的任务、服务、系统驱动程序、加载模块、启动程序等。
C:\Users\test>msinfo32 //Microsoft系统信息工具:Msinfo32.exe``C:\Users\test>systeminfo //可查看主机名、
操作系统等版本信息。
2、用户信息
攻击者入侵服务器后,可能会通过创建账号对服务器进行远程控制。常见的创建账号方法有:创建新账号、激活默认账号、建立隐藏账号(用户名后跟$的为隐藏账号)。
排查恶意账号的方法如下,如果存在恶意账号删除或者禁用:
C:\Users\test>net user //查看所有用户,此方法无法查看隐藏用户``C:\Users\test>net user username //查看指定用户信息``C:\Users\test>wmic useraccount get name,SID //查看用户信息``C:\Users\test>lusrmgr.msc
3、启动项
启动项是系统开机时在前台或者后台运行的程序,攻击者有可能通过启动项使用病毒后门等实现持久化控制。
排查启动项的方法如下:
C:\Users\test>msconfig //命令行打开启动项
查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。
或:
C:\Users\test>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
检查右侧是否有异常的启动项。如果存在,则删除,并使用杀毒工具进行查杀清除。
4、计划任务
查看计划任务属性,查看是否存在木马文件等。
C:\Users\test>taskschd.msc //获取计划任务信息``C:\Users\test>schtasks //获取计划任务信息(用户需是administrators组成员)
或直接打开计算机管理–>系统工具–>计划任务程序
5、服务自启动
//查看服务类型和启动状态,查看是否存在异常服务
C:\Users\test>services.msc
进程排查
当主机感染恶意程序时,恶意程序通常会以进程的形式运行并执行恶意操作。为了检测这些恶意进程,可以采取以下方法进行排查:
方法一:使用系统自带工具
-
查看正在运行的任务打开 Msinfo32工具,在“软件环境”下查看“正在运行任务”部分,可以列出当前正在运行的进程。
-
使用tasklist命令
-
tasklist:显示所有当前运行的进程。
-
tasklist /svc:显示进程和它们服务的对应关系。
-
tasklist /m:显示进程加载的DLL(动态链接库)情况。
-
tasklist /m xx.dll:查看调用特定DLL(如xx.dll)的进程。
- 使用wmic命令通过运行 wmic并输入 process可以查看进程的详细信息,包括进程ID、可执行文件路径等。
判断进程是否可疑
-
签名验证信息:检查进程是否有有效的签名验证信息,这通常表明进程来自可信的源。
-
描述信息:查看进程的描述信息,看是否与预期相符。
-
进程的属主:确认进程的属主是否合法,是否属于预期的账户或用户组。
-
进程路径:检查进程的可执行文件路径是否在正常位置,如系统目录或用户应用程序目录。
-
资源占用:长时间CPU或内存资源占用过高的进程可能是可疑的,尤其是当系统性能下降时。
方法二:使用第三方工具
-
D盾_web查杀工具:这是一个专为Web服务器设计的恶意软件检测工具,可以帮助识别常见的Webshell和恶意文件。
-
Process Explorer:由微软官方提供,这是一个强大的进程查看工具,提供了比系统自带工具更多的信息和功能,如查看进程的线程、句柄、模块等。
端口排查
- 查看目前的网络连接:
使用netstat命令可以查看当前的网络连接、路由表、接口统计等。为了查看所有活动的网络连接和它们对应的进程(如果有的话),您可以使用-ano参数(不显示程序名称)或-anb参数(显示程序名称,但需要管理员权限)。
C:\Users\test> netstat -ano
或者,以管理员身份运行CMD并输入:
C:\Users\test> netstat -anb
注意:-anb选项可能在某些Windows版本上不可用或需要额外的工具(如Sysinternals的tcpview或process explorer)。
- 根据PID定位进程:
使用tasklist命令并结合findstr可以过滤出特定PID的进程信息。但是,请注意在findstr后面应该紧跟PID数字,而不是“pid”这个字符串。 假设您从netstat的输出中找到了一个PID为1234的可疑连接,那么您应该这样查找:
C:\Users\test> tasklist | findstr "1234"
- 查看端口对应的PID:
如果您已经知道要查找的端口号(例如8080),您可以直接使用findstr来过滤netstat的输出。
C:\Users\test> netstat -ano | findstr "8080"
这个命令会列出所有与端口8080相关的连接,以及它们的PID。
请注意,执行需要管理员权限的命令时,您可能需要以管理员身份运行CMD。这可以通过在开始菜单中搜索“CMD”,然后右键单击“命令提示符”并选择“以管理员身份运行”来完成。
异常文件排查
敏感目录文件排查
- temp/tmp目录:
这些目录通常存储了应用程序和系统生成的临时文件。恶意软件可能在这些目录中创建执行文件或存储敏感数据。
- 回收站、浏览器下载目录、浏览器历史记录、cookie信息:
恶意软件可能会尝试隐藏在这些位置以躲避常规的安全检查。
- Recent文件:
该文件记录了用户最近访问的文档和其他文件。检查它可以发现用户最近操作了哪些文件。
- Prefetch文件夹:
该文件夹中的文件包含了系统访问过的文件的预读取信息。通过检查这些文件,可以了解哪些文件被频繁访问。
- Amcache.hve文件:
这是一个系统文件,用于存储应用程序的兼容性信息,包括程序路径、执行时间等。虽然直接读取这个文件需要特定的工具,但它提供了关于系统上安装和运行的应用程序的宝贵信息。
基于时间点查找
- forfiles命令:
这个命令非常有用,可以基于特定的日期范围查找文件。注意,/d +2022/3/16表示在2022年3月16日之后创建或修改的文件。
- 服务器文件时间排序:
在文件资源管理器中,可以通过修改日期对文件进行排序,从而快速找到在特定时间范围内修改或创建的文件。
- 修改时间在创建时间之前的文件:
这种文件可能是被篡改或恶意软件创建的。它们可能是可疑的,需要进一步检查。
- 计算机自带文件搜索功能:
大多数操作系统都提供了基于文件属性(如修改日期)的搜索功能。使用这些功能可以快速定位特定时间范围内的文件。
- 使用专用工具:
D盾、webshellkill等工具是专为安全人员设计的,用于查找和删除恶意文件。这些工具通常具有更强大的功能和更直观的界面。
日志分析
上一篇公众号细讲了
Windows内存分析
- 使用任务管理器(Task Manager):
打开任务管理器,查看资源(CPU、内存、磁盘等)使用率较高的进程。
重点关注占用内存较高的进程,这些进程可能是恶意软件或攻击者留下的后门。
- 使用Sysinternals工具:
Sysinternals是微软提供的一套强大的系统工具集,其中的Process Explorer和VMMap等工具可以帮助你更深入地分析进程的内存使用情况。
使用Process Explorer可以查看进程的详细信息,包括加载的模块、句柄、线程等。
使用VMMap可以分析进程的内存映射,查看哪些内存区域被占用,以及是否有异常的内存访问。
- 分析内存转储文件(Memory Dump):
如果系统出现了崩溃或异常,Windows可能会生成内存转储文件(如.dmp文件)。
使用调试器(如WinDbg)加载这些转储文件,可以分析系统在崩溃时的内存状态,查找可能的恶意代码或异常行为。
小结
Linux 入侵排查思路:
- 检查安全日志:
审查 /var/log/secure日志文件,寻找任何可疑的登录尝试或IP地址的多次失败尝试,这可能表示暴力破解。
- 分析用户列表:
仔细检查 /etc/passwd文件,识别任何异常或未知的用户账户。
- 查看命令历史:
审查用户主目录下的 ~/.bash_history文件,以识别最近执行的恶意或可疑命令。
- 检查Root邮件:
查阅 /var/spool/mail/root邮件文件,以获取系统或安全事件相关的任何通知,尤其是在其他日志被清除的情况下。
- 分析Web和应用日志:
评估Web服务器和应用中间件的日志文件,如 access_log,查找任何非法的访问尝试或异常行为。
- 登录记录分析:
- 使用 last和 lastb命令查看系统登录记录,特别是失败的登录尝试。
- 计划任务检查:
审查 /var/log/cron文件和 crontab任务,以识别任何可能由攻击者设置的恶意计划任务。
- Shell命令历史:
分析全局的 history命令记录(如果配置为记录),了解系统级的命令执行历史。
- 数据库日志分析:
评估如 Redis、MySQL、Oracle 等数据库的日志文件,查找任何可疑的活动或异常。
Windows 入侵排查思路:
- 系统账号安全检查:
验证服务器账户是否存在弱口令,使用 Netstat 检查网络连接,并通过 tasklist 定位异常进程。
- 登录日志审计:
审查Windows安全日志,特别是ID 4776和4624(登录成功)的事件,以识别任何可疑的登录活动。
- 用户账户管理:
使用 lusrmgr.msc 图形界面或命令行工具检查服务器上的账户列表,寻找可疑或未知账户。
- 本地用户组审查:
使用 compmgmt.msc 或命令行工具来检查本地用户组,确保没有隐藏账户。
- 日志分析:
导出和分析Windows日志,使用 Log Parser 或其他工具来识别管理员登录时间、用户行为异常等。
- 计划任务检查:
运行 taskschd.msc 来查看并验证任何计划任务,确保没有可疑的或未知的任务。
- 最近文件访问:
检查 %UserProfile%\Recent 文件夹,了解用户最近打开的文件,寻找可疑或未知的活动。
- 中间件日志分析:
评估中间件(如Tomcat、IIS等)的日志文件,查找任何非法的访问尝试或异常行为。
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)