McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting
GitHub: McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting
Windows系统取证调查与威胁狩猎工具
Stars: 15 | Forks: 4
# Windows 网络取证调查与威胁狩猎
1. [识别可疑进程](https://github.com/McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting/blob/main/README.md#Identifying-Suspicious-Processes)
2. [识别可疑网络活动](https://github.com/McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting/blob/main/README.md#Identifying-Suspicious-Network-Activity)
3. [识别可疑服务](https://github.com/McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting/blob/main/README.md#identifying-suspicious-services)
4. [识别可疑注册表ASEPs/自动启动文件夹](https://github.com/McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting/blob/main/README.md#identifying-suspicious-registry-asepsautostart-folders)
5. [识别可疑账户活动](https://github.com/McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting/blob/main/README.md#Identifying-Suspicious-Account-Activity)
6. [识别可疑计划任务](https://github.com/McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting/blob/main/README.md#identifying-suspicious-scheduled-tasks)
7. [识别可疑日志条目](https://github.com/McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting/blob/main/README.md#identifying-suspicious-log-entries)
8. [识别可疑SMB活动](https://github.com/McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting/blob/main/README.md#identifying-suspicious-smb-activity)
9. [杂项](https://github.com/McL0vinn/Windows-Forensic-Examination-and-Threat-Hunting/blob/main/README.md#miscellaneous)
## 识别可疑进程
1. C:\> taskmgr.exe = 调用任务管理器GUI。
2. C:\> tasklist = 显示本地计算机或远程计算机上当前正在运行的所有进程。
3. C:\> tasklist /v = 在输出中显示详细的任务信息。(PID,内存使用状态,用户名)
4. C:\> tasklist /m = 列出所有与给定模式名称匹配的PID和加载的DLL模块的任务。如果没有指定模块名称,此选项将显示每个任务加载的所有模块。
5. C:\> tasklist /fi = 指定要包含在查询中或从查询中排除的进程类型。以下是一些示例
6. C:\> tasklist /v /fi "pid eq 555"
7. C:\> tasklist /m /fi "pid eq 555"
8. C:\> Tasklist /v | findstr Teams.exe
9. C:\> Tasklist /m | findstr Teams.exe
Wmic比Tasklist更强大。
1. C:\> wmic process list brief = 显示当前正在运行的进程的简短列表
2. C:\> wmic process list full = 显示当前正在运行的进程的完整列表
3. C:\> wmic process get Name,Commandline,Description,ProcessID,ParentProcessID = 仅指定您想要获取的字段
4. C:\> wmic process where processid=600 list full = 显示pid为600的进程的完整信息
5. C:\> wmic process where Name=Teams.exe get ProcessID,ParentProcessID = 显示名为teams.exe的进程的完整列表,但仅返回Pid和Ppid值
6. C:\> wmic process where ProcessID=555
注意:
1. 这是一个新进程还是未识别的进程?(理想情况下,您希望将您的发现与基线映像交叉引用——如果您有的话。这将使识别与“正常活动”不同的内容变得更容易)
2. 进程名称看起来是否随机(例如 hJoIuG.exe 或类似)
3. 新的/可疑的进程名称是否与合法进程相似?例如 sCvhost 而不是 sVChost
4. 它是否未签名?(特别是对于microsoft,因为它几乎签名的所有内容)
5. 进程是否有不匹配已识别发布者的数字签名?(被盗的开发者数字密钥)
6. 它是否从非标准路径运行(例如 C:\Temp , C:\Downloads , C:\Music 等)
7. 父进程是否可疑(子进程可能是合法的,但父进程不是)
8. 父-子关系是否可疑?(例如 lsass.exe 生成 cmd.exe 或 IEX 生成 Powershell.exe 等)
9. 进程是否与可疑活动相关联?(例如与知名恶意IP/URL/主机/域名等通信的进程)
10. 是否使用Base64编码?
11. 进程可以同时用于良性和恶意目的。(例如 PSEXEC)
12. 可疑不一定意味着恶意。
13. 大多数进程都是由SYSTEM,LOCAL SERVICE或NETWORK SERVICE账户启动的。请记住这一点。
## 识别可疑网络活动
1. C:\> netstat -abno(这基本上就是你需要的)
2. C:\> netstat -abno -n 5 = 每5秒自动刷新输出。
-n = 地址和端口号以数字形式表示,不尝试确定名称。
-a = 显示所有活动的TCP连接和计算机正在监听的TCP和UDP端口。
-b = 显示使用该端口的EXE以及与该端口交互的DLL。
-o = 显示与端口关联的进程ID。
您可以将输出重定向到.txt文件,以便更好地分析结果,例如 netstat -abno > C:\Users\McL0vin\Desktop\netstat.txt
注意:
1. 与相关进程异常的网络活动(例如记事本与公共IP的出站/入站连接等)
2. 与您的环境/业务单元/组织异常的网络活动(例如周末、深夜、假日等的大量流量,长时间运行的HTTP/HTTPS会话等)(有两种方法可以检测此类活动——要么有业务活动正常情况的基线映像,要么非常了解您的环境/组织/业务单元)
3. 来自/到知名恶意IP/域名/URL/主机等网络活动(利用威胁情报和OSINT来识别这些IOCs,例如alienvault,abuseipdb,virustotal,hybrid-analysis)
## 识别可疑服务
1. services.msc = 启动服务控制面板GUI。显示各种服务和它们的描述、状态、启动类型、登录为。显示所有服务(正在运行/未运行)
2. net start = 显示仅运行的服务列表。
3. sc query | more = 每个服务的详细信息非常多。可能很混乱。仅运行的服务
4. tasklist /svc = 显示系统上每个进程运行的哪些服务以及它们的PID。将运行进程映射到服务(将服务映射到进程)
注意:
1. 新服务/已删除服务/已停止服务(理想情况下,您希望将您的发现与基线映像交叉引用——如果您有的话。否则与您的系统管理员交谈。)
2. 可执行文件路径看起来异常(运行 services.msc --> 右键单击服务 --> 属性)
## 识别可疑注册表ASEPs/自动启动文件夹
Windows有多个注册表和文件位置,可以在用户不采取特定操作的情况下启动软件。这些位置称为自动启动扩展点(ASEPs)。
大多数恶意软件通过操纵相同的注册表键来建立持久性和在重新启动后生存。这些是:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
HKEY_CURENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
1. C:\> regedit = 启动注册表编辑器GUI,手动浏览注册表分叉/键
2. C:\> reg query HKLM\Software\microsoft\windows\currentversion\run = 显示指定注册表的设置
3. C:\> taskmgr.exe = 任务管理器GUI。转到启动选项卡
这些注册表键负责在系统启动或用户登录时执行程序(最容易建立持久性的方式。通常攻击者将后门映射到那里,以便在重新启动后生存)
与用户关联的自动启动文件夹。这些程序在给定用户登录系统时自动调用,有时被恶意软件更改
1. C:\> dir \s \b "C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup = 列出用户自动启动文件夹的内容(注意,通过启动启动的程序将具有explorer.exe父进程,因此可能难以区分它们与合法用户活动)
2. C:\> dir \s \b C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp = 对于所有用户(注意,通过启动启动的程序将具有explorer.exe父进程,因此可能难以区分它们与合法用户活动)
3. C:\> start msconfig.exe = 启动一个小GUI,显示启动选择、启动位置/选项、启动项
4. C:\> wmic startup list full = 显示自动启动程序。
5. 右键单击托盘栏 --> 任务管理器 --> 启动 = 显示一个GUI,其中包含自动启动程序和有关名称、发布者、状态等信息。
注意:
1.
2.
3.
4.
## 识别可疑账户活动
```
1) c:\> lusrmgr.msc = spawns a GUI which can be used to check the users and groups defined on the machine
2) C:\> net user = displays a list of users
3) C:\> net localgroup administrators = shows who is in the group you specify ( in that case accounts in the administrators group)
A) Two methods to create the "Admin" user
CMD C:\> net user "Admin" "p@ssw0rd!" /add
PS C:\> New-LocalUser "Admin" -Password [...]
B) Two methods to add the user to Administrators
CMD C:\> net localgroup Administrators "Admin" /add
PS C:\> Add-LocalGroupMember "Administrators" -Member "Admin"
Watch out for:
1) Who created the account? Can the person confirm the account creation?
2) What is the source IP and time of the creator's login? Is it expected?
3) Which other suspicious events can you see in the creator's session?
4) Account names that resembles service accounts/backup accounts etc which may indicate malicious actor trying to hide.
5) The new account being added to priviledged groups?
6) The new account getting its password reset?
Win EventID = 4720 -> A user account was created
Win EventID = 4732 -> A member was added to a security group
Win EventID = 4724 -> An attempt to reset an account's password
```
## 识别可疑计划任务
1. C:\> schtasks = 显示计划任务及其详细信息,例如文件夹、任务名称、下一次运行时间和状态(取决于您的环境,可能很混乱。您可以将其导出到.txt文件以便更容易阅读或使用| findstr如果您知道您要寻找的内容)
2. C:\> taskschd.msc = 启动任务计划程序GUI。有关触发器、操作、条件等信息很多。更容易处理
3. PS C:\> Get-ScheduledTask = PowerShell命令,列出系统上的计划任务及其有关任务路径、任务名称、状态的信息。
4. PS C:\> Get-ScheduledTask -TaskName "THIS IS SPARTA" 如果您知道要查找的计划任务的名称,请使用此命令
注意:
1) 不寻常的计划任务(特别是那些以SYSTEM运行、作为管理员组的用户运行或具有空用户名的任务)
2) 计划任务
## 识别可疑日志条目
1. Cl\>eventvwr.msc = 启动GUI事件查看器(最直观的方式lol)
2. C:\> wevtutil qe Security /f:text = 检查指定的Windows事件日志类别(在本例中为Security)。可能很混乱,您可以使用> C:\xx\xx\something.txt将内容输出,如果您想的话。
3. PS C:\> Get-EventLog -LogName Security | Format-List -Property * = 与上述命令等效,但这次是在PowerShell中,并且具有更酷的蓝色背景(lol)
注意:
1. 任何表明事件日志服务已停止的迹象
2. 任何表明Windows文件完整性检查器(Windows文件保护)已被禁用的迹象
3. 在成功登录该账户之后,有关特定账户的大量失败登录尝试
4. 在许多账户中失败登录尝试的数量很少(密码喷洒攻击)(通常每个账户尝试1-3次密码以避免账户锁定阈值)
5. 有关特定账户的大量失败登录尝试
## 识别可疑SMB活动
*当您的机器作为客户端并想查看出站SMB活动时*
1. C:\> net use = 显示目标机器和您连接到的共享
2. C:\> net use \\192.168.1.1 /del = 断开SMB会话
3. C:\>net use * /del = 断开所有出站SMB会话
*当您的机器作为服务器并想查看入站SMB活动时*
1. C:\>net session = 列出入站会话
2. C:\>net session \\192.168.1.1 /del = 断开入站SMB会话
*或者您可以通过cmd compmgmt.msc -> 导航到“共享文件夹”来运行,在那里您可以查看共享、会话和打开的文件*
注意:
1. 能够断开单个SMB会话(无论是入站还是出站)可能很有用,因为这可以暂时阻止攻击者使用SMB会话。
这样您可以争取一些时间或中断正在进行的文件窃取活动。
2. 不要将TCP/UDP 135、136、137、138、139、445端口暴露给互联网。关闭它们或如果存在合法的业务用途,请将它们放在防火墙后面,并使用ACL强制仅允许授权IP访问。
3. 大多数SMB流量是在客户端和服务器之间。如果您看到客户端到客户端的SMB活动或没有合法业务目的的过多服务器到服务器SMB活动,那么应该进行调查。
## 杂项
*获取哈希值*
1. C:\> certutil -hashfile malfile.exe MD5 = 在Windows上计算文件的MD5哈希值。
2. PS C:\> Get-FileHash -Algorithm MD5 malfile.exe - 在Windows上利用PowerShell计算文件的MD5哈希值。
*检测替代数据流*
1. C:\> DIR /r = 查找替代数据流。
2. PS :> Get-Item * -Stream * = 使用PowerShell查找替代数据流。
3. PS:> Get-ChildItem -recurse | ForEach { Get-Item $_.Filename -stream * } | Where stream -ne ':$DATA' = 在所有子目录中搜索ADS。
*收集文件元数据*
使用Windows的exiftool。注意大小、时间戳(访问、创建、修改)、文件类型和文件类型扩展(攻击者通常会将脚本扩展名更改为某些平凡的内容,例如.bmp / .jpg等,以避免检测),文件权限等
*DeepBlueCLI*
DeepBlueCLI - 用于通过Windows事件日志进行威胁狩猎的PowerShell模块。它可以与以下Windows事件日志一起使用:
* Windows安全
* Windows系统
* Windows应用程序
* Windows PowerShell
* Sysmon
* 更多信息请参阅:
https://github.com/sans-blue-team/DeepBlueCLI
Regshot = Windows的快照工具。允许您在两个时间点记录注册表和可选文件系统的快照,然后突出显示两个之间的差异。
提供高级总结,显示已添加/删除/修改的注册表键以及任何已添加/删除/修改的文件
Super easy to run in 5 steps
1. 启动Regshot并配置选项。默认情况下,Regshot不会记录文件系统。您可以通过勾选Scan dir框并指定您感兴趣的目录(例如 C:\)来指定这一点。
2. 完成工具的配置并准备好一切后,进行第一次快照
3. 运行恶意软件
4. 使用Regshot进行第二次快照
5. 完成后,单击比较,Regshot将在几分钟内提供结果
TaskManagermon / Process Monitor = 实时显示文件系统、注册表、网络和进程活动。理想用于在沙盒中引爆恶意文件/脚本并实时查看系统上的更改
Procexplorer / Process Explorer = 提供有关正在运行的进程的深入了解
Strings = 提取并显示ASCII和16位小端Unicode字符串
C:\> strings malfile.exe
TCPView = 将监听的TCP/UDP端口映射回拥有进程
SRUMdump
FTK Imager /Volexity / Volatility(记住。最重要的是最易变的 = RAM,然后是其他所有内容)
标签:AI合规